{"components":{"responses":{"AddIssueFollowersResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddIssueFollowersResponseBody"}}},"description":""},"BadRequestApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":"The request was invalid or could not be completed."},"CreateAccountHighlightResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountHighlightResponseBody"}}},"description":""},"CreateAccountRelationshipResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountRelationshipResponseBody"}}},"description":""},"CreateAccountResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountResponseBody"}}},"description":""},"CreateActivityResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActivityResponseBody"}}},"description":""},"CreateArticleResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateArticleResponseBody"}}},"description":""},"CreateAttachmentResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAttachmentResponseBody"}}},"description":""},"CreateCallRecordingResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCallRecordingResponseBody"}}},"description":""},"CreateCollectionResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCollectionResponseBody"}}},"description":""},"CreateContactResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContactResponseBody"}}},"description":""},"CreateCustomFieldResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomFieldResponseBody"}}},"description":""},"CreateCustomObjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomObjectResponseBody"}}},"description":""},"CreateFeatureRequestEvidenceResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureRequestEvidenceResponseBody"}}},"description":""},"CreateFeatureRequestResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureRequestResponseBody"}}},"description":""},"CreateIssueAIResponseResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueAIResponseResponseBody"}}},"description":""},"CreateIssueDraftReplyResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueDraftReplyResponseBody"}}},"description":""},"CreateIssueGroupResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueGroupResponseBody"}}},"description":""},"CreateIssueNoteResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueNoteResponseBody"}}},"description":""},"CreateIssueReplyResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueReplyResponseBody"}}},"description":""},"CreateIssueResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Created issue","value":{"data":{"id":"issue_123","state":"new","title":"Unable to sign in","type":"conversation"},"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/CreateIssueResponseBody"}}},"description":""},"CreateIssueThreadResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueThreadResponseBody"}}},"description":""},"CreateMacroResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMacroResponseBody"}}},"description":""},"CreateMilestoneResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMilestoneResponseBody"}}},"description":""},"CreateMilestoneResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"CreateProjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectResponseBody"}}},"description":""},"CreateProjectResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"CreateRouteRedirectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouteRedirectResponseBody"}}},"description":""},"CreateTagResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagResponseBody"}}},"description":""},"CreateTaskCommentResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskCommentResponseBody"}}},"description":""},"CreateTaskResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskResponseBody"}}},"description":""},"CreateTaskResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"CreateTeamResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTeamResponseBody"}}},"description":""},"CreateTrainingDataResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrainingDataResponseBody"}}},"description":""},"DeleteAccountHighlightResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountHighlightResponseBody"}}},"description":"","headers":{"Body":{"schema":{}}}},"DeleteAccountRelationshipResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountRelationshipResponseBody"}}},"description":""},"DeleteAccountResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountResponseBody"}}},"description":""},"DeleteArticleResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteArticleResponseBody"}}},"description":""},"DeleteCallRecordingResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCallRecordingResponseBody"}}},"description":""},"DeleteCollectionResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCollectionResponseBody"}}},"description":""},"DeleteContactResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteContactResponseBody"}}},"description":""},"DeleteCustomObjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteCustomObjectResponseBody"}}},"description":""},"DeleteFeatureRequestResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFeatureRequestResponseBody"}}},"description":""},"DeleteIssueResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteIssueResponseBody"}}},"description":""},"DeleteMacroResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMacroResponseBody"}}},"description":""},"DeleteMessageResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMessageResponseBody"}}},"description":""},"DeleteMilestoneResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMilestoneResponseBody"}}},"description":""},"DeleteProjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponseBody"}}},"description":""},"DeleteTagResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTagResponseBody"}}},"description":""},"DeleteTaskCommentResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTaskCommentResponseBody"}}},"description":""},"DeleteTaskResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTaskResponseBody"}}},"description":""},"DeleteTrainingDataDocumentsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteTrainingDataDocumentsResponseBody"}}},"description":""},"ErrorApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":""},"ForbiddenApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":"The authenticated caller or organization is not allowed to access this endpoint or operation."},"GetAccountRelationshipsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountRelationshipsResponseBody"}}},"description":""},"GetAccountResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountResponseBody"}}},"description":""},"GetAccountsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountsResponseBody"}}},"description":""},"GetActivityTypesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetActivityTypesResponseBody"}}},"description":""},"GetArticleFeedbackResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetArticleFeedbackResponseBody"}}},"description":""},"GetArticleResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetArticleResponseBody"}}},"description":""},"GetArticlesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetArticlesResponseBody"}}},"description":""},"GetAuditLogsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAuditLogsResponseBody"}}},"description":""},"GetCallRecordingResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCallRecordingResponseBody"}}},"description":""},"GetCollectionResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCollectionResponseBody"}}},"description":""},"GetCollectionsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCollectionsResponseBody"}}},"description":""},"GetContactResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetContactResponseBody"}}},"description":""},"GetContactsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetContactsResponseBody"}}},"description":""},"GetCustomFieldResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomFieldResponseBody"}}},"description":""},"GetCustomFieldsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomFieldsResponseBody"}}},"description":""},"GetCustomObjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomObjectResponseBody"}}},"description":""},"GetCustomObjectsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomObjectsResponseBody"}}},"description":""},"GetFeatureRequestResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetFeatureRequestResponseBody"}}},"description":""},"GetIssueFollowersResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueFollowersResponseBody"}}},"description":""},"GetIssueMessagesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueMessagesResponseBody"}}},"description":""},"GetIssueResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Issue details","value":{"data":{"id":"issue_123","state":"new","title":"Unable to sign in","type":"conversation"},"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/GetIssueResponseBody"}}},"description":""},"GetIssueStatusesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueStatusesResponseBody"}}},"description":""},"GetIssueSurveyResponsesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueSurveyResponsesResponseBody"}}},"description":""},"GetIssueThreadsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueThreadsResponseBody"}}},"description":""},"GetIssueVoiceCallsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetIssueVoiceCallsResponseBody"}}},"description":""},"GetIssuesResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Paginated issue list","value":{"data":[],"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/GetIssuesResponseBody"}}},"description":""},"GetKnowledgeBaseResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseResponseBody"}}},"description":""},"GetKnowledgeBaseThemeResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBaseThemeResponseBody"}}},"description":""},"GetKnowledgeBasesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetKnowledgeBasesResponseBody"}}},"description":""},"GetMacroGroupsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMacroGroupsResponseBody"}}},"description":""},"GetMacroResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMacroResponseBody"}}},"description":""},"GetMacrosResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMacrosResponseBody"}}},"description":""},"GetMeResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMeResponseBody"}}},"description":""},"GetMilestoneResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMilestoneResponseBody"}}},"description":""},"GetProjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProjectResponseBody"}}},"description":""},"GetSurveyResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSurveyResponseBody"}}},"description":""},"GetSurveyResponsesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSurveyResponsesResponseBody"}}},"description":""},"GetSurveysResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSurveysResponseBody"}}},"description":""},"GetTagResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTagResponseBody"}}},"description":""},"GetTagsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTagsResponseBody"}}},"description":""},"GetTaskCommentsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaskCommentsResponseBody"}}},"description":""},"GetTaskResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTaskResponseBody"}}},"description":""},"GetTasksResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTasksResponseBody"}}},"description":""},"GetTeamResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTeamResponseBody"}}},"description":""},"GetTeamsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTeamsResponseBody"}}},"description":""},"GetTicketFormResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTicketFormResponseBody"}}},"description":""},"GetTicketFormsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTicketFormsResponseBody"}}},"description":""},"GetTrainingDataResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTrainingDataResponseBody"}}},"description":""},"GetUserResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserResponseBody"}}},"description":""},"GetUserRolesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserRolesResponseBody"}}},"description":""},"GetUsersResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUsersResponseBody"}}},"description":""},"ImportContactResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportContactResponseBody"}}},"description":""},"ImportIssueResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportIssueResponseBody"}}},"description":""},"ImportMessagesResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportMessagesResponseBody"}}},"description":""},"ImportProjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportProjectResponseBody"}}},"description":""},"ImportTaskResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportTaskResponseBody"}}},"description":""},"InternalServerErrorApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":"An unexpected internal error occurred."},"IssueGroupMutationResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueGroupMutationResponseBody"}}},"description":""},"LinkExternalIssueResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkExternalIssueResponseBody"}}},"description":""},"LinkTaskExternalIssueResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkTaskExternalIssueResponseBody"}}},"description":""},"LinkTaskIssueResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkTaskIssueResponseBody"}}},"description":""},"ListTrainingDataResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTrainingDataResponseBody"}}},"description":""},"MergeAccountsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeAccountsResponseBody"}}},"description":""},"MergeFeatureRequestsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeFeatureRequestsResponseBody"}}},"description":""},"PublishKnowledgeBaseThemeResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishKnowledgeBaseThemeResponseBody"}}},"description":""},"RedactMessageResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedactMessageResponseBody"}}},"description":""},"RequestArticleReviewResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestArticleReviewResponseBody"}}},"description":""},"SearchAccountsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAccountsResponseBody"}}},"description":""},"SearchCallRecordingsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchCallRecordingsResponseBody"}}},"description":""},"SearchContactsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchContactsResponseBody"}}},"description":""},"SearchCustomObjectsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchCustomObjectsResponseBody"}}},"description":""},"SearchFeatureRequestsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFeatureRequestsResponseBody"}}},"description":""},"SearchIssuesResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Matching issues","value":{"data":[],"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/SearchIssuesResponseBody"}}},"description":""},"SearchProjectsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchProjectsResponseBody"}}},"description":""},"SearchSurveysResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchSurveysResponseBody"}}},"description":""},"SearchTasksResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchTasksResponseBody"}}},"description":""},"SearchUsersResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersResponseBody"}}},"description":""},"SetFeatureRequestPortalVisibilityResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFeatureRequestPortalVisibilityResponseBody"}}},"description":""},"SnoozeIssueResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Snoozed issue","value":{"data":{"id":"issue_123","state":"on_hold","title":"Unable to sign in","type":"conversation"},"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/SnoozeIssueResponseBody"}}},"description":""},"SubmitTicketFormResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitTicketFormResponseBody"}}},"description":""},"TooManyRequestsApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":"The request exceeded the applicable rate limit."},"TrainingDataUploadResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingDataUploadResponseBody"}}},"description":"","headers":{"Body":{"schema":{}}}},"UnauthorizedApiResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorApiResponseBody"}}},"description":"The request could not be authenticated for this API."},"UpdateAccountHighlightResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountHighlightResponseBody"}}},"description":""},"UpdateAccountResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountResponseBody"}}},"description":""},"UpdateAccountsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountsResponseBody"}}},"description":""},"UpdateArticleResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArticleResponseBody"}}},"description":""},"UpdateCallRecordingResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCallRecordingResponseBody"}}},"description":""},"UpdateCollectionResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCollectionResponseBody"}}},"description":""},"UpdateContactResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactResponseBody"}}},"description":""},"UpdateCustomFieldResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomFieldResponseBody"}}},"description":""},"UpdateCustomObjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomObjectResponseBody"}}},"description":""},"UpdateCustomObjectsResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomObjectsResponseBody"}}},"description":""},"UpdateFeatureRequestResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureRequestResponseBody"}}},"description":""},"UpdateIssueResponse":{"content":{"application/json":{"examples":{"compact":{"summary":"Updated issue","value":{"data":{"id":"issue_123","state":"waiting_on_you","title":"Unable to sign in","type":"conversation"},"request_id":"req_123"}}},"schema":{"$ref":"#/components/schemas/UpdateIssueResponseBody"}}},"description":""},"UpdateKnowledgeBaseThemeResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKnowledgeBaseThemeResponseBody"}}},"description":""},"UpdateMacroResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMacroResponseBody"}}},"description":""},"UpdateMilestoneResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMilestoneResponseBody"}}},"description":""},"UpdateMilestoneResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"UpdateProjectResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectResponseBody"}}},"description":""},"UpdateProjectResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"UpdateTagResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTagResponseBody"}}},"description":""},"UpdateTaskCommentResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskCommentResponseBody"}}},"description":""},"UpdateTaskResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskResponseBody"}}},"description":""},"UpdateTaskResponseBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}},"description":"","headers":{"request_id":{"description":"The request ID for tracking.","schema":{"type":"string"}}}},"UpdateTeamResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTeamResponseBody"}}},"description":""},"UpdateUserResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserResponseBody"}}},"description":""},"UploadAccountFileResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAccountFileResponseBody"}}},"description":""},"UploadTrainingDataFileContentResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainingDataUploadResponseBody"}}},"description":""}},"schemas":{"APICustomObject":{"properties":{"created_at":{"description":"When the object was created.","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values keyed by field slug. Relationship-typed fields are excluded here and returned in the `relations` field instead.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"id":{"description":"The ID of the custom object.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the custom object.","type":"string","x-go-name":"Name"},"relations":{"description":"Relationships from this object to other objects, sourced from relationship-typed custom fields.","items":{"$ref":"#/components/schemas/APIObjectRelation"},"type":"array","x-go-name":"Relations"},"type":{"description":"The type slug of the custom object.","type":"string","x-go-name":"Type"},"updated_at":{"description":"When the object was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"APIObjectRelation":{"properties":{"object_id":{"description":"The ID of the related object.","type":"string","x-go-name":"ObjectID"},"object_type":{"description":"The type of the related object (e.g. \"account\", \"contact\", \"issue\").","type":"string","x-go-name":"ObjectType"}},"title":"APIObjectRelation is a single edge from a custom object to another object, sourced from a relationship-typed custom field.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Account":{"properties":{"channels":{"description":"Channels associated with the account.","items":{"$ref":"#/components/schemas/Channel"},"type":"array","x-go-name":"Channels"},"created_at":{"description":"The creation time of the account.","type":"string","x-go-name":"CreatedAt"},"crm_settings":{"$ref":"#/components/schemas/CRMSettings"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom fields associated with the account.","example":{"plan":{"value":"enterprise"}},"type":"object","x-go-name":"CustomFields"},"domain":{"description":"The primary domain of the account.","type":"string","x-go-name":"Domain"},"domains":{"description":"The list of domains associated with the account.","items":{"type":"string"},"type":"array","x-go-name":"Domains"},"external_ids":{"description":"External IDs associated with the account.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"id":{"description":"The ID of the account.","type":"string","x-go-name":"ID"},"is_disabled":{"description":"Whether the account is disabled.","type":"boolean","x-go-name":"IsDisabled"},"latest_customer_activity_time":{"description":"The time of the latest customer activity.","type":"string","x-go-name":"LatestCustomerActivityTime"},"logo_url":{"description":"The logo URL of the account.","type":"string","x-go-name":"LogoURL"},"name":{"description":"The name of the account.","type":"string","x-go-name":"Name"},"owner":{"$ref":"#/components/schemas/MiniUser"},"parent_account_id":{"description":"The ID of this account's parent account, or null if it has no parent.","type":"string","x-go-name":"ParentAccountID"},"primary_domain":{"description":"The primary domain of the account.","type":"string","x-go-name":"PrimaryDomain"},"subaccount_ids":{"description":"The IDs of the subaccounts belonging to this account.","items":{"type":"string"},"type":"array","x-go-name":"SubaccountIDs"},"tags":{"description":"Tags associated with the account.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"type":{"description":"The type of the account.","enum":["customer","internal","community","partner"],"example":"customer","type":"string","x-go-name":"Type"},"updated_at":{"description":"The time the account was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"AccountHighlight":{"properties":{"account_id":{"description":"The ID of the account this highlight belongs to.","type":"string","x-go-name":"AccountID"},"content_html":{"description":"The HTML content of the highlight.","type":"string","x-go-name":"ContentHTML"},"created_at":{"description":"The timestamp of when the highlight was created.","type":"string","x-go-name":"CreatedAt"},"expires_at":{"description":"The timestamp of when the highlight expires, if set.","type":"string","x-go-name":"ExpiresAt"},"id":{"description":"The ID of the account highlight.","type":"string","x-go-name":"ID"},"updated_at":{"description":"The timestamp of when the highlight was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"AccountRelationship":{"properties":{"child_account_id":{"description":"The ID of the account on the child or client side of the relationship.","type":"string","x-go-name":"ChildAccountID"},"created_at":{"description":"The creation time of the relationship.","type":"string","x-go-name":"CreatedAt"},"id":{"description":"The ID of the relationship.","type":"string","x-go-name":"ID"},"parent_account_id":{"description":"The ID of the account on the parent or partner side of the relationship.","type":"string","x-go-name":"ParentAccountID"},"related_object_id":{"description":"The ID of the related parent or partner account.","type":"string","x-go-name":"RelatedObjectID"},"relationship_type":{"description":"The relationship type. One of \"parent_account\" or \"partner_account\".","type":"string","x-go-name":"RelationshipType"},"updated_at":{"description":"The time the relationship was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ActiveTimeByUser":{"properties":{"active_time_seconds":{"description":"The user's active time on the issue in seconds.","format":"int64","type":"integer","x-go-name":"ActiveTimeSeconds"},"business_hours_active_time_seconds":{"description":"The user's business-hours active time on the issue in seconds.","format":"int64","type":"integer","x-go-name":"BusinessHoursActiveTimeSeconds"},"user_id":{"description":"The ID of the user who spent the time.","type":"string","x-go-name":"UserID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ActivityType":{"properties":{"icon_url":{"description":"The icon url of the activity type.","type":"string","x-go-name":"IconURL"},"id":{"description":"The ID of the activity type.","type":"string","x-go-name":"ID"},"label":{"description":"The label of the activity type.","type":"string","x-go-name":"Label"},"slug":{"description":"The slug of the activity type.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Actor":{"properties":{"contact":{"$ref":"#/components/schemas/MiniContact"},"user":{"$ref":"#/components/schemas/MiniUser"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"AddIssueFollowersRequestBody":{"properties":{"contact_ids":{"description":"The IDs of contacts to add as followers.","items":{"type":"string"},"type":"array","x-go-name":"ContactIDs"},"operation":{"description":"Operation to perform. Use \"add\" to add followers (default) or \"remove\" to remove followers.","type":"string","x-go-name":"Operation"},"user_ids":{"description":"The IDs of users to add as followers.","items":{"type":"string"},"type":"array","x-go-name":"UserIDs"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"AddIssueFollowersResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Follower"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"AddIssueGroupChildrenRequestBody":{"properties":{"child_issue_ids":{"description":"The IDs of the issues to add to the group. At least one is required.","items":{"type":"string"},"type":"array","x-go-name":"ChildIssueIDs"}},"required":["child_issue_ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Article":{"properties":{"approval_info":{"$ref":"#/components/schemas/ArticleApprovalInfo"},"author_user_id":{"description":"The ID of the user who authored the article.","type":"string","x-go-name":"AuthorUserID"},"collection_id":{"description":"The ID of the collection this article belongs to, if any.","type":"string","x-go-name":"CollectionID"},"created_at":{"description":"The time the article was created.","type":"string","x-go-name":"CreatedAt"},"current_draft_content_html":{"description":"The current draft content of the article in HTML. This is the latest version, which may differ from the published version.","type":"string","x-go-name":"CurrentDraftContentHTML"},"current_published_content_html":{"description":"The current published content of the article in HTML.","type":"string","x-go-name":"CurrentPublishedContentHTML"},"id":{"description":"The ID of the article.","type":"string","x-go-name":"ID"},"identifier":{"description":"The identifier of the article","type":"string","x-go-name":"Identifier"},"is_published":{"description":"IsPublished indicates if the article is published.","type":"boolean","x-go-name":"IsPublished"},"is_unlisted":{"description":"Whether the article is accessible only via a direct link.","type":"boolean","x-go-name":"IsUnlisted"},"last_edited_at":{"description":"The time the article content was last edited.","type":"string","x-go-name":"LastEditedAt"},"last_published_at":{"description":"The last published at time of the article.","type":"string","x-go-name":"LastPublishedAt"},"slug":{"description":"The slug of the article.","type":"string","x-go-name":"Slug"},"tags":{"description":"Tags assigned to the article.","items":{"$ref":"#/components/schemas/Tag"},"type":"array","x-go-name":"Tags"},"title":{"description":"The name of the article.","type":"string","x-go-name":"Title"},"url":{"description":"The URL of the article.","type":"string","x-go-name":"URL"},"visibility_config":{"$ref":"#/components/schemas/ArticleVisibilityConfig"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ArticleApprovalInfo":{"properties":{"requested_at":{"description":"The time a review was requested. Null if no review has been requested.","type":"string","x-go-name":"RequestedAt"},"reviewed_at":{"description":"The time the current review decision was made. Null if no review decision has been made.","type":"string","x-go-name":"ReviewedAt"},"reviewed_by_user_id":{"description":"The ID of the user who made the current review decision. Null if no review decision has been made.","type":"string","x-go-name":"ReviewedByUserID"},"status":{"description":"The approval status. Possible values: needs_review, changes_requested, approved.","type":"string","x-go-name":"Status"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ArticleFeedback":{"properties":{"article_id":{"description":"The ID of the article that received the feedback.","type":"string","x-go-name":"ArticleID"},"comment":{"description":"The optional comment submitted with the feedback.","type":"string","x-go-name":"Comment"},"id":{"description":"The ID of the feedback submission.","type":"string","x-go-name":"ID"},"knowledge_base_id":{"description":"The ID of the knowledge base containing the article.","type":"string","x-go-name":"KnowledgeBaseID"},"score":{"description":"The feedback score, from 1 (very unhelpful) to 5 (very helpful).","format":"int64","maximum":5,"minimum":1,"type":"integer","x-go-name":"Score"},"submitted_at":{"description":"The time the feedback was submitted, in RFC 3339 format.","type":"string","x-go-name":"SubmittedAt"},"submitter":{"$ref":"#/components/schemas/Actor"},"updated_at":{"description":"The time the feedback was last updated, in RFC 3339 format.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ArticleTranslationInput":{"properties":{"body_html":{"description":"The translated HTML body of the article.","type":"string","x-go-name":"BodyHTML"},"language":{"description":"The language code of the translation. Supported language codes can be found in https://docs.usepylon.com/pylon-docs/knowledge-base/translation#supported-language-codes.","type":"string","x-go-name":"Language"},"title":{"description":"The translated title of the article.","type":"string","x-go-name":"Title"}},"required":["language","title","body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ArticleVisibilityConfig":{"properties":{"ai_agent_access":{"description":"AI agent access control. Defaults to inherit from the parent scope when omitted.","enum":["inherit","none","specific_agents"],"type":"string","x-enumDescriptions":{"inherit":"Defers the access check to the parent object (Collection or KnowledgeBase).","none":"No AI agents have access to this article.","specific_agents":"Only specific AI agents enumerated in the allowlist have access."},"x-go-enum-desc":"inherit KnowledgeBaseArticleAIAgentAccessInherit  Defers the access check to the parent object (Collection or KnowledgeBase).\nnone KnowledgeBaseArticleAIAgentAccessNone  No AI agents have access to this article.\nspecific_agents KnowledgeBaseArticleAIAgentAccessSpecificAgents  Only specific AI agents enumerated in the allowlist have access.","x-go-name":"AiAgentAccess"},"allowed_agent_ids":{"description":"List of AI agent IDs that may access this resource when ai_agent_access is set to \"specific_agents\".","items":{"type":"string"},"type":"array","x-go-name":"AllowedAgentIDs"},"customer_visibility_condition":{"$ref":"#/components/schemas/Filter"},"visibility":{"description":"The visibility setting.","enum":["public","customer","internal_only"],"type":"string","x-go-enum-desc":"public KnowledgeBaseArticleVisibilityPublic\ncustomer KnowledgeBaseArticleVisibilityCustomer\ninternal_only KnowledgeBaseArticleVisibilityInternalOnly","x-go-name":"Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Attachment":{"properties":{"description":{"description":"The description of the attachment.","type":"string","x-go-name":"Description"},"id":{"description":"The ID of the attachment.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the attachment.","type":"string","x-go-name":"Name"},"url":{"description":"The URL of the attachment.","type":"string","x-go-name":"URL"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"AuditLog":{"properties":{"action":{"description":"The action that was performed.","type":"string","x-go-name":"Action"},"action_happened_at":{"description":"The time at which the action happened.","type":"string","x-go-name":"ActionHappenedAt"},"actor_contact_id":{"description":"The ID of the contact who performed the action, if applicable.","type":"string","x-go-name":"ActorContactID"},"actor_user_id":{"description":"The ID of the user who performed the action, if applicable.","type":"string","x-go-name":"ActorUserID"},"attributes":{"additionalProperties":{"type":"string"},"description":"Key-value attributes associated with the audit log.","example":{"field":"status","new_value":"closed","old_value":"open"},"type":"object","x-go-name":"Attributes"},"created_at":{"description":"The time at which the audit log was created.","type":"string","x-go-name":"CreatedAt"},"id":{"description":"The ID of the audit log.","type":"string","x-go-name":"ID"},"link":{"description":"The link associated with the audit log, if applicable.","type":"string","x-go-name":"Link"},"metadata":{"description":"Additional metadata associated with the audit log. The structure varies based on the action type.","type":"object","x-go-name":"Metadata"},"object_id":{"description":"The ID of the object that the audit log is for.","type":"string","x-go-name":"ObjectID"},"object_type":{"description":"The type of object that the audit log is for.","type":"string","x-go-name":"ObjectType"},"source":{"description":"The source of the audit log.","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CRMDetails":{"properties":{"id":{"description":"The ID of the CRM for that source.","type":"string","x-go-name":"ID"},"source":{"description":"The source of the CRM.","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CRMSettings":{"properties":{"details":{"description":"List of all CRM details for the account.","items":{"$ref":"#/components/schemas/CRMDetails"},"type":"array","x-go-name":"Details"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CSATResponse":{"properties":{"comment":{"description":"The comment of the CSAT response.","type":"string","x-go-name":"Comment"},"score":{"description":"The score of the CSAT response.","format":"int64","type":"integer","x-go-name":"Score"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CallRecording":{"properties":{"account_id":{"description":"The account ID associated with the call recording.","type":"string","x-go-name":"AccountID"},"calendar_event_id":{"description":"The calendar event ID associated with the call recording.","type":"string","x-go-name":"CalendarEventID"},"created_at":{"description":"The creation time of the call recording in RFC3339 format.","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom fields associated with the call recording.","example":{"sentiment":{"value":"positive"}},"type":"object","x-go-name":"CustomFields"},"duration_ms":{"description":"The duration of the call recording in milliseconds.","format":"int64","type":"integer","x-go-name":"DurationMs"},"end_time":{"description":"The end time of the call recording in RFC3339 format.","type":"string","x-go-name":"EndTime"},"external_id":{"description":"The external ID of the call recording from the source system.","type":"string","x-go-name":"ExternalID"},"id":{"description":"The ID of the call recording.","type":"string","x-go-name":"ID"},"participant_emails":{"description":"The participant emails of the call recording.","items":{"type":"string"},"type":"array","x-go-name":"ParticipantEmails"},"source":{"description":"The source of the call recording (e.g. fathom, gong, grain, granola, custom_call_recorder).","type":"string","x-go-name":"Source"},"start_time":{"description":"The start time of the call recording in RFC3339 format.","type":"string","x-go-name":"StartTime"},"summary":{"description":"The summary of the call recording.","type":"string","x-go-name":"Summary"},"title":{"description":"The title of the call recording.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The last update time of the call recording in RFC3339 format.","type":"string","x-go-name":"UpdatedAt"},"url":{"description":"The URL of the call recording.","type":"string","x-go-name":"URL"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Channel":{"properties":{"channel_id":{"description":"The ID of the channel. If this is a Microsoft Teams channel, the ID must be in the format of `{team_id}|{channel_id}`.","type":"string","x-go-name":"ChannelID"},"channel_name":{"description":"The human-readable name of the channel.","type":"string","x-go-name":"ChannelName"},"channel_url":{"description":"The direct URL to the channel in its source app, if available.","type":"string","x-go-name":"ChannelURL"},"is_internal":{"description":"Whether this is an internal channel (e.g., a triage channel) as opposed to a customer-facing channel.","type":"boolean","x-go-name":"IsInternal"},"is_primary":{"description":"Whether this channel is the primary channel for the account.","type":"boolean","x-go-name":"IsPrimary"},"mirror_to":{"$ref":"#/components/schemas/MirrorChannel"},"source":{"description":"The channel source. This can be any supported integration source.","example":"slack","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Collection":{"properties":{"created_at":{"description":"The created at time of the collection.","type":"string","x-go-name":"CreatedAt"},"description":{"description":"The description of the collection.","type":"string","x-go-name":"Description"},"icon":{"description":"The icon of the collection.","type":"string","x-go-name":"Icon"},"id":{"description":"The ID of the collection.","type":"string","x-go-name":"ID"},"parent_collection_id":{"description":"The ID of the parent collection.","type":"string","x-go-name":"ParentCollectionID"},"slug":{"description":"The slug of the collection.","type":"string","x-go-name":"Slug"},"title":{"description":"The name of the collection.","type":"string","x-go-name":"Title"},"visibility_config":{"$ref":"#/components/schemas/CollectionVisibilityConfig"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CollectionVisibilityConfig":{"properties":{"ai_agent_access":{"description":"AI agent access control. Defaults to inherit from the parent scope when omitted.","enum":["inherit","none","specific_agents"],"type":"string","x-enumDescriptions":{"inherit":"Defers the access check to the parent object (Collection or KnowledgeBase).","none":"No AI agents have access to this article.","specific_agents":"Only specific AI agents enumerated in the allowlist have access."},"x-go-enum-desc":"inherit KnowledgeBaseArticleAIAgentAccessInherit  Defers the access check to the parent object (Collection or KnowledgeBase).\nnone KnowledgeBaseArticleAIAgentAccessNone  No AI agents have access to this article.\nspecific_agents KnowledgeBaseArticleAIAgentAccessSpecificAgents  Only specific AI agents enumerated in the allowlist have access.","x-go-name":"AiAgentAccess"},"allowed_agent_ids":{"description":"List of AI agent IDs that may access this resource when ai_agent_access is set to \"specific_agents\".","items":{"type":"string"},"type":"array","x-go-name":"AllowedAgentIDs"},"visibility":{"description":"The visibility setting.","enum":["public","customer","internal_only"],"type":"string","x-go-enum-desc":"public KnowledgeBaseArticleVisibilityPublic\ncustomer KnowledgeBaseArticleVisibilityCustomer\ninternal_only KnowledgeBaseArticleVisibilityInternalOnly","x-go-name":"Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Contact":{"properties":{"account":{"$ref":"#/components/schemas/MiniAccount"},"avatar_url":{"description":"Avatar URL of the contact.","type":"string","x-go-name":"AvatarURL"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the contact.","example":{"role":{"value":"admin"}},"type":"object","x-go-name":"CustomFields"},"email":{"description":"The primary email of the contact, if it exists.","type":"string","x-go-name":"Email"},"emails":{"description":"The list of all emails of the contact.","items":{"type":"string"},"type":"array","x-go-name":"Emails"},"external_ids":{"description":"External IDs associated with the contact.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"id":{"description":"The ID of the contact.","type":"string","x-go-name":"ID"},"integration_user_ids":{"description":"Integration user IDs linking this contact to external systems.","items":{"$ref":"#/components/schemas/IntegrationUserID"},"type":"array","x-go-name":"IntegrationUserIDs"},"name":{"description":"The name of the contact.","type":"string","x-go-name":"Name"},"phone_numbers":{"description":"The list of all phone numbers of the contact.","items":{"type":"string"},"type":"array","x-go-name":"PhoneNumbers"},"portal_role":{"description":"Portal role slug assigned to the contact. For backwards compatibility.","enum":["no_access","member","admin"],"type":"string","x-go-enum-desc":"no_access PortalRoleNoAccess\nmember PortalRoleMember\nadmin PortalRoleAdmin","x-go-name":"PortalRole"},"portal_role_id":{"description":"The ID of the custom portal role assigned to the contact.","type":"string","x-go-name":"PortalRoleID"},"primary_phone_number":{"description":"The primary phone number of the contact, if it exists.","type":"string","x-go-name":"PrimaryPhoneNumber"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CreateAccountHighlightRequestBody":{"properties":{"contact_id":{"description":"Optional ID or external ID of a contact to associate the resulting memory with. The contact must belong to the account.","type":"string","x-go-name":"ContactID"},"content_html":{"description":"The HTML content for this highlight.","type":"string","x-go-name":"ContentHTML"},"expires_at":{"description":"Optional RFC3339 timestamp of when this highlight will expire.","type":"string","x-go-name":"ExpiresAt"}},"required":["content_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAccountHighlightResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/AccountHighlight"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAccountRelationshipRequest":{"properties":{"related_object_id":{"description":"The ID of the related parent or partner account.","type":"string","x-go-name":"RelatedObjectID"},"relationship_type":{"description":"The relationship type. Must be \"parent_account\" or \"partner_account\".","type":"string","x-go-name":"RelationshipType"}},"required":["related_object_id","relationship_type"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAccountRelationshipResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/AccountRelationship"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAccountRequest":{"properties":{"account_type":{"default":"customer","description":"The type of the account. Must be one of \"customer\", \"internal\", \"community\", or \"partner\". Defaults to \"customer\" if not specified.","enum":["customer","internal","community","partner"],"example":"customer","type":"string","x-go-name":"AccountType"},"channels":{"description":"An array of channels to be linked to this account.","items":{"$ref":"#/components/schemas/Channel"},"type":"array","x-go-name":"Channels"},"custom_fields":{"description":"An array of custom fields to be used on this account.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"domain":{"description":"Deprecated. Please use Domains and PrimaryDomain instead.","type":"string","x-go-name":"Domain"},"domains":{"description":"The domains of the account, without any leading scheme, for example stripe.com. Must specify one domain as primary.","items":{"type":"string"},"type":"array","x-go-name":"Domains"},"external_ids":{"description":"An array of external IDs to be used on this account. If provided, the account's external IDs will be updated to the given external IDs.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"logo_url":{"description":"The logo URL of the account. Must be a square .png, .jpg or .jpeg.","type":"string","x-go-name":"LogoURL"},"name":{"description":"The name of the account.","type":"string","x-go-name":"Name"},"owner_id":{"description":"The ID of the owner of the account.","type":"string","x-go-name":"OwnerID"},"primary_domain":{"description":"Must be in the list of domains. If there are any domains, there must be exactly one primary domain.","type":"string","x-go-name":"PrimaryDomain"},"subaccount_ids":{"description":"An array of account IDs to be added as subaccounts to this account. For normal accounts, these represent subaccounts. For partner accounts, these represent associated accounts.","items":{"type":"string"},"type":"array","x-go-name":"SubaccountIDs"},"tags":{"description":"An array of strings to use as tags on this account. If provided, the accounts tags will be updated to the given tags.","items":{"type":"string"},"type":"array","x-go-name":"Tags"}},"required":["name"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAccountResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Account"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateActivityRequest":{"properties":{"body_html":{"description":"Optional HTML content to display in the activity.","type":"string","x-go-name":"BodyHTML"},"contact_id":{"description":"Optional contact ID of the actor of the activity.","type":"string","x-go-name":"ContactID"},"happened_at":{"description":"Timestamp (RFC3339) of when the activity happened. Defaults to the current time if empty.","type":"string","x-go-name":"HappenedAt"},"link":{"description":"Optional link to add to the activity.","type":"string","x-go-name":"Link"},"link_text":{"description":"Optional link text to display on the activity. Defaults to \"Open link\" if not provided. Applies only if a link is provided.","type":"string","x-go-name":"LinkText"},"slug":{"description":"The slug of the activity to create.","type":"string","x-go-name":"Slug"},"user_id":{"description":"Optional user ID of the actor of the activity.","type":"string","x-go-name":"UserID"}},"required":["slug"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateActivityResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CreateActivityResponseData"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateActivityResponseData":{"properties":{"success":{"type":"boolean","x-go-name":"Success"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateArticleRequestBody":{"properties":{"author_user_id":{"description":"The ID of the user attributed as the author of the article.","type":"string","x-go-name":"AuthorUserId"},"body_html":{"description":"The HTML body of the article.","type":"string","x-go-name":"BodyHTML"},"collection_id":{"description":"The ID of the collection containing the article.","type":"string","x-go-name":"CollectionID"},"is_published":{"description":"Whether the article should be published. Defaults to false.","type":"boolean","x-go-name":"IsPublished"},"is_unlisted":{"description":"Whether the article is accessible only via a direct link. Defaults to false.","type":"boolean","x-go-name":"IsUnlisted"},"slug":{"description":"The slug of the article. Defaults to a slug based on the title.","type":"string","x-go-name":"Slug"},"title":{"description":"The title of the article.","type":"string","x-go-name":"Title"},"translations":{"description":"Translations of the article content in different languages","items":{"$ref":"#/components/schemas/ArticleTranslationInput"},"type":"array","x-go-name":"Translations"},"visibility_config":{"$ref":"#/components/schemas/ArticleVisibilityConfig"}},"required":["title","author_user_id","body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateArticleResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Article"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateAttachmentResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Attachment"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCallRecordingMessageRequest":{"properties":{"message_at_ms":{"description":"The timestamp of the message in milliseconds from the start of the recording.","format":"int64","type":"integer","x-go-name":"MessageAtMs"},"message_content":{"description":"The content of the message.","type":"string","x-go-name":"MessageContent"},"speaker_email":{"description":"The email of the speaker.","type":"string","x-go-name":"SpeakerEmail"},"speaker_name":{"description":"The name of the speaker.","type":"string","x-go-name":"SpeakerName"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCallRecordingRequest":{"properties":{"account_id":{"description":"Account ID to match this call recording to. If provided, the account is looked up by ID and the participant emails are not used for account matching. If omitted, an account will be selected based on the emails of the participants in the call.","type":"string","x-go-name":"AccountID"},"app_type":{"description":"The app type of the call recording.","type":"string","x-go-name":"AppType"},"call_recording_messages":{"description":"The structured messages for custom call integration.","items":{"$ref":"#/components/schemas/CreateCallRecordingMessageRequest"},"type":"array","x-go-name":"CallRecordingMessages"},"custom_fields":{"description":"An array of custom fields to set on the call recording.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"end_time":{"description":"The end time of the call recording in the format of 2025-01-01T00:00:00Z.","type":"string","x-go-name":"EndTime"},"participant_emails":{"description":"The emails of all participants in the call recording.","type":"string","x-go-name":"ParticipantEmails"},"primary_user_email":{"description":"The email of the primary user in the call recording.","type":"string","x-go-name":"PrimaryUserEmail"},"recording_id":{"description":"The external ID of the call recording.","type":"string","x-go-name":"RecordingID"},"recording_url":{"description":"The URL of the call recording.","type":"string","x-go-name":"RecordingURL"},"start_time":{"description":"The start time of the call recording in the format of 2025-01-01T00:00:00Z.","type":"string","x-go-name":"StartTime"},"title":{"description":"The title of the call recording.","type":"string","x-go-name":"Title"}},"required":["app_type"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCallRecordingResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CallRecording"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCollectionRequestBody":{"properties":{"description":{"description":"Description of the collection.","type":"string","x-go-name":"Description"},"parent_collection_id":{"description":"The ID of the parent collection.","type":"string","x-go-name":"ParentCollectionID"},"slug":{"description":"The slug of the collection. Defaults to a slug based on the title.","type":"string","x-go-name":"Slug"},"title":{"description":"The title of the collection.","type":"string","x-go-name":"Title"},"visibility_config":{"$ref":"#/components/schemas/CollectionVisibilityConfig"}},"required":["title"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCollectionResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Collection"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateContactRequestBody":{"properties":{"account_external_id":{"description":"The external ID of the account that this contact belongs to. Cannot be used together with account_id.","type":"string","x-go-name":"AccountExternalID"},"account_id":{"description":"The account that this contact belongs to.","type":"string","x-go-name":"AccountID"},"avatar_url":{"description":"The avatar URL of the contact. Must be a square .png, .jpg or .jpeg.","type":"string","x-go-name":"AvatarUrl"},"custom_fields":{"description":"An array of custom fields to be applied to this contact.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"email":{"description":"The email of the contact.","type":"string","x-go-name":"Email"},"external_ids":{"description":"An array of external IDs to be used on this contact.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"name":{"description":"The name of the contact.","type":"string","x-go-name":"Name"},"phone_numbers":{"description":"The phone numbers of the contact. Must contain only digits 0-9 and be 15 digits or less.","items":{"type":"string"},"type":"array","x-go-name":"PhoneNumbers"},"portal_role":{"description":"The portal role to assign to the contact. If not provided uses the default portal role from the portal settings.","enum":["no_access","member","admin"],"type":"string","x-go-enum-desc":"no_access PortalRoleNoAccess\nmember PortalRoleMember\nadmin PortalRoleAdmin","x-go-name":"PortalRole"},"portal_role_id":{"description":"The ID of the custom portal role to assign to the contact. Takes precedence over portal_role if provided.","type":"string","x-go-name":"PortalRoleID"},"primary_phone_number":{"description":"The primary phone number. Must be in the list of phone_numbers. If there are any phone_numbers and this is not specified, the first phone number will be primary.","type":"string","x-go-name":"PrimaryPhoneNumber"}},"required":["name"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateContactResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Contact"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCustomFieldRequestBody":{"properties":{"default_value":{"description":"The default value for single-valued custom fields.","type":"string","x-go-name":"DefaultValue"},"default_values":{"description":"The default values for multi-valued custom fields.","items":{"type":"string"},"type":"array","x-go-name":"DefaultValues"},"description":{"description":"The description of the custom field.","type":"string","x-go-name":"Description"},"label":{"description":"The label of the custom field.","type":"string","x-go-name":"Label"},"object_type":{"description":"The object type of the custom field. Can be \"account\", \"issue\", \"contact\", \"task\", \"project\", \"meeting\", or \"opportunity\".","enum":["account","issue","contact","task","project","meeting","opportunity"],"example":"account","type":"string","x-go-name":"ObjectType"},"select_options":{"description":"The list options of the select custom field. This is only present for select and multiselect custom fields.","items":{"$ref":"#/components/schemas/CustomFieldDefinitionSelectOption"},"type":"array","x-go-name":"SelectOptions"},"slug":{"description":"The slug of the custom field.","type":"string","x-go-name":"Slug"},"type":{"description":"The type of the custom field. Can be one of `text`, `number`, `decimal`, `boolean`, `date`, `datetime`, `user`, `url`, `select`, or `multiselect`.","example":"text","type":"string","x-go-name":"Type"}},"required":["object_type","label","type"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCustomFieldResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinition"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCustomObjectRequestBody":{"properties":{"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values to set on the object, keyed by field slug. To link the object to an account, pass the built-in Account relationship field as `custom_fields.account.value`, for example `{\"custom_fields\":{\"account\":{\"value\":\"account_uuid\"}}}`.","example":{"account":{"value":"account_uuid"}},"type":"object","x-go-name":"CustomFields"},"name":{"description":"The name of the custom object.","type":"string","x-go-name":"Name"}},"required":["name"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateCustomObjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/APICustomObject"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateFeatureRequestEvidenceRequestBody":{"properties":{"account_id":{"description":"The ID of the customer account to link to the feature request.","type":"string","x-go-name":"AccountID"},"summary":{"default":"Account manually linked via API.","description":"A summary explaining why this account is linked. Defaults to \"Account manually linked via API.\"","type":"string","x-go-name":"Summary"}},"required":["account_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateFeatureRequestEvidenceResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequestEvidence"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateFeatureRequestRequest":{"properties":{"description":{"description":"The description of the feature request. Ignored when should_auto_fetch_evidence is true, since the description is then generated from gathered evidence.","type":"string","x-go-name":"Description"},"should_auto_fetch_evidence":{"description":"When true, asynchronously gathers supporting evidence and generates a description, mirroring the in-app experience. Defaults to false, which creates the feature request as-is.","type":"boolean","x-go-name":"ShouldAutoFetchEvidence"},"title":{"description":"The title of the feature request.","type":"string","x-go-name":"Title"}},"required":["title"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateFeatureRequestResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueAIResponseRequestBody":{"properties":{"ai_agent_id":{"description":"The ID of the AI agent to use to create the AI response.","type":"string","x-go-name":"AIAgentID"},"post_as_internal_note":{"description":"Whether to post the AI response as an internal note on the issue.","type":"boolean","x-go-name":"PostAsInternalNote"}},"required":["ai_agent_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueAIResponseResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"response_html":{"description":"The HTML content of the AI response.","type":"string","x-go-name":"ResponseHTML"},"response_valid":{"description":"Whether the AI was able to answer the question.","type":"boolean","x-go-name":"ResponseValid"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueDraftReplyRequestBody":{"properties":{"body_html":{"description":"The draft body in HTML.","type":"string","x-go-name":"BodyHTML"},"user_id":{"description":"The active Pylon user who should own and see the draft. Defaults to the API-token user when it is a human Pylon user; required for unlinked or service API tokens.","type":"string","x-go-name":"UserID"}},"required":["body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueDraftReplyResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CreateIssueDraftReplyResponseData"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueDraftReplyResponseData":{"properties":{"id":{"description":"The ID of the draft.","type":"string","x-go-name":"ID"},"issue_id":{"description":"The ID of the issue.","type":"string","x-go-name":"IssueID"},"status":{"description":"Whether the endpoint created or updated the draft.","enum":["created","updated"],"type":"string","x-go-enum-desc":"created CreateIssueDraftReplyStatusCreated\nupdated CreateIssueDraftReplyStatusUpdated","x-go-name":"Status"},"updated_at":{"description":"The time the draft was last updated.","type":"string","x-go-name":"UpdatedAt"},"user_id":{"description":"The ID of the Pylon user who owns and can see the draft.","type":"string","x-go-name":"UserID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueGroupRequestBody":{"properties":{"child_issue_ids":{"description":"The IDs of the issues to include in the group. At least one is required.","items":{"type":"string"},"type":"array","x-go-name":"ChildIssueIDs"},"title":{"description":"The title of the issue group.","type":"string","x-go-name":"Title"}},"required":["title","child_issue_ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueGroupResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueNoteRequestBody":{"properties":{"attachment_urls":{"description":"URLs of files to attach to this internal note.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"body_html":{"description":"The body of the message in HTML.","type":"string","x-go-name":"BodyHTML"},"message_id":{"description":"The ID of an internal note whose thread should receive the new note. Use the top-level `id` from GET /issues/{id}/messages. Cannot be combined with thread_id.","type":"string","x-go-name":"MessageID"},"thread_id":{"description":"The ID of the internal thread to post the note to. Use the `id` field (not `thread_id`) from GET /issues/{id}/threads. Cannot be combined with message_id.","type":"string","x-go-name":"ThreadID"},"thread_name":{"description":"Optional name for a new Pylon-only internal thread. Used only when neither thread_id nor message_id is provided and no Slack-backed internal thread exists.","type":"string","x-go-name":"ThreadName"},"user_id":{"description":"Optional user ID to post the message as. If not provided, the API token user will be used.","type":"string","x-go-name":"UserID"}},"required":["body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueNoteResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CreateIssueNoteResponseData"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueNoteResponseData":{"properties":{"id":{"description":"The ID of the message.","type":"string","x-go-name":"ID"},"issue_id":{"description":"The ID of the issue.","type":"string","x-go-name":"IssueID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueReplyEmailInfo":{"description":"Recipient information for replies to email conversations.\nProvide at least one address across to_emails, cc_emails, and bcc_emails.\nRecipients are not inferred from the referenced message.","properties":{"bcc_emails":{"description":"The blind-carbon-copy recipients of the email reply.","items":{"type":"string"},"type":"array","x-go-name":"BccEmails"},"cc_emails":{"description":"The carbon-copy recipients of the email reply.","items":{"type":"string"},"type":"array","x-go-name":"CcEmails"},"to_emails":{"description":"The primary recipients of the email reply.","items":{"type":"string"},"type":"array","x-go-name":"ToEmails"}},"title":"CreateIssueReplyEmailInfo","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueReplyRequestBody":{"properties":{"attachment_urls":{"description":"URLs of files to attach to this reply.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"body_html":{"description":"The body of the message in HTML.","type":"string","x-go-name":"BodyHTML"},"contact_id":{"description":"Optional contact ID to post the message as. Only one of user_id or contact_id can be provided.","type":"string","x-go-name":"ContactID"},"custom_source":{"$ref":"#/components/schemas/CustomSourceInfo"},"email_info":{"$ref":"#/components/schemas/CreateIssueReplyEmailInfo"},"message_id":{"description":"The top-level Pylon message ID to reply to, from the `id` field returned by GET /issues/{id}/messages. The message must belong to the issue in the request path and must be customer-visible, not an internal note. This selects the external conversation or thread where the reply is delivered. For email, it also sets the In-Reply-To and References chain. Do not use a provider-specific message ID or email_info.message_id.","type":"string","x-go-name":"MessageID"},"user_id":{"description":"Optional user ID to post the message as. Only one of user_id or contact_id can be provided.","type":"string","x-go-name":"UserID"}},"required":["body_html","message_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueReplyResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CreateIssueReplyResponseData"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueReplyResponseData":{"properties":{"id":{"description":"The ID of the message.","type":"string","x-go-name":"ID"},"issue_id":{"description":"The ID of the issue.","type":"string","x-go-name":"IssueID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueRequest":{"properties":{"account_id":{"description":"The account that this issue belongs to. If requester_id is also provided, the requester must belong to this account. If requester_email is provided, the contact is found or created in this account.","type":"string","x-go-name":"AccountID"},"assignee_id":{"description":"The user the issue should be assigned to.","type":"string","x-go-name":"AssigneeID"},"attachment_urls":{"description":"URLs of files to attach to the issue's first message.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"author_unverified":{"description":"Whether the requester's identity has NOT been verified. Defaults to false (verified).","type":"boolean","x-go-name":"AuthorUnverified"},"body_html":{"description":"The HTML content of the body of the issue.","type":"string","x-go-name":"BodyHTML"},"contact_id":{"description":"The contact to attribute the first message to. This controls the message author, not the issue requester. Makes the message appear as a customer message rather than an internal note. Only one of user_id or contact_id can be provided. Requires destination_metadata.","type":"string","x-go-name":"ContactID"},"created_at":{"description":"Timestamp of when the issue was created. If not specified, the current time will be used. (RFC3339)","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"description":"An array of custom fields to be used on this issue.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Whether the issue should be visible in the customer portal. When destination is \"customer_portal\", this is set to true and cannot be false.","type":"boolean","x-go-name":"CustomerPortalVisible"},"destination_metadata":{"$ref":"#/components/schemas/DestinationMetadata"},"priority":{"description":"The priority of the issue. Can be one of: urgent, high, medium, or low.","enum":["urgent","high","medium","low"],"example":"medium","type":"string","x-go-name":"Priority"},"requester_avatar_url":{"description":"The URL of an avatar of the requester.","type":"string","x-go-name":"RequesterAvatarUrl"},"requester_email":{"description":"The email of the customer this issue is for. Used when requester_id is omitted. If no matching contact exists, one will be created. When account_id is provided, the contact is found or created in that account. This does not control who authored the first message.","type":"string","x-go-name":"RequesterEmail"},"requester_id":{"description":"The customer this issue is for. Sets the \"Requester\" shown in the issue sidebar but does not control who authored the first message. If account_id is omitted, the requester's primary account is used when available. If requester_email is also provided, requester_id takes precedence.","type":"string","x-go-name":"RequesterID"},"requester_name":{"description":"The optional full name of the requester. Used when creating a new contact via requester_email.","type":"string","x-go-name":"RequesterName"},"tags":{"description":"An array of strings to use as tags on this issue. If provided, the issue tags will be updated to the given tags.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"team_id":{"description":"The ID of the team this issue should be assigned to.","type":"string","x-go-name":"TeamID"},"title":{"description":"The title of the issue.","type":"string","x-go-name":"Title"},"user_id":{"description":"The internal Pylon user to attribute the first message to. This does not assign the user as the requester. Only one of user_id or contact_id can be provided. If neither is set, the API token's user is used.","type":"string","x-go-name":"UserID"}},"required":["title","body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueThreadRequestBody":{"properties":{"name":{"description":"The name of the thread.","type":"string","x-go-name":"Name"},"slack_channel_id":{"description":"The Slack channel ID to sync the thread to. When slack_thread_ts is also provided, links that existing Slack thread. Otherwise, creates a new Slack-backed thread.\nLinking an existing Slack thread imports its message history and enables ongoing synchronization. Creating or linking a Slack-backed thread requires an API token configured to act as a human Pylon user whose verified Slack identity is a member of the channel. Pylon bot users and standalone API identities are not supported because they do not have Slack-verifiable channel membership.","type":"string","x-go-name":"SlackChannelID"},"slack_thread_ts":{"description":"The root message timestamp of an existing Slack thread to link. Requires slack_channel_id.","type":"string","x-go-name":"SlackThreadTs"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateIssueThreadResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/IssueThread"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateMacroRequestBody":{"properties":{"conditions":{"$ref":"#/components/schemas/Filter"},"macro_group_id":{"description":"The ID of the macro group this macro belongs to.","type":"string","x-go-name":"MacroGroupID"},"name":{"description":"The name of the macro.","type":"string","x-go-name":"Name"},"text_html":{"description":"The HTML content of the macro.","type":"string","x-go-name":"TextHTML"},"text_type":{"description":"The type of text: \"reply\", \"note\", or \"email\". Defaults to \"reply\".","type":"string","x-go-name":"TextType"},"visibility":{"$ref":"#/components/schemas/VisibilityInput"}},"required":["name","text_html","macro_group_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateMacroResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Macro"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateMilestoneRequestBody":{"properties":{"account_id":{"description":"Account ID for this project","type":"string","x-go-name":"AccountID"},"due_date":{"description":"Due date for this milestone, in RFC 3339 format","type":"string","x-go-name":"DueDate"},"name":{"description":"Name for this milestone","type":"string","x-go-name":"Name"},"project_id":{"description":"Project ID for this milestone","type":"string","x-go-name":"ProjectID"}},"required":["name","project_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateMilestoneResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Milestone"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateProjectRequestBody":{"properties":{"account_id":{"description":"Account ID for this project","type":"string","x-go-name":"AccountID"},"customer_portal_visible":{"default":false,"description":"Customer portal visible for this project","type":"boolean","x-go-name":"CustomerPortalVisible"},"description_html":{"description":"Description HTML for this project","type":"string","x-go-name":"DescriptionHTML"},"end_date":{"description":"End date for this project, in RFC 3339 format","type":"string","x-go-name":"EndDate"},"name":{"description":"Name for this project. Required unless project_template_id is provided. When both are provided, this name overrides the template's name.","type":"string","x-go-name":"Name"},"owner_id":{"description":"Owner ID for this project","type":"string","x-go-name":"OwnerID"},"project_template_id":{"description":"Project template ID for this project. When provided, it supplies defaults; non-empty name and description_html values and supplied customer_portal_visible and owner_id values override them. Supplying either start_date or end_date replaces both template dates.","type":"string","x-go-name":"ProjectTemplateID"},"start_date":{"description":"Start date for this project, in RFC 3339 format","type":"string","x-go-name":"StartDate"}},"required":["account_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateProjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Project"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateRouteRedirectRequestBody":{"properties":{"from_path":{"description":"The path to redirect from.","type":"string","x-go-name":"FromPath"},"language":{"description":"Language of the object to redirect to. If not specified, the default language of the knowledge base will be used.","type":"string","x-go-name":"Language"},"object_id":{"description":"The ID of the object to redirect to.","type":"string","x-go-name":"ObjectID"},"object_type":{"description":"The type of the object to redirect to. Must be \"article\" or \"collection\".","type":"string","x-go-name":"ObjectType"}},"required":["from_path","object_id","object_type"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateRouteRedirectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/RouteRedirect"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTagRequestBody":{"properties":{"hex_color":{"description":"The hex code of the tag's color.","type":"string","x-go-name":"HexColor"},"object_type":{"description":"The object type of the associated object. Can be \"account\", \"article\", or \"issue\".","enum":["account","article","issue"],"example":"issue","type":"string","x-go-name":"ObjectType"},"value":{"description":"The tag value.","type":"string","x-go-name":"Value"}},"required":["object_type","value"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTagResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Tag"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTaskCommentRequestBody":{"properties":{"body_html":{"description":"The body of the comment in HTML format.","type":"string","x-go-name":"BodyHTML"},"is_internal":{"description":"Whether the comment is visible only to internal users.","type":"boolean","x-go-name":"IsInternal"}},"required":["body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTaskCommentResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TaskComment"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTaskRequestBody":{"properties":{"account_id":{"description":"Account ID for this task","type":"string","x-go-name":"AccountID"},"assignee_id":{"description":"Assignee ID for this task","type":"string","x-go-name":"AssigneeID"},"body_html":{"description":"Body HTML for this task","type":"string","x-go-name":"BodyHTML"},"custom_fields":{"description":"An array of custom fields to be used on this task.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"default":false,"description":"Customer portal visible for this task","type":"boolean","x-go-name":"CustomerPortalVisible"},"due_date":{"description":"Due date for this task, in RFC 3339 format","type":"string","x-go-name":"DueDate"},"milestone_id":{"description":"Milestone ID for this task","type":"string","x-go-name":"MilestoneID"},"parent_task_id":{"description":"Parent task ID, to create this task as a subtask","type":"string","x-go-name":"ParentTaskID"},"project_id":{"description":"Project ID for this task","type":"string","x-go-name":"ProjectID"},"status":{"$ref":"#/components/schemas/TaskStatus"},"title":{"description":"Title for this task","type":"string","x-go-name":"Title"}},"required":["title"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTaskResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTeamRequestBody":{"properties":{"name":{"description":"The name of the team.","type":"string","x-go-name":"Name"},"user_ids":{"description":"The list of user IDs to add to the team.","items":{"type":"string"},"type":"array","x-go-name":"UserIDs"}},"required":["name"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTeamResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Team"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTrainingDataRequestBody":{"properties":{"training_data_name":{"description":"The name of the training data container.","type":"string","x-go-name":"TrainingDataName"},"visibility":{"default":"everyone","description":"The visibility of the training data. Defaults to \"everyone\".\nValid values: \"everyone\", \"user_only\", \"ai_agent_only\"","enum":["everyone","user_only","ai_agent_only"],"example":"everyone","type":"string","x-go-name":"Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CreateTrainingDataResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TrainingData"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"CustomFieldDefinition":{"properties":{"created_at":{"description":"When the custom field was created.","type":"string","x-go-name":"CreatedAt"},"default_value":{"description":"The default value for single-valued custom fields.","type":"string","x-go-name":"DefaultValue"},"default_values":{"description":"The default values for multi-valued custom fields.","items":{"type":"string"},"type":"array","x-go-name":"DefaultValues"},"description":{"description":"The description of the custom field.","type":"string","x-go-name":"Description"},"id":{"description":"The ID of the custom field.","type":"string","x-go-name":"ID"},"is_read_only":{"description":"Whether the custom field is read only. Fields synced from apps and integrations are read-only.","type":"boolean","x-go-name":"IsReadOnly"},"label":{"description":"The label of the custom field.","type":"string","x-go-name":"Label"},"number_metadata":{"$ref":"#/components/schemas/NumberMetadata"},"object_type":{"description":"The type of object this custom field is for. This can be a built-in or custom object type.","example":"account","type":"string","x-go-name":"ObjectType"},"select_metadata":{"$ref":"#/components/schemas/SelectMetadata"},"slug":{"description":"The slug of the custom field.","type":"string","x-go-name":"Slug"},"source":{"description":"The source of the custom field.","type":"string","x-go-name":"Source"},"type":{"description":"The type of the custom field.","example":"text","type":"string","x-go-name":"Type"},"updated_at":{"description":"When the custom field was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CustomFieldDefinitionSelectOption":{"properties":{"ai_description":{"description":"The AI description of the option. This is used to help the AI understand when to select this option.","type":"string","x-go-name":"AIDescription"},"label":{"description":"The label of the option.","type":"string","x-go-name":"Label"},"slug":{"description":"The slug of the option.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CustomFieldValue":{"properties":{"slug":{"description":"The slug of the custom field.","type":"string","x-go-name":"Slug"},"value":{"description":"The value of the custom field. Only to be used for single-valued custom fields. If unset, the custom field will be unset. If the custom field is a select field, the value must be the select option slug, which you can find from the GET /custom-fields endpoint. If the custom field is a relationship field, the value must be the related object ID.","type":"string","x-go-name":"Value"},"values":{"description":"The values of the custom field. Only to be used for multi-valued custom fields (ex. multiselect). If unset, the custom field will be unset. If the custom field is a multiselect field, the values must be the select option slugs which you can find from the GET /custom-fields endpoint.","items":{"type":"string"},"type":"array","x-go-name":"Values"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"CustomSourceInfo":{"properties":{"created_at":{"description":"The timestamp of when the message was created in the external system. (RFC3339)","type":"string","x-go-name":"CreatedAt"},"external_id":{"description":"The external ID of this message in the custom system.","type":"string","x-go-name":"ExternalID"},"metadata":{"additionalProperties":{},"description":"Arbitrary metadata to store with the message.","example":{"conversation_id":"conv_123","source":"wechat"},"type":"object","x-go-name":"Metadata"}},"required":["external_id"],"title":"CustomSourceInfo contains metadata for messages on custom source issues.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteAccountHighlightResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/DeleteAccountHighlightResponseData"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteAccountHighlightResponseData":{"properties":{"success":{"type":"boolean","x-go-name":"Success"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteAccountRelationshipResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/AccountRelationship"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteAccountResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteArticleResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteCallRecordingResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteCollectionResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteContactResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteCustomObjectResponseBody":{"properties":{"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteFeatureRequestResponseBody":{"properties":{"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteIssueResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteMacroResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteMessageResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteMilestoneResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteProjectResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteTagResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteTaskCommentResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteTaskResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DeleteTrainingDataDocumentsResponseBody":{"properties":{"deleted_count":{"format":"int64","type":"integer","x-go-name":"DeletedCount"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"DestinationMetadata":{"description":"Specifies if/how communication will be delivered to the customer.\nYou can configure the issue to contact the requester via email, Slack, in-app chat, SMS, WhatsApp, make it available only in the customer portal, or keep it internal.\nIf an external destination is specified, a message with the issue's BodyHTML will be delivered to the requester. The `customer_portal` destination requires Customer Portal to be enabled and creates a customer-visible message without external delivery.\nTo avoid contacting the requester, omit destination_metadata from the create-issue request or specify the `internal` destination.\nIf destination_metadata is provided, destination is required.","properties":{"chat_widget_app_id":{"description":"The ID of the chat widget app to use for in-app chat.","type":"string","x-go-name":"ChatWidgetAppID"},"destination":{"description":"The destination type of the issue. Can be \"email\", \"slack\", \"in_app_chat\", \"customer_portal\", \"sms\", \"whatsapp\", or \"internal\". Required when destination_metadata is provided. Use \"customer_portal\" for a customer-visible issue with no external delivery; Customer Portal must be enabled for the organization. To create an internal issue, omit destination_metadata or set this field to \"internal\".","enum":["slack","email","in_app_chat","customer_portal","internal","sms","whatsapp"],"type":"string","x-enumDescriptions":{"customer_portal":"Make messages available in the customer portal without external delivery.","email":"Deliver messages to the issue requester via email.","in_app_chat":"Deliver messages to the issue requester via in-app chat.","internal":"Keep the issue internal and don't contact the requester at all.","slack":"Deliver to the issue's account's Slack channel.","sms":"Deliver messages to the issue requester via SMS.","whatsapp":"Deliver messages to the issue requester via WhatsApp."},"x-go-enum-desc":"slack APIIssueDestinationSlack  Deliver to the issue's account's Slack channel.\nemail APIIssueDestinationEmail  Deliver messages to the issue requester via email.\nin_app_chat APIIssueDestinationChatWidget  Deliver messages to the issue requester via in-app chat.\ncustomer_portal APIIssueDestinationCustomerPortal  Make messages available in the customer portal without external delivery.\ninternal APIIssueDestinationInternal  Keep the issue internal and don't contact the requester at all.\nsms APIIssueDestinationSMS  Deliver messages to the issue requester via SMS.\nwhatsapp APIIssueDestinationWhatsApp  Deliver messages to the issue requester via WhatsApp.","x-go-name":"Destination"},"email":{"description":"The email that emails to the requester will be sent from. You must configure an email app in Pylon with this address.","type":"string","x-go-name":"Email"},"email_bccs":{"description":"Emails that will be BCCed on emails to the requester.","items":{"type":"string"},"type":"array","x-go-name":"EmailBCCs"},"email_ccs":{"description":"Emails that will be CCed on emails to the requester.","items":{"type":"string"},"type":"array","x-go-name":"EmailCCs"},"from_sms_phone_number_id":{"description":"The ID of the Telnyx phone number to send SMS from. Required if destination is \"sms\".","type":"string","x-go-name":"FromSMSPhoneNumberID"},"whatsapp_app_id":{"description":"The ID of the WhatsApp app to send messages from. Required if destination is \"whatsapp\".","type":"string","x-go-name":"WhatsAppAppID"},"whatsapp_message_template_language":{"description":"The language of the WhatsApp message template to use. Required if destination is \"whatsapp\".","type":"string","x-go-name":"WhatsAppMessageTemplateLanguage"},"whatsapp_message_template_name":{"description":"The name of the WhatsApp message template to use. Required if destination is \"whatsapp\".","type":"string","x-go-name":"WhatsAppMessageTemplateName"}},"required":["destination"],"title":"DestinationMetadata","type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"EmailMessageInfo":{"properties":{"bcc_emails":{"description":"The email addresses of the BCC recipients of the message.","items":{"type":"string"},"type":"array","x-go-name":"BccEmails"},"cc_emails":{"description":"The email addresses of the CC recipients of the message.","items":{"type":"string"},"type":"array","x-go-name":"CcEmails"},"from_email":{"description":"The email address of the sender of the message.","type":"string","x-go-name":"FromEmail"},"message_id":{"description":"The RFC 5322 Message-ID header value for this email. This is a provider-specific identifier, not the top-level Pylon message ID, and cannot be used as message_id when posting a reply or internal note.","type":"string","x-go-name":"MessageID"},"to_emails":{"description":"The email addresses of the recipients of the message.","items":{"type":"string"},"type":"array","x-go-name":"ToEmails"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ErrorApiResponseBody":{"properties":{"errors":{"description":"The list of errors.","items":{"type":"string"},"type":"array","x-go-name":"Errors"},"exists_id":{"description":"The ID of the object that already exists if this is a duplicate object error.","type":"string","x-go-name":"ExistsID"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ExternalID":{"properties":{"external_id":{"description":"The external ID. Must be unique per object type (ex. account).","type":"string","x-go-name":"ExternalID"},"label":{"description":"The label of the external ID. Must be unique per object.","type":"string","x-go-name":"Label"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"ExternalIssue":{"properties":{"external_id":{"description":"The external ID of the external issue.\nJira: ID of the issue (autoincrementing number from 10000).\nGitHub: Owner/Repo/IssueID.\nLinear: ID of the issue (UUID).\nAsana: ID of the task (Long number).","type":"string","x-go-name":"ExternalID"},"link":{"description":"Link to the product issue.","type":"string","x-go-name":"Link"},"source":{"description":"The source of the external issue.","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"FeatureRequest":{"properties":{"created_at":{"description":"The time the feature request was created (RFC3339).","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the feature request, keyed by custom field slug.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"description":{"description":"The description of the feature request.","type":"string","x-go-name":"Description"},"evidence":{"description":"Evidence items linked to this feature request. Only populated when fetch_evidence=true.","items":{"$ref":"#/components/schemas/FeatureRequestEvidence"},"type":"array","x-go-name":"Evidence"},"evidence_count":{"description":"The number of evidence items (excluding irrelevant) linked to this feature request.","format":"int64","type":"integer","x-go-name":"EvidenceCount"},"external_issues":{"description":"The external product issues associated with the feature request, if any.","items":{"$ref":"#/components/schemas/ExternalIssue"},"type":"array","x-go-name":"ExternalIssues"},"id":{"description":"The ID of the feature request.","type":"string","x-go-name":"ID"},"portal_visible_to_account_ids":{"description":"Account IDs that can see this feature request in the customer portal. Empty means hidden from all accounts. Only takes effect when the Feature Requests tab is enabled in portal settings.","items":{"type":"string"},"type":"array","x-go-name":"PortalVisibleToAccountIDs"},"request_status":{"description":"The status of the feature request. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string","x-go-name":"RequestStatus"},"title":{"description":"The title of the feature request.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The time the feature request was last updated (RFC3339).","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"FeatureRequestEvidence":{"properties":{"account_id":{"description":"The ID of the customer account that submitted this evidence (e.g. the account whose issue or call recording is linked), if available.","type":"string","x-go-name":"AccountID"},"created_at":{"description":"The time when the evidence was created, in RFC 3339 format.","type":"string","x-go-name":"CreatedAt"},"external_url":{"description":"The URL of the evidence in the external system (e.g. Fathom, Gong). Only included for call recording evidence when the value is known; omitted for other evidence sources.","type":"string","x-go-name":"ExternalURL"},"id":{"description":"The ID of the evidence record.","type":"string","x-go-name":"ID"},"source_id":{"description":"The ID of the linked issue. Only present for issue evidence.","type":"string","x-go-name":"SourceID"},"source_type":{"description":"The source type of the evidence (e.g. 'issue', 'call_recording', 'survey_response', 'manual').","type":"string","x-go-name":"SourceType"},"summary":{"description":"A summary of why this evidence supports the feature request.","type":"string","x-go-name":"Summary"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"FeatureRequestSearchResult":{"properties":{"account_ids":{"description":"IDs of customer accounts that have requested this feature, resolved via the evidence chain.","items":{"type":"string"},"type":"array","x-go-name":"AccountIDs"},"created_at":{"description":"The time the feature request was created (RFC3339).","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the feature request, keyed by custom field slug.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"description":{"description":"The description of the feature request.","type":"string","x-go-name":"Description"},"evidence_count":{"description":"The number of evidence items (excluding irrelevant) linked to this feature request.","format":"int64","type":"integer","x-go-name":"EvidenceCount"},"external_issues":{"description":"The external product issues associated with the feature request, if any.","items":{"$ref":"#/components/schemas/ExternalIssue"},"type":"array","x-go-name":"ExternalIssues"},"id":{"description":"The ID of the feature request.","type":"string","x-go-name":"ID"},"portal_visible_to_account_ids":{"description":"Account IDs that can see this feature request in the customer portal. Empty means hidden from all accounts. Only takes effect when the Feature Requests tab is enabled in portal settings.","items":{"type":"string"},"type":"array","x-go-name":"PortalVisibleToAccountIDs"},"request_status":{"description":"The status of the feature request. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string","x-go-name":"RequestStatus"},"title":{"description":"The title of the feature request.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The time the feature request was last updated (RFC3339).","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Filter":{"properties":{"field":{"description":"The field for this filter.  For allowed fields, see the documentation for\nthe specific endpoint you are using.\nFor non-compound filters (any operators other than \"and\" or \"or\"),\nfield must be set, along with either value or values, depending on the operator.","type":"string","x-go-name":"Field"},"operator":{"description":"The operator for this filter.","enum":["equals","not_equals","contains","does_not_contain","in","not_in","and","or","time_is_after","time_is_before","time_range","string_contains","string_does_not_contain","is_set","is_unset","greater_than","less_than","greater_than_or_equals","less_than_or_equals"],"type":"string","x-enumDescriptions":{"and":"Matches objects only if all subfilters match.","contains":"For a multi-valued field, such as tags, this operator will match objects that contain any of the values in the field.","does_not_contain":"For a multi-valued field, such as tags, this operator will match objects that do not contain any of the values in the field.","equals":"Matches objects that are exactly equal to the value in the field.","greater_than":"Matches objects if the numeric field is greater than the given value.","greater_than_or_equals":"Matches objects if the numeric field is greater than or equal to the given value.","in":"Matches objects if the field is one of several possible values, as specified in the values array.","is_set":"Matches objects if the field is set.","is_unset":"Matches objects if the field is unset.","less_than":"Matches objects if the numeric field is less than the given value.","less_than_or_equals":"Matches objects if the numeric field is less than or equal to the given value.","not_equals":"Matches objects that are not exactly equal to the value in the field.","not_in":"Matches objects if the field is none of several possible values, as specified in the values array.","or":"Matches objects if any subfilter matches.","string_contains":"Matches objects if the field contains the given string.","string_does_not_contain":"Matches objects if the field does not contain the given string.","time_is_after":"Matches objects if the field is after the given time.","time_is_before":"Matches objects if the field is before the given time.","time_range":"Matches objects if the field is between the given times."},"x-go-enum-desc":"equals FilterOperatorEquals  Matches objects that are exactly equal to the value in the field.\nnot_equals FilterOperatorNotEquals  Matches objects that are not exactly equal to the value in the field.\ncontains FilterOperatorContains  For a multi-valued field, such as tags, this operator will match  objects that contain any of the values in the field.\ndoes_not_contain FilterOperatorDoesNotContain  For a multi-valued field, such as tags, this operator will match  objects that do not contain any of the values in the field.\nin FilterOperatorIn  Matches objects if the field is one of several possible values,  as specified in the values array.\nnot_in FilterOperatorNotIn  Matches objects if the field is none of several possible values,  as specified in the values array.\nand FilterOperatorAnd  Matches objects only if all subfilters match.\nor FilterOperatorOr  Matches objects if any subfilter matches.\ntime_is_after FilterOperatorTimeIsAfter  Matches objects if the field is after the given time.\ntime_is_before FilterOperatorTimeIsBefore  Matches objects if the field is before the given time.\ntime_range FilterOperatorTimeRange  Matches objects if the field is between the given times.\nstring_contains FilterOperatorStringContains  Matches objects if the field contains the given string.\nstring_does_not_contain FilterOperatorStringDoesNotContain  Matches objects if the field does not contain the given string.\nis_set FilterOperatorIsSet  FilterOperatorIsSet matches objects if the field is set.\nis_unset FilterOperatorIsUnset  FilterOperatorIsUnset matches objects if the field is unset.\ngreater_than FilterOperatorGreaterThan  Matches objects if the numeric field is greater than the given value.\nless_than FilterOperatorLessThan  Matches objects if the numeric field is less than the given value.\ngreater_than_or_equals FilterOperatorGreaterThanOrEquals  Matches objects if the numeric field is greater than or equal to the given value.\nless_than_or_equals FilterOperatorLessThanOrEquals  Matches objects if the numeric field is less than or equal to the given value.","x-go-name":"Operator"},"subfilters":{"description":"Sub-filters for this filter.  Valid only when operator is \"and\" or \"or\".\nThe maximum allowed depth for a tree of filters is 3.","example":[{"field":"state","operator":"equals","value":"new"}],"items":{"$ref":"#/components/schemas/Filter"},"type":"array","x-go-name":"Subfilters"},"value":{"description":"The value for this filter. Only used for single-valued operators\n(\"equals\", \"not_equals\", \"contains\", \"does_not_contain\")","type":"string","x-go-name":"Value"},"values":{"description":"The values for this filter. Only used for multi-valued operators (\"in\", \"not_in\").","items":{"type":"string"},"type":"array","x-go-name":"Values"}},"required":["operator"],"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Follower":{"properties":{"id":{"description":"The ID of the follower. Either a user or contact ID.","type":"string","x-go-name":"ID"},"type":{"description":"The type of follower. Either \"user\" or \"contact\".","enum":["user","contact"],"type":"string","x-go-enum-desc":"user FollowerTypeUser\ncontact FollowerTypeContact","x-go-name":"Type"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"GetAccountRelationshipsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/AccountRelationship"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetAccountResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Account"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetAccountsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Account"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetActivityTypesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/ActivityType"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetArticleFeedbackResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/ArticleFeedback"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetArticleResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Article"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetArticlesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Article"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetAuditLogsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/AuditLog"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCallRecordingResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CallRecording"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCollectionResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Collection"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCollectionsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Collection"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetContactResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Contact"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetContactsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Contact"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCustomFieldResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinition"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCustomFieldsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/CustomFieldDefinition"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCustomObjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/APICustomObject"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetCustomObjectsResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/APICustomObject"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetFeatureRequestResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueFollowersResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Follower"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueMessagesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Message"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueStatusesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/IssueStatus"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueSurveyResponsesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/SurveyResponse"},"type":"array","x-go-name":"Data"},"issue_id":{"description":"The canonical issue ID.","type":"string","x-go-name":"IssueID"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueThreadsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/IssueThread"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssueVoiceCallsResponseBody":{"properties":{"data":{"description":"The voice calls associated with the issue, including recordings and transcripts.","items":{"$ref":"#/components/schemas/VoiceCall"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetIssuesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Issue"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetKnowledgeBaseResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/KnowledgeBase"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetKnowledgeBaseThemeResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/KnowledgeBaseTheme"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetKnowledgeBasesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/KnowledgeBase"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetMacroGroupsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/MacroGroup"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetMacroResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Macro"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetMacrosResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Macro"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetMeResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Me"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetMilestoneResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Milestone"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetProjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Project"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetSurveyResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Survey"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetSurveyResponsesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/SurveyResponse"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetSurveysResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Survey"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTagResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Tag"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTagsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Tag"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTaskCommentsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/TaskComment"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTaskResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTasksResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Task"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTeamResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Team"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTeamsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Team"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTicketFormResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TicketForm"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTicketFormsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/TicketForm"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetTrainingDataResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TrainingData"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetUserResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/User"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetUserRolesResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/UserRole"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"GetUsersResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/User"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportContactRequestBody":{"properties":{"account_id":{"description":"The account that this contact belongs to.","type":"string","x-go-name":"AccountID"},"avatar_url":{"description":"The avatar URL of the contact. Must be a square .png, .jpg or .jpeg.","type":"string","x-go-name":"AvatarUrl"},"custom_fields":{"description":"An array of custom fields to be applied to this contact.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"email":{"description":"The email of the contact.","type":"string","x-go-name":"Email"},"name":{"description":"The name of the contact.","type":"string","x-go-name":"Name"},"phone_numbers":{"description":"The phone numbers of the contact. Must contain only digits 0-9 and be 15 digits or less.","items":{"type":"string"},"type":"array","x-go-name":"PhoneNumbers"},"portal_role":{"description":"The portal role to assign to the contact. If not provided uses the default portal role from the portal settings.","enum":["no_access","member","admin"],"type":"string","x-go-enum-desc":"no_access PortalRoleNoAccess\nmember PortalRoleMember\nadmin PortalRoleAdmin","x-go-name":"PortalRole"},"primary_phone_number":{"description":"The primary phone number. Must be in the list of phone_numbers. If there are any phone_numbers and this is not specified, the first phone number will be primary.","type":"string","x-go-name":"PrimaryPhoneNumber"}},"required":["name","email"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportContactResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Contact"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportExternalIssue":{"properties":{"external_issue_id":{"description":"The ID of the external issue in the source system.","type":"string","x-go-name":"ExternalIssueID"},"source":{"description":"The source system of the external issue (e.g., \"linear\", \"asana\", \"jira\", \"github\").","type":"string","x-go-name":"Source"}},"required":["source","external_issue_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportIssueExternalRefs":{"properties":{"intercom_conversation_id":{"description":"The Intercom conversation ID associated with this issue, if any.","type":"string","x-go-name":"IntercomConversationID"},"zendesk_ticket_id":{"description":"The Zendesk ticket ID associated with this issue, if any.","type":"string","x-go-name":"ZendeskTicketID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportIssueMessage":{"properties":{"attachment_urls":{"description":"An array of attachment URLs to attach to this message.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"body_html":{"description":"The HTML content of the message.","type":"string","x-go-name":"BodyHTML"},"contact_id":{"description":"The contact that sent the message. Only one of user_id or contact_id can be specified.","type":"string","x-go-name":"ContactID"},"created_at":{"description":"CreatedAt is the time the message was created (RFC3339).","type":"string","x-go-name":"CreatedAt"},"is_private":{"description":"Whether the message is private.","type":"boolean","x-go-name":"IsPrivate"},"user_id":{"description":"The user that sent the message. Only one of user_id or contact_id can be specified.","type":"string","x-go-name":"UserID"}},"required":["body_html","is_private"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportIssueRequest":{"properties":{"account_id":{"description":"AccountID that the issue should belong to.","type":"string","x-go-name":"AccountID"},"assignee_id":{"description":"UserID that the issue should be assigned to.","type":"string","x-go-name":"AssigneeID"},"attachment_urls":{"description":"An array of attachment URLs to attach to this issue.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"created_at":{"description":"CreatedAt is the time the issue was created (RFC3339).","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"description":"An array of custom fields to be used on this issue.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"external_issues":{"description":"External issues to link to this issue.","items":{"$ref":"#/components/schemas/ImportExternalIssue"},"type":"array","x-go-name":"ExternalIssues"},"external_refs":{"$ref":"#/components/schemas/ImportIssueExternalRefs"},"first_response_time":{"description":"FirstResponseTime is the time the issue was first responded to (RFC3339).","type":"string","x-go-name":"FirstResponseTime"},"issue_number":{"description":"An optional issue number to preserve from the platform the issue is being imported from.\nUsually, do not set this field. Pylon normally assigns its own auto-incrementing ticket numbers.\nUse it only for customers who require their historical ticket numbers to be preserved.\nWhen set, it must be positive and lower than the organization's current ticket number counter.","format":"int64","type":"integer","x-go-name":"IssueNumber"},"messages":{"description":"Messages to be imported for this issue. At least one message is required.","items":{"$ref":"#/components/schemas/ImportIssueMessage"},"type":"array","x-go-name":"Messages"},"requester_id":{"description":"ContactID that the issue should be on behalf of.","type":"string","x-go-name":"RequesterID"},"resolution_time":{"description":"ResolutionTime is the time the issue was resolved (RFC3339).","type":"string","x-go-name":"ResolutionTime"},"state":{"description":"The state of the issue. Standard values are `new`, `waiting_on_you`, `waiting_on_customer`, `on_hold`, and `closed`; custom status slugs are also supported.","example":"new","type":"string","x-go-name":"State"},"tags":{"description":"An array of strings to use as tags on this issue.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"team_id":{"description":"TeamID that the issue should be assigned to.","type":"string","x-go-name":"TeamID"},"title":{"description":"The title of the issue.","type":"string","x-go-name":"Title"},"updated_at":{"description":"UpdatedAt is the time the issue was last updated (RFC3339).","type":"string","x-go-name":"UpdatedAt"}},"required":["title","state","messages"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"warnings":{"$ref":"#/components/schemas/ImportWarnings"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportMessagesRequest":{"properties":{"messages":{"description":"Messages to be imported for this issue. At least one message is required.","items":{"$ref":"#/components/schemas/ImportIssueMessage"},"type":"array","x-go-name":"Messages"}},"required":["messages"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportMessagesResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"warnings":{"$ref":"#/components/schemas/ImportWarnings"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportProjectRequestBody":{"properties":{"account_id":{"description":"The ID of the account this project belongs to.","type":"string","x-go-name":"AccountID"},"created_at":{"description":"The time the project was created in the system it is being imported from, in RFC 3339 format.\nDefaults to now.\nformat: date-time","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"description":"An array of custom fields to be used on this project. Values that cannot be applied are skipped\nand reported under warnings rather than failing the import.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Whether the project is visible in the customer portal. Defaults to false.","type":"boolean","x-go-name":"CustomerPortalVisible"},"description_html":{"description":"Description HTML for this project.","type":"string","x-go-name":"DescriptionHTML"},"end_date":{"description":"End date for this project, in RFC 3339 format.\nformat: date-time","type":"string","x-go-name":"EndDate"},"name":{"description":"The name of the project.","type":"string","x-go-name":"Name"},"owner_id":{"description":"The ID of the user who owns this project.","type":"string","x-go-name":"OwnerID"},"start_date":{"description":"Start date for this project, in RFC 3339 format.\nformat: date-time","type":"string","x-go-name":"StartDate"},"status":{"description":"The status of the project. One of not_started, in_progress, or completed. Defaults to not_started.","type":"string","x-go-name":"Status"},"updated_at":{"description":"The time the project was last updated in the system it is being imported from, in RFC 3339 format.\nDefaults to now.\nformat: date-time","type":"string","x-go-name":"UpdatedAt"}},"required":["name","account_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportProjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Project"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"warnings":{"$ref":"#/components/schemas/ImportWarnings"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportTaskRequestBody":{"properties":{"account_id":{"description":"Account ID for this task.","type":"string","x-go-name":"AccountID"},"assignee_id":{"description":"Assignee ID for this task. May be a user or a contact.","type":"string","x-go-name":"AssigneeID"},"body_html":{"description":"Body HTML for this task.","type":"string","x-go-name":"BodyHTML"},"completed_at":{"description":"The time the task was completed, in RFC 3339 format. Must be empty when status is not started.\nformat: date-time","type":"string","x-go-name":"CompletedAt"},"created_at":{"description":"The time the task was created in the system it is being imported from, in RFC 3339 format.\nDefaults to now.\nformat: date-time","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"description":"An array of custom fields to be used on this task. Values that cannot be applied are skipped\nand reported under warnings rather than failing the import.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Whether the task is visible in the customer portal. Defaults to false.","type":"boolean","x-go-name":"CustomerPortalVisible"},"due_date":{"description":"Due date for this task, in RFC 3339 format.\nformat: date-time","type":"string","x-go-name":"DueDate"},"milestone_id":{"description":"Milestone ID for this task.","type":"string","x-go-name":"MilestoneID"},"parent_task_id":{"description":"Parent task ID, to import this task as a subtask.","type":"string","x-go-name":"ParentTaskID"},"project_id":{"description":"Project ID for this task.","type":"string","x-go-name":"ProjectID"},"started_at":{"description":"The time work started on the task, in RFC 3339 format. Must be empty when status is not started.\nformat: date-time","type":"string","x-go-name":"StartedAt"},"status":{"description":"Status for this task. Accepts the default statuses or a custom status slug. Defaults to not_started.","type":"string","x-go-name":"Status"},"title":{"description":"Title for this task.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The time the task was last updated in the system it is being imported from, in RFC 3339 format.\nDefaults to now.\nformat: date-time","type":"string","x-go-name":"UpdatedAt"}},"required":["title"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportTaskResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"warnings":{"$ref":"#/components/schemas/ImportWarnings"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ImportWarnings":{"properties":{"skipped_attachments":{"description":"Attachment URLs that were skipped because they failed security validation. Present only when at least one was skipped.","items":{"type":"string"},"type":"array","x-go-name":"SkippedAttachments"},"skipped_custom_fields":{"description":"Custom field slugs that were skipped because they are unknown, belong to another object type, or are read-only. Present only when at least one was skipped.","items":{"type":"string"},"type":"array","x-go-name":"SkippedCustomFields"}},"title":"ImportWarnings carries non-fatal issues encountered during an import; the ticket is still created.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"IntegrationUserID":{"properties":{"id":{"description":"The user ID in the external system.","type":"string","x-go-name":"ID"},"source":{"description":"The integration source (e.g., \"slack\", \"intercom\", \"hubspot\").","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Issue":{"properties":{"account":{"$ref":"#/components/schemas/MiniAccount"},"active_time_by_user":{"description":"Active time spent on the issue broken down per user, if any.","items":{"$ref":"#/components/schemas/ActiveTimeByUser"},"type":"array","x-go-name":"ActiveTimeByUser"},"active_time_seconds":{"description":"The total active time spent on the issue in seconds, if any. Equals the sum of the per-user active time.","format":"int64","type":"integer","x-go-name":"ActiveTimeSeconds"},"assignee":{"$ref":"#/components/schemas/MiniUser"},"attachment_urls":{"description":"The attachment URLs attached to this issue, if any.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"author_unverified":{"description":"Whether any message on the issue has an unverified author identity. True if any message author's identity has NOT been verified (e.g., from public forms).","type":"boolean","x-go-name":"AuthorUnverified"},"body_html":{"description":"The body of the issue in HTML format.","type":"string","x-go-name":"BodyHTML"},"business_hours_active_time_seconds":{"description":"The total business-hours active time spent on the issue in seconds, if any. Equals the sum of the per-user business-hours active time.","format":"int64","type":"integer","x-go-name":"BusinessHoursActiveTimeSeconds"},"business_hours_first_response_seconds":{"description":"The business hours time in seconds it took for the first response to the issue, if any.","format":"int64","type":"integer","x-go-name":"BusinessHoursFirstResponseSeconds"},"business_hours_resolution_seconds":{"description":"The business hours time in seconds it took for the issue to be resolved, if any.","format":"int64","type":"integer","x-go-name":"BusinessHoursResolutionSeconds"},"business_hours_time_in_status_seconds":{"additionalProperties":{"format":"int64","type":"integer"},"description":"A map of status slug to the business hours time in seconds the issue has spent in that status. Includes both base statuses (e.g. \"new\", \"waiting_on_you\") and custom statuses.","example":{"new":120,"waiting_on_customer":1800},"type":"object","x-go-name":"BusinessHoursTimeInStatusSeconds"},"chat_widget_info":{"$ref":"#/components/schemas/IssueChatWidgetInfo"},"child_issues":{"description":"The child issues in this group, if this issue is an issue group.","items":{"$ref":"#/components/schemas/MiniIssue"},"type":"array","x-go-name":"ChildIssues"},"created_at":{"description":"The time the issue was created.","type":"string","x-go-name":"CreatedAt"},"csat_responses":{"description":"The CSAT responses of the issue, if any.","items":{"$ref":"#/components/schemas/CSATResponse"},"type":"array","x-go-name":"CSATResponses"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the issue.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Whether the issue is visible in the customer portal.","type":"boolean","x-go-name":"CustomerPortalVisible"},"external_issues":{"description":"The external issues associated with the issue, if any.","items":{"$ref":"#/components/schemas/ExternalIssue"},"type":"array","x-go-name":"ExternalIssues"},"first_response_breach_time":{"description":"The time by which the issue's first response SLA will breach, if any. Only present for issues with an active first response SLA.","type":"string","x-go-name":"FirstResponseBreachTime"},"first_response_seconds":{"description":"The time in seconds it took for the first response to the issue, if any.","format":"int64","type":"integer","x-go-name":"FirstResponseSeconds"},"first_response_time":{"description":"The time of the first response to the issue, if any.","type":"string","x-go-name":"FirstResponseTime"},"id":{"description":"The ID of the issue.","type":"string","x-go-name":"ID"},"is_issue_group":{"description":"Whether this issue is an issue group.","type":"boolean","x-go-name":"IsIssueGroup"},"latest_message_time":{"description":"The time of the latest message in the issue.","type":"string","x-go-name":"LatestMessageTime"},"link":{"description":"The link to the issue in Pylon.","type":"string","x-go-name":"Link"},"number":{"description":"The number of the issue.","format":"int64","type":"integer","x-go-name":"Number"},"number_of_touches":{"description":"The number of times the issue has been touched.","format":"int64","type":"integer","x-go-name":"NumberOfTouches"},"parent_issue_group":{"$ref":"#/components/schemas/MiniIssue"},"requester":{"$ref":"#/components/schemas/MiniContact"},"resolution_breach_time":{"description":"The time by which the issue's resolution SLA will breach, if any. Only present for open issues with an active resolution SLA.","type":"string","x-go-name":"ResolutionBreachTime"},"resolution_seconds":{"description":"The time in seconds it took for the issue to be resolved, if any.","format":"int64","type":"integer","x-go-name":"ResolutionSeconds"},"resolution_time":{"description":"The time of the resolution of the issue, if any.","type":"string","x-go-name":"ResolutionTime"},"slack":{"$ref":"#/components/schemas/SlackInfo"},"snoozed_until_time":{"description":"The time the issue was snoozed until in RFC3339 format, if any.","type":"string","x-go-name":"SnoozedUntilTime"},"source":{"description":"The source of the issue.","enum":["slack","microsoft_teams","microsoft_teams_chat","chat_widget","customer_portal","email","manual","form","discord","google_chat","whatsapp","sms","telegram","phone"],"type":"string","x-go-enum-desc":"slack IssueSourceSlack\nmicrosoft_teams IssueSourceMicrosoftTeams\nmicrosoft_teams_chat IssueSourceMicrosoftTeamsChat\nchat_widget IssueSourceChatWidget\ncustomer_portal IssueSourceCustomerPortal\nemail IssueSourceEmail\nmanual IssueSourceManual\nform IssueSourceForm\ndiscord IssueSourceDiscord\ngoogle_chat IssueSourceGoogleChat\nwhatsapp IssueSourceWhatsApp\nsms IssueSourceSMS\ntelegram IssueSourceTelegram\nphone IssueSourcePhone","x-go-name":"Source"},"state":{"description":"The state of the issue. Standard values are `new`, `waiting_on_you`, `waiting_on_customer`, `on_hold`, and `closed`; custom status slugs are also supported.","example":"new","type":"string","x-go-name":"State"},"tags":{"description":"Tags associated with the issue.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"team":{"$ref":"#/components/schemas/MiniTeam"},"team_slas":{"description":"The team-scoped SLAs on the issue, if any. One entry per team, mirroring the issue-level first response and resolution SLA fields.","items":{"$ref":"#/components/schemas/TeamSLA"},"type":"array","x-go-name":"TeamSLAs"},"time_in_status_seconds":{"additionalProperties":{"format":"int64","type":"integer"},"description":"A map of status slug to the time in seconds the issue has spent in that status. Includes both base statuses (e.g. \"new\", \"waiting_on_you\") and custom statuses.","example":{"new":120,"waiting_on_customer":3600},"type":"object","x-go-name":"TimeInStatusSeconds"},"title":{"description":"The title of the issue.","type":"string","x-go-name":"Title"},"type":{"description":"The type of the issue.","enum":["conversation","ticket"],"type":"string","x-enumDescriptions":{"conversation":"A conversation.","ticket":"A support ticket."},"x-go-enum-desc":"conversation IssueTypeConversation  A conversation.\nticket IssueTypeTicket  A support ticket.","x-go-name":"Type"},"updated_at":{"description":"The time the issue was last updated.","type":"string","x-go-name":"UpdatedAt"},"workspace_email":{"description":"The email address connected to the Pylon workspace through which the issue's email conversation is routed. For inbound issues, this is the address that received the original email.","type":"string","x-go-name":"WorkspaceEmail"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"IssueChatWidgetInfo":{"properties":{"page_url":{"description":"The URL of the page that the user was on when they started the chat widget issue.","type":"string","x-go-name":"PageURL"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"IssueGroupMutationResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"success":{"description":"Whether the mutation succeeded.","type":"boolean","x-go-name":"Success"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"IssueStatus":{"properties":{"category":{"description":"The category of the issue status.","type":"string","x-go-name":"Category"},"is_archived":{"description":"Indicates if the issue status is archived.","type":"boolean","x-go-name":"IsArchived"},"is_default_status":{"description":"Indicates if the issue status is a default status.","type":"boolean","x-go-name":"IsDefaultStatus"},"label":{"description":"The label of the issue status.","type":"string","x-go-name":"Label"},"slug":{"description":"The slug of the issue status.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"IssueThread":{"description":"A thread of notes on an issue, for internal discussions not visible to the customer.\nThreads can be created manually through the UI or from triggers.\nIf a channel ID is set, this thread is being synced with a chat platform.","properties":{"channel_id":{"description":"The ID of the channel that the thread belongs to, if the thread is being synced with a chat platform.","type":"string","x-go-name":"ChannelID"},"id":{"description":"The ID of the thread.","type":"string","x-go-name":"ID"},"issue_id":{"description":"The issue ID that the thread belongs to.","type":"string","x-go-name":"IssueID"},"name":{"description":"The name of the thread.","type":"string","x-go-name":"Name"},"source":{"description":"The source of the thread.","type":"string","x-go-name":"Source"},"thread_id":{"description":"The ID of the thread that the thread belongs to, if the thread is being synced with a chat platform. A thread ID for Slack would be the thread timestamp.","type":"string","x-go-name":"ThreadID"}},"title":"IssueThread","type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"KnowledgeBase":{"properties":{"active_theme_id":{"description":"The ID of the theme currently used by the knowledge base. Omitted when the knowledge base uses a preset theme.","type":"string","x-go-name":"ActiveThemeID"},"default_language":{"description":"The default language of the knowledge base.","type":"string","x-go-name":"DefaultLanguage"},"id":{"description":"The ID of the knowledge base.","type":"string","x-go-name":"ID"},"slug":{"description":"The slug of the knowledge base.","type":"string","x-go-name":"Slug"},"supported_languages":{"description":"The list of supported languages for the knowledge base.","items":{"type":"string"},"type":"array","x-go-name":"SupportedLanguages"},"title":{"description":"The name of the knowledge base.","type":"string","x-go-name":"Title"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"KnowledgeBaseTheme":{"properties":{"assets":{"description":"The editable files in the theme.","items":{"$ref":"#/components/schemas/KnowledgeBaseThemeAsset"},"type":"array","x-go-name":"Assets"},"has_unpublished_changes":{"description":"Whether any theme asset has changes that have not been published.","type":"boolean","x-go-name":"HasUnpublishedChanges"},"id":{"description":"The ID of the theme.","type":"string","x-go-name":"ID"},"knowledge_base_id":{"description":"The ID of the knowledge base that owns the theme.","type":"string","x-go-name":"KnowledgeBaseID"},"name":{"description":"The name of the theme.","type":"string","x-go-name":"Name"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"KnowledgeBaseThemeAsset":{"properties":{"asset_type":{"description":"The type of theme asset. One of article, collection, css, footer, header, homepage, or scripts.","type":"string","x-go-name":"AssetType"},"content":{"description":"The complete current content, including unpublished changes.","type":"string","x-go-name":"Content"},"has_unpublished_changes":{"description":"Whether this asset has changes that have not been published.","type":"boolean","x-go-name":"HasUnpublishedChanges"},"published_content":{"description":"The complete published content. Omitted if the asset has never been published.","type":"string","x-go-name":"PublishedContent"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"LinkExternalIssueRequestBody":{"properties":{"external_issue_id":{"description":"The ID of the external issue in the source system.","type":"string","x-go-name":"ExternalIssueID"},"operation":{"description":"Operation to perform. Use \"link\" to link issues (default) or \"unlink\" to unlink issues.","type":"string","x-go-name":"Operation"},"source":{"description":"The source system of the external issue (e.g., \"linear\", \"asana\", \"jira\", \"github\", \"shortcut\").","type":"string","x-go-name":"Source"}},"required":["source","external_issue_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"LinkExternalIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"LinkTaskExternalIssueRequestBody":{"properties":{"external_issue_id":{"description":"The ID or human-readable key of the external issue in the source system.","type":"string","x-go-name":"ExternalIssueID"},"operation":{"description":"Operation to perform. Use \"link\" to link the issue (default) or \"unlink\" to unlink it.","type":"string","x-go-name":"Operation"},"source":{"description":"The source system of the external issue (e.g., \"linear\", \"asana\", \"jira\", \"github\", \"shortcut\").","type":"string","x-go-name":"Source"}},"required":["source","external_issue_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"LinkTaskExternalIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"LinkTaskIssueRequestBody":{"properties":{"issue_id":{"description":"The ID of the Pylon issue.","type":"string","x-go-name":"IssueID"},"operation":{"description":"Operation to perform. Use \"link\" to link the issue (default) or \"unlink\" to unlink it.","type":"string","x-go-name":"Operation"}},"required":["issue_id"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"LinkTaskIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"ListTrainingDataResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TrainingData"},"type":"array","x-go-name":"Data"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Macro":{"properties":{"actions":{"description":"The actions that execute when this macro is applied.","items":{"$ref":"#/components/schemas/MacroAction"},"type":"array","x-go-name":"Actions"},"created_at":{"description":"The time the macro was created.","type":"string","x-go-name":"CreatedAt"},"has_actions":{"description":"Whether this macro has actions that execute when applied.","type":"boolean","x-go-name":"HasActions"},"id":{"description":"The ID of the macro.","type":"string","x-go-name":"ID"},"macro_group_id":{"description":"The ID of the macro group this macro belongs to.","type":"string","x-go-name":"MacroGroupID"},"name":{"description":"The name of the macro.","type":"string","x-go-name":"Name"},"text_html":{"description":"The HTML content of the macro.","type":"string","x-go-name":"TextHTML"},"text_type":{"description":"The type of text: \"reply\", \"note\", or \"email\".","type":"string","x-go-name":"TextType"},"updated_at":{"description":"The time the macro was last updated.","type":"string","x-go-name":"UpdatedAt"},"visibility":{"$ref":"#/components/schemas/Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MacroAction":{"properties":{"type":{"description":"The action type identifier (e.g. \"set_issue_state\", \"set_issue_tags\").","type":"string","x-go-name":"Type"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MacroGroup":{"properties":{"created_at":{"description":"The time the macro group was created.","type":"string","x-go-name":"CreatedAt"},"id":{"description":"The ID of the macro group.","type":"string","x-go-name":"ID"},"title":{"description":"The title of the macro group.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The time the macro group was last updated.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Me":{"properties":{"id":{"description":"The ID of the organization.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the organization.","type":"string","x-go-name":"Name"},"user":{"$ref":"#/components/schemas/MeUser"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"MeUser":{"properties":{"email":{"description":"The primary login email of the authenticated user. API users do not have a login email.","type":"string","x-go-name":"Email"},"id":{"description":"The stable Pylon ID of the authenticated user.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"MergeAccountsRequest":{"properties":{"merge_account_ids":{"description":"The IDs of the accounts to merge into the surviving account. These accounts are permanently deleted after their data is transferred. The number of accounts to merge must be between 1 and 100.","items":{"type":"string"},"type":"array","x-go-name":"MergeAccountIDs"},"merge_into_account_id":{"description":"The ID of the account that will survive the merge and receive the merged data.","type":"string","x-go-name":"MergeIntoAccountID"}},"required":["merge_into_account_id","merge_account_ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"MergeAccountsResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Account"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"MergeFeatureRequestsRequest":{"properties":{"merge_feature_request_ids":{"description":"The IDs of the Feature Requests to merge into the surviving Feature Request. Must contain between 1 and 100 unique IDs.","items":{"type":"string"},"type":"array","x-go-name":"MergeFeatureRequestIDs"},"merge_into_feature_request_id":{"description":"The ID of the Feature Request that will survive the merge.","type":"string","x-go-name":"MergeIntoFeatureRequestID"}},"required":["merge_into_feature_request_id","merge_feature_request_ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"MergeFeatureRequestsResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Message":{"properties":{"author":{"$ref":"#/components/schemas/MessageAuthor"},"email_info":{"$ref":"#/components/schemas/EmailMessageInfo"},"file_urls":{"description":"The URLs of the files in the message, if any.","items":{"type":"string"},"type":"array","x-go-name":"FileURLs"},"id":{"description":"The top-level Pylon message ID. Use this value as message_id when replying or when targeting an internal note's thread.","type":"string","x-go-name":"ID"},"is_private":{"description":"Whether the message is an internal note. If true, the message is not visible to the requester; if false, it is customer-visible.","type":"boolean","x-go-name":"IsPrivate"},"message_html":{"description":"The HTML body of the message.","type":"string","x-go-name":"MessageHTML"},"source":{"description":"The source of the message.","type":"string","x-go-name":"Source"},"thread_id":{"description":"The Pylon internal thread ID. This is set only for internal notes and can be passed as thread_id when creating an internal note.","type":"string","x-go-name":"ThreadID"},"timestamp":{"description":"The time at which the message was created.","type":"string","x-go-name":"Timestamp"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MessageAuthor":{"properties":{"avatar_url":{"type":"string","x-go-name":"AvatarURL"},"contact":{"$ref":"#/components/schemas/MiniContact"},"name":{"type":"string","x-go-name":"Name"},"user":{"$ref":"#/components/schemas/MiniUser"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Milestone":{"properties":{"account":{"$ref":"#/components/schemas/MiniAccount"},"created_at":{"type":"string","x-go-name":"CreatedAt"},"due_date":{"type":"string","x-go-name":"DueDate"},"id":{"type":"string","x-go-name":"ID"},"name":{"type":"string","x-go-name":"Name"},"project":{"$ref":"#/components/schemas/MiniProject"},"updated_at":{"type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniAccount":{"properties":{"external_ids":{"description":"External IDs associated with the account.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"id":{"description":"The ID of the account.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniContact":{"properties":{"email":{"description":"The email of the contact.","type":"string","x-go-name":"Email"},"id":{"description":"The ID of the contact.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniIssue":{"properties":{"id":{"description":"The ID of the issue.","type":"string","x-go-name":"ID"},"number":{"description":"The number of the issue.","format":"int64","type":"integer","x-go-name":"Number"},"title":{"description":"The title of the issue.","type":"string","x-go-name":"Title"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniMilestone":{"properties":{"id":{"description":"The ID of the milestone.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniProject":{"properties":{"id":{"description":"The ID of the project.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniProjectTemplate":{"properties":{"id":{"description":"The ID of the project template.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniRole":{"properties":{"id":{"description":"The ID of the role.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the role.","type":"string","x-go-name":"Name"},"slug":{"description":"The slug of the role.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniTeam":{"properties":{"id":{"description":"The ID of the team.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MiniUser":{"properties":{"email":{"description":"The email of the user.","type":"string","x-go-name":"Email"},"id":{"description":"The ID of the user.","type":"string","x-go-name":"ID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"MirrorChannel":{"properties":{"channel_id":{"description":"The ID of the channel. If this is a Microsoft Teams channel, the ID must be in the format of `{team_id}|{channel_id}`.","type":"string","x-go-name":"ChannelID"},"source":{"description":"The channel source. This can be any supported integration source.","example":"slack","type":"string","x-go-name":"Source"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"NumberMetadata":{"properties":{"currency":{"description":"The currency of the number custom field.","type":"string","x-go-name":"Currency"},"decimal_places":{"description":"The decimal places of the number custom field.","format":"int64","type":"integer","x-go-name":"DecimalPlaces"},"duration_display_format":{"description":"The display format for duration format (auto, minutes, hours, days, months, years).","type":"string","x-go-name":"DurationDisplayFormat"},"duration_input_unit":{"description":"The input unit for duration format (seconds, minutes, hours, days).","type":"string","x-go-name":"DurationInputUnit"},"format":{"description":"The format of the number custom field.","enum":["with_commas","percent","currency","duration"],"type":"string","x-go-enum-desc":"with_commas CustomFieldNumberFormatWithCommas\npercent CustomFieldNumberFormatPercent\ncurrency CustomFieldNumberFormatCurrency\nduration CustomFieldNumberFormatDuration","x-go-name":"Format"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Pagination":{"properties":{"cursor":{"description":"The cursor for the next page of results.","type":"string","x-go-name":"Cursor"},"has_next_page":{"description":"Indicates if there is a next page of results.","type":"boolean","x-go-name":"HasNextPage"}},"required":["cursor","has_next_page"],"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Project":{"properties":{"account":{"$ref":"#/components/schemas/MiniAccount"},"archived_at":{"description":"The archived at time of the project in RFC3339 format.","type":"string","x-go-name":"ArchivedAt"},"created_at":{"description":"The created at time of the project.","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom fields for this project, keyed by slug.","example":{"health":{"value":"on_track"}},"type":"object","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"The customer portal visible of the project.","type":"boolean","x-go-name":"CustomerPortalVisible"},"description_html":{"description":"The description of the project in HTML format.","type":"string","x-go-name":"DescriptionHTML"},"end_date":{"description":"The end date of the project in RFC3339 format.","type":"string","x-go-name":"EndDate"},"id":{"description":"The ID of the project.","type":"string","x-go-name":"ID"},"is_archived":{"description":"Whether the project is archived.","type":"boolean","x-go-name":"IsArchived"},"name":{"description":"The name of the project.","type":"string","x-go-name":"Name"},"owner_id":{"description":"The owner ID of the project.","type":"string","x-go-name":"OwnerID"},"project_template":{"$ref":"#/components/schemas/MiniProjectTemplate"},"start_date":{"description":"The start date of the project in RFC3339 format.","type":"string","x-go-name":"StartDate"},"updated_at":{"description":"The updated at time of the project.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"PublishKnowledgeBaseThemeResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/KnowledgeBaseTheme"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RedactMessageRequestBody":{"properties":{"redact_attachments":{"description":"Whether to permanently delete the message's attachments. Defaults to true.","type":"boolean","x-go-name":"RedactAttachments"},"redacted_body_message":{"description":"Replacement message body in HTML. The caller is responsible for replacing any sensitive portions. Defaults to \"This message has been redacted.\"","type":"string","x-go-name":"RedactedBodyMessage"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RedactMessageResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Message"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RequestArticleReviewData":{"properties":{"approval_status":{"description":"The approval status of the article version after the request.","type":"string","x-go-name":"ApprovalStatus"},"article_id":{"description":"The ID of the article the review was requested for.","type":"string","x-go-name":"ArticleID"},"article_version_id":{"description":"The ID of the article version the review was requested for.","type":"string","x-go-name":"ArticleVersionID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RequestArticleReviewRequestBody":{"properties":{"request_ai_review":{"description":"When true, also queue an AI review. Requires the organization to have AI article review enabled.","type":"boolean","x-go-name":"RequestAIReview"},"reviewer_user_ids":{"description":"IDs of users to request a human review from. Each user must already be a configured reviewer for the article's knowledge base.","items":{"type":"string"},"type":"array","x-go-name":"ReviewerUserIDs"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RequestArticleReviewResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/RequestArticleReviewData"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"RouteRedirect":{"properties":{"created_at":{"description":"The time at which the route redirect was created.","type":"string","x-go-name":"CreatedAt"},"from_path":{"description":"The path to redirect from.","type":"string","x-go-name":"FromPath"},"id":{"description":"The ID of the route redirect.","type":"string","x-go-name":"ID"},"language":{"description":"The language of the object to redirect to.","type":"string","x-go-name":"Language"},"object_id":{"description":"The ID of the object to redirect to.","type":"string","x-go-name":"ObjectID"},"object_type":{"description":"The type of the object to redirect to.","type":"string","x-go-name":"ObjectType"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"SLATimes":{"properties":{"breach_time":{"description":"The time at which it breaches (or has breached), if any.","type":"string","x-go-name":"BreachTime"},"business_hours_seconds":{"description":"The elapsed business-hours time in seconds, if any.","format":"int64","type":"integer","x-go-name":"BusinessHoursSeconds"},"seconds":{"description":"The elapsed time in seconds, if any.","format":"int64","type":"integer","x-go-name":"Seconds"},"time":{"description":"The time it was reached, if any.","type":"string","x-go-name":"Time"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"SearchAccountsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"},"search_text":{"description":"Fuzzy text search. Results are intersected with any provided filter.","type":"string","x-go-name":"SearchText"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchAccountsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Account"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchAuditLogsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of audit logs to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchCallRecordingsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of call recordings to fetch. Defaults to 100. Must be greater than 0 and less than or equal to 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchCallRecordingsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/CallRecording"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchContactsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of contacts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"},"search_text":{"description":"Fuzzy text search. Results are intersected with any provided filter.","type":"string","x-go-name":"SearchText"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchContactsResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Contact"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchCustomObjectsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of results to fetch. Defaults to 25, max 100.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchCustomObjectsResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/APICustomObject"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchFeatureRequestsRequest":{"properties":{"account_ids":{"description":"Filter by one or more account IDs. Returns only feature requests with evidence linked to any of the given accounts.","items":{"type":"string"},"type":"array","x-go-name":"AccountIDs"},"limit":{"description":"The maximum number of feature requests to return. Defaults to 100, max 1000.","format":"int64","type":"integer","x-go-name":"Limit"},"query":{"description":"A search query string for semantic and keyword matching. If omitted, all feature requests are returned (subject to other filters and limit).","type":"string","x-go-name":"Query"},"request_statuses":{"description":"Filter by one or more request statuses. Each value can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","items":{"type":"string"},"type":"array","x-go-name":"RequestStatuses"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchFeatureRequestsResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FeatureRequestSearchResult"},"type":"array","x-go-name":"Data"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchIssuesRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of issues to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"},"search_text":{"description":"Fuzzy text search. Results are intersected with any provided filter.","type":"string","x-go-name":"SearchText"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchIssuesResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Issue"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchProjectsRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of projects to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchProjectsResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Project"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchSurveysRequest":{"properties":{"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of surveys to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchSurveysResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Survey"},"type":"array","x-go-name":"Data"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchTasksRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of tasks to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchTasksResponseBody":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Task"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchUsersRequest":{"properties":{"cursor":{"description":"The cursor to use for pagination.","type":"string","x-go-name":"Cursor"},"filter":{"$ref":"#/components/schemas/Filter"},"limit":{"description":"The number of users to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","format":"int64","type":"integer","x-go-name":"Limit"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SearchUsersResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/User"},"type":"array","x-go-name":"Data"},"pagination":{"$ref":"#/components/schemas/Pagination"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SelectMetadata":{"properties":{"options":{"description":"The list options of the select custom field. This is only present for select and multiselect custom fields.","items":{"$ref":"#/components/schemas/CustomFieldDefinitionSelectOption"},"type":"array","x-go-name":"Options"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"SetFeatureRequestPortalVisibilityRequestBody":{"properties":{"account_ids":{"description":"The account IDs to add or remove portal visibility for.","items":{"type":"string"},"type":"array","x-go-name":"AccountIDs"},"visible":{"description":"Whether the specified accounts should be able to see this feature request in the portal. True to add visibility, false to remove.","type":"boolean","x-go-name":"Visible"}},"required":["account_ids","visible"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SetFeatureRequestPortalVisibilityResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SlackInfo":{"properties":{"channel_id":{"description":"The Slack channel ID associated with the issue.","type":"string","x-go-name":"SlackChannelID"},"message_ts":{"description":"The root message ID of slack message that started issue.","type":"string","x-go-name":"SlackMessageTs"},"workspace_id":{"description":"The Slack workspace ID associated with the issue.","type":"string","x-go-name":"SlackWorkspaceID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"SnoozeIssueRequestBody":{"properties":{"snooze_until":{"description":"The date and time to snooze the issue until. (RFC3339)","type":"string","x-go-name":"SnoozeUntil"}},"required":["snooze_until"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SnoozeIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SubmitTicketFormField":{"properties":{"slug":{"description":"The field slug returned by GET /ticket-forms/{id}.","type":"string","x-go-name":"Slug"},"value":{"description":"The submitted value for a single-value field.","type":"string","x-go-name":"Value"},"values":{"description":"The submitted values for a multi-value field, or HTTPS URLs for a file-upload field. File-upload URLs are copied into durable Pylon storage before the submission is persisted.","items":{"type":"string"},"type":"array","x-go-name":"Values"}},"required":["slug"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SubmitTicketFormRequest":{"properties":{"attachment_urls":{"description":"HTTPS URLs to attach to the initial ticket message. URLs are copied into durable Pylon storage before the submission is persisted.","items":{"type":"string"},"type":"array","x-go-name":"AttachmentURLs"},"fields":{"description":"The submitted ticket form fields. Use the slugs returned by GET /ticket-forms/{id}, excluding name and email, which are supplied through the requester fields above.","items":{"$ref":"#/components/schemas/SubmitTicketFormField"},"type":"array","x-go-name":"Fields"},"requester_email":{"description":"The requester's email address. Must be provided with requester_name and cannot be combined with requester_id.","type":"string","x-go-name":"RequesterEmail"},"requester_id":{"description":"The ID of an existing contact to use as the requester. Provide either requester_id or both requester_email and requester_name.","type":"string","x-go-name":"RequesterID"},"requester_name":{"description":"The requester's full name. Must be provided with requester_email and cannot be combined with requester_id.","type":"string","x-go-name":"RequesterName"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SubmitTicketFormResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Survey":{"properties":{"id":{"description":"The unique identifier of the survey.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the survey.","type":"string","x-go-name":"Name"},"type":{"description":"The type of the survey.","enum":["nps","csat","custom"],"type":"string","x-enumDescriptions":{"csat":"Represents a CSAT survey.","custom":"Represents a custom survey.","nps":"Represents an NPS survey."},"x-go-enum-desc":"nps SurveyTypeNPS  SurveyTypeNPS represents an NPS survey.\ncsat SurveyTypeCSAT  SurveyTypeCSAT represents a CSAT survey.\ncustom SurveyTypeCustom  SurveyTypeCustom represents a custom survey.","x-go-name":"Type"},"updated_at":{"description":"When the survey was last updated (RFC3339 format).","type":"string","x-go-name":"UpdatedAt"}},"title":"Survey represents a survey in the API response.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SurveyResponse":{"properties":{"account_id":{"description":"The ID of the account associated with the response.","type":"string","x-go-name":"AccountID"},"answers":{"description":"The answers submitted in this response.","items":{"$ref":"#/components/schemas/SurveyResponseAnswer"},"type":"array","x-go-name":"Answers"},"contact_id":{"description":"The ID of the contact who submitted the response.","type":"string","x-go-name":"ContactID"},"excluded_at":{"description":"When the response was excluded from analytics.","format":"date-time","type":"string","x-go-name":"ExcludedAt"},"id":{"description":"The unique identifier of the survey response.","type":"string","x-go-name":"ID"},"issue_id":{"description":"The ID of the issue associated with this response, when applicable.","type":"string","x-go-name":"IssueID"},"submitted_at":{"description":"When the response was submitted.","format":"date-time","type":"string","x-go-name":"SubmittedAt"},"survey_id":{"description":"The ID of the survey template associated with this response.","type":"string","x-go-name":"SurveyID"},"survey_instance_id":{"description":"The ID of the individual survey delivery that produced this response.","type":"string","x-go-name":"SurveyInstanceID"},"survey_type":{"description":"The type of survey associated with this response.","enum":["nps","csat","custom"],"type":"string","x-enumDescriptions":{"csat":"Represents a CSAT survey.","custom":"Represents a custom survey.","nps":"Represents an NPS survey."},"x-go-enum-desc":"nps SurveyTypeNPS  SurveyTypeNPS represents an NPS survey.\ncsat SurveyTypeCSAT  SurveyTypeCSAT represents a CSAT survey.\ncustom SurveyTypeCustom  SurveyTypeCustom represents a custom survey.","x-go-name":"SurveyType"}},"title":"SurveyResponse represents a survey response in the API.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"SurveyResponseAnswer":{"properties":{"prompt":{"description":"The prompt/question that was answered.","type":"string","x-go-name":"Prompt"},"question_id":{"description":"The ID of the survey question, when applicable.","type":"string","x-go-name":"QuestionID"},"question_type":{"description":"The type of question (score or comment).","type":"string","x-go-name":"QuestionType"},"value":{"description":"The value of the answer.","type":"string","x-go-name":"Value"}},"title":"SurveyResponseAnswer represents an answer in a survey response.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"Tag":{"properties":{"hex_color":{"description":"The hex code of the tag's color.","type":"string","x-go-name":"HexColor"},"id":{"description":"The ID of the tag.","type":"string","x-go-name":"ID"},"object_type":{"description":"The object type of the tagged object.","enum":["account","article","issue"],"example":"issue","type":"string","x-go-name":"ObjectType"},"value":{"description":"The value of the Tag.","type":"string","x-go-name":"Value"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Task":{"properties":{"account":{"$ref":"#/components/schemas/MiniAccount"},"assignee":{"$ref":"#/components/schemas/Actor"},"body_html":{"description":"The body of the task in HTML format.","type":"string","x-go-name":"BodyHTML"},"created_at":{"description":"The created at time of the task.","type":"string","x-go-name":"CreatedAt"},"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values associated with the task, keyed by custom field slug.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"The customer portal visible of the task.","type":"boolean","x-go-name":"CustomerPortalVisible"},"due_date":{"description":"The due date of the task in RFC3339 format.","type":"string","x-go-name":"DueDate"},"external_issues":{"description":"The external product issues associated with the task, if any.","items":{"$ref":"#/components/schemas/ExternalIssue"},"type":"array","x-go-name":"ExternalIssues"},"id":{"description":"The ID of the task.","type":"string","x-go-name":"ID"},"linked_issues":{"description":"The Pylon issues linked to the task that the current user can access, if any.","items":{"$ref":"#/components/schemas/MiniIssue"},"type":"array","x-go-name":"LinkedIssues"},"milestone":{"$ref":"#/components/schemas/MiniMilestone"},"parent_task_id":{"description":"The ID of the parent task, if this is a subtask.","type":"string","x-go-name":"ParentTaskID"},"project":{"$ref":"#/components/schemas/MiniProject"},"status":{"$ref":"#/components/schemas/TaskStatus"},"subtask_ids":{"description":"The IDs of subtasks belonging to this task.","items":{"type":"string"},"type":"array","x-go-name":"SubtaskIDs"},"title":{"description":"The title of the task.","type":"string","x-go-name":"Title"},"updated_at":{"description":"The updated at time of the task.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TaskComment":{"properties":{"author":{"$ref":"#/components/schemas/Actor"},"body_html":{"description":"The body of the comment in HTML format.","type":"string","x-go-name":"BodyHTML"},"created_at":{"description":"The created at time of the comment.","type":"string","x-go-name":"CreatedAt"},"id":{"description":"The ID of the comment.","type":"string","x-go-name":"ID"},"is_internal":{"description":"Whether the comment is visible only to internal users.","type":"boolean","x-go-name":"IsInternal"},"last_edited_at":{"description":"The time the comment was last edited, in RFC3339 format.","type":"string","x-go-name":"LastEditedAt"},"task_id":{"description":"The ID of the task this comment belongs to.","type":"string","x-go-name":"TaskID"},"updated_at":{"description":"The updated at time of the comment.","type":"string","x-go-name":"UpdatedAt"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TaskStatus":{"type":"string","x-go-package":"pylon/api/apiserver/apitypes"},"Team":{"properties":{"id":{"description":"The ID of the team.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the team.","type":"string","x-go-name":"Name"},"users":{"description":"The users in the team.","items":{"$ref":"#/components/schemas/MiniUser"},"type":"array","x-go-name":"Users"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TeamSLA":{"properties":{"first_response":{"$ref":"#/components/schemas/SLATimes"},"resolution":{"$ref":"#/components/schemas/SLATimes"},"team_id":{"description":"The ID of the team these are scoped to.","type":"string","x-go-name":"TeamID"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TicketForm":{"properties":{"description_html":{"description":"The description of the ticket form in HTML.","type":"string","x-go-name":"DescriptionHTML"},"fields":{"description":"The layout of the ticket form.","items":{"$ref":"#/components/schemas/TicketFormLayoutField"},"type":"array","x-go-name":"Fields"},"id":{"description":"The ID of the ticket form.","type":"string","x-go-name":"ID"},"is_public":{"description":"Indicates if the ticket form is public.","type":"boolean","x-go-name":"IsPublic"},"name":{"description":"The name of the ticket form.","type":"string","x-go-name":"Name"},"slug":{"description":"The slug of the ticket form.","type":"string","x-go-name":"Slug"},"url":{"description":"The URL of the ticket form.","type":"string","x-go-name":"URL"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TicketFormLayoutField":{"properties":{"description_html":{"description":"The description of the ticket form layout field in HTML.","type":"string","x-go-name":"DescriptionHTML"},"name":{"description":"The name of the ticket form layout field.","type":"string","x-go-name":"Name"},"required":{"description":"Indicates whether the field is required when submitting the ticket form.","type":"boolean","x-go-name":"Required"},"slug":{"description":"The slug of the ticket form layout field.","type":"string","x-go-name":"Slug"},"type":{"description":"The type of the ticket form layout field.","type":"string","x-go-name":"Type"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TrainingData":{"properties":{"created_at":{"type":"string","x-go-name":"CreatedAt"},"documents":{"items":{"$ref":"#/components/schemas/TrainingDataDocument"},"type":"array","x-go-name":"Documents"},"exclude_from_kb_search":{"type":"boolean","x-go-name":"ExcludeFromKBSearch"},"id":{"type":"string","x-go-name":"ID"},"name":{"type":"string","x-go-name":"Name"},"scrape_status":{"$ref":"#/components/schemas/TrainingDataScrapeStatus"},"type":{"type":"string","x-go-name":"Type"},"updated_at":{"type":"string","x-go-name":"UpdatedAt"},"visibility":{"enum":["everyone","user_only","ai_agent_only"],"example":"everyone","type":"string","x-go-name":"Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TrainingDataDocument":{"properties":{"external_id":{"type":"string","x-go-name":"ExternalID"},"file_name":{"type":"string","x-go-name":"FileName"},"file_size":{"format":"int64","type":"integer","x-go-name":"FileSize"},"file_type":{"type":"string","x-go-name":"FileType"},"id":{"type":"string","x-go-name":"ID"},"s3_key":{"type":"string","x-go-name":"S3Key"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TrainingDataScrapeStatus":{"properties":{"last_scraped_at":{"type":"string","x-go-name":"LastScrapedAt"},"pages_scraped":{"format":"int64","type":"integer","x-go-name":"PagesScraped"},"status":{"type":"string","x-go-name":"Status"},"total_pages":{"format":"int64","type":"integer","x-go-name":"TotalPages"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"TrainingDataUploadResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TrainingData"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountHighlightRequestBody":{"properties":{"content_html":{"description":"The updated HTML content for this highlight.","type":"string","x-go-name":"ContentHTML"},"expires_at":{"description":"The updated expires at timestamp (RFC3339).","type":"string","x-go-name":"ExpiresAt"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountHighlightResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/AccountHighlight"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountRequestBody":{"properties":{"account_type":{"description":"The type of the account. Can only be changed to \"customer\" or \"partner\".","enum":["customer","partner"],"example":"customer","type":"string","x-go-name":"AccountType"},"channels":{"description":"An array of channels to be linked to this account.","items":{"$ref":"#/components/schemas/Channel"},"type":"array","x-go-name":"Channels"},"custom_fields":{"description":"An array of custom fields to be used on this account.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"domains":{"description":"Domains of the account. Must specify one domain as primary.","items":{"type":"string"},"type":"array","x-go-name":"Domains"},"external_ids":{"description":"An array of external IDs to be used on this account. If provided, the account's external IDs will be updated to the given external IDs.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"is_disabled":{"description":"Whether the account is disabled.","type":"boolean","x-go-name":"IsDisabled"},"logo_url":{"description":"Logo URL of the account.","type":"string","x-go-name":"LogoURL"},"name":{"description":"The name of the account.","type":"string","x-go-name":"Name"},"owner_id":{"description":"The ID of the owner of the account. If empty string is passed in, the owner will be removed.","type":"string","x-go-name":"OwnerID"},"primary_domain":{"description":"Must be in the list of domains. If there are any domains, there must be exactly one primary domain.","type":"string","x-go-name":"PrimaryDomain"},"subaccount_ids":{"description":"An array of account IDs to be added as subaccounts to this account.","items":{"type":"string"},"type":"array","x-go-name":"SubaccountIDs"},"tags":{"description":"An array of strings to use as tags on this account. If provided, the accounts tags will be updated to the given tags.","items":{"type":"string"},"type":"array","x-go-name":"Tags"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Account"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountsRequest":{"properties":{"account_ids":{"description":"The account IDs to update. The number of accounts to update must be between 1 and 100.","items":{"type":"string"},"type":"array","x-go-name":"AccountIDs"},"account_type":{"description":"The type of the account. Can only be changed to \"customer\" or \"partner\".","enum":["customer","partner"],"example":"customer","type":"string","x-go-name":"AccountType"},"custom_fields":{"description":"An array of custom fields to be updated on the accounts.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"owner_id":{"description":"The ID of the new owner. If empty string is passed in, the owner will be removed.","type":"string","x-go-name":"OwnerID"},"tags":{"description":"An array of tags to be updated on the accounts.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"tags_apply_mode":{"default":"replace","description":"The mode for applying tags. Valid values: \"append_only\", \"remove_only\", \"replace\". Defaults to \"replace\".","enum":["append_only","remove_only","replace"],"example":"replace","type":"string","x-go-name":"TagsApplyMode"}},"required":["account_ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateAccountsResponseBody":{"properties":{"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"},"success":{"description":"Whether the update was successfully initiated.","type":"boolean","x-go-name":"Success"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateArticleRequestBody":{"properties":{"body_html":{"description":"The HTML body of the article.","type":"string","x-go-name":"BodyHTML"},"collection_id":{"description":"The ID of the collection containing the article.","type":"string","x-go-name":"CollectionID"},"is_published":{"description":"Whether the article should be published or unpublished.","type":"boolean","x-go-name":"IsPublished"},"is_unlisted":{"description":"Whether the article is accessible only via a direct link.","type":"boolean","x-go-name":"IsUnlisted"},"language":{"description":"The language code of the translation to update. If not provided, the default language (original article) will be updated.","type":"string","x-go-name":"Language"},"publish_updated_body_html":{"description":"Whether the changes to the article should be published. Defaults to false.","type":"boolean","x-go-name":"PublishUpdatedBodyHTML"},"tag_ids":{"description":"IDs of article tags to assign. If provided, replaces all tags currently assigned to the article.","items":{"type":"string"},"type":"array","x-go-name":"TagIDs"},"title":{"description":"The title of the article.","type":"string","x-go-name":"Title"},"visibility_config":{"$ref":"#/components/schemas/ArticleVisibilityConfig"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateArticleResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Article"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCallRecordingRequestBody":{"properties":{"account_id":{"description":"The account ID to associate with the call recording. Pass an empty string to remove the account association.","type":"string","x-go-name":"AccountID"},"custom_fields":{"description":"An array of custom fields to set on the call recording. Only passed in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCallRecordingResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CallRecording"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCollectionRequestBody":{"properties":{"description":{"description":"The description of the collection.","type":"string","x-go-name":"Description"},"slug":{"description":"The slug of the collection.","type":"string","x-go-name":"Slug"},"title":{"description":"The title of the collection.","type":"string","x-go-name":"Title"},"visibility_config":{"$ref":"#/components/schemas/CollectionVisibilityConfig"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCollectionResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Collection"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateContactEmail":{"properties":{"email":{"description":"The email address.","type":"string","x-go-name":"Email"},"is_primary":{"description":"Whether this is the primary email address.","type":"boolean","x-go-name":"IsPrimary"}},"required":["email"],"title":"UpdateContactEmail represents an email entry in the emails array for contact updates.","type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateContactRequestBody":{"properties":{"account_external_id":{"description":"The external ID of the account to move the contact to. Cannot be used together with account_id.","type":"string","x-go-name":"AccountExternalID"},"account_id":{"description":"The account to move the contact to. If empty string is passed in, the contact will be removed from its account.","type":"string","x-go-name":"AccountID"},"avatar_url":{"description":"The avatar URL of the contact. Must be a square .png, .jpg or .jpeg.","type":"string","x-go-name":"AvatarUrl"},"custom_fields":{"description":"An array of custom fields to be applied to this contact.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"email":{"description":"The email of the contact. Cannot be used together with the `emails` array field.","type":"string","x-go-name":"Email"},"emails":{"description":"The emails of the contact as an array. Cannot be used together with the singular `email` field.\nEach entry must include an `email` string and an optional `is_primary` boolean.\nIf no email is marked as primary, the first email becomes the primary.","items":{"$ref":"#/components/schemas/UpdateContactEmail"},"type":"array","x-go-name":"Emails"},"external_ids":{"description":"An array of external IDs to be used on this contact. If provided, the contact's external IDs will be updated to the given external IDs.","items":{"$ref":"#/components/schemas/ExternalID"},"type":"array","x-go-name":"ExternalIDs"},"name":{"description":"in: body\nThe name of the contact.","type":"string","x-go-name":"Name"},"phone_numbers":{"description":"The phone numbers of the contact. Must contain only digits 0-9 and be 15 digits or less.","items":{"type":"string"},"type":"array","x-go-name":"PhoneNumbers"},"portal_role":{"description":"The portal role to assign to the contact. Can be one of `no_access`, `member`, or `admin`, or a custom role slug.","enum":["no_access","member","admin"],"type":"string","x-go-enum-desc":"no_access PortalRoleNoAccess\nmember PortalRoleMember\nadmin PortalRoleAdmin","x-go-name":"PortalRole"},"portal_role_id":{"description":"The ID of the custom portal role to assign to the contact. Takes precedence over portal_role if provided.","type":"string","x-go-name":"PortalRoleID"},"primary_phone_number":{"description":"The primary phone number. Must be in the list of phone_numbers. If there are any phone_numbers and this is not specified, the first phone number will be primary.","type":"string","x-go-name":"PrimaryPhoneNumber"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateContactResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Contact"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomFieldRequestBody":{"properties":{"default_value":{"description":"The default value for single-valued custom fields.","type":"string","x-go-name":"DefaultValue"},"default_values":{"description":"The default values for multi-valued custom fields.","items":{"type":"string"},"type":"array","x-go-name":"DefaultValues"},"description":{"description":"The description of the custom field.","type":"string","x-go-name":"Description"},"label":{"description":"The label of the custom field.","type":"string","x-go-name":"Label"},"select_options":{"description":"The list options of the select custom field. This is only present for select and multiselect custom fields.","items":{"$ref":"#/components/schemas/CustomFieldDefinitionSelectOption"},"type":"array","x-go-name":"SelectOptions"},"slug":{"description":"The slug of the custom field.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomFieldResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinition"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomObjectRequestBody":{"properties":{"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values to set on the object, keyed by field slug. To update the linked account, pass the built-in Account relationship field as `custom_fields.account.value`, for example `{\"custom_fields\":{\"account\":{\"value\":\"account_uuid\"}}}`.","example":{"account":{"value":"account_uuid"}},"type":"object","x-go-name":"CustomFields"},"name":{"description":"The name of the custom object.","type":"string","x-go-name":"Name"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomObjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/APICustomObject"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomObjectsRequest":{"properties":{"custom_fields":{"additionalProperties":{"$ref":"#/components/schemas/CustomFieldValue"},"description":"Custom field values to apply to every listed custom object, keyed by field slug. To unset a field, pass its slug with an empty value.","example":{"priority":{"value":"high"}},"type":"object","x-go-name":"CustomFields"},"ids":{"description":"The IDs of the custom objects to update. Must be between 1 and 100 IDs.","items":{"type":"string"},"type":"array","x-go-name":"IDs"}},"required":["ids"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateCustomObjectsResponseBody":{"properties":{"request_id":{"type":"string","x-go-name":"RequestID"},"success":{"type":"boolean","x-go-name":"Success"},"updated_ids":{"items":{"type":"string"},"type":"array","x-go-name":"UpdatedIDs"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateFeatureRequestRequestBody":{"properties":{"custom_fields":{"description":"An array of custom fields to set. Only passed-in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"request_status":{"description":"The new request status. Can be a built-in status (new, in_progress, closed, archived) or a custom status slug.","type":"string","x-go-name":"RequestStatus"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateFeatureRequestResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/FeatureRequest"},"request_id":{"type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateIssueRequestBody":{"properties":{"account_id":{"description":"The ID of the account that this issue belongs to. To remove the account, pass an empty string and also provide requester_id. The requester can be cleared with an empty string or retained if it has no account memberships. Account removal is supported only for manual, form, and email issues.","type":"string","x-go-name":"AccountID"},"assignee_id":{"description":"The ID of the user who should be assigned to this issue. If empty string is passed in, the issue assignee will be removed.","type":"string","x-go-name":"AssigneeID"},"custom_fields":{"description":"An array of custom fields to be used on this issue. Only passed in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Whether the issue should be visible in the customer portal.","type":"boolean","x-go-name":"CustomerPortalVisible"},"requester_id":{"description":"The ID of the requester that this issue is on behalf of. If an empty string is passed, the requester will be removed. This field must be provided when removing the issue's account, and a retained requester must not belong to any account.","type":"string","x-go-name":"RequesterID"},"requestor_id":{"description":"Deprecated: Use requester_id instead.","type":"string","x-go-name":"RequestorID"},"state":{"description":"The state this issue should be moved to. Standard values are `new`, `waiting_on_you`, `waiting_on_customer`, `on_hold`, and `closed`; custom status slugs are also supported.","example":"new","type":"string","x-go-name":"State"},"tags":{"description":"An array of strings to use as tags on this issue. If provided, the issue tags will be updated to be exactly the given tags.","items":{"type":"string"},"type":"array","x-go-name":"Tags"},"team_id":{"description":"The ID of the team this issue should be assigned to. If empty string is passed in, any assigned team will be removed.","type":"string","x-go-name":"TeamID"},"title":{"description":"The title of the issue.","type":"string","x-go-name":"Title"},"type":{"description":"The type of the issue. Set to \"ticket\" to upgrade a conversation to a support ticket. Cannot be downgraded from \"ticket\" to \"conversation\".","enum":["conversation","ticket"],"type":"string","x-enumDescriptions":{"conversation":"A conversation.","ticket":"A support ticket."},"x-go-enum-desc":"conversation IssueTypeConversation  A conversation.\nticket IssueTypeTicket  A support ticket.","x-go-name":"Type"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateIssueResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Issue"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateKnowledgeBaseThemeAsset":{"properties":{"asset_type":{"description":"The type of theme asset. One of article, collection, css, footer, header, homepage, not_found, or scripts.","type":"string","x-go-name":"AssetType"},"content":{"description":"The complete replacement content for the asset.","type":"string","x-go-name":"Content"}},"required":["asset_type","content"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateKnowledgeBaseThemeRequestBody":{"properties":{"assets":{"description":"The complete theme files to replace. Changes are saved as drafts and are not published.","items":{"$ref":"#/components/schemas/UpdateKnowledgeBaseThemeAsset"},"type":"array","x-go-name":"Assets"}},"required":["assets"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateKnowledgeBaseThemeResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/KnowledgeBaseTheme"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateMacroRequestBody":{"properties":{"conditions":{"$ref":"#/components/schemas/Filter"},"macro_group_id":{"description":"The ID of the macro group this macro belongs to.","type":"string","x-go-name":"MacroGroupID"},"name":{"description":"The name of the macro.","type":"string","x-go-name":"Name"},"text_html":{"description":"The HTML content of the macro.","type":"string","x-go-name":"TextHTML"},"text_type":{"description":"The type of text: \"reply\", \"note\", or \"email\".","type":"string","x-go-name":"TextType"},"visibility":{"$ref":"#/components/schemas/VisibilityInput"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateMacroResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Macro"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateMilestoneRequestBody":{"properties":{"due_date":{"description":"Due date for this milestone, in RFC 3339 format","type":"string","x-go-name":"DueDate"},"name":{"description":"Name for this milestone","type":"string","x-go-name":"Name"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateMilestoneResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Milestone"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateProjectRequestBody":{"properties":{"custom_fields":{"description":"An array of custom fields to be used on this project. Only passed in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Customer portal visible for this project","type":"boolean","x-go-name":"CustomerPortalVisible"},"description_html":{"description":"Description HTML for this project","type":"string","x-go-name":"DescriptionHTML"},"end_date":{"description":"End date for this project, in RFC 3339 format","type":"string","x-go-name":"EndDate"},"is_archived":{"description":"Whether the project is archived","type":"boolean","x-go-name":"IsArchived"},"name":{"description":"Name for this project","type":"string","x-go-name":"Name"},"owner_id":{"description":"Owner ID for this project","type":"string","x-go-name":"OwnerID"},"start_date":{"description":"Start date for this project, in RFC 3339 format","type":"string","x-go-name":"StartDate"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateProjectResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Project"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTagRequestBody":{"properties":{"hex_color":{"description":"The hex code of the tag's color.","type":"string","x-go-name":"HexColor"},"value":{"description":"in: body\nThe name of the tag.","type":"string","x-go-name":"Value"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTagResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Tag"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTaskCommentRequestBody":{"properties":{"body_html":{"description":"The updated body of the comment in HTML format.","type":"string","x-go-name":"BodyHTML"}},"required":["body_html"],"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTaskCommentResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/TaskComment"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTaskRequestBody":{"properties":{"assignee_id":{"description":"Assignee ID for this task","type":"string","x-go-name":"AssigneeID"},"body_html":{"description":"Body HTML for this task","type":"string","x-go-name":"BodyHTML"},"custom_fields":{"description":"An array of custom fields to be used on this task. Only passed in fields will be modified.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array","x-go-name":"CustomFields"},"customer_portal_visible":{"description":"Customer portal visible for this task","type":"boolean","x-go-name":"CustomerPortalVisible"},"due_date":{"description":"Due date for this task, in RFC 3339 format","type":"string","x-go-name":"DueDate"},"milestone_id":{"description":"Milestone ID for this task","type":"string","x-go-name":"MilestoneID"},"project_id":{"description":"Project ID for this task","type":"string","x-go-name":"ProjectID"},"status":{"$ref":"#/components/schemas/TaskStatus"},"title":{"description":"Title for this task","type":"string","x-go-name":"Title"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTaskResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Task"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTeamRequestBody":{"properties":{"name":{"description":"The name of the team.","type":"string","x-go-name":"Name"},"user_ids":{"description":"The list of user IDs to add to the team. If provided, the team members will be updated to be exactly the given users.","items":{"type":"string"},"type":"array","x-go-name":"UserIDs"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateTeamResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/Team"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateUserRequestBody":{"properties":{"avatar_url":{"description":"The avatar URL of the user. Must be a square .png, .jpg or .jpeg.","type":"string","x-go-name":"AvatarURL"},"name":{"description":"The name of the user.","type":"string","x-go-name":"Name"},"role_id":{"description":"The role_id of the user.","type":"string","x-go-name":"RoleID"},"status":{"description":"The new user status for the user. Can be one of `active`, `away`, or `out_of_office`.","enum":["active","away","out_of_office"],"example":"active","type":"string","x-go-name":"Status"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UpdateUserResponseBody":{"properties":{"data":{"$ref":"#/components/schemas/User"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UploadAccountFileResponseBody":{"properties":{"data":{"description":"The data payload of the response.","items":{"$ref":"#/components/schemas/Attachment"},"type":"array","x-go-name":"Data"},"request_id":{"description":"The request ID for tracking.","type":"string","x-go-name":"RequestID"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"UploadTrainingDataFileContentRequestBody":{"properties":{"content":{"description":"The text content to upload.","type":"string","x-go-name":"Content"},"external_id":{"description":"External ID for idempotent operations (optional).","type":"string","x-go-name":"ExternalID"},"file_name":{"description":"The name for the uploaded file.","type":"string","x-go-name":"FileName"},"training_data_id":{"description":"The ID of an existing training data container to upload to (optional).","type":"string","x-go-name":"TrainingDataID"},"training_data_name":{"description":"The name of a new training data container (required if training_data_id not provided).","type":"string","x-go-name":"TrainingDataName"},"visibility":{"default":"everyone","description":"Visibility of the training data. Defaults to \"everyone\".","enum":["everyone","user_only","ai_agent_only"],"example":"everyone","type":"string","x-go-name":"Visibility"}},"type":"object","x-go-package":"pylon/api/apiserver/endpoints"},"User":{"properties":{"avatar_url":{"description":"The avatar URL of the user.","type":"string","x-go-name":"AvatarURL"},"email":{"description":"The primary email of the user.","type":"string","x-go-name":"Email"},"emails":{"description":"The list of all emails of the user.","items":{"type":"string"},"type":"array","x-go-name":"Emails"},"id":{"description":"The ID of the user.","type":"string","x-go-name":"ID"},"is_deactivated":{"description":"Whether the user is deactivated.","type":"boolean","x-go-name":"IsDeactivated"},"name":{"description":"The name of the user.","type":"string","x-go-name":"Name"},"role":{"$ref":"#/components/schemas/MiniRole"},"role_id":{"description":"The role_id of the user.","type":"string","x-go-name":"RoleID"},"status":{"description":"The status of the user.","enum":["","active","away","out_of_office"],"example":"active","type":"string","x-go-name":"Status"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"UserRole":{"properties":{"id":{"description":"The ID of the role.","type":"string","x-go-name":"ID"},"name":{"description":"The name of the role.","type":"string","x-go-name":"Name"},"slug":{"description":"The slug of the role.","type":"string","x-go-name":"Slug"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"Visibility":{"properties":{"team_ids":{"description":"Team IDs who can access the resource.","items":{"type":"string"},"type":"array","x-go-name":"TeamIDs"},"type":{"description":"The visibility type.","type":"string","x-go-name":"Type"},"user_ids":{"description":"User IDs who can access the resource.","items":{"type":"string"},"type":"array","x-go-name":"UserIDs"}},"title":"Visibility represents the visibility settings of a resource in responses.","type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"VisibilityInput":{"properties":{"team_ids":{"description":"Team IDs who can access the resource. Required when type is \"team\" or \"users_and_teams\".","items":{"type":"string"},"type":"array","x-go-name":"TeamIDs"},"type":{"description":"The visibility type: \"org\" (entire organization), \"user\" (specific users),\n\"team\" (specific teams), or \"users_and_teams\" (specific users and teams).","enum":["org","user","team","users_and_teams"],"type":"string","x-enumDescriptions":{"org":"Visible to the entire organization.","team":"Visible to specific teams only.","user":"Visible to specific users only.","users_and_teams":"Visible to specific users and teams."},"x-go-enum-desc":"org VisibilityTypeOrg  Visible to the entire organization.\nuser VisibilityTypeUser  Visible to specific users only.\nteam VisibilityTypeTeam  Visible to specific teams only.\nusers_and_teams VisibilityTypeUsersAndTeams  Visible to specific users and teams.","x-go-name":"Type"},"user_ids":{"description":"User IDs who can access the resource. Required when type is \"user\" or \"users_and_teams\".","items":{"type":"string"},"type":"array","x-go-name":"UserIDs"}},"required":["type"],"title":"VisibilityInput represents visibility settings for a resource.","type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"VoiceCall":{"properties":{"created_at":{"description":"RFC3339 timestamp of when the call record was created.","type":"string","x-go-name":"CreatedAt"},"duration_sec":{"description":"The duration of the call in seconds.","format":"int64","type":"integer","x-go-name":"DurationSec"},"from_phone_number":{"description":"The phone number that originated the call.","type":"string","x-go-name":"FromPhoneNumber"},"id":{"description":"The ID of the voice call.","type":"string","x-go-name":"ID"},"recordings":{"description":"Recordings produced for this call.","items":{"$ref":"#/components/schemas/VoiceCallRecording"},"type":"array","x-go-name":"Recordings"},"to_phone_number":{"description":"The phone number that was dialed.","type":"string","x-go-name":"ToPhoneNumber"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"VoiceCallRecording":{"properties":{"download_url":{"description":"A presigned URL to download the audio file. Expires 1 hour after this response is generated; refetch the voice call to get a new URL.","type":"string","x-go-name":"DownloadURL"},"id":{"description":"The ID of the recording.","type":"string","x-go-name":"ID"},"transcript_segments":{"description":"Parsed transcript with one entry per spoken segment.","items":{"$ref":"#/components/schemas/VoiceCallTranscriptSegment"},"type":"array","x-go-name":"TranscriptSegments"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"},"VoiceCallTranscriptSegment":{"properties":{"speaker":{"description":"The speaker label for this segment.","type":"string","x-go-name":"Speaker"},"text":{"description":"The text spoken in this segment.","type":"string","x-go-name":"Text"}},"type":"object","x-go-package":"pylon/api/apiserver/apitypes"}},"securitySchemes":{"bearerAuth":{"description":"Authorization: Bearer \u003ctoken\u003e","scheme":"bearer","type":"http"}}},"info":{"description":"Documentation of Pylon API.\n\nThe same API reference applies to both the US and EU regions. Use\nhttps://api.usepylon.com for US tenants and https://api.eu.usepylon.com for\nEU tenants. Integrations must explicitly configure or ask customers to\nselect their tenant region. Pylon does not provide a public endpoint that\ndiscovers a tenant's region from an API token.","title":"Pylon API.","version":"1.0.0"},"openapi":"3.0.3","paths":{"/accounts":{"get":{"description":"Returns a paginated list of accounts for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetAccounts","parameters":[{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of accounts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetAccountsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of accounts","tags":["accounts"]},"patch":{"description":"Updates multiple accounts in a single request. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateAccounts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateAccountsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update multiple accounts","tags":["accounts"]},"post":{"description":"Creates a new account with the specified name and optional metadata.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateAccountResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new account","tags":["accounts"]}},"/accounts/merge":{"post":{"description":"Merges one or more accounts into a surviving account. Issues, contacts, opportunities, domains, channels, external IDs, and other associated data are transferred to the surviving account. Tags and custom field values of the merged accounts are not transferred. The merged accounts are permanently deleted. This cannot be undone. Accounts are merged sequentially, each in its own transaction; if a merge fails partway through, accounts already merged are not restored.\n\n**Rate limit:** 30 requests per minute","operationId":"MergeAccounts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeAccountsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/MergeAccountsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Merge accounts","tags":["accounts"]}},"/accounts/search":{"post":{"description":"Optionally pass `search_text` for fuzzy matching. Results are intersected with any provided filter.\n\nFilterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `id` | `equals`, `in`, `not_in` |\n `domains` | `contains`, `does_not_contain`, `in`, `not_in` |\n `tags` | `contains`, `does_not_contain`, `in`, `not_in` |\n `name` | `equals`, `in`, `not_in`, `string_contains` |\n `external_ids` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `owner_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n\nFor custom fields, pass the field slug as `field`.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchAccounts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAccountsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchAccountsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search for accounts by a given filter","tags":["accounts"]}},"/accounts/{account_id}/highlights":{"post":{"description":"Creates a new highlight on an account.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateAccountHighlight","parameters":[{"description":"The ID or external ID of the account that the highlight belongs to.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountHighlightRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateAccountHighlightResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an account highlight","tags":["account-highlights"]}},"/accounts/{account_id}/highlights/{highlight_id}":{"delete":{"description":"Permanently deletes an account highlight by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteAccountHighlight","parameters":[{"description":"The ID or external ID of the account that the highlight belongs to.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"},{"description":"The ID of the highlight to delete.","in":"path","name":"highlight_id","required":true,"schema":{"type":"string"},"x-go-name":"HighlightID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteAccountHighlightResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an account highlight","tags":["account-highlights"]},"patch":{"description":"Updates an existing account highlight. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateAccountHighlight","parameters":[{"description":"The ID of the highlight to update.","in":"path","name":"highlight_id","required":true,"schema":{"type":"string"},"x-go-name":"HighlightID"},{"description":"The ID or external ID of the account that the highlight belongs to.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountHighlightRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateAccountHighlightResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an account highlight","tags":["account-highlights"]}},"/accounts/{account_id}/relationship":{"post":{"description":"Creates a parent or partner relationship for the account in the URL.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateAccountRelationship","parameters":[{"description":"The ID of the child or client account.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAccountRelationshipRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateAccountRelationshipResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an account relationship","tags":["accounts"]}},"/accounts/{account_id}/relationships":{"get":{"description":"Returns the parent-child and partner-client relationships where the account is the child or client.\n\n**Rate limit:** 300 requests per minute","operationId":"GetAccountRelationships","parameters":[{"description":"The ID of the child or client account whose relationships should be returned.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"}],"responses":{"200":{"$ref":"#/components/responses/GetAccountRelationshipsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get account relationships","tags":["accounts"]}},"/accounts/{account_id}/relationships/{relationship_id}":{"delete":{"description":"Deletes an account relationship by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteAccountRelationship","parameters":[{"description":"The ID of the child or client account.","in":"path","name":"account_id","required":true,"schema":{"type":"string"},"x-go-name":"AccountID"},{"description":"The ID of the account relationship to delete.","in":"path","name":"relationship_id","required":true,"schema":{"type":"string"},"x-go-name":"RelationshipID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteAccountRelationshipResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an account relationship","tags":["accounts"]}},"/accounts/{id}":{"delete":{"description":"Permanently deletes an account by ID or external ID.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteAccount","parameters":[{"description":"The ID or external ID of the account to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteAccountResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Delete an existing account","tags":["accounts"]},"get":{"description":"Returns a single account by ID or external ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetAccount","parameters":[{"description":"The ID or external ID of the account to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetAccountResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get an account by its ID or external ID","tags":["accounts"]},"patch":{"description":"Updates an existing account by ID or external ID. Only provided fields are modified.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateAccount","parameters":[{"description":"The ID or external ID of the account to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAccountRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateAccountResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an existing account","tags":["accounts"]}},"/accounts/{id}/activities":{"post":{"description":"The {id} parameter accepts either:\nInternal account ID (UUID format)\nExternal ID (any string format)\n\n**Rate limit:** 120 requests per minute","operationId":"CreateActivity","parameters":[{"description":"The ID or external ID of the account to create the activity for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateActivityRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateActivityResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new activity for an account","tags":["accounts"]}},"/accounts/{id}/files":{"post":{"description":"Uploads one or more files to an account by ID or external ID.\n\n**Rate limit:** 30 requests per minute","operationId":"UploadAccountFile","parameters":[{"description":"The ID or external ID of the account to upload files to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"file":{"description":"The file to upload.","format":"binary","type":"string","x-formData-name":"file","x-go-name":"File"},"file_url":{"description":"The URL to fetch the file from, if the file is not provided.","type":"string","x-formData-name":"file_url","x-go-name":"FileURL"}},"type":"object"}}}},"responses":{"200":{"$ref":"#/components/responses/UploadAccountFileResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Upload files to an account","tags":["accounts"]}},"/activity-types":{"get":{"description":"Returns all custom activity type definitions for the organization.\n\n**Rate limit:** 30 requests per minute","operationId":"GetActivityTypes","responses":{"200":{"$ref":"#/components/responses/GetActivityTypesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get custom activity types","tags":["activity-types"]}},"/article-feedback":{"get":{"description":"Get article feedback\nReturns a paginated list of knowledge base article feedback for the organization.\n\n**Rate limit:** 120 requests per minute","operationId":"GetArticleFeedback","parameters":[{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of feedback submissions to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"default":100,"format":"int64","maximum":999,"minimum":1,"type":"integer"},"x-go-name":"Limit"},{"description":"The ID of the knowledge base to filter by.","in":"query","name":"knowledge_base_id","schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the article to filter by.","in":"query","name":"article_id","schema":{"type":"string"},"x-go-name":"ArticleID"}],"responses":{"200":{"$ref":"#/components/responses/GetArticleFeedbackResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"tags":["article-feedback"]}},"/attachments":{"post":{"description":"Uploads a file as an attachment. The returned URL can be used when creating issues or messages.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateAttachment","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"description":{"description":"The description of the file.","type":"string","x-formData-name":"description","x-go-name":"Description"},"file":{"description":"The file to upload.","format":"binary","type":"string","x-formData-name":"file","x-go-name":"File"},"file_url":{"description":"The URL to fetch the file from, if the file is not provided.","type":"string","x-formData-name":"file_url","x-go-name":"FileURL"}},"type":"object"}}}},"responses":{"200":{"$ref":"#/components/responses/CreateAttachmentResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an attachment","tags":["attachments"]}},"/audit-logs":{"get":{"description":"Returns a paginated list of audit log entries for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetAuditLogs","parameters":[{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of audit logs to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetAuditLogsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of audit logs","tags":["audit_logs"]}},"/audit-logs/search":{"post":{"description":"Returns a filtered, paginated list of audit log entries for the organization.\nFilterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `action` | `equals`, `in`, `not_in`, `string_contains`, `string_does_not_contain` |\n `action_happened_at` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format.\n\n**Rate limit:** 30 requests per minute","operationId":"SearchAuditLogs","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAuditLogsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/GetAuditLogsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search audit logs with filters","tags":["audit_logs"]}},"/call-recordings/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `account_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `source` | `equals`, `in`, `not_in` |\n `title` | `equals`, `string_contains` |\n `start_time` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchCallRecordings","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchCallRecordingsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchCallRecordingsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search for call recordings by a given filter","tags":["call-recordings"]}},"/call-recordings/{id}":{"delete":{"description":"Permanently deletes a call recording by its Pylon ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteCallRecording","parameters":[{"description":"The Pylon ID of the call recording to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteCallRecordingResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a call recording","tags":["call-recordings"]},"get":{"description":"Returns a single call recording by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetCallRecording","parameters":[{"description":"The ID of the call recording to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetCallRecordingResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a call recording by its ID","tags":["call-recordings"]},"patch":{"description":"Updates a call recording by ID. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateCallRecording","parameters":[{"description":"The ID of the call recording to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCallRecordingRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateCallRecordingResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a call recording","tags":["call-recordings"]}},"/contacts":{"get":{"description":"Returns a paginated list of contacts for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetContacts","parameters":[{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of contacts to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetContactsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all contacts","tags":["contacts"]},"post":{"description":"Creates a new contact with the specified email and optional metadata.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateContact","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContactRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateContactResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new contact","tags":["contacts"]}},"/contacts/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `id` | `equals`, `in`, `not_in` |\n `email` | `equals`, `in`, `not_in`, `string_contains` |\n `name` | `equals`, `in`, `not_in`, `string_contains` |\n `account_id` | `equals`, `in`, `not_in` |\n\nFor custom fields, pass the field slug as `field`.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchContacts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchContactsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchContactsResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Search for contacts by a given filter","tags":["contacts"]}},"/contacts/{id}":{"delete":{"description":"Permanently deletes a contact by ID or external ID.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteContact","parameters":[{"description":"The ID or external ID of the contact to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteContactResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Delete a contact by its ID or external ID","tags":["contacts"]},"get":{"description":"Returns a single contact by ID or external ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetContact","parameters":[{"description":"The ID or external ID of the contact.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetContactResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a contact by its ID or external ID","tags":["contacts"]},"patch":{"description":"Updates a contact by ID or external ID. Only provided fields are modified.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateContact","parameters":[{"description":"The ID or external ID of the contact to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContactRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateContactResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a contact by its ID or external ID","tags":["contacts"]}},"/custom-fields":{"get":{"description":"Returns all custom field definitions for the specified object type.\n\n**Rate limit:** 300 requests per minute","operationId":"GetCustomFields","parameters":[{"description":"The object type of the custom fields. Can be \"account\", \"issue\", \"contact\", \"task\", \"project\", \"meeting\", or \"opportunity\".","in":"query","name":"object_type","required":true,"schema":{"enum":["account","issue","contact","task","project","meeting","opportunity"],"type":"string"},"x-go-name":"ObjectType"}],"responses":{"200":{"$ref":"#/components/responses/GetCustomFieldsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all custom fields","tags":["custom-fields"]},"post":{"description":"Creates a new custom field definition for the specified object type.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomFieldRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateCustomFieldResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a custom field","tags":["custom-fields"]}},"/custom-fields/{id}":{"get":{"description":"Returns a single custom field definition by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetCustomField","parameters":[{"description":"The ID of the custom field.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetCustomFieldResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a custom field by its ID","tags":["custom-fields"]},"patch":{"description":"Updates a custom field definition. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateCustomField","parameters":[{"description":"The ID of the custom field.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomFieldRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateCustomFieldResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a custom field","tags":["custom-fields"]}},"/custom-objects/{type}":{"get":{"description":"Returns paginated custom objects of the given type.\n\n**Rate limit:** 300 requests per minute","operationId":"GetCustomObjects","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"},{"description":"Pagination cursor for the next page.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"Number of results per page. Defaults to 25, max 100.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetCustomObjectsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"List custom objects","tags":["custom-objects"]},"patch":{"description":"Applies the same update to multiple custom objects of the given type in a single request. Pass between 1 and 100 IDs and the custom field values to set; only the provided fields are modified on each object. To update the linked account, pass the built-in Account relationship field in `custom_fields`: `{\"ids\":[\"object_uuid\"],\"custom_fields\":{\"account\":{\"value\":\"account_uuid\"}}}`. To unset a field, pass its slug with an empty value.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateCustomObjects","parameters":[{"description":"The type slug of the custom object (e.g. \"opportunity\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomObjectsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateCustomObjectsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Bulk update custom objects","tags":["custom-objects"]},"post":{"description":"Creates a new custom object instance of the given type. To link the object to an account, pass the built-in Account relationship field in `custom_fields`: `{\"name\":\"Example\",\"custom_fields\":{\"account\":{\"value\":\"account_uuid\"}}}`.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateCustomObject","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCustomObjectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateCustomObjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a custom object","tags":["custom-objects"]}},"/custom-objects/{type}/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `name` | `equals`, `in`, `not_in`, `string_contains`, `string_does_not_contain`, `is_set`, `is_unset` |\n `created_at` | `time_is_after`, `time_is_before`, `time_range` |\n `updated_at` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format. For custom fields, pass the field slug as `field`.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchCustomObjects","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchCustomObjectsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchCustomObjectsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search for custom objects by a given filter","tags":["custom-objects"]}},"/custom-objects/{type}/{id}":{"delete":{"description":"Deletes a custom object instance.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteCustomObject","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"},{"description":"The ID of the custom object.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteCustomObjectResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a custom object","tags":["custom-objects"]},"get":{"description":"Returns a single custom object by ID, including its custom field values.\n\n**Rate limit:** 300 requests per minute","operationId":"GetCustomObject","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"},{"description":"The ID of the custom object.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetCustomObjectResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a custom object","tags":["custom-objects"]},"patch":{"description":"Updates a custom object. Only provided fields are modified. To update the linked account, pass the built-in Account relationship field in `custom_fields`: `{\"custom_fields\":{\"account\":{\"value\":\"account_uuid\"}}}`.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateCustomObject","parameters":[{"description":"The type slug of the custom object (e.g. \"companies\").","in":"path","name":"type","required":true,"schema":{"type":"string"},"x-go-name":"Type"},{"description":"The ID of the custom object.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomObjectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateCustomObjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a custom object","tags":["custom-objects"]}},"/feature-requests":{"post":{"description":"Creates a new feature request. When should_auto_fetch_evidence is true, supporting evidence is automatically gathered and used to generate the description.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateFeatureRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureRequestRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateFeatureRequestResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a feature request","tags":["feature-requests"]}},"/feature-requests/merge":{"post":{"description":"Merges one or more feature requests into a surviving feature request. Evidence and linked external issues are consolidated, and merged feature requests are archived. Merge requests that share a target should be sent serially.\n\n**Rate limit:** 30 requests per minute","operationId":"MergeFeatureRequests","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MergeFeatureRequestsRequest"}}},"required":true,"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/MergeFeatureRequestsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Merge feature requests","tags":["feature-requests"]}},"/feature-requests/search":{"post":{"description":"Returns feature requests matching the given criteria. Supports semantic search, status filtering, and pagination.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchFeatureRequests","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchFeatureRequestsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchFeatureRequestsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search or list feature requests","tags":["feature-requests"]}},"/feature-requests/{id}":{"delete":{"description":"Permanently deletes a feature request and its associated evidence.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteFeatureRequest","parameters":[{"description":"The ID of the feature request to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteFeatureRequestResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a feature request","tags":["feature-requests"]},"get":{"description":"Returns a single feature request by ID. Optionally includes evidence items when fetch_evidence is true.\n\n**Rate limit:** 300 requests per minute","operationId":"GetFeatureRequest","parameters":[{"description":"The ID of the feature request to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"Whether to include evidence items in the response. Defaults to false.","in":"query","name":"fetch_evidence","schema":{"type":"boolean"},"x-go-name":"FetchEvidence"}],"responses":{"200":{"$ref":"#/components/responses/GetFeatureRequestResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a feature request by ID","tags":["feature-requests"]},"patch":{"description":"Updates an existing feature request. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateFeatureRequest","parameters":[{"description":"The ID of the feature request to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFeatureRequestRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateFeatureRequestResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a feature request","tags":["feature-requests"]}},"/feature-requests/{id}/evidence":{"post":{"description":"Creates a manual evidence record linking a customer account to a feature request. Repeated requests create separate evidence records.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateFeatureRequestEvidence","parameters":[{"description":"The ID of the feature request.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeatureRequestEvidenceRequestBody"}}},"required":true,"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateFeatureRequestEvidenceResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Link a customer account to a feature request","tags":["feature-requests"]}},"/feature-requests/{id}/set-portal-visibility":{"post":{"description":"Toggles portal visibility for a set of accounts on a feature request. Idempotent — adding already-visible accounts or removing already-hidden accounts is a no-op. Note: visibility only takes effect when the Feature Requests tab is enabled in portal settings.\n\n**Rate limit:** 120 requests per minute","operationId":"SetFeatureRequestPortalVisibility","parameters":[{"description":"The ID of the feature request.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetFeatureRequestPortalVisibilityRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SetFeatureRequestPortalVisibilityResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Set portal visibility for a feature request","tags":["feature-requests"]}},"/import/contacts":{"post":{"description":"Imports a new contact with the specified email and optional metadata.\n\n**Rate limit:** 120 requests per minute","operationId":"ImportContact","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportContactRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/ImportContactResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Import a new contact","tags":["import"]}},"/import/issues":{"post":{"description":"Imports an issue with its messages and metadata. At least one message is required.\n\n**Rate limit:** 120 requests per minute","operationId":"ImportIssue","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportIssueRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/ImportIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Import an issue","tags":["import"]}},"/import/issues/{id}/messages":{"post":{"description":"Imports one or more messages onto an existing issue.\n\n**Rate limit:** 120 requests per minute","operationId":"ImportMessages","parameters":[{"description":"The ID of the issue.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportMessagesRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/ImportMessagesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Import messages onto an existing issue","tags":["import"]}},"/import/projects":{"post":{"description":"Imports a project with its original timestamps. Unlike POST /projects, this does not fire triggers,\nnotifications, realtime updates, or analytics, and it accepts created_at and updated_at.\n\n**Rate limit:** 120 requests per minute","operationId":"ImportProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportProjectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/ImportProjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Import a project","tags":["import"]}},"/import/tasks":{"post":{"description":"Imports a task with its original timestamps. Unlike POST /tasks, this does not fire triggers,\nnotifications, realtime updates, or analytics, and it accepts created_at, updated_at, started_at\nand completed_at. Import projects before the tasks that belong to them.\n\n**Rate limit:** 120 requests per minute","operationId":"ImportTask","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportTaskRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/ImportTaskResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Import a task","tags":["import"]}},"/issue-groups":{"post":{"description":"Create an issue group\nCreates an issue group and attaches its initial child issues atomically.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateIssueGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueGroupRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueGroupResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"409":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"tags":["issues"]}},"/issue-groups/{issue_group_id}/children":{"post":{"description":"Add children to an issue group\nAdds one or more child issues atomically. Issues already attached to this group are ignored.\n\n**Rate limit:** 120 requests per minute","operationId":"AddIssueGroupChildren","parameters":[{"description":"The ID of the issue group.","in":"path","name":"issue_group_id","required":true,"schema":{"type":"string"},"x-go-name":"IssueGroupID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddIssueGroupChildrenRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/IssueGroupMutationResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"409":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"tags":["issues"]}},"/issue-groups/{issue_group_id}/children/{child_issue_id}":{"delete":{"description":"Remove a child from an issue group\nRemoves one child issue. An issue group must retain at least one child.\n\n**Rate limit:** 120 requests per minute","operationId":"RemoveIssueGroupChild","parameters":[{"description":"The ID of the issue group.","in":"path","name":"issue_group_id","required":true,"schema":{"type":"string"},"x-go-name":"IssueGroupID"},{"description":"The ID of the child issue to remove.","in":"path","name":"child_issue_id","required":true,"schema":{"type":"string"},"x-go-name":"ChildIssueID"}],"responses":{"200":{"$ref":"#/components/responses/IssueGroupMutationResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"409":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"tags":["issues"]}},"/issue-statuses":{"get":{"description":"Returns all issue statuses for the organization.\n\n**Rate limit:** 30 requests per minute","operationId":"GetIssueStatuses","responses":{"200":{"$ref":"#/components/responses/GetIssueStatusesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all issue statuses","tags":["issue-statuses"]}},"/issues":{"get":{"description":"Returns a paginated list of issues within a required time range (max 365 days).\n\n**Rate limit:** 30 requests per minute","operationId":"GetIssues","parameters":[{"description":"The start time (RFC3339) of the time range to get issues for. The duration between start_time and end_time must be less than or equal to 365 days.","in":"query","name":"start_time","required":true,"schema":{"type":"string"},"x-go-name":"StartTime"},{"description":"The end time (RFC3339) of the time range to get issues for. The duration between start_time and end_time must be less than or equal to 365 days.","in":"query","name":"end_time","required":true,"schema":{"type":"string"},"x-go-name":"EndTime"},{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of issues to fetch. Defaults to 20000. Set to 0 or omit to use the default. Must be between 0 and 20000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetIssuesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of issues","tags":["issues"]},"post":{"description":"Creates a new issue and its first message. Requires either an account_id or requester information.\n\nRequester fields identify the customer, user_id or contact_id identifies the first-message author, and destination_metadata controls delivery. These choices are independent. If destination_metadata is omitted, the first message is an internal note and no customer is contacted. See the request-field descriptions and examples for destination-specific requirements.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateIssue","requestBody":{"content":{"application/json":{"examples":{"customer_authored":{"summary":"Create an issue attributed to a customer","value":{"body_html":"\u003cp\u003eI cannot access my account.\u003c/p\u003e","contact_id":"contact_123","destination_metadata":{"destination":"in_app_chat"},"requester_id":"contact_123","title":"Unable to sign in"}},"email":{"summary":"Create an issue and email an existing requester","value":{"body_html":"\u003cp\u003eHere is the requested update.\u003c/p\u003e","destination_metadata":{"destination":"email","email":"support@example.com"},"requester_id":"contact_123","title":"Following up"}},"internal":{"summary":"Create an internal issue without contacting a customer","value":{"account_id":"acc_123","body_html":"\u003cp\u003eCheck recent activity.\u003c/p\u003e","title":"Investigate usage spike"}}},"schema":{"$ref":"#/components/schemas/CreateIssueRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new issue","tags":["issues"]}},"/issues/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `created_at` | `time_is_after`, `time_is_before`, `time_range` |\n `account_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `ticket_form_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `requester_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `follower_user_id` | `equals`, `in`, `not_in` |\n `follower_contact_id` | `equals`, `in`, `not_in` |\n `state` | `equals`, `in`, `not_in` |\n `tags` | `contains`, `does_not_contain`, `in`, `not_in` |\n `title` | `string_contains`, `string_does_not_contain` |\n `body_html` | `string_contains`, `string_does_not_contain` |\n `assignee_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `team_id` | `equals`, `in`, `not_in` |\n `issue_type` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `issue_is_issue_group` | `equals`, `in`, `not_in` |\n `resolved_at` | `time_is_after`, `time_is_before`, `time_range` |\n `latest_message_activity_at` | `time_is_after`, `time_is_before`, `time_range` |\n `updated_at` | `time_is_after`, `time_is_before`, `time_range` |\n `slack_channel_id` | `equals`, `in`, `not_in` |\n `workspace_email` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n\nTimestamp values use RFC3339 format. Standard `state` values are `new`, `waiting_on_you`, `waiting_on_customer`, `on_hold`, and `closed`; custom status slugs are also supported. `issue_type` values are `conversation` and `ticket`.\n\nFor tag filters, pass the tag name. For custom fields, pass the field slug as `field`. `slack_channel_id` identifies the Slack channel where the issue was created. `workspace_email` identifies the email address connected to the Pylon workspace through which the issue's email conversation is routed.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchIssues","requestBody":{"content":{"application/json":{"examples":{"by_state":{"summary":"Search issues by state","value":{"filter":{"field":"state","operator":"equals","value":"new"}}}},"schema":{"$ref":"#/components/schemas/SearchIssuesRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchIssuesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search for issues by a given filter","tags":["issues"]}},"/issues/{id}":{"delete":{"description":"Permanently deletes an issue by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteIssue","parameters":[{"description":"The ID of the issue to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteIssueResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Delete an existing issue","tags":["issues"]},"get":{"description":"Returns a single issue by ID or issue number.\n\n**Rate limit:** 300 requests per minute","operationId":"GetIssue","parameters":[{"description":"The ID or number of the issue to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get an issue by its ID/number","tags":["issues"]},"patch":{"description":"Updates an existing issue. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateIssue","parameters":[{"description":"The ID of the issue to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIssueRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an existing issue","tags":["issues"]}},"/issues/{id}/ai-response":{"post":{"description":"Generates an AI response for the specified issue using the given agent.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateIssueAIResponse","parameters":[{"description":"The ID or number of the issue to create an AI response for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueAIResponseRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueAIResponseResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an AI response for an issue","tags":["issues"]}},"/issues/{id}/draft-reply":{"post":{"description":"Create or update a draft reply\nCreates a private customer-reply draft without sending it. The draft is visible only to its owner and may require a normal issue refetch before appearing in the app. For unlinked or service API tokens, user_id is required. This endpoint updates only untouched drafts that it previously created; every other existing draft returns a conflict.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateIssueDraftReply","parameters":[{"description":"The ID of the issue.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueDraftReplyRequestBody"}}},"description":"The request body.","required":true,"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueDraftReplyResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"409":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"tags":["messages"]}},"/issues/{id}/external-issues":{"post":{"description":"By default, links external issues. To unlink issues, set the operation field to \"unlink\".\n\n**Rate limit:** 120 requests per minute","operationId":"LinkExternalIssue","parameters":[{"description":"The ID or number of the issue to link external issues to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkExternalIssueRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/LinkExternalIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Link or unlink external issues to/from an issue","tags":["issues"]}},"/issues/{id}/followers":{"get":{"description":"Returns the list of followers for the specified issue.\n\n**Rate limit:** 300 requests per minute","operationId":"GetIssueFollowers","parameters":[{"description":"The ID or number of the issue to get followers for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueFollowersResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get followers of an issue","tags":["issues"]},"post":{"description":"By default, adds followers. To remove followers, set the operation field to \"remove\".\n\n**Rate limit:** 120 requests per minute","operationId":"AddIssueFollowers","parameters":[{"description":"The ID or number of the issue to add followers to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddIssueFollowersRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/AddIssueFollowersResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Add or remove followers to/from an issue","tags":["issues"]}},"/issues/{id}/messages":{"get":{"description":"Returns messages for the specified issue, including replies and internal notes, ordered from oldest to newest.\n\nTo post a reply, use the message's top-level id—not thread_id or email_info.message_id. To post an internal note, use an internal thread's thread_id or an internal note's top-level id. Omit both limit and cursor to return all messages; when cursor is provided without limit, the page size defaults to 100.\n\n**Rate limit:** 120 requests per minute","operationId":"GetIssueMessages","parameters":[{"description":"The ID of the issue to fetch messages for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of messages to fetch. Must be greater than 0 and at most 1000. If omitted, all messages are returned for backward compatibility.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueMessagesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get messages on an issue","tags":["messages"]}},"/issues/{id}/messages/{message_id}":{"delete":{"description":"Permanently deletes a message from an issue and its connected external system.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteMessage","parameters":[{"description":"The ID of the issue that the message belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the message to delete.","in":"path","name":"message_id","required":true,"schema":{"type":"string"},"x-go-name":"MessageID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteMessageResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a message","tags":["messages"]}},"/issues/{id}/messages/{message_id}/redact":{"post":{"description":"Permanently replaces a message's stored content with redacted_body_message and optionally deletes its attachments. This action cannot be undone.\nWhen omitted, redacted_body_message defaults to \"This message has been redacted.\" and redact_attachments defaults to true.\n\n**Rate limit:** 120 requests per minute","operationId":"RedactMessage","parameters":[{"description":"The ID of the issue that the message belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the message to redact.","in":"path","name":"message_id","required":true,"schema":{"type":"string"},"x-go-name":"MessageID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedactMessageRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/RedactMessageResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Redact a message","tags":["messages"]}},"/issues/{id}/note":{"post":{"description":"Posts an internal note on an issue thread. Not visible to the requester.\n\nThread selection:\n* If thread_id is provided, posts to that internal thread.\n* If message_id is provided, posts to the thread containing that internal note.\n* Providing both thread_id and message_id returns a 400 response.\n* If neither is provided, posts to the most recently created Slack-backed internal thread. If none exists, creates a Pylon-only internal thread.\n* thread_name names that newly created Pylon-only thread and is otherwise ignored.\n\nEmpty thread_id, message_id, and thread_name values are treated as omitted.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateIssueNote","parameters":[{"description":"The ID of the issue.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueNoteRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueNoteResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an internal note on an issue","tags":["messages"]}},"/issues/{id}/reply":{"post":{"description":"Sends a customer-facing reply on an issue, visible to the requester.\n\nmessage_id is required to identify which existing customer-visible conversation or thread to continue. Use the top-level message id returned by GET /issues/{id}/messages; do not use an external provider's message ID or the nested email_info.message_id value.\n\nFor an email conversation, email_info must contain at least one recipient across to_emails, cc_emails, and bcc_emails. The referenced message controls email threading, but its recipients are not copied automatically.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateIssueReply","parameters":[{"description":"The ID of the issue.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueReplyRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueReplyResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Reply to an issue","tags":["messages"]}},"/issues/{id}/snooze":{"post":{"description":"Snoozes an issue until the specified date and time.\n\n**Rate limit:** 120 requests per minute","operationId":"SnoozeIssue","parameters":[{"description":"The ID or number of the issue to snooze.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnoozeIssueRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SnoozeIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Snooze an issue","tags":["issues"]}},"/issues/{id}/survey-responses":{"get":{"description":"Returns paginated CSAT and custom survey responses associated with an issue.\n\n**Rate limit:** 300 requests per minute","operationId":"GetIssueSurveyResponses","parameters":[{"description":"The ID or number of the issue.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"Filter responses by survey template ID.","in":"query","name":"survey_id","schema":{"type":"string"},"x-go-name":"SurveyID"},{"description":"Filter responses submitted after this time (RFC3339 format).","in":"query","name":"submitted_after","schema":{"type":"string"},"x-go-name":"SubmittedAfter"},{"description":"Filter responses submitted before this time (RFC3339 format).","in":"query","name":"submitted_before","schema":{"type":"string"},"x-go-name":"SubmittedBefore"},{"description":"The cursor for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of responses to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueSurveyResponsesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get survey responses for an issue","tags":["surveys"]}},"/issues/{id}/threads":{"get":{"description":"Returns all threads for the specified issue.\n\n**Rate limit:** 120 requests per minute","operationId":"GetIssueThreads","parameters":[{"description":"The ID of the issue to fetch threads for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueThreadsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all threads on an issue","tags":["messages"]},"post":{"description":"Creates a new internal thread on an issue.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateIssueThread","parameters":[{"description":"The ID of the issue to create a thread for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIssueThreadRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateIssueThreadResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a thread on an issue","tags":["messages"]}},"/issues/{id}/voice-calls":{"get":{"description":"Returns voice call records for the specified phone issue. Each call includes its recordings, with parsed transcript segments and a presigned download URL for the audio file. Recordings whose transcript has not yet completed are omitted; refetch later to see them.\n\n**Rate limit:** 120 requests per minute","operationId":"GetIssueVoiceCalls","parameters":[{"description":"The ID of the issue to fetch voice calls for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetIssueVoiceCallsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get voice calls (with recordings and transcripts) for an issue.","tags":["voice_calls"]}},"/knowledge-bases":{"get":{"description":"Returns all knowledge bases for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetKnowledgeBases","responses":{"200":{"$ref":"#/components/responses/GetKnowledgeBasesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all knowledge bases","tags":["knowledge-bases"]}},"/knowledge-bases/{id}":{"get":{"description":"Returns a single knowledge base by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetKnowledgeBase","parameters":[{"description":"The ID of the knowledge base.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetKnowledgeBaseResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a knowledge base by its ID","tags":["knowledge-bases"]}},"/knowledge-bases/{id}/articles":{"get":{"description":"Returns a paginated list of articles for the specified knowledge base.\n\n**Rate limit:** 120 requests per minute","operationId":"GetArticles","parameters":[{"description":"The ID of the knowledge base the articles are being fetched from.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of articles to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"},{"description":"The language code to fetch articles in. If not provided, returns the default language.","in":"query","name":"language","schema":{"type":"string"},"x-go-name":"Language"},{"description":"Controls whether embedded media is included in article HTML. Valid values are all (default) and none. When set to none, embedded images, video, audio, and inline media are removed while descriptive text and standard links are preserved.","in":"query","name":"media","schema":{"default":"all","enum":["all","none"],"type":"string"},"x-go-name":"Media"}],"responses":{"200":{"$ref":"#/components/responses/GetArticlesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all articles in a knowledge base","tags":["articles"]},"post":{"description":"Creates a new article within a knowledge base.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateArticle","parameters":[{"description":"The ID of the knowledge base the article is being added to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateArticleRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateArticleResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create an article","tags":["articles"]}},"/knowledge-bases/{id}/articles/{article_id}":{"delete":{"description":"Permanently deletes an article from the knowledge base.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteArticle","parameters":[{"description":"The KnowledgeBaseID of the article to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the article to delete.","in":"path","name":"article_id","required":true,"schema":{"type":"string"},"x-go-name":"ArticleID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteArticleResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an article","tags":["articles"]},"get":{"description":"Returns a single article by ID within the specified knowledge base.\n\n**Rate limit:** 300 requests per minute","operationId":"GetArticle","parameters":[{"description":"The KnowledgeBaseID of the article to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the article to fetch.","in":"path","name":"article_id","required":true,"schema":{"type":"string"},"x-go-name":"ArticleID"},{"description":"The language code to fetch the article in. If not provided, returns the default language.","in":"query","name":"language","schema":{"type":"string"},"x-go-name":"Language"}],"responses":{"200":{"$ref":"#/components/responses/GetArticleResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get an article by its ID","tags":["articles"]},"patch":{"description":"Updates an existing article. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateArticle","parameters":[{"description":"The KnowledgeBaseID of the article to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the article to update.","in":"path","name":"article_id","required":true,"schema":{"type":"string"},"x-go-name":"ArticleID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateArticleRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateArticleResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an article","tags":["articles"]}},"/knowledge-bases/{id}/articles/{article_id}/request-review":{"post":{"description":"Requests human and/or AI review on the article's current draft version. At least one of `reviewer_user_ids` or `request_ai_review` must be provided. The article must have an unpublished current version. Requesting AI review requires the organization to have AI article review enabled.\n\n**Rate limit:** 30 requests per minute","operationId":"RequestArticleReview","parameters":[{"description":"The ID of the knowledge base the article belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the article to request review for.","in":"path","name":"article_id","required":true,"schema":{"type":"string"},"x-go-name":"ArticleID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestArticleReviewRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/RequestArticleReviewResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Request review on an article","tags":["articles"]}},"/knowledge-bases/{id}/collections":{"get":{"description":"Returns all collections for the specified knowledge base.\n\n**Rate limit:** 120 requests per minute","operationId":"GetCollections","parameters":[{"description":"The ID of the knowledge base","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetCollectionsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all collections in a knowledge base","tags":["collections"]},"post":{"description":"Creates a new collection within a knowledge base.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateCollection","parameters":[{"description":"The ID of the knowledge base the article is being added to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCollectionRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateCollectionResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a collection","tags":["collections"]}},"/knowledge-bases/{id}/collections/{collection_id}":{"delete":{"description":"Permanently deletes a collection and all articles within it from the knowledge base. Nested collections and their articles are also deleted.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteCollection","parameters":[{"description":"The ID of the knowledge base that the collection belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the collection to delete.","in":"path","name":"collection_id","required":true,"schema":{"type":"string"},"x-go-name":"CollectionID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteCollectionResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a collection","tags":["collections"]},"get":{"description":"Returns a single collection by ID within the specified knowledge base.\n\n**Rate limit:** 120 requests per minute","operationId":"GetCollection","parameters":[{"description":"The ID of the knowledge base","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the collection","in":"path","name":"collection_id","required":true,"schema":{"type":"string"},"x-go-name":"CollectionID"}],"responses":{"200":{"$ref":"#/components/responses/GetCollectionResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a collection by its ID","tags":["collections"]},"patch":{"description":"Updates an existing collection. Only provided fields are modified.\n\n**Rate limit:** 30 requests per minute","operationId":"UpdateCollection","parameters":[{"description":"The ID of the knowledge base that the collection belongs to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"KnowledgeBaseID"},{"description":"The ID of the collection to update.","in":"path","name":"collection_id","required":true,"schema":{"type":"string"},"x-go-name":"CollectionID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCollectionRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateCollectionResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a collection","tags":["collections"]}},"/knowledge-bases/{id}/route-redirects":{"post":{"description":"Creates a path redirect within a knowledge base, mapping a source path to an article or collection.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateRouteRedirect","parameters":[{"description":"The ID of the knowledge base the route redirect is being added to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRouteRedirectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateRouteRedirectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new route redirect","tags":["route-redirects"]}},"/knowledge-bases/{id}/themes/{theme_id}":{"get":{"description":"Returns a theme's editable files, including current draft and published content.\n\n**Rate limit:** 300 requests per minute","operationId":"GetKnowledgeBaseTheme","parameters":[{"description":"The ID of the knowledge base.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the theme.","in":"path","name":"theme_id","required":true,"schema":{"type":"string"},"x-go-name":"ThemeID"}],"responses":{"200":{"$ref":"#/components/responses/GetKnowledgeBaseThemeResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a knowledge base theme","tags":["knowledge-base-themes"]},"patch":{"description":"Replaces one or more complete theme files in a single atomic draft update. Use the publish endpoint to make the changes live.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateKnowledgeBaseTheme","parameters":[{"description":"The ID of the knowledge base.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the theme.","in":"path","name":"theme_id","required":true,"schema":{"type":"string"},"x-go-name":"ThemeID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKnowledgeBaseThemeRequestBody"}}},"required":true,"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateKnowledgeBaseThemeResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a knowledge base theme draft","tags":["knowledge-base-themes"]}},"/knowledge-bases/{id}/themes/{theme_id}/publish":{"post":{"description":"Promotes all current draft files to their published versions. Changes become live immediately when this is the knowledge base's active theme. Publishing a theme with no draft changes is a no-op.\n\n**Rate limit:** 120 requests per minute","operationId":"PublishKnowledgeBaseTheme","parameters":[{"description":"The ID of the knowledge base.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the theme.","in":"path","name":"theme_id","required":true,"schema":{"type":"string"},"x-go-name":"ThemeID"}],"responses":{"200":{"$ref":"#/components/responses/PublishKnowledgeBaseThemeResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Publish a knowledge base theme","tags":["knowledge-base-themes"]}},"/macro-groups":{"get":{"description":"Returns all macro groups for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetMacroGroups","responses":{"200":{"$ref":"#/components/responses/GetMacroGroupsResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all macro groups","tags":["macros"]}},"/macros":{"get":{"description":"Returns all macros for the organization. Optionally filter by macro group ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetMacros","parameters":[{"description":"Filter macros by macro group ID.","in":"query","name":"macro_group_id","schema":{"type":"string"},"x-go-name":"MacroGroupID"}],"responses":{"200":{"$ref":"#/components/responses/GetMacrosResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all macros","tags":["macros"]},"post":{"description":"Creates a new macro within the specified macro group.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateMacro","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMacroRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateMacroResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new macro","tags":["macros"]}},"/macros/{id}":{"delete":{"description":"Permanently deletes a macro by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteMacro","parameters":[{"description":"The ID of the macro to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteMacroResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an existing macro","tags":["macros"]},"get":{"description":"Returns a single macro by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetMacro","parameters":[{"description":"The ID of the macro.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetMacroResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a macro by its ID","tags":["macros"]},"patch":{"description":"Updates an existing macro by ID. All fields are optional; only provided fields will be updated.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateMacro","parameters":[{"description":"The ID of the macro to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMacroRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateMacroResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a macro","tags":["macros"]}},"/me":{"get":{"description":"Returns the organization and user associated with the credentials used for authentication.\n\n**Rate limit:** 300 requests per minute","operationId":"GetMe","responses":{"200":{"$ref":"#/components/responses/GetMeResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get details of the authenticated organization and user","tags":["me"]}},"/milestones":{"post":{"description":"Creates a new milestone within a project.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateMilestone","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMilestoneRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateMilestoneResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Create a milestone","tags":["milestones"]}},"/milestones/{id}":{"delete":{"description":"Permanently deletes a milestone by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"DeleteMilestone","parameters":[{"description":"The ID of the milestone to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteMilestoneResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Delete a milestone","tags":["milestones"]},"get":{"description":"Returns a single milestone by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetMilestone","parameters":[{"description":"The ID of the milestone to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetMilestoneResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a milestone by its ID","tags":["milestones"]},"patch":{"description":"Updates an existing milestone. Only provided fields are modified.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateMilestone","parameters":[{"description":"The ID of the milestone to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMilestoneRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateMilestoneResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Update a milestone","tags":["milestones"]}},"/projects":{"post":{"description":"Creates a new project for an account. Provide a name or project_template_id. A template supplies defaults; non-empty name and description_html values and supplied customer_portal_visible and owner_id values override them. Supplying either start_date or end_date replaces both template dates.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateProjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Create a project","tags":["projects"]}},"/projects/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `account_id` | `equals`, `in`, `not_in`, `is_set` |\n `status` | `equals`, `in`, `not_in` |\n `owner_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `is_archived` | `equals` |\n `created_at` | `time_is_after`, `time_is_before`, `time_range` |\n `updated_at` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format. Valid `status` values are `not_started`, `in_progress`, and `completed`. For custom fields, pass the field slug as `field`.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchProjects","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchProjectsRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchProjectsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Search for projects by a given filter","tags":["projects"]}},"/projects/{id}":{"delete":{"description":"Permanently deletes a project by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteProject","parameters":[{"description":"The ID of the project to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteProjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an existing project","tags":["projects"]},"get":{"description":"Returns a single project by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetProject","parameters":[{"description":"The ID of the project to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetProjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a project by its ID","tags":["projects"]},"patch":{"description":"Updates an existing project. Only provided fields are modified.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateProject","parameters":[{"description":"The ID of the project to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateProjectResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Update a project","tags":["projects"]}},"/surveys":{"get":{"description":"Returns all surveys for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetSurveys","responses":{"200":{"$ref":"#/components/responses/GetSurveysResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all surveys","tags":["surveys"]}},"/surveys/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `updated_at` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchSurveys","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchSurveysRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchSurveysResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Search for surveys by a given filter","tags":["surveys"]}},"/surveys/{id}":{"get":{"description":"Returns a single survey by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetSurvey","parameters":[{"description":"The ID of the survey.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetSurveyResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a survey by its ID","tags":["surveys"]}},"/surveys/{id}/responses":{"get":{"description":"Returns paginated survey responses visible to the caller, optionally filtered by time range, account, or contact.\n\n**Rate limit:** 300 requests per minute","operationId":"GetSurveyResponses","parameters":[{"description":"The ID of the survey.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"Filter responses submitted after this time (RFC3339 format).","in":"query","name":"submitted_after","schema":{"type":"string"},"x-go-name":"SubmittedAfter"},{"description":"Filter responses submitted before this time (RFC3339 format).","in":"query","name":"submitted_before","schema":{"type":"string"},"x-go-name":"SubmittedBefore"},{"description":"Filter responses by account ID. Required with contact_id when the caller has scoped account or contact access.","in":"query","name":"account_id","schema":{"type":"string"},"x-go-name":"AccountID"},{"description":"Filter responses by contact ID. Required with account_id when the caller has scoped account or contact access.","in":"query","name":"contact_id","schema":{"type":"string"},"x-go-name":"ContactID"},{"description":"The cursor for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of responses to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetSurveyResponsesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get survey responses for a survey","tags":["surveys"]}},"/tags":{"get":{"description":"Returns all tags for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTags","responses":{"200":{"$ref":"#/components/responses/GetTagsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get all tags","tags":["tags"]},"post":{"description":"Creates a new tag with the specified value and object type.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateTag","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateTagResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"409":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new tag","tags":["tags"]}},"/tags/{id}":{"delete":{"description":"Permanently deletes a tag by ID.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteTag","parameters":[{"description":"The ID of the tag to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteTagResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an existing tag","tags":["tags"]},"get":{"description":"Returns a single tag by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTag","parameters":[{"description":"The ID of the tag.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTagResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a tag by its ID","tags":["tags"]},"patch":{"description":"Updates an existing tag. Only provided fields are modified.\n\n**Rate limit:** 30 requests per minute","operationId":"UpdateTag","parameters":[{"description":"The ID of the tag to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTagRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateTagResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an existing tag","tags":["tags"]}},"/tasks":{"get":{"description":"Returns a paginated list of tasks for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTasks","parameters":[{"description":"The cursor to use for pagination.","in":"query","name":"cursor","schema":{"type":"string"},"x-go-name":"Cursor"},{"description":"The number of tasks to fetch. Defaults to 100. Must be greater than 0 and less than 1000.","in":"query","name":"limit","schema":{"format":"int64","type":"integer"},"x-go-name":"Limit"}],"responses":{"200":{"$ref":"#/components/responses/GetTasksResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Get all tasks","tags":["tasks"]},"post":{"description":"Creates a new task with a title and optional metadata.\n\n**Rate limit:** 300 requests per minute","operationId":"CreateTask","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateTaskResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Create a task","tags":["tasks"]}},"/tasks/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `account_id` | `equals`, `in`, `not_in`, `is_set` |\n `project_id` | `equals`, `in`, `not_in`, `is_set`, `is_unset` |\n `status` | `equals`, `in`, `not_in` |\n `assignee_id` | `equals`, `in`, `not_in`, `is_set` |\n `milestone_id` | `equals`, `in`, `not_in`, `is_set` |\n `created_at` | `time_is_after`, `time_is_before`, `time_range` |\n `due_date` | `time_is_after`, `time_is_before`, `time_range`, `is_set` |\n `updated_at` | `time_is_after`, `time_is_before`, `time_range` |\n\nTimestamp values use RFC3339 format. Valid `status` values are `not_started`, `in_progress`, and `completed`. For custom fields, pass the field slug as `field`.\n\n**Rate limit:** 120 requests per minute","operationId":"SearchTasks","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchTasksRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchTasksResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"}},"summary":"Search for tasks by a given filter","tags":["tasks"]}},"/tasks/{id}":{"delete":{"description":"Permanently deletes a task by ID.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteTask","parameters":[{"description":"The ID of the task to delete.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteTaskResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete an existing task","tags":["tasks"]},"get":{"description":"Returns a single task by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTask","parameters":[{"description":"The ID of the task to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTaskResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a task by its ID","tags":["tasks"]},"patch":{"description":"Updates an existing task. Only provided fields are modified.\n\n**Rate limit:** 300 requests per minute","operationId":"UpdateTask","parameters":[{"description":"The ID of the task to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateTaskResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Update a task","tags":["tasks"]}},"/tasks/{id}/comments":{"get":{"description":"Returns all comments for a task, ordered by creation time.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTaskComments","parameters":[{"description":"The ID of the task to fetch comments for.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTaskCommentsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get comments for a task","tags":["tasks"]},"post":{"description":"Creates a new comment on a task. The authenticated user is the author.\n\n**Rate limit:** 120 requests per minute","operationId":"CreateTaskComment","parameters":[{"description":"The ID of the task to add a comment to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskCommentRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateTaskCommentResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a comment on a task","tags":["tasks"]}},"/tasks/{id}/comments/{comment_id}":{"delete":{"description":"Deletes an existing comment. Only the original author can delete their comment.\n\n**Rate limit:** 120 requests per minute","operationId":"DeleteTaskComment","parameters":[{"description":"The ID of the task.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the comment to delete.","in":"path","name":"comment_id","required":true,"schema":{"type":"string"},"x-go-name":"CommentID"}],"responses":{"200":{"$ref":"#/components/responses/DeleteTaskCommentResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete a comment on a task","tags":["tasks"]},"patch":{"description":"Updates an existing comment. Only the original author can update their comment.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateTaskComment","parameters":[{"description":"The ID of the task.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"The ID of the comment to update.","in":"path","name":"comment_id","required":true,"schema":{"type":"string"},"x-go-name":"CommentID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskCommentRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateTaskCommentResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a comment on a task","tags":["tasks"]}},"/tasks/{id}/external-issues":{"post":{"description":"By default, links the external issue. To unlink it, set the operation field to \"unlink\". Repeating the same link request is a successful no-op.\n\n**Rate limit:** 120 requests per minute","operationId":"LinkTaskExternalIssue","parameters":[{"description":"The ID of the task to link an external issue to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkTaskExternalIssueRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/LinkTaskExternalIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Link or unlink an external issue to/from a task","tags":["tasks"]}},"/tasks/{id}/issues":{"post":{"description":"Links the issue to the task by default. To unlink it, set the operation field to \"unlink\".\n\n**Rate limit:** 120 requests per minute","operationId":"LinkTaskIssue","parameters":[{"description":"The ID of the task to link a Pylon issue to.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkTaskIssueRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/LinkTaskIssueResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Link or unlink a Pylon issue to/from a task","tags":["tasks"]}},"/teams":{"get":{"description":"Returns all teams for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTeams","responses":{"200":{"$ref":"#/components/responses/GetTeamsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of teams","tags":["teams"]},"post":{"description":"Creates a new team with a name and optional member list.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateTeam","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTeamRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateTeamResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a new team","tags":["teams"]}},"/teams/{id}":{"get":{"description":"Returns a single team by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTeam","parameters":[{"description":"The ID of the team to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTeamResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a team by its ID","tags":["teams"]},"patch":{"description":"Updates an existing team. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateTeam","parameters":[{"description":"The ID of the team to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTeamRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UpdateTeamResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update an existing team","tags":["teams"]}},"/ticket-forms":{"get":{"description":"Returns all ticket forms for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTicketForms","responses":{"200":{"$ref":"#/components/responses/GetTicketFormsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of ticket forms","tags":["ticket-forms"]}},"/ticket-forms/{id}":{"get":{"description":"Returns a single ticket form by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTicketForm","parameters":[{"description":"The ID of the ticket form to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTicketFormResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a ticket form","tags":["ticket-forms"]}},"/ticket-forms/{id}/submissions":{"post":{"description":"Creates an issue from a configured ticket form. Provide either requester_id or both requester_email and requester_name. Field types are inferred from the ticket form; use value for single-value fields and values for multi-value and file-upload fields.\n\n**Rate limit:** 30 requests per minute","operationId":"SubmitTicketForm","parameters":[{"description":"The ID of the ticket form to submit.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitTicketFormRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SubmitTicketFormResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Submit a ticket form","tags":["ticket-forms"]}},"/training-data":{"get":{"description":"Returns all training data configurations for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"ListTrainingData","responses":{"200":{"$ref":"#/components/responses/ListTrainingDataResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"List all training data configurations","tags":["training-data"]},"post":{"description":"Creates a new training data configuration for the organization.\n\n**Rate limit:** 30 requests per minute","operationId":"CreateTrainingData","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTrainingDataRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/CreateTrainingDataResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Create a training data configuration","tags":["training-data"]}},"/training-data/upload":{"post":{"description":"Uploads one or more files to a training data configuration.\n\n**Rate limit:** 30 requests per minute","operationId":"UploadTrainingDataFiles","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"external_ids":{"description":"External IDs for idempotent operations. Must match the number of files if provided.\nUsed for duplicate detection and updates.","items":{"type":"string"},"type":"array","x-formData-name":"external_ids","x-go-name":"ExternalIDs"},"file_names":{"description":"Custom names for the uploaded files. Must match the number of files if provided.\nIf not provided, original filenames will be used.","items":{"type":"string"},"type":"array","x-formData-name":"file_names","x-go-name":"FileNames"},"files":{"description":"The files to upload (minimum 1, maximum 10).\nSupported types: PDF, plain text, markdown, CSV, JSON, and images (JPEG, PNG, GIF, WebP).\nMaximum size: 50MB per file, 100MB total.","items":{"type":"string"},"type":"array","x-formData-name":"files","x-go-name":"Files"},"training_data_id":{"description":"The ID of an existing training data container to upload files to.\nRequired if not creating new training data.","type":"string","x-formData-name":"training_data_id","x-go-name":"TrainingDataID"},"training_data_name":{"description":"The name of a new training data container.\nRequired when creating new training data (if training_data_id is not provided).","type":"string","x-formData-name":"training_data_name","x-go-name":"TrainingDataName"},"visibility":{"default":"everyone","description":"Visibility of the training data. Defaults to \"everyone\".\nValid values: \"everyone\", \"user_only\", \"ai_agent_only\"","enum":["everyone","user_only","ai_agent_only"],"type":"string","x-formData-name":"visibility","x-go-name":"Visibility"}},"required":["files"],"type":"object"}}}},"responses":{"200":{"$ref":"#/components/responses/TrainingDataUploadResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Upload files as training data","tags":["training-data"]}},"/training-data/upload-content":{"post":{"description":"Uploads plain text content as a training data document.\n\n**Rate limit:** 30 requests per minute","operationId":"UploadTrainingDataFileContent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadTrainingDataFileContentRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/UploadTrainingDataFileContentResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Upload text content as training data","tags":["training-data"]}},"/training-data/{id}":{"get":{"description":"Returns a single training data configuration by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetTrainingData","parameters":[{"description":"The ID of the training data.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetTrainingDataResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"}},"summary":"Get a training data configuration by its ID","tags":["training-data"]}},"/training-data/{id}/documents":{"delete":{"description":"Removes documents from a training data configuration by document ID or external ID.\n\n**Rate limit:** 30 requests per minute","operationId":"DeleteTrainingDataDocuments","parameters":[{"description":"The ID of the training data.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"},{"description":"Document IDs to delete.","in":"query","name":"document_ids","schema":{"items":{"type":"string"},"type":"array"},"x-go-name":"DocumentIDs"},{"description":"External IDs to delete.","in":"query","name":"external_ids","schema":{"items":{"type":"string"},"type":"array"},"x-go-name":"ExternalIDs"}],"responses":{"200":{"$ref":"#/components/responses/DeleteTrainingDataDocumentsResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Delete training data documents","tags":["training-data"]}},"/user-roles":{"get":{"description":"Returns all user roles for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetUserRoles","responses":{"200":{"$ref":"#/components/responses/GetUserRolesResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of all user roles","tags":["user-roles"]}},"/users":{"get":{"description":"Returns all users for the organization.\n\n**Rate limit:** 300 requests per minute","operationId":"GetUsers","parameters":[{"description":"Whether to include deactivated users. Defaults to false.","in":"query","name":"include_deactivated","schema":{"type":"boolean"},"x-go-name":"IncludeDeactivated"}],"responses":{"200":{"$ref":"#/components/responses/GetUsersResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a list of users","tags":["users"]}},"/users/search":{"post":{"description":"Filterable fields and their allowed operators:\n\n Field | Allowed operators |\n --- | --- |\n `email` | `equals`, `in`, `not_in` |\n\n**Rate limit:** 120 requests per minute","operationId":"SearchUsers","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchUsersRequest"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/SearchUsersResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Search for users by a given filter","tags":["users"]}},"/users/{id}":{"get":{"description":"Returns a single user by ID.\n\n**Rate limit:** 300 requests per minute","operationId":"GetUser","parameters":[{"description":"The ID of the user to fetch.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"responses":{"200":{"$ref":"#/components/responses/GetUserResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Get a user by its ID","tags":["user"]},"patch":{"description":"Updates an existing user. Only provided fields are modified.\n\n**Rate limit:** 120 requests per minute","operationId":"UpdateUser","parameters":[{"description":"The ID of the user to update.","in":"path","name":"id","required":true,"schema":{"type":"string"},"x-go-name":"ID"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRequestBody"}}},"x-originalParamName":"Body"},"responses":{"200":{"$ref":"#/components/responses/GetUserResponse"},"400":{"$ref":"#/components/responses/BadRequestApiResponse"},"403":{"$ref":"#/components/responses/ForbiddenApiResponse"},"404":{"$ref":"#/components/responses/ErrorApiResponse"},"500":{"$ref":"#/components/responses/InternalServerErrorApiResponse"}},"summary":"Update a user","tags":["user"]}}},"security":[{"bearerAuth":[]}],"servers":[{"description":"US region","url":"https://api.usepylon.com"},{"description":"EU region","url":"https://api.eu.usepylon.com"}]}