featurebase-node 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/api-promise.d.mts +1 -0
- package/api-promise.d.mts.map +1 -1
- package/api-promise.d.ts +1 -0
- package/api-promise.d.ts.map +1 -1
- package/api-promise.mjs +1 -0
- package/api-promise.mjs.map +1 -1
- package/client.d.mts +9 -3
- package/client.d.mts.map +1 -1
- package/client.d.ts +9 -3
- package/client.d.ts.map +1 -1
- package/client.js +6 -0
- package/client.js.map +1 -1
- package/client.mjs +6 -0
- package/client.mjs.map +1 -1
- package/core/api-promise.d.mts.map +1 -1
- package/core/api-promise.d.ts.map +1 -1
- package/core/api-promise.mjs.map +1 -1
- package/core/error.mjs.map +1 -1
- package/core/pagination.d.mts.map +1 -1
- package/core/pagination.d.ts.map +1 -1
- package/core/pagination.mjs.map +1 -1
- package/core/resource.d.mts.map +1 -1
- package/core/resource.d.ts.map +1 -1
- package/core/uploads.d.mts.map +1 -1
- package/core/uploads.d.ts.map +1 -1
- package/core/uploads.mjs.map +1 -1
- package/error.d.mts +1 -0
- package/error.d.mts.map +1 -1
- package/error.d.ts +1 -0
- package/error.d.ts.map +1 -1
- package/error.mjs +1 -0
- package/error.mjs.map +1 -1
- package/index.d.mts.map +1 -1
- package/index.d.ts.map +1 -1
- package/index.mjs.map +1 -1
- package/internal/detect-platform.mjs.map +1 -1
- package/internal/headers.mjs.map +1 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.mjs.map +1 -1
- package/internal/qs/formats.d.mts.map +1 -1
- package/internal/qs/formats.d.ts.map +1 -1
- package/internal/qs/index.d.mts +2 -2
- package/internal/qs/index.d.mts.map +1 -1
- package/internal/qs/index.d.ts +2 -2
- package/internal/qs/index.d.ts.map +1 -1
- package/internal/qs/index.mjs.map +1 -1
- package/internal/qs/stringify.d.mts.map +1 -1
- package/internal/qs/stringify.d.ts.map +1 -1
- package/internal/qs/stringify.mjs.map +1 -1
- package/internal/qs/utils.d.mts.map +1 -1
- package/internal/qs/utils.d.ts.map +1 -1
- package/internal/qs/utils.mjs.map +1 -1
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts.map +1 -1
- package/internal/shims.d.mts +6 -0
- package/internal/shims.d.mts.map +1 -1
- package/internal/shims.d.ts +6 -0
- package/internal/shims.d.ts.map +1 -1
- package/internal/to-file.d.mts.map +1 -1
- package/internal/to-file.d.ts.map +1 -1
- package/internal/to-file.mjs.map +1 -1
- package/internal/types.d.mts +4 -4
- package/internal/types.d.mts.map +1 -1
- package/internal/types.d.ts +4 -4
- package/internal/types.d.ts.map +1 -1
- package/internal/uploads.d.mts.map +1 -1
- package/internal/uploads.d.ts.map +1 -1
- package/internal/uploads.mjs.map +1 -1
- package/internal/utils/base64.mjs.map +1 -1
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +2 -0
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +2 -0
- package/internal/utils/log.mjs.map +1 -1
- package/internal/utils/path.mjs.map +1 -1
- package/internal/utils/query.mjs.map +1 -1
- package/internal/utils/values.mjs.map +1 -1
- package/internal/utils.d.mts.map +1 -1
- package/internal/utils.d.ts.map +1 -1
- package/internal/utils.mjs.map +1 -1
- package/package.json +16 -10
- package/pagination.d.mts +1 -0
- package/pagination.d.mts.map +1 -1
- package/pagination.d.ts +1 -0
- package/pagination.d.ts.map +1 -1
- package/pagination.mjs +1 -0
- package/pagination.mjs.map +1 -1
- package/resource.d.mts +1 -0
- package/resource.d.mts.map +1 -1
- package/resource.d.ts +1 -0
- package/resource.d.ts.map +1 -1
- package/resource.mjs +1 -0
- package/resource.mjs.map +1 -1
- package/resources/changelogs/changelogs.d.mts +106 -106
- package/resources/changelogs/changelogs.d.mts.map +1 -1
- package/resources/changelogs/changelogs.d.ts +106 -106
- package/resources/changelogs/changelogs.d.ts.map +1 -1
- package/resources/changelogs/changelogs.js +74 -74
- package/resources/changelogs/changelogs.js.map +1 -1
- package/resources/changelogs/changelogs.mjs +74 -74
- package/resources/changelogs/changelogs.mjs.map +1 -1
- package/resources/changelogs/index.d.mts +1 -1
- package/resources/changelogs/index.d.mts.map +1 -1
- package/resources/changelogs/index.d.ts +1 -1
- package/resources/changelogs/index.d.ts.map +1 -1
- package/resources/changelogs/index.mjs.map +1 -1
- package/resources/changelogs/subscribers.d.mts.map +1 -1
- package/resources/changelogs/subscribers.d.ts.map +1 -1
- package/resources/changelogs/subscribers.mjs.map +1 -1
- package/resources/changelogs.d.mts.map +1 -1
- package/resources/changelogs.d.ts.map +1 -1
- package/resources/changelogs.mjs.map +1 -1
- package/resources/conversation-attributes.d.mts +117 -0
- package/resources/conversation-attributes.d.mts.map +1 -0
- package/resources/conversation-attributes.d.ts +117 -0
- package/resources/conversation-attributes.d.ts.map +1 -0
- package/resources/conversation-attributes.js +61 -0
- package/resources/conversation-attributes.js.map +1 -0
- package/resources/conversation-attributes.mjs +57 -0
- package/resources/conversation-attributes.mjs.map +1 -0
- package/resources/feedback/boards.d.mts +17 -17
- package/resources/feedback/boards.d.mts.map +1 -1
- package/resources/feedback/boards.d.ts +17 -17
- package/resources/feedback/boards.d.ts.map +1 -1
- package/resources/feedback/boards.js +20 -20
- package/resources/feedback/boards.js.map +1 -1
- package/resources/feedback/boards.mjs +20 -20
- package/resources/feedback/boards.mjs.map +1 -1
- package/resources/feedback/comments.d.mts +400 -123
- package/resources/feedback/comments.d.mts.map +1 -1
- package/resources/feedback/comments.d.ts +400 -123
- package/resources/feedback/comments.d.ts.map +1 -1
- package/resources/feedback/comments.js +253 -93
- package/resources/feedback/comments.js.map +1 -1
- package/resources/feedback/comments.mjs +253 -93
- package/resources/feedback/comments.mjs.map +1 -1
- package/resources/feedback/custom-fields.d.mts +34 -34
- package/resources/feedback/custom-fields.d.mts.map +1 -1
- package/resources/feedback/custom-fields.d.ts +34 -34
- package/resources/feedback/custom-fields.d.ts.map +1 -1
- package/resources/feedback/custom-fields.js +36 -36
- package/resources/feedback/custom-fields.js.map +1 -1
- package/resources/feedback/custom-fields.mjs +36 -36
- package/resources/feedback/custom-fields.mjs.map +1 -1
- package/resources/feedback/feedback.d.mts +7 -7
- package/resources/feedback/feedback.d.mts.map +1 -1
- package/resources/feedback/feedback.d.ts +7 -7
- package/resources/feedback/feedback.d.ts.map +1 -1
- package/resources/feedback/feedback.js.map +1 -1
- package/resources/feedback/feedback.mjs.map +1 -1
- package/resources/feedback/index.d.mts +5 -5
- package/resources/feedback/index.d.mts.map +1 -1
- package/resources/feedback/index.d.ts +5 -5
- package/resources/feedback/index.d.ts.map +1 -1
- package/resources/feedback/index.js.map +1 -1
- package/resources/feedback/index.mjs.map +1 -1
- package/resources/feedback/post-statuses.d.mts +18 -18
- package/resources/feedback/post-statuses.d.mts.map +1 -1
- package/resources/feedback/post-statuses.d.ts +18 -18
- package/resources/feedback/post-statuses.d.ts.map +1 -1
- package/resources/feedback/post-statuses.js +23 -23
- package/resources/feedback/post-statuses.js.map +1 -1
- package/resources/feedback/post-statuses.mjs +23 -23
- package/resources/feedback/post-statuses.mjs.map +1 -1
- package/resources/feedback/posts/index.d.mts +1 -1
- package/resources/feedback/posts/index.d.mts.map +1 -1
- package/resources/feedback/posts/index.d.ts +1 -1
- package/resources/feedback/posts/index.d.ts.map +1 -1
- package/resources/feedback/posts/index.js.map +1 -1
- package/resources/feedback/posts/index.mjs.map +1 -1
- package/resources/feedback/posts/posts.d.mts +238 -284
- package/resources/feedback/posts/posts.d.mts.map +1 -1
- package/resources/feedback/posts/posts.d.ts +238 -284
- package/resources/feedback/posts/posts.d.ts.map +1 -1
- package/resources/feedback/posts/posts.js +122 -96
- package/resources/feedback/posts/posts.js.map +1 -1
- package/resources/feedback/posts/posts.mjs +122 -96
- package/resources/feedback/posts/posts.mjs.map +1 -1
- package/resources/feedback/posts/voters.d.mts.map +1 -1
- package/resources/feedback/posts/voters.d.ts.map +1 -1
- package/resources/feedback/posts/voters.mjs.map +1 -1
- package/resources/feedback/posts.d.mts.map +1 -1
- package/resources/feedback/posts.d.ts.map +1 -1
- package/resources/feedback/posts.mjs.map +1 -1
- package/resources/feedback.d.mts.map +1 -1
- package/resources/feedback.d.ts.map +1 -1
- package/resources/feedback.mjs.map +1 -1
- package/resources/help-center/articles.d.mts +98 -152
- package/resources/help-center/articles.d.mts.map +1 -1
- package/resources/help-center/articles.d.ts +98 -152
- package/resources/help-center/articles.d.ts.map +1 -1
- package/resources/help-center/articles.js +73 -73
- package/resources/help-center/articles.js.map +1 -1
- package/resources/help-center/articles.mjs +73 -73
- package/resources/help-center/articles.mjs.map +1 -1
- package/resources/help-center/collections.d.mts +64 -64
- package/resources/help-center/collections.d.mts.map +1 -1
- package/resources/help-center/collections.d.ts +64 -64
- package/resources/help-center/collections.d.ts.map +1 -1
- package/resources/help-center/collections.js +65 -65
- package/resources/help-center/collections.js.map +1 -1
- package/resources/help-center/collections.mjs +65 -65
- package/resources/help-center/collections.mjs.map +1 -1
- package/resources/help-center/help-center.d.mts +5 -5
- package/resources/help-center/help-center.d.mts.map +1 -1
- package/resources/help-center/help-center.d.ts +5 -5
- package/resources/help-center/help-center.d.ts.map +1 -1
- package/resources/help-center/help-center.js.map +1 -1
- package/resources/help-center/help-center.mjs.map +1 -1
- package/resources/help-center/help-centers.d.mts +43 -43
- package/resources/help-center/help-centers.d.mts.map +1 -1
- package/resources/help-center/help-centers.d.ts +43 -43
- package/resources/help-center/help-centers.d.ts.map +1 -1
- package/resources/help-center/help-centers.js +43 -43
- package/resources/help-center/help-centers.js.map +1 -1
- package/resources/help-center/help-centers.mjs +43 -43
- package/resources/help-center/help-centers.mjs.map +1 -1
- package/resources/help-center/index.d.mts +4 -4
- package/resources/help-center/index.d.mts.map +1 -1
- package/resources/help-center/index.d.ts +4 -4
- package/resources/help-center/index.d.ts.map +1 -1
- package/resources/help-center/index.js.map +1 -1
- package/resources/help-center/index.mjs.map +1 -1
- package/resources/help-center/redirect-rules.d.mts +117 -117
- package/resources/help-center/redirect-rules.d.mts.map +1 -1
- package/resources/help-center/redirect-rules.d.ts +117 -117
- package/resources/help-center/redirect-rules.d.ts.map +1 -1
- package/resources/help-center/redirect-rules.js +112 -112
- package/resources/help-center/redirect-rules.js.map +1 -1
- package/resources/help-center/redirect-rules.mjs +112 -112
- package/resources/help-center/redirect-rules.mjs.map +1 -1
- package/resources/help-center.d.mts.map +1 -1
- package/resources/help-center.d.ts.map +1 -1
- package/resources/help-center.mjs.map +1 -1
- package/resources/index.d.mts +4 -3
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +4 -3
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +3 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/organization/admins.d.mts +23 -23
- package/resources/organization/admins.d.mts.map +1 -1
- package/resources/organization/admins.d.ts +23 -23
- package/resources/organization/admins.d.ts.map +1 -1
- package/resources/organization/admins.js +25 -25
- package/resources/organization/admins.js.map +1 -1
- package/resources/organization/admins.mjs +25 -25
- package/resources/organization/admins.mjs.map +1 -1
- package/resources/organization/brands.d.mts +50 -50
- package/resources/organization/brands.d.mts.map +1 -1
- package/resources/organization/brands.d.ts +50 -50
- package/resources/organization/brands.d.ts.map +1 -1
- package/resources/organization/brands.js +54 -54
- package/resources/organization/brands.js.map +1 -1
- package/resources/organization/brands.mjs +54 -54
- package/resources/organization/brands.mjs.map +1 -1
- package/resources/organization/index.d.mts +3 -3
- package/resources/organization/index.d.mts.map +1 -1
- package/resources/organization/index.d.ts +3 -3
- package/resources/organization/index.d.ts.map +1 -1
- package/resources/organization/index.mjs.map +1 -1
- package/resources/organization/organization.d.mts +3 -3
- package/resources/organization/organization.d.mts.map +1 -1
- package/resources/organization/organization.d.ts +3 -3
- package/resources/organization/organization.d.ts.map +1 -1
- package/resources/organization/organization.mjs.map +1 -1
- package/resources/organization/teams.d.mts +45 -45
- package/resources/organization/teams.d.mts.map +1 -1
- package/resources/organization/teams.d.ts +45 -45
- package/resources/organization/teams.d.ts.map +1 -1
- package/resources/organization/teams.js +44 -44
- package/resources/organization/teams.js.map +1 -1
- package/resources/organization/teams.mjs +44 -44
- package/resources/organization/teams.mjs.map +1 -1
- package/resources/organization.d.mts.map +1 -1
- package/resources/organization.d.ts.map +1 -1
- package/resources/organization.mjs.map +1 -1
- package/resources/support/conversation-tags.d.mts +40 -40
- package/resources/support/conversation-tags.d.mts.map +1 -1
- package/resources/support/conversation-tags.d.ts +40 -40
- package/resources/support/conversation-tags.d.ts.map +1 -1
- package/resources/support/conversation-tags.js +32 -32
- package/resources/support/conversation-tags.js.map +1 -1
- package/resources/support/conversation-tags.mjs +32 -32
- package/resources/support/conversation-tags.mjs.map +1 -1
- package/resources/support/conversations/conversations.d.mts +624 -722
- package/resources/support/conversations/conversations.d.mts.map +1 -1
- package/resources/support/conversations/conversations.d.ts +624 -722
- package/resources/support/conversations/conversations.d.ts.map +1 -1
- package/resources/support/conversations/conversations.js +309 -302
- package/resources/support/conversations/conversations.js.map +1 -1
- package/resources/support/conversations/conversations.mjs +309 -302
- package/resources/support/conversations/conversations.mjs.map +1 -1
- package/resources/support/conversations/index.d.mts +1 -1
- package/resources/support/conversations/index.d.mts.map +1 -1
- package/resources/support/conversations/index.d.ts +1 -1
- package/resources/support/conversations/index.d.ts.map +1 -1
- package/resources/support/conversations/index.js.map +1 -1
- package/resources/support/conversations/index.mjs.map +1 -1
- package/resources/support/conversations/participants.d.mts.map +1 -1
- package/resources/support/conversations/participants.d.ts.map +1 -1
- package/resources/support/conversations/participants.mjs.map +1 -1
- package/resources/support/conversations.d.mts.map +1 -1
- package/resources/support/conversations.d.ts.map +1 -1
- package/resources/support/conversations.mjs.map +1 -1
- package/resources/support/index.d.mts +3 -3
- package/resources/support/index.d.mts.map +1 -1
- package/resources/support/index.d.ts +3 -3
- package/resources/support/index.d.ts.map +1 -1
- package/resources/support/index.js.map +1 -1
- package/resources/support/index.mjs.map +1 -1
- package/resources/support/support.d.mts +4 -4
- package/resources/support/support.d.mts.map +1 -1
- package/resources/support/support.d.ts +4 -4
- package/resources/support/support.d.ts.map +1 -1
- package/resources/support/support.js.map +1 -1
- package/resources/support/support.mjs.map +1 -1
- package/resources/support/tickets/categories.d.mts +18 -18
- package/resources/support/tickets/categories.d.mts.map +1 -1
- package/resources/support/tickets/categories.d.ts +18 -18
- package/resources/support/tickets/categories.d.ts.map +1 -1
- package/resources/support/tickets/categories.js +25 -25
- package/resources/support/tickets/categories.js.map +1 -1
- package/resources/support/tickets/categories.mjs +25 -25
- package/resources/support/tickets/categories.mjs.map +1 -1
- package/resources/support/tickets/custom-fields.d.mts +20 -20
- package/resources/support/tickets/custom-fields.d.mts.map +1 -1
- package/resources/support/tickets/custom-fields.d.ts +20 -20
- package/resources/support/tickets/custom-fields.d.ts.map +1 -1
- package/resources/support/tickets/custom-fields.js +19 -19
- package/resources/support/tickets/custom-fields.js.map +1 -1
- package/resources/support/tickets/custom-fields.mjs +19 -19
- package/resources/support/tickets/custom-fields.mjs.map +1 -1
- package/resources/support/tickets/index.d.mts +4 -4
- package/resources/support/tickets/index.d.mts.map +1 -1
- package/resources/support/tickets/index.d.ts +4 -4
- package/resources/support/tickets/index.d.ts.map +1 -1
- package/resources/support/tickets/index.mjs.map +1 -1
- package/resources/support/tickets/statuses.d.mts +17 -17
- package/resources/support/tickets/statuses.d.mts.map +1 -1
- package/resources/support/tickets/statuses.d.ts +17 -17
- package/resources/support/tickets/statuses.d.ts.map +1 -1
- package/resources/support/tickets/statuses.js +21 -21
- package/resources/support/tickets/statuses.js.map +1 -1
- package/resources/support/tickets/statuses.mjs +21 -21
- package/resources/support/tickets/statuses.mjs.map +1 -1
- package/resources/support/tickets/tickets.d.mts +69 -69
- package/resources/support/tickets/tickets.d.mts.map +1 -1
- package/resources/support/tickets/tickets.d.ts +69 -69
- package/resources/support/tickets/tickets.d.ts.map +1 -1
- package/resources/support/tickets/tickets.js +44 -44
- package/resources/support/tickets/tickets.js.map +1 -1
- package/resources/support/tickets/tickets.mjs +44 -44
- package/resources/support/tickets/tickets.mjs.map +1 -1
- package/resources/support/tickets.d.mts.map +1 -1
- package/resources/support/tickets.d.ts.map +1 -1
- package/resources/support/tickets.mjs.map +1 -1
- package/resources/support.d.mts.map +1 -1
- package/resources/support.d.ts.map +1 -1
- package/resources/support.mjs.map +1 -1
- package/resources/surveys.d.mts +41 -41
- package/resources/surveys.d.mts.map +1 -1
- package/resources/surveys.d.ts +41 -41
- package/resources/surveys.d.ts.map +1 -1
- package/resources/surveys.js +44 -44
- package/resources/surveys.js.map +1 -1
- package/resources/surveys.mjs +44 -44
- package/resources/surveys.mjs.map +1 -1
- package/resources/users/companies/companies.d.mts +149 -177
- package/resources/users/companies/companies.d.mts.map +1 -1
- package/resources/users/companies/companies.d.ts +149 -177
- package/resources/users/companies/companies.d.ts.map +1 -1
- package/resources/users/companies/companies.js +153 -142
- package/resources/users/companies/companies.js.map +1 -1
- package/resources/users/companies/companies.mjs +153 -142
- package/resources/users/companies/companies.mjs.map +1 -1
- package/resources/users/companies/contacts.d.mts.map +1 -1
- package/resources/users/companies/contacts.d.ts.map +1 -1
- package/resources/users/companies/contacts.mjs.map +1 -1
- package/resources/users/companies/index.d.mts +1 -1
- package/resources/users/companies/index.d.mts.map +1 -1
- package/resources/users/companies/index.d.ts +1 -1
- package/resources/users/companies/index.d.ts.map +1 -1
- package/resources/users/companies/index.mjs.map +1 -1
- package/resources/users/companies.d.mts.map +1 -1
- package/resources/users/companies.d.ts.map +1 -1
- package/resources/users/companies.mjs.map +1 -1
- package/resources/users/contacts/by-user-id/by-user-id.d.mts.map +1 -1
- package/resources/users/contacts/by-user-id/by-user-id.d.ts.map +1 -1
- package/resources/users/contacts/by-user-id/by-user-id.mjs.map +1 -1
- package/resources/users/contacts/by-user-id/email-preferences.d.mts.map +1 -1
- package/resources/users/contacts/by-user-id/email-preferences.d.ts.map +1 -1
- package/resources/users/contacts/by-user-id/email-preferences.mjs.map +1 -1
- package/resources/users/contacts/by-user-id/index.d.mts.map +1 -1
- package/resources/users/contacts/by-user-id/index.d.ts.map +1 -1
- package/resources/users/contacts/by-user-id/index.mjs.map +1 -1
- package/resources/users/contacts/by-user-id.d.mts.map +1 -1
- package/resources/users/contacts/by-user-id.d.ts.map +1 -1
- package/resources/users/contacts/by-user-id.mjs.map +1 -1
- package/resources/users/contacts/contacts.d.mts +229 -256
- package/resources/users/contacts/contacts.d.mts.map +1 -1
- package/resources/users/contacts/contacts.d.ts +229 -256
- package/resources/users/contacts/contacts.d.ts.map +1 -1
- package/resources/users/contacts/contacts.js +213 -201
- package/resources/users/contacts/contacts.js.map +1 -1
- package/resources/users/contacts/contacts.mjs +213 -201
- package/resources/users/contacts/contacts.mjs.map +1 -1
- package/resources/users/contacts/email-preferences.d.mts.map +1 -1
- package/resources/users/contacts/email-preferences.d.ts.map +1 -1
- package/resources/users/contacts/email-preferences.mjs.map +1 -1
- package/resources/users/contacts/index.d.mts +1 -1
- package/resources/users/contacts/index.d.mts.map +1 -1
- package/resources/users/contacts/index.d.ts +1 -1
- package/resources/users/contacts/index.d.ts.map +1 -1
- package/resources/users/contacts/index.mjs.map +1 -1
- package/resources/users/contacts.d.mts.map +1 -1
- package/resources/users/contacts.d.ts.map +1 -1
- package/resources/users/contacts.mjs.map +1 -1
- package/resources/users/index.d.mts +2 -2
- package/resources/users/index.d.mts.map +1 -1
- package/resources/users/index.d.ts +2 -2
- package/resources/users/index.d.ts.map +1 -1
- package/resources/users/index.mjs.map +1 -1
- package/resources/users/users.d.mts +2 -2
- package/resources/users/users.d.mts.map +1 -1
- package/resources/users/users.d.ts +2 -2
- package/resources/users/users.d.ts.map +1 -1
- package/resources/users/users.mjs.map +1 -1
- package/resources/users.d.mts.map +1 -1
- package/resources/users.d.ts.map +1 -1
- package/resources/users.mjs.map +1 -1
- package/resources/webhooks.d.mts +75 -75
- package/resources/webhooks.d.mts.map +1 -1
- package/resources/webhooks.d.ts +75 -75
- package/resources/webhooks.d.ts.map +1 -1
- package/resources/webhooks.js +77 -77
- package/resources/webhooks.js.map +1 -1
- package/resources/webhooks.mjs +77 -77
- package/resources/webhooks.mjs.map +1 -1
- package/resources.d.mts.map +1 -1
- package/resources.d.ts.map +1 -1
- package/resources.mjs.map +1 -1
- package/src/client.ts +25 -3
- package/src/internal/utils/log.ts +2 -0
- package/src/resources/changelogs/changelogs.ts +170 -170
- package/src/resources/changelogs/index.ts +1 -1
- package/src/resources/conversation-attributes.ts +181 -0
- package/src/resources/feedback/boards.ts +28 -28
- package/src/resources/feedback/comments.ts +464 -141
- package/src/resources/feedback/custom-fields.ts +44 -44
- package/src/resources/feedback/feedback.ts +23 -5
- package/src/resources/feedback/index.ts +14 -5
- package/src/resources/feedback/post-statuses.ts +31 -31
- package/src/resources/feedback/posts/index.ts +7 -1
- package/src/resources/feedback/posts/posts.ts +294 -340
- package/src/resources/help-center/articles.ts +123 -186
- package/src/resources/help-center/collections.ts +84 -84
- package/src/resources/help-center/help-center.ts +7 -5
- package/src/resources/help-center/help-centers.ts +55 -55
- package/src/resources/help-center/index.ts +6 -5
- package/src/resources/help-center/redirect-rules.ts +174 -174
- package/src/resources/index.ts +11 -3
- package/src/resources/organization/admins.ts +33 -33
- package/src/resources/organization/brands.ts +66 -66
- package/src/resources/organization/index.ts +3 -3
- package/src/resources/organization/organization.ts +3 -3
- package/src/resources/organization/teams.ts +52 -52
- package/src/resources/support/conversation-tags.ts +59 -59
- package/src/resources/support/conversations/conversations.ts +748 -867
- package/src/resources/support/conversations/index.ts +11 -6
- package/src/resources/support/index.ts +14 -9
- package/src/resources/support/support.ts +21 -11
- package/src/resources/support/tickets/categories.ts +33 -33
- package/src/resources/support/tickets/custom-fields.ts +27 -27
- package/src/resources/support/tickets/index.ts +4 -4
- package/src/resources/support/tickets/statuses.ts +29 -29
- package/src/resources/support/tickets/tickets.ts +95 -95
- package/src/resources/surveys.ts +58 -58
- package/src/resources/users/companies/companies.ts +193 -223
- package/src/resources/users/companies/index.ts +2 -2
- package/src/resources/users/contacts/contacts.ts +275 -302
- package/src/resources/users/contacts/index.ts +3 -3
- package/src/resources/users/index.ts +5 -5
- package/src/resources/users/users.ts +5 -5
- package/src/resources/webhooks.ts +95 -95
- package/src/version.ts +1 -1
- package/uploads.d.mts +1 -0
- package/uploads.d.mts.map +1 -1
- package/uploads.d.ts +1 -0
- package/uploads.d.ts.map +1 -1
- package/uploads.mjs +1 -0
- package/uploads.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { APIResource } from '../../../core/resource';
|
|
4
4
|
import * as ConversationsAPI from './conversations';
|
|
5
|
+
import * as ConversationAttributesAPI from '../../conversation-attributes';
|
|
5
6
|
import * as ConversationTagsAPI from '../conversation-tags';
|
|
7
|
+
import * as PostsAPI from '../../feedback/posts/posts';
|
|
6
8
|
import * as ParticipantsAPI from './participants';
|
|
7
9
|
import { ParticipantAddParams, ParticipantRemoveParams, Participants } from './participants';
|
|
8
10
|
import { APIPromise } from '../../../core/api-promise';
|
|
@@ -17,6 +19,95 @@ import { path } from '../../../internal/utils/path';
|
|
|
17
19
|
export class Conversations extends APIResource {
|
|
18
20
|
participants: ParticipantsAPI.Participants = new ParticipantsAPI.Participants(this._client);
|
|
19
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Returns a list of conversations in your organization using cursor-based
|
|
24
|
+
* pagination.
|
|
25
|
+
*
|
|
26
|
+
* ### Query Parameters
|
|
27
|
+
*
|
|
28
|
+
* - `limit` - Number of conversations to return (1-100, default 10)
|
|
29
|
+
* - `cursor` - Cursor from previous response for pagination
|
|
30
|
+
* - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
|
|
31
|
+
* conversations that contain all of the provided tags.
|
|
32
|
+
*
|
|
33
|
+
* ### Response Format
|
|
34
|
+
*
|
|
35
|
+
* Returns a list object with:
|
|
36
|
+
*
|
|
37
|
+
* - `object` - Always "list"
|
|
38
|
+
* - `data` - Array of conversation objects
|
|
39
|
+
* - `nextCursor` - Cursor for the next page, or null if no more results
|
|
40
|
+
*
|
|
41
|
+
* ### Conversation Object
|
|
42
|
+
*
|
|
43
|
+
* Each conversation includes:
|
|
44
|
+
*
|
|
45
|
+
* - `id` - Unique conversation identifier (short ID)
|
|
46
|
+
* - `title` - Conversation title
|
|
47
|
+
* - `state` - Current state ("open", "closed", or "snoozed")
|
|
48
|
+
* - `priority` - Whether the conversation is marked as priority
|
|
49
|
+
* - `adminAssigneeId` - ID of assigned admin (if any)
|
|
50
|
+
* - `teamAssigneeId` - ID of assigned team (if any)
|
|
51
|
+
* - `tags` - Current tags applied anywhere in the conversation
|
|
52
|
+
* - `participants` - Array of participants
|
|
53
|
+
* - `source` - Information about the first message
|
|
54
|
+
* - `createdAt` - Creation timestamp
|
|
55
|
+
* - `updatedAt` - Last update timestamp
|
|
56
|
+
*
|
|
57
|
+
* ### Example
|
|
58
|
+
*
|
|
59
|
+
* ```json
|
|
60
|
+
* {
|
|
61
|
+
* "object": "list",
|
|
62
|
+
* "data": [
|
|
63
|
+
* {
|
|
64
|
+
* "object": "conversation",
|
|
65
|
+
* "id": "12345",
|
|
66
|
+
* "title": "Question about pricing",
|
|
67
|
+
* "state": "open",
|
|
68
|
+
* "priority": false,
|
|
69
|
+
* "adminAssigneeId": null,
|
|
70
|
+
* "participants": [
|
|
71
|
+
* { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
|
|
72
|
+
* ],
|
|
73
|
+
* ...
|
|
74
|
+
* }
|
|
75
|
+
* ],
|
|
76
|
+
* "nextCursor": "eyJpZCI6IjEyMzQ1In0="
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* ### Version Availability
|
|
81
|
+
*
|
|
82
|
+
* This endpoint is only available in API version 2026-01-01.nova and newer.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* // Automatically fetches more pages as needed.
|
|
87
|
+
* for await (const conversation of client.support.conversations.list()) {
|
|
88
|
+
* // ...
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
list(
|
|
93
|
+
params: ConversationListParams | null | undefined = {},
|
|
94
|
+
options?: RequestOptions,
|
|
95
|
+
): PagePromise<ConversationsCursorPage, Conversation> {
|
|
96
|
+
const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
|
|
97
|
+
return this._client.getAPIList('/v2/conversations', CursorPage<Conversation>, {
|
|
98
|
+
query,
|
|
99
|
+
...options,
|
|
100
|
+
headers: buildHeaders([
|
|
101
|
+
{
|
|
102
|
+
...(featurebaseVersion?.toString() != null ?
|
|
103
|
+
{ 'Featurebase-Version': featurebaseVersion?.toString() }
|
|
104
|
+
: undefined),
|
|
105
|
+
},
|
|
106
|
+
options?.headers,
|
|
107
|
+
]),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
20
111
|
/**
|
|
21
112
|
* Creates a new conversation. Supports both contact-initiated (customer/lead) and
|
|
22
113
|
* admin-initiated (outreach) conversations.
|
|
@@ -275,8 +366,62 @@ export class Conversations extends APIResource {
|
|
|
275
366
|
params: ConversationRetrieveParams | null | undefined = {},
|
|
276
367
|
options?: RequestOptions,
|
|
277
368
|
): APIPromise<Conversation> {
|
|
278
|
-
const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
|
|
369
|
+
const { 'Featurebase-Version': featurebaseVersion, ...query } = params ?? {};
|
|
279
370
|
return this._client.get(path`/v2/conversations/${id}`, {
|
|
371
|
+
query,
|
|
372
|
+
...options,
|
|
373
|
+
headers: buildHeaders([
|
|
374
|
+
{
|
|
375
|
+
...(featurebaseVersion?.toString() != null ?
|
|
376
|
+
{ 'Featurebase-Version': featurebaseVersion?.toString() }
|
|
377
|
+
: undefined),
|
|
378
|
+
},
|
|
379
|
+
options?.headers,
|
|
380
|
+
]),
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Permanently deletes a conversation by its short ID.
|
|
386
|
+
*
|
|
387
|
+
* ### Path Parameters
|
|
388
|
+
*
|
|
389
|
+
* - `id` - The conversation short ID (numeric)
|
|
390
|
+
*
|
|
391
|
+
* ### Response
|
|
392
|
+
*
|
|
393
|
+
* Returns a deletion confirmation object:
|
|
394
|
+
*
|
|
395
|
+
* ```json
|
|
396
|
+
* {
|
|
397
|
+
* "id": "12345",
|
|
398
|
+
* "object": "conversation",
|
|
399
|
+
* "deleted": true
|
|
400
|
+
* }
|
|
401
|
+
* ```
|
|
402
|
+
*
|
|
403
|
+
* ### Caution
|
|
404
|
+
*
|
|
405
|
+
* This operation is **irreversible**. The conversation and all its messages will
|
|
406
|
+
* be permanently deleted.
|
|
407
|
+
*
|
|
408
|
+
* ### Version Availability
|
|
409
|
+
*
|
|
410
|
+
* This endpoint is only available in API version 2026-01-01.nova and newer.
|
|
411
|
+
*
|
|
412
|
+
* @example
|
|
413
|
+
* ```ts
|
|
414
|
+
* const conversation =
|
|
415
|
+
* await client.support.conversations.delete('12345');
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
418
|
+
delete(
|
|
419
|
+
id: string,
|
|
420
|
+
params: ConversationDeleteParams | null | undefined = {},
|
|
421
|
+
options?: RequestOptions,
|
|
422
|
+
): APIPromise<ConversationDeleteResponse> {
|
|
423
|
+
const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
|
|
424
|
+
return this._client.delete(path`/v2/conversations/${id}`, {
|
|
280
425
|
...options,
|
|
281
426
|
headers: buildHeaders([
|
|
282
427
|
{
|
|
@@ -309,7 +454,7 @@ export class Conversations extends APIResource {
|
|
|
309
454
|
* | `adminAssigneeId` | string/null | Admin ID to assign, or null to unassign |
|
|
310
455
|
* | `teamAssigneeId` | string/null | Team ID to assign, or null to unassign |
|
|
311
456
|
* | `title` | string | Conversation title |
|
|
312
|
-
* | `customAttributes` | object | Custom attributes to set on the conversation
|
|
457
|
+
* | `customAttributes` | object | Custom attributes to set on the conversation, keyed by conversation custom attribute ID |
|
|
313
458
|
* | `markAsRead` | object | Mark conversation as read for specific users |
|
|
314
459
|
*
|
|
315
460
|
* ### markAsRead Object
|
|
@@ -369,8 +514,8 @@ export class Conversations extends APIResource {
|
|
|
369
514
|
* {
|
|
370
515
|
* "title": "Billing Issue - Priority",
|
|
371
516
|
* "customAttributes": {
|
|
372
|
-
* "
|
|
373
|
-
* "
|
|
517
|
+
* "507f1f77bcf86cd799439011": 10,
|
|
518
|
+
* "507f1f77bcf86cd799439012": true
|
|
374
519
|
* }
|
|
375
520
|
* }
|
|
376
521
|
* ```
|
|
@@ -433,83 +578,119 @@ export class Conversations extends APIResource {
|
|
|
433
578
|
}
|
|
434
579
|
|
|
435
580
|
/**
|
|
436
|
-
*
|
|
437
|
-
*
|
|
581
|
+
* Adds a reply to an existing conversation. Supports both contact (customer/lead)
|
|
582
|
+
* and admin replies.
|
|
438
583
|
*
|
|
439
|
-
* ###
|
|
584
|
+
* ### Path Parameters
|
|
440
585
|
*
|
|
441
|
-
* - `
|
|
442
|
-
* - `cursor` - Cursor from previous response for pagination
|
|
443
|
-
* - `tagIds` - Optional tag filter as a comma-separated list of tag IDs. Matches
|
|
444
|
-
* conversations that contain all of the provided tags.
|
|
586
|
+
* - `id` - The conversation ID (short ID)
|
|
445
587
|
*
|
|
446
|
-
* ###
|
|
588
|
+
* ### Request Body
|
|
447
589
|
*
|
|
448
|
-
*
|
|
590
|
+
* The request body varies based on who is sending the reply:
|
|
449
591
|
*
|
|
450
|
-
*
|
|
451
|
-
* - `data` - Array of conversation objects
|
|
452
|
-
* - `nextCursor` - Cursor for the next page, or null if no more results
|
|
592
|
+
* #### Contact Reply (customer/lead)
|
|
453
593
|
*
|
|
454
|
-
*
|
|
594
|
+
* | Field | Type | Required | Description |
|
|
595
|
+
* | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
596
|
+
* | `type` | string | Yes | Must be "contact" |
|
|
597
|
+
* | `userId` | string | No\* | External user ID from your system |
|
|
598
|
+
* | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
|
|
599
|
+
* | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
|
|
600
|
+
* | `messageType` | string | Yes | Must be "reply" |
|
|
601
|
+
* | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
|
|
455
602
|
*
|
|
456
|
-
*
|
|
603
|
+
* \*At least one of `userId` or `id` is required.
|
|
457
604
|
*
|
|
458
|
-
*
|
|
459
|
-
* - `title` - Conversation title
|
|
460
|
-
* - `state` - Current state ("open", "closed", or "snoozed")
|
|
461
|
-
* - `priority` - Whether the conversation is marked as priority
|
|
462
|
-
* - `adminAssigneeId` - ID of assigned admin (if any)
|
|
463
|
-
* - `teamAssigneeId` - ID of assigned team (if any)
|
|
464
|
-
* - `tags` - Current tags applied anywhere in the conversation
|
|
465
|
-
* - `participants` - Array of participants
|
|
466
|
-
* - `source` - Information about the first message
|
|
467
|
-
* - `createdAt` - Creation timestamp
|
|
468
|
-
* - `updatedAt` - Last update timestamp
|
|
605
|
+
* #### Admin Reply
|
|
469
606
|
*
|
|
470
|
-
*
|
|
607
|
+
* | Field | Type | Required | Description |
|
|
608
|
+
* | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
609
|
+
* | `type` | string | Yes | Must be "admin" |
|
|
610
|
+
* | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
|
|
611
|
+
* | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
|
|
612
|
+
* | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
|
|
613
|
+
* | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
|
|
614
|
+
*
|
|
615
|
+
* ### Response
|
|
616
|
+
*
|
|
617
|
+
* Returns the created conversation part object with a **201 Created** status. The
|
|
618
|
+
* response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
|
|
619
|
+
* fields.
|
|
620
|
+
*
|
|
621
|
+
* ### Example Contact Reply
|
|
471
622
|
*
|
|
472
623
|
* ```json
|
|
473
624
|
* {
|
|
474
|
-
* "
|
|
475
|
-
* "
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
* "id": "12345",
|
|
479
|
-
* "title": "Question about pricing",
|
|
480
|
-
* "state": "open",
|
|
481
|
-
* "priority": false,
|
|
482
|
-
* "adminAssigneeId": null,
|
|
483
|
-
* "participants": [
|
|
484
|
-
* { "type": "customer", "id": "676f0f6765bdaa7d7d760f88" }
|
|
485
|
-
* ],
|
|
486
|
-
* ...
|
|
487
|
-
* }
|
|
488
|
-
* ],
|
|
489
|
-
* "nextCursor": "eyJpZCI6IjEyMzQ1In0="
|
|
625
|
+
* "type": "contact",
|
|
626
|
+
* "userId": "user_123",
|
|
627
|
+
* "bodyMarkdown": "Thank you for your help!",
|
|
628
|
+
* "messageType": "reply"
|
|
490
629
|
* }
|
|
491
630
|
* ```
|
|
492
631
|
*
|
|
493
|
-
* ###
|
|
632
|
+
* ### Example Admin Reply
|
|
494
633
|
*
|
|
495
|
-
*
|
|
634
|
+
* ```json
|
|
635
|
+
* {
|
|
636
|
+
* "type": "admin",
|
|
637
|
+
* "id": "507f1f77bcf86cd799439011",
|
|
638
|
+
* "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
|
|
639
|
+
* "messageType": "reply"
|
|
640
|
+
* }
|
|
641
|
+
* ```
|
|
496
642
|
*
|
|
497
|
-
*
|
|
498
|
-
*
|
|
499
|
-
*
|
|
500
|
-
*
|
|
501
|
-
*
|
|
643
|
+
* ### Example Admin Note (Internal)
|
|
644
|
+
*
|
|
645
|
+
* ```json
|
|
646
|
+
* {
|
|
647
|
+
* "type": "admin",
|
|
648
|
+
* "id": "507f1f77bcf86cd799439011",
|
|
649
|
+
* "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
|
|
650
|
+
* "messageType": "note"
|
|
502
651
|
* }
|
|
503
652
|
* ```
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
653
|
+
*
|
|
654
|
+
* ### Example Response
|
|
655
|
+
*
|
|
656
|
+
* ```json
|
|
657
|
+
* {
|
|
658
|
+
* "object": "conversation_part",
|
|
659
|
+
* "id": "3",
|
|
660
|
+
* "partType": "user_msg",
|
|
661
|
+
* "bodyHtml": "<p>Thank you for your help!</p>",
|
|
662
|
+
* "bodyMarkdown": "Thank you for your help!",
|
|
663
|
+
* "author": {
|
|
664
|
+
* "type": "customer",
|
|
665
|
+
* "id": "676f0f6765bdaa7d7d760f88",
|
|
666
|
+
* "name": "John Doe",
|
|
667
|
+
* "email": "john@example.com"
|
|
668
|
+
* },
|
|
669
|
+
* "channel": "desktop",
|
|
670
|
+
* "createdAt": "2025-01-15T10:40:00.000Z",
|
|
671
|
+
* "updatedAt": "2025-01-15T10:40:00.000Z"
|
|
672
|
+
* }
|
|
673
|
+
* ```
|
|
674
|
+
*
|
|
675
|
+
* ### Version Availability
|
|
676
|
+
*
|
|
677
|
+
* This endpoint is only available in API version 2026-01-01.nova and newer.
|
|
678
|
+
*
|
|
679
|
+
* @example
|
|
680
|
+
* ```ts
|
|
681
|
+
* const conversationPart =
|
|
682
|
+
* await client.support.conversations.reply('12345', {
|
|
683
|
+
* bodyMarkdown: 'Thank you for your help!',
|
|
684
|
+
* messageType: 'reply',
|
|
685
|
+
* type: 'contact',
|
|
686
|
+
* });
|
|
687
|
+
* ```
|
|
688
|
+
*/
|
|
689
|
+
reply(id: string, params: ConversationReplyParams, options?: RequestOptions): APIPromise<ConversationPart> {
|
|
690
|
+
const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
691
|
+
return this._client.post(path`/v2/conversations/${id}/reply`, {
|
|
692
|
+
body,
|
|
693
|
+
...options,
|
|
513
694
|
headers: buildHeaders([
|
|
514
695
|
{
|
|
515
696
|
...(featurebaseVersion?.toString() != null ?
|
|
@@ -522,28 +703,68 @@ export class Conversations extends APIResource {
|
|
|
522
703
|
}
|
|
523
704
|
|
|
524
705
|
/**
|
|
525
|
-
*
|
|
706
|
+
* Redacts a conversation part (message) from a conversation. Redaction permanently
|
|
707
|
+
* removes the message content while preserving the conversation structure.
|
|
526
708
|
*
|
|
527
|
-
*
|
|
709
|
+
* Only human message types can be redacted:
|
|
528
710
|
*
|
|
529
|
-
* - `
|
|
711
|
+
* - `user_msg` - Messages from customers/leads
|
|
712
|
+
* - `admin_msg` - Messages from admins
|
|
713
|
+
* - `email_msg` - Email messages
|
|
714
|
+
* - `bot_msg` - Bot messages
|
|
715
|
+
*
|
|
716
|
+
* System-generated conversation parts (assignments, status changes, etc.) cannot
|
|
717
|
+
* be redacted.
|
|
718
|
+
*
|
|
719
|
+
* ### Request Body
|
|
720
|
+
*
|
|
721
|
+
* | Field | Type | Required | Description |
|
|
722
|
+
* | -------------------- | ------ | -------- | ------------------------------------------------------------------------------ |
|
|
723
|
+
* | `type` | string | Yes | The type of item to redact. Currently only `"conversation_part"` is supported. |
|
|
724
|
+
* | `conversationId` | string | Yes | The conversation short ID containing the part to redact |
|
|
725
|
+
* | `conversationPartId` | string | Yes | The conversation part short ID to redact |
|
|
726
|
+
* | `actingAdminId` | string | No | Admin ID performing the action (for attribution) |
|
|
530
727
|
*
|
|
531
728
|
* ### Response
|
|
532
729
|
*
|
|
533
|
-
* Returns
|
|
730
|
+
* Returns the updated conversation object.
|
|
731
|
+
*
|
|
732
|
+
* ### Example Request
|
|
733
|
+
*
|
|
734
|
+
* ```json
|
|
735
|
+
* {
|
|
736
|
+
* "type": "conversation_part",
|
|
737
|
+
* "conversationId": "12345",
|
|
738
|
+
* "conversationPartId": "67890",
|
|
739
|
+
* "actingAdminId": "507f1f77bcf86cd799439011"
|
|
740
|
+
* }
|
|
741
|
+
* ```
|
|
742
|
+
*
|
|
743
|
+
* ### Example Response
|
|
534
744
|
*
|
|
535
745
|
* ```json
|
|
536
746
|
* {
|
|
537
|
-
* "id": "12345",
|
|
538
747
|
* "object": "conversation",
|
|
539
|
-
* "
|
|
748
|
+
* "id": "12345",
|
|
749
|
+
* "conversationParts": [
|
|
750
|
+
* {
|
|
751
|
+
* "object": "conversation_part",
|
|
752
|
+
* "id": "67890",
|
|
753
|
+
* "partType": "user_msg",
|
|
754
|
+
* "bodyHtml": "",
|
|
755
|
+
* "bodyMarkdown": "",
|
|
756
|
+
* "redacted": true,
|
|
757
|
+
* ...
|
|
758
|
+
* }
|
|
759
|
+
* ],
|
|
760
|
+
* ...
|
|
540
761
|
* }
|
|
541
762
|
* ```
|
|
542
763
|
*
|
|
543
|
-
* ###
|
|
764
|
+
* ### Error Cases
|
|
544
765
|
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
766
|
+
* - **400 Bad Request** - Only human messages can be redacted
|
|
767
|
+
* - **404 Not Found** - Conversation or conversation part not found
|
|
547
768
|
*
|
|
548
769
|
* ### Version Availability
|
|
549
770
|
*
|
|
@@ -552,16 +773,17 @@ export class Conversations extends APIResource {
|
|
|
552
773
|
* @example
|
|
553
774
|
* ```ts
|
|
554
775
|
* const conversation =
|
|
555
|
-
* await client.support.conversations.
|
|
776
|
+
* await client.support.conversations.redact({
|
|
777
|
+
* conversationId: '12345',
|
|
778
|
+
* conversationPartId: '67890',
|
|
779
|
+
* type: 'conversation_part',
|
|
780
|
+
* });
|
|
556
781
|
* ```
|
|
557
782
|
*/
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
): APIPromise<ConversationDeleteResponse> {
|
|
563
|
-
const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
|
|
564
|
-
return this._client.delete(path`/v2/conversations/${id}`, {
|
|
783
|
+
redact(params: ConversationRedactParams, options?: RequestOptions): APIPromise<Conversation> {
|
|
784
|
+
const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
785
|
+
return this._client.post('/v2/conversations/redact', {
|
|
786
|
+
body,
|
|
565
787
|
...options,
|
|
566
788
|
headers: buildHeaders([
|
|
567
789
|
{
|
|
@@ -617,7 +839,7 @@ export class Conversations extends APIResource {
|
|
|
617
839
|
*
|
|
618
840
|
* @example
|
|
619
841
|
* ```ts
|
|
620
|
-
* const
|
|
842
|
+
* const attachedConversationTag =
|
|
621
843
|
* await client.support.conversations.attachTag('12345', {
|
|
622
844
|
* actingAdminId: '507f1f77bcf86cd799439011',
|
|
623
845
|
* tagId: '67ec1234abcd5678ef901234',
|
|
@@ -628,7 +850,7 @@ export class Conversations extends APIResource {
|
|
|
628
850
|
id: string,
|
|
629
851
|
params: ConversationAttachTagParams,
|
|
630
852
|
options?: RequestOptions,
|
|
631
|
-
): APIPromise<
|
|
853
|
+
): APIPromise<AttachedConversationTag> {
|
|
632
854
|
const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
633
855
|
return this._client.post(path`/v2/conversations/${id}/tags`, {
|
|
634
856
|
body,
|
|
@@ -686,7 +908,7 @@ export class Conversations extends APIResource {
|
|
|
686
908
|
*
|
|
687
909
|
* @example
|
|
688
910
|
* ```ts
|
|
689
|
-
* const
|
|
911
|
+
* const attachedConversationTag =
|
|
690
912
|
* await client.support.conversations.detachTag(
|
|
691
913
|
* '67ec1234abcd5678ef901234',
|
|
692
914
|
* {
|
|
@@ -700,7 +922,7 @@ export class Conversations extends APIResource {
|
|
|
700
922
|
tagID: string,
|
|
701
923
|
params: ConversationDetachTagParams,
|
|
702
924
|
options?: RequestOptions,
|
|
703
|
-
): APIPromise<
|
|
925
|
+
): APIPromise<AttachedConversationTag> {
|
|
704
926
|
const { id, 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
705
927
|
return this._client.delete(path`/v2/conversations/${id}/tags/${tagID}`, {
|
|
706
928
|
body,
|
|
@@ -716,225 +938,6 @@ export class Conversations extends APIResource {
|
|
|
716
938
|
});
|
|
717
939
|
}
|
|
718
940
|
|
|
719
|
-
/**
|
|
720
|
-
* Redacts a conversation part (message) from a conversation. Redaction permanently
|
|
721
|
-
* removes the message content while preserving the conversation structure.
|
|
722
|
-
*
|
|
723
|
-
* Only human message types can be redacted:
|
|
724
|
-
*
|
|
725
|
-
* - `user_msg` - Messages from customers/leads
|
|
726
|
-
* - `admin_msg` - Messages from admins
|
|
727
|
-
* - `email_msg` - Email messages
|
|
728
|
-
* - `bot_msg` - Bot messages
|
|
729
|
-
*
|
|
730
|
-
* System-generated conversation parts (assignments, status changes, etc.) cannot
|
|
731
|
-
* be redacted.
|
|
732
|
-
*
|
|
733
|
-
* ### Request Body
|
|
734
|
-
*
|
|
735
|
-
* | Field | Type | Required | Description |
|
|
736
|
-
* | -------------------- | ------ | -------- | ------------------------------------------------------------------------------ |
|
|
737
|
-
* | `type` | string | Yes | The type of item to redact. Currently only `"conversation_part"` is supported. |
|
|
738
|
-
* | `conversationId` | string | Yes | The conversation short ID containing the part to redact |
|
|
739
|
-
* | `conversationPartId` | string | Yes | The conversation part short ID to redact |
|
|
740
|
-
* | `actingAdminId` | string | No | Admin ID performing the action (for attribution) |
|
|
741
|
-
*
|
|
742
|
-
* ### Response
|
|
743
|
-
*
|
|
744
|
-
* Returns the updated conversation object.
|
|
745
|
-
*
|
|
746
|
-
* ### Example Request
|
|
747
|
-
*
|
|
748
|
-
* ```json
|
|
749
|
-
* {
|
|
750
|
-
* "type": "conversation_part",
|
|
751
|
-
* "conversationId": "12345",
|
|
752
|
-
* "conversationPartId": "67890",
|
|
753
|
-
* "actingAdminId": "507f1f77bcf86cd799439011"
|
|
754
|
-
* }
|
|
755
|
-
* ```
|
|
756
|
-
*
|
|
757
|
-
* ### Example Response
|
|
758
|
-
*
|
|
759
|
-
* ```json
|
|
760
|
-
* {
|
|
761
|
-
* "object": "conversation",
|
|
762
|
-
* "id": "12345",
|
|
763
|
-
* "conversationParts": [
|
|
764
|
-
* {
|
|
765
|
-
* "object": "conversation_part",
|
|
766
|
-
* "id": "67890",
|
|
767
|
-
* "partType": "user_msg",
|
|
768
|
-
* "bodyHtml": "",
|
|
769
|
-
* "bodyMarkdown": "",
|
|
770
|
-
* "redacted": true,
|
|
771
|
-
* ...
|
|
772
|
-
* }
|
|
773
|
-
* ],
|
|
774
|
-
* ...
|
|
775
|
-
* }
|
|
776
|
-
* ```
|
|
777
|
-
*
|
|
778
|
-
* ### Error Cases
|
|
779
|
-
*
|
|
780
|
-
* - **400 Bad Request** - Only human messages can be redacted
|
|
781
|
-
* - **404 Not Found** - Conversation or conversation part not found
|
|
782
|
-
*
|
|
783
|
-
* ### Version Availability
|
|
784
|
-
*
|
|
785
|
-
* This endpoint is only available in API version 2026-01-01.nova and newer.
|
|
786
|
-
*
|
|
787
|
-
* @example
|
|
788
|
-
* ```ts
|
|
789
|
-
* const conversation =
|
|
790
|
-
* await client.support.conversations.redact({
|
|
791
|
-
* conversationId: '12345',
|
|
792
|
-
* conversationPartId: '67890',
|
|
793
|
-
* type: 'conversation_part',
|
|
794
|
-
* });
|
|
795
|
-
* ```
|
|
796
|
-
*/
|
|
797
|
-
redact(params: ConversationRedactParams, options?: RequestOptions): APIPromise<Conversation> {
|
|
798
|
-
const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
799
|
-
return this._client.post('/v2/conversations/redact', {
|
|
800
|
-
body,
|
|
801
|
-
...options,
|
|
802
|
-
headers: buildHeaders([
|
|
803
|
-
{
|
|
804
|
-
...(featurebaseVersion?.toString() != null ?
|
|
805
|
-
{ 'Featurebase-Version': featurebaseVersion?.toString() }
|
|
806
|
-
: undefined),
|
|
807
|
-
},
|
|
808
|
-
options?.headers,
|
|
809
|
-
]),
|
|
810
|
-
});
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
/**
|
|
814
|
-
* Adds a reply to an existing conversation. Supports both contact (customer/lead)
|
|
815
|
-
* and admin replies.
|
|
816
|
-
*
|
|
817
|
-
* ### Path Parameters
|
|
818
|
-
*
|
|
819
|
-
* - `id` - The conversation ID (short ID)
|
|
820
|
-
*
|
|
821
|
-
* ### Request Body
|
|
822
|
-
*
|
|
823
|
-
* The request body varies based on who is sending the reply:
|
|
824
|
-
*
|
|
825
|
-
* #### Contact Reply (customer/lead)
|
|
826
|
-
*
|
|
827
|
-
* | Field | Type | Required | Description |
|
|
828
|
-
* | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
829
|
-
* | `type` | string | Yes | Must be "contact" |
|
|
830
|
-
* | `userId` | string | No\* | External user ID from your system |
|
|
831
|
-
* | `id` | string | No\* | Featurebase contact ID (24-character ObjectId) |
|
|
832
|
-
* | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
|
|
833
|
-
* | `messageType` | string | Yes | Must be "reply" |
|
|
834
|
-
* | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
|
|
835
|
-
*
|
|
836
|
-
* \*At least one of `userId` or `id` is required.
|
|
837
|
-
*
|
|
838
|
-
* #### Admin Reply
|
|
839
|
-
*
|
|
840
|
-
* | Field | Type | Required | Description |
|
|
841
|
-
* | ------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
842
|
-
* | `type` | string | Yes | Must be "admin" |
|
|
843
|
-
* | `id` | string | Yes | Featurebase admin ID (24-character ObjectId) |
|
|
844
|
-
* | `bodyMarkdown` | string | Yes | The message content in markdown format. Images referenced by URL or as base64 data URIs will be automatically uploaded and stored. |
|
|
845
|
-
* | `messageType` | string | Yes | "reply" for customer-visible reply, "note" for internal note |
|
|
846
|
-
* | `skipNotifications` | boolean | No | Skip sending notifications (default: false). Useful for bulk imports. |
|
|
847
|
-
*
|
|
848
|
-
* ### Response
|
|
849
|
-
*
|
|
850
|
-
* Returns the created conversation part object with a **201 Created** status. The
|
|
851
|
-
* response includes both `bodyHtml` (with signed image URLs) and `bodyMarkdown`
|
|
852
|
-
* fields.
|
|
853
|
-
*
|
|
854
|
-
* ### Example Contact Reply
|
|
855
|
-
*
|
|
856
|
-
* ```json
|
|
857
|
-
* {
|
|
858
|
-
* "type": "contact",
|
|
859
|
-
* "userId": "user_123",
|
|
860
|
-
* "bodyMarkdown": "Thank you for your help!",
|
|
861
|
-
* "messageType": "reply"
|
|
862
|
-
* }
|
|
863
|
-
* ```
|
|
864
|
-
*
|
|
865
|
-
* ### Example Admin Reply
|
|
866
|
-
*
|
|
867
|
-
* ```json
|
|
868
|
-
* {
|
|
869
|
-
* "type": "admin",
|
|
870
|
-
* "id": "507f1f77bcf86cd799439011",
|
|
871
|
-
* "bodyMarkdown": "I'm happy to help! Here's what you need to do...",
|
|
872
|
-
* "messageType": "reply"
|
|
873
|
-
* }
|
|
874
|
-
* ```
|
|
875
|
-
*
|
|
876
|
-
* ### Example Admin Note (Internal)
|
|
877
|
-
*
|
|
878
|
-
* ```json
|
|
879
|
-
* {
|
|
880
|
-
* "type": "admin",
|
|
881
|
-
* "id": "507f1f77bcf86cd799439011",
|
|
882
|
-
* "bodyMarkdown": "Customer seems frustrated, escalating to tier 2.",
|
|
883
|
-
* "messageType": "note"
|
|
884
|
-
* }
|
|
885
|
-
* ```
|
|
886
|
-
*
|
|
887
|
-
* ### Example Response
|
|
888
|
-
*
|
|
889
|
-
* ```json
|
|
890
|
-
* {
|
|
891
|
-
* "object": "conversation_part",
|
|
892
|
-
* "id": "3",
|
|
893
|
-
* "partType": "user_msg",
|
|
894
|
-
* "bodyHtml": "<p>Thank you for your help!</p>",
|
|
895
|
-
* "bodyMarkdown": "Thank you for your help!",
|
|
896
|
-
* "author": {
|
|
897
|
-
* "type": "customer",
|
|
898
|
-
* "id": "676f0f6765bdaa7d7d760f88",
|
|
899
|
-
* "name": "John Doe",
|
|
900
|
-
* "email": "john@example.com"
|
|
901
|
-
* },
|
|
902
|
-
* "channel": "desktop",
|
|
903
|
-
* "createdAt": "2025-01-15T10:40:00.000Z",
|
|
904
|
-
* "updatedAt": "2025-01-15T10:40:00.000Z"
|
|
905
|
-
* }
|
|
906
|
-
* ```
|
|
907
|
-
*
|
|
908
|
-
* ### Version Availability
|
|
909
|
-
*
|
|
910
|
-
* This endpoint is only available in API version 2026-01-01.nova and newer.
|
|
911
|
-
*
|
|
912
|
-
* @example
|
|
913
|
-
* ```ts
|
|
914
|
-
* const conversationPart =
|
|
915
|
-
* await client.support.conversations.reply('12345', {
|
|
916
|
-
* bodyMarkdown: 'Thank you for your help!',
|
|
917
|
-
* messageType: 'reply',
|
|
918
|
-
* type: 'contact',
|
|
919
|
-
* });
|
|
920
|
-
* ```
|
|
921
|
-
*/
|
|
922
|
-
reply(id: string, params: ConversationReplyParams, options?: RequestOptions): APIPromise<ConversationPart> {
|
|
923
|
-
const { 'Featurebase-Version': featurebaseVersion, ...body } = params;
|
|
924
|
-
return this._client.post(path`/v2/conversations/${id}/reply`, {
|
|
925
|
-
body,
|
|
926
|
-
...options,
|
|
927
|
-
headers: buildHeaders([
|
|
928
|
-
{
|
|
929
|
-
...(featurebaseVersion?.toString() != null ?
|
|
930
|
-
{ 'Featurebase-Version': featurebaseVersion?.toString() }
|
|
931
|
-
: undefined),
|
|
932
|
-
},
|
|
933
|
-
options?.headers,
|
|
934
|
-
]),
|
|
935
|
-
});
|
|
936
|
-
}
|
|
937
|
-
|
|
938
941
|
/**
|
|
939
942
|
* Search conversations with a structured filter AST and an optional full-text
|
|
940
943
|
* query.
|
|
@@ -943,7 +946,7 @@ export class Conversations extends APIResource {
|
|
|
943
946
|
*
|
|
944
947
|
* - **Filter mode** (`query` set, `search` omitted): structured filtering against
|
|
945
948
|
* indexed conversation fields. Sorted by `lastActivityAt` desc by default; set
|
|
946
|
-
* `sort` to `
|
|
949
|
+
* `sort` to `lastActivityAt:asc` for the inverse.
|
|
947
950
|
* - **Search mode** (`search` set, `query` optional): full-text search across
|
|
948
951
|
* conversation messages, then narrowed by the same `query` AST so the same
|
|
949
952
|
* filters apply. Results are ranked by relevance by default; set `sort` to order
|
|
@@ -962,7 +965,7 @@ export class Conversations extends APIResource {
|
|
|
962
965
|
* "value": [
|
|
963
966
|
* { "field": "state", "operator": "=", "value": "open" },
|
|
964
967
|
* {
|
|
965
|
-
* "field": "
|
|
968
|
+
* "field": "adminAssigneeId",
|
|
966
969
|
* "operator": "=",
|
|
967
970
|
* "value": "507f1f77bcf86cd799439011"
|
|
968
971
|
* }
|
|
@@ -975,18 +978,24 @@ export class Conversations extends APIResource {
|
|
|
975
978
|
*
|
|
976
979
|
* ### Supported fields and operators
|
|
977
980
|
*
|
|
978
|
-
*
|
|
979
|
-
*
|
|
980
|
-
*
|
|
981
|
-
*
|
|
982
|
-
*
|
|
983
|
-
*
|
|
984
|
-
* |
|
|
985
|
-
* |
|
|
986
|
-
* | `
|
|
987
|
-
* | `
|
|
988
|
-
* | `
|
|
989
|
-
* | `
|
|
981
|
+
* Field names are camelCase, matching the rest of the v2 public API. Snake_case
|
|
982
|
+
* names that this endpoint originally shipped with (`admin_assignee_id`,
|
|
983
|
+
* `team_assignee_id`, `brand_id`, `tag_ids`, `mentioned_admin_ids`, `user_id`,
|
|
984
|
+
* `participant_id`, `company_id`, `created_at`) are still accepted for back-compat
|
|
985
|
+
* but are deprecated — please migrate to camelCase in new code.
|
|
986
|
+
*
|
|
987
|
+
* | Field | Type | Operators |
|
|
988
|
+
* | -------------------------- | --------------------------------------------------------------------------- | ---------------------- |
|
|
989
|
+
* | `state` | enum (`open` / `closed` / `snoozed`) | `=`, `!=`, `IN`, `NIN` |
|
|
990
|
+
* | `priority` | boolean | `=`, `!=` |
|
|
991
|
+
* | `adminAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
|
|
992
|
+
* | `teamAssigneeId` | id or null (unassigned) | `=`, `!=`, `IN`, `NIN` |
|
|
993
|
+
* | `brandId` | id or null | `=`, `!=`, `IN`, `NIN` |
|
|
994
|
+
* | `tagIds` | id (matches any conversation containing this tag) | `=`, `!=`, `IN`, `NIN` |
|
|
995
|
+
* | `userId` / `participantId` | id of a conversation participant | `=`, `!=`, `IN`, `NIN` |
|
|
996
|
+
* | `companyId` | company id (matches conversations whose participants belong to the company) | `=`, `!=`, `IN`, `NIN` |
|
|
997
|
+
* | `mentionedAdminIds` | admin id | `=`, `!=`, `IN`, `NIN` |
|
|
998
|
+
* | `createdAt` | unix seconds | `=`, `>`, `<` |
|
|
990
999
|
*
|
|
991
1000
|
* For unbounded fields a query consisting only of `!=` or `NIN` clauses is
|
|
992
1001
|
* rejected with `query_too_broad` to prevent full-org scans. Combine the negation
|
|
@@ -1053,6 +1062,49 @@ export class Conversations extends APIResource {
|
|
|
1053
1062
|
|
|
1054
1063
|
export type ConversationsCursorPage = CursorPage<Conversation>;
|
|
1055
1064
|
|
|
1065
|
+
export interface AttachedConversationTag {
|
|
1066
|
+
/**
|
|
1067
|
+
* Unique tag identifier
|
|
1068
|
+
*/
|
|
1069
|
+
id: string;
|
|
1070
|
+
|
|
1071
|
+
/**
|
|
1072
|
+
* Current tag name
|
|
1073
|
+
*/
|
|
1074
|
+
name: string;
|
|
1075
|
+
|
|
1076
|
+
/**
|
|
1077
|
+
* Object type identifier for a tag
|
|
1078
|
+
*/
|
|
1079
|
+
type: 'tag';
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* ISO timestamp when the tag was applied
|
|
1083
|
+
*/
|
|
1084
|
+
appliedAt?: string | null;
|
|
1085
|
+
|
|
1086
|
+
/**
|
|
1087
|
+
* Actor that applied the tag
|
|
1088
|
+
*/
|
|
1089
|
+
appliedBy?: ConversationTagMutationActor | null;
|
|
1090
|
+
|
|
1091
|
+
/**
|
|
1092
|
+
* ISO timestamp when the tag was removed, if applicable
|
|
1093
|
+
*/
|
|
1094
|
+
removedAt?: string | null;
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Actor that applied the tag
|
|
1098
|
+
*/
|
|
1099
|
+
removedBy?: ConversationTagMutationActor | null;
|
|
1100
|
+
|
|
1101
|
+
/**
|
|
1102
|
+
* Reply/message ID used as the deterministic attachment target for this
|
|
1103
|
+
* conversation tag mutation.
|
|
1104
|
+
*/
|
|
1105
|
+
targetPartId?: string | null;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1056
1108
|
export interface Conversation {
|
|
1057
1109
|
/**
|
|
1058
1110
|
* Unique conversation identifier
|
|
@@ -1182,6 +1234,19 @@ export interface Conversation {
|
|
|
1182
1234
|
*/
|
|
1183
1235
|
csatSummary?: Conversation.CsatSummary;
|
|
1184
1236
|
|
|
1237
|
+
/**
|
|
1238
|
+
* Custom conversation attributes keyed by custom attribute ID. Only org-defined,
|
|
1239
|
+
* non-archived conversation attributes are returned; internal workflow metadata is
|
|
1240
|
+
* omitted.
|
|
1241
|
+
*/
|
|
1242
|
+
customAttributes?: { [key: string]: unknown };
|
|
1243
|
+
|
|
1244
|
+
/**
|
|
1245
|
+
* Custom conversation attribute values expanded with definition metadata. Returned
|
|
1246
|
+
* only when `include=customAttributeDefinitions` is provided.
|
|
1247
|
+
*/
|
|
1248
|
+
customAttributeValues?: Array<ConversationAttributeValue>;
|
|
1249
|
+
|
|
1185
1250
|
/**
|
|
1186
1251
|
* Whether customer replies are disabled
|
|
1187
1252
|
*/
|
|
@@ -1197,7 +1262,7 @@ export interface Conversation {
|
|
|
1197
1262
|
*/
|
|
1198
1263
|
readReceipts?: Array<Conversation.ReadReceipt>;
|
|
1199
1264
|
|
|
1200
|
-
source?:
|
|
1265
|
+
source?: MessageSource;
|
|
1201
1266
|
|
|
1202
1267
|
/**
|
|
1203
1268
|
* Conversation title
|
|
@@ -1231,13 +1296,16 @@ export namespace Conversation {
|
|
|
1231
1296
|
* ISO timestamp when first-time submissions stop being accepted
|
|
1232
1297
|
*/
|
|
1233
1298
|
lateSubmitWindowEndsAt?: string;
|
|
1299
|
+
|
|
1300
|
+
slackDelivery?: ConversationsAPI.CsatSlackDelivery;
|
|
1234
1301
|
}
|
|
1235
1302
|
|
|
1236
1303
|
export interface CsatHistory {
|
|
1237
1304
|
/**
|
|
1238
|
-
* Channel used for the CSAT request
|
|
1305
|
+
* Channel used for the CSAT request. `desktop` = web messenger, `email` =
|
|
1306
|
+
* follow-up email, `slack` = Block Kit prompt in the conversation thread.
|
|
1239
1307
|
*/
|
|
1240
|
-
channel: 'desktop' | 'email';
|
|
1308
|
+
channel: 'desktop' | 'email' | 'slack';
|
|
1241
1309
|
|
|
1242
1310
|
/**
|
|
1243
1311
|
* Whether this row represents the currently effective CSAT request for the
|
|
@@ -1309,6 +1377,8 @@ export namespace Conversation {
|
|
|
1309
1377
|
*/
|
|
1310
1378
|
score?: number;
|
|
1311
1379
|
|
|
1380
|
+
slackDelivery?: ConversationsAPI.CsatSlackDelivery;
|
|
1381
|
+
|
|
1312
1382
|
workflow?: ConversationsAPI.CsatWorkflowLink;
|
|
1313
1383
|
}
|
|
1314
1384
|
|
|
@@ -1335,7 +1405,7 @@ export namespace Conversation {
|
|
|
1335
1405
|
/**
|
|
1336
1406
|
* Channel used for the latest CSAT request when known
|
|
1337
1407
|
*/
|
|
1338
|
-
channel?: 'desktop' | 'email';
|
|
1408
|
+
channel?: 'desktop' | 'email' | 'slack';
|
|
1339
1409
|
|
|
1340
1410
|
/**
|
|
1341
1411
|
* ISO timestamp when the request expired
|
|
@@ -1396,40 +1466,43 @@ export namespace Conversation {
|
|
|
1396
1466
|
*/
|
|
1397
1467
|
userType: 'admin' | 'customer' | 'lead';
|
|
1398
1468
|
}
|
|
1469
|
+
}
|
|
1399
1470
|
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1471
|
+
export interface ConversationAttributeValue {
|
|
1472
|
+
/**
|
|
1473
|
+
* Stable machine identifier used as the key in conversation.customAttributes.
|
|
1474
|
+
*/
|
|
1475
|
+
id: string;
|
|
1405
1476
|
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1477
|
+
/**
|
|
1478
|
+
* Storage-level data type used for validation and search.
|
|
1479
|
+
*/
|
|
1480
|
+
dataType: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object';
|
|
1410
1481
|
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1482
|
+
/**
|
|
1483
|
+
* Conversation field subtype that controls the expected value shape.
|
|
1484
|
+
*/
|
|
1485
|
+
fieldSubType: 'text' | 'number' | 'select' | 'multi-select' | 'checkbox' | 'date';
|
|
1415
1486
|
|
|
1416
|
-
|
|
1487
|
+
/**
|
|
1488
|
+
* Stable internal identifier for the attribute definition.
|
|
1489
|
+
*/
|
|
1490
|
+
identifier: string;
|
|
1417
1491
|
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1492
|
+
/**
|
|
1493
|
+
* Human-readable attribute name shown in Featurebase.
|
|
1494
|
+
*/
|
|
1495
|
+
name: string;
|
|
1422
1496
|
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1497
|
+
/**
|
|
1498
|
+
* Allowed values for select and multi-select attributes.
|
|
1499
|
+
*/
|
|
1500
|
+
options?: Array<ConversationAttributesAPI.ConversationAttributeOption>;
|
|
1427
1501
|
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
}
|
|
1502
|
+
/**
|
|
1503
|
+
* The conversation-specific custom attribute value.
|
|
1504
|
+
*/
|
|
1505
|
+
value?: unknown;
|
|
1433
1506
|
}
|
|
1434
1507
|
|
|
1435
1508
|
/**
|
|
@@ -1477,7 +1550,7 @@ export namespace ConversationPart {
|
|
|
1477
1550
|
/**
|
|
1478
1551
|
* Channel through which the message was sent
|
|
1479
1552
|
*/
|
|
1480
|
-
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email';
|
|
1553
|
+
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email' | 'slack';
|
|
1481
1554
|
|
|
1482
1555
|
/**
|
|
1483
1556
|
* ISO timestamp when the part was created
|
|
@@ -1506,6 +1579,12 @@ export namespace ConversationPart {
|
|
|
1506
1579
|
*/
|
|
1507
1580
|
redacted?: boolean;
|
|
1508
1581
|
|
|
1582
|
+
/**
|
|
1583
|
+
* Safe Slack message identifiers. Only present for Slack-backed messages while the
|
|
1584
|
+
* organization has Slack integration enabled.
|
|
1585
|
+
*/
|
|
1586
|
+
slack?: ConversationsAPI.SlackMessageDetails;
|
|
1587
|
+
|
|
1509
1588
|
/**
|
|
1510
1589
|
* Reply-level tag applications and provenance for this conversation part
|
|
1511
1590
|
*/
|
|
@@ -1534,7 +1613,7 @@ export namespace ConversationPart {
|
|
|
1534
1613
|
/**
|
|
1535
1614
|
* Channel through which the message was sent
|
|
1536
1615
|
*/
|
|
1537
|
-
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email';
|
|
1616
|
+
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email' | 'slack';
|
|
1538
1617
|
|
|
1539
1618
|
/**
|
|
1540
1619
|
* ISO timestamp when the part was created
|
|
@@ -1563,6 +1642,12 @@ export namespace ConversationPart {
|
|
|
1563
1642
|
*/
|
|
1564
1643
|
redacted?: boolean;
|
|
1565
1644
|
|
|
1645
|
+
/**
|
|
1646
|
+
* Safe Slack message identifiers. Only present for Slack-backed messages while the
|
|
1647
|
+
* organization has Slack integration enabled.
|
|
1648
|
+
*/
|
|
1649
|
+
slack?: ConversationsAPI.SlackMessageDetails;
|
|
1650
|
+
|
|
1566
1651
|
/**
|
|
1567
1652
|
* Reply-level tag applications and provenance for this conversation part
|
|
1568
1653
|
*/
|
|
@@ -1722,13 +1807,19 @@ export namespace ConversationPart {
|
|
|
1722
1807
|
/**
|
|
1723
1808
|
* Channel through which the message was sent
|
|
1724
1809
|
*/
|
|
1725
|
-
channel?: 'unknown' | 'desktop' | 'android' | 'ios' | 'email';
|
|
1810
|
+
channel?: 'unknown' | 'desktop' | 'android' | 'ios' | 'email' | 'slack';
|
|
1726
1811
|
|
|
1727
1812
|
/**
|
|
1728
1813
|
* Whether this message has been redacted
|
|
1729
1814
|
*/
|
|
1730
1815
|
redacted?: boolean;
|
|
1731
1816
|
|
|
1817
|
+
/**
|
|
1818
|
+
* Safe Slack message identifiers. Only present for Slack-backed messages while the
|
|
1819
|
+
* organization has Slack integration enabled.
|
|
1820
|
+
*/
|
|
1821
|
+
slack?: ConversationsAPI.SlackMessageDetails;
|
|
1822
|
+
|
|
1732
1823
|
/**
|
|
1733
1824
|
* Reply-level tag applications and provenance for this conversation part
|
|
1734
1825
|
*/
|
|
@@ -1894,9 +1985,10 @@ export namespace ConversationPart {
|
|
|
1894
1985
|
*/
|
|
1895
1986
|
export interface Csat {
|
|
1896
1987
|
/**
|
|
1897
|
-
* Channel used for the CSAT request
|
|
1988
|
+
* Channel used for the CSAT request. `desktop` = web messenger, `email` =
|
|
1989
|
+
* follow-up email, `slack` = Block Kit prompt in the conversation thread.
|
|
1898
1990
|
*/
|
|
1899
|
-
channel: 'desktop' | 'email';
|
|
1991
|
+
channel: 'desktop' | 'email' | 'slack';
|
|
1900
1992
|
|
|
1901
1993
|
/**
|
|
1902
1994
|
* ISO timestamp when the request was created
|
|
@@ -1980,9 +2072,10 @@ export namespace ConversationPart {
|
|
|
1980
2072
|
*/
|
|
1981
2073
|
export interface Csat {
|
|
1982
2074
|
/**
|
|
1983
|
-
* Channel used for the CSAT request
|
|
2075
|
+
* Channel used for the CSAT request. `desktop` = web messenger, `email` =
|
|
2076
|
+
* follow-up email, `slack` = Block Kit prompt in the conversation thread.
|
|
1984
2077
|
*/
|
|
1985
|
-
channel: 'desktop' | 'email';
|
|
2078
|
+
channel: 'desktop' | 'email' | 'slack';
|
|
1986
2079
|
|
|
1987
2080
|
/**
|
|
1988
2081
|
* ISO timestamp when the customer submitted the rating
|
|
@@ -2270,39 +2363,17 @@ export namespace ConversationPart {
|
|
|
2270
2363
|
/**
|
|
2271
2364
|
* Actor that applied the tag
|
|
2272
2365
|
*/
|
|
2273
|
-
actor?:
|
|
2366
|
+
actor?: ConversationsAPI.ConversationTagMutationActor;
|
|
2274
2367
|
|
|
2275
|
-
/**
|
|
2276
|
-
* Tag name at the time of the event or the best available current display name
|
|
2277
|
-
*/
|
|
2278
|
-
tagName?: string | null;
|
|
2279
|
-
|
|
2280
|
-
/**
|
|
2281
|
-
* Conversation part that the tag mutation targeted
|
|
2282
|
-
*/
|
|
2283
|
-
targetPartId?: string | null;
|
|
2284
|
-
}
|
|
2285
|
-
|
|
2286
|
-
export namespace TagUpdate {
|
|
2287
|
-
/**
|
|
2288
|
-
* Actor that applied the tag
|
|
2289
|
-
*/
|
|
2290
|
-
export interface Actor {
|
|
2291
|
-
/**
|
|
2292
|
-
* Actor that caused the tag mutation
|
|
2293
|
-
*/
|
|
2294
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2295
|
-
|
|
2296
|
-
/**
|
|
2297
|
-
* Actor identifier when available
|
|
2298
|
-
*/
|
|
2299
|
-
id?: string | null;
|
|
2368
|
+
/**
|
|
2369
|
+
* Tag name at the time of the event or the best available current display name
|
|
2370
|
+
*/
|
|
2371
|
+
tagName?: string | null;
|
|
2300
2372
|
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
}
|
|
2373
|
+
/**
|
|
2374
|
+
* Conversation part that the tag mutation targeted
|
|
2375
|
+
*/
|
|
2376
|
+
targetPartId?: string | null;
|
|
2306
2377
|
}
|
|
2307
2378
|
|
|
2308
2379
|
/**
|
|
@@ -2519,7 +2590,7 @@ export interface ConversationTagApplication {
|
|
|
2519
2590
|
/**
|
|
2520
2591
|
* Actor that applied the tag
|
|
2521
2592
|
*/
|
|
2522
|
-
appliedBy?:
|
|
2593
|
+
appliedBy?: ConversationTagMutationActor;
|
|
2523
2594
|
|
|
2524
2595
|
/**
|
|
2525
2596
|
* ISO timestamp when the tag was removed from this reply, if it was removed
|
|
@@ -2529,7 +2600,7 @@ export interface ConversationTagApplication {
|
|
|
2529
2600
|
/**
|
|
2530
2601
|
* Actor that applied the tag
|
|
2531
2602
|
*/
|
|
2532
|
-
removedBy?:
|
|
2603
|
+
removedBy?: ConversationTagMutationActor;
|
|
2533
2604
|
|
|
2534
2605
|
/**
|
|
2535
2606
|
* Resolved tag object when the tag still exists in the shared workspace catalog
|
|
@@ -2537,46 +2608,24 @@ export interface ConversationTagApplication {
|
|
|
2537
2608
|
tag?: ConversationTagsAPI.ConversationTag;
|
|
2538
2609
|
}
|
|
2539
2610
|
|
|
2540
|
-
|
|
2611
|
+
/**
|
|
2612
|
+
* Actor that applied the tag
|
|
2613
|
+
*/
|
|
2614
|
+
export interface ConversationTagMutationActor {
|
|
2541
2615
|
/**
|
|
2542
|
-
* Actor that
|
|
2616
|
+
* Actor that caused the tag mutation
|
|
2543
2617
|
*/
|
|
2544
|
-
|
|
2545
|
-
/**
|
|
2546
|
-
* Actor that caused the tag mutation
|
|
2547
|
-
*/
|
|
2548
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2549
|
-
|
|
2550
|
-
/**
|
|
2551
|
-
* Actor identifier when available
|
|
2552
|
-
*/
|
|
2553
|
-
id?: string | null;
|
|
2554
|
-
|
|
2555
|
-
/**
|
|
2556
|
-
* Actor display name when available
|
|
2557
|
-
*/
|
|
2558
|
-
name?: string | null;
|
|
2559
|
-
}
|
|
2618
|
+
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2560
2619
|
|
|
2561
2620
|
/**
|
|
2562
|
-
* Actor
|
|
2621
|
+
* Actor identifier when available
|
|
2563
2622
|
*/
|
|
2564
|
-
|
|
2565
|
-
/**
|
|
2566
|
-
* Actor that caused the tag mutation
|
|
2567
|
-
*/
|
|
2568
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2569
|
-
|
|
2570
|
-
/**
|
|
2571
|
-
* Actor identifier when available
|
|
2572
|
-
*/
|
|
2573
|
-
id?: string | null;
|
|
2623
|
+
id?: string | null;
|
|
2574
2624
|
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
}
|
|
2625
|
+
/**
|
|
2626
|
+
* Actor display name when available
|
|
2627
|
+
*/
|
|
2628
|
+
name?: string | null;
|
|
2580
2629
|
}
|
|
2581
2630
|
|
|
2582
2631
|
export interface CsatEmailDelivery {
|
|
@@ -2618,6 +2667,44 @@ export interface CsatRatedAgent {
|
|
|
2618
2667
|
id?: string;
|
|
2619
2668
|
}
|
|
2620
2669
|
|
|
2670
|
+
export interface CsatSlackDelivery {
|
|
2671
|
+
/**
|
|
2672
|
+
* Slack Block Kit prompt delivery status for the CSAT request when the channel is
|
|
2673
|
+
* Slack
|
|
2674
|
+
*/
|
|
2675
|
+
status: 'pending' | 'posted' | 'failed';
|
|
2676
|
+
|
|
2677
|
+
/**
|
|
2678
|
+
* Slack channel id the CSAT prompt was posted to
|
|
2679
|
+
*/
|
|
2680
|
+
channelId?: string;
|
|
2681
|
+
|
|
2682
|
+
/**
|
|
2683
|
+
* ISO timestamp when posting the CSAT prompt to Slack failed
|
|
2684
|
+
*/
|
|
2685
|
+
failedAt?: string;
|
|
2686
|
+
|
|
2687
|
+
/**
|
|
2688
|
+
* Operational failure reason for the Slack CSAT prompt delivery
|
|
2689
|
+
*/
|
|
2690
|
+
failureReason?: string;
|
|
2691
|
+
|
|
2692
|
+
/**
|
|
2693
|
+
* Slack message timestamp of the posted CSAT prompt
|
|
2694
|
+
*/
|
|
2695
|
+
messageTs?: string;
|
|
2696
|
+
|
|
2697
|
+
/**
|
|
2698
|
+
* ISO timestamp when the CSAT prompt was enqueued for Slack
|
|
2699
|
+
*/
|
|
2700
|
+
postedAt?: string;
|
|
2701
|
+
|
|
2702
|
+
/**
|
|
2703
|
+
* Slack workspace (team) the CSAT prompt was posted to
|
|
2704
|
+
*/
|
|
2705
|
+
teamId?: string;
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2621
2708
|
export interface CsatWorkflowLink {
|
|
2622
2709
|
/**
|
|
2623
2710
|
* Workflow action ID associated with the CSAT request
|
|
@@ -2655,191 +2742,160 @@ export interface EmailRecipients {
|
|
|
2655
2742
|
ids?: Array<string>;
|
|
2656
2743
|
}
|
|
2657
2744
|
|
|
2658
|
-
export interface
|
|
2659
|
-
/**
|
|
2660
|
-
* Unique identifier of the deleted conversation
|
|
2661
|
-
*/
|
|
2662
|
-
id: string;
|
|
2663
|
-
|
|
2664
|
-
/**
|
|
2665
|
-
* Indicates the resource was deleted
|
|
2666
|
-
*/
|
|
2667
|
-
deleted: true;
|
|
2668
|
-
|
|
2669
|
-
/**
|
|
2670
|
-
* Object type identifier
|
|
2671
|
-
*/
|
|
2672
|
-
object: 'conversation';
|
|
2673
|
-
}
|
|
2674
|
-
|
|
2675
|
-
export interface ConversationAttachTagResponse {
|
|
2745
|
+
export interface MessageSource {
|
|
2676
2746
|
/**
|
|
2677
|
-
*
|
|
2747
|
+
* Body of the initial message as HTML with signed image URLs
|
|
2678
2748
|
*/
|
|
2679
|
-
|
|
2749
|
+
bodyHtml: string;
|
|
2680
2750
|
|
|
2681
2751
|
/**
|
|
2682
|
-
*
|
|
2752
|
+
* Body of the initial message as markdown
|
|
2683
2753
|
*/
|
|
2684
|
-
|
|
2754
|
+
bodyMarkdown: string;
|
|
2685
2755
|
|
|
2686
2756
|
/**
|
|
2687
|
-
*
|
|
2757
|
+
* Channel through which the conversation was initiated
|
|
2688
2758
|
*/
|
|
2689
|
-
|
|
2759
|
+
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email' | 'slack';
|
|
2690
2760
|
|
|
2691
|
-
|
|
2692
|
-
* ISO timestamp when the tag was applied
|
|
2693
|
-
*/
|
|
2694
|
-
appliedAt?: string | null;
|
|
2761
|
+
author?: ConversationParticipant;
|
|
2695
2762
|
|
|
2696
2763
|
/**
|
|
2697
|
-
*
|
|
2764
|
+
* How the conversation was initiated
|
|
2698
2765
|
*/
|
|
2699
|
-
|
|
2766
|
+
deliveredAs?: 'customer_initiated' | 'admin_initiated';
|
|
2700
2767
|
|
|
2701
2768
|
/**
|
|
2702
|
-
*
|
|
2769
|
+
* Safe Slack thread identifiers. Only present for Slack-origin conversations while
|
|
2770
|
+
* the organization has Slack integration enabled.
|
|
2703
2771
|
*/
|
|
2704
|
-
|
|
2772
|
+
slack?: MessageSource.Slack;
|
|
2705
2773
|
|
|
2706
2774
|
/**
|
|
2707
|
-
*
|
|
2775
|
+
* Subject line for email conversations
|
|
2708
2776
|
*/
|
|
2709
|
-
|
|
2777
|
+
subject?: string;
|
|
2710
2778
|
|
|
2711
2779
|
/**
|
|
2712
|
-
*
|
|
2713
|
-
* conversation tag mutation.
|
|
2780
|
+
* URL where the conversation was initiated
|
|
2714
2781
|
*/
|
|
2715
|
-
|
|
2782
|
+
url?: string;
|
|
2716
2783
|
}
|
|
2717
2784
|
|
|
2718
|
-
export namespace
|
|
2785
|
+
export namespace MessageSource {
|
|
2719
2786
|
/**
|
|
2720
|
-
*
|
|
2787
|
+
* Safe Slack thread identifiers. Only present for Slack-origin conversations while
|
|
2788
|
+
* the organization has Slack integration enabled.
|
|
2721
2789
|
*/
|
|
2722
|
-
export interface
|
|
2790
|
+
export interface Slack {
|
|
2723
2791
|
/**
|
|
2724
|
-
*
|
|
2792
|
+
* Slack channel ID for the thread
|
|
2725
2793
|
*/
|
|
2726
|
-
|
|
2794
|
+
channelId: string;
|
|
2727
2795
|
|
|
2728
2796
|
/**
|
|
2729
|
-
*
|
|
2797
|
+
* Slack workspace/team ID for the thread
|
|
2730
2798
|
*/
|
|
2731
|
-
|
|
2799
|
+
teamId: string;
|
|
2732
2800
|
|
|
2733
2801
|
/**
|
|
2734
|
-
*
|
|
2802
|
+
* Slack root thread timestamp
|
|
2735
2803
|
*/
|
|
2736
|
-
|
|
2804
|
+
threadTs: string;
|
|
2737
2805
|
}
|
|
2806
|
+
}
|
|
2738
2807
|
|
|
2808
|
+
/**
|
|
2809
|
+
* The customer or lead the conversation is with. Use this for the row identity;
|
|
2810
|
+
* use `matchingPartAuthor` if you specifically want the message author.
|
|
2811
|
+
*/
|
|
2812
|
+
export interface SearchMatchingPartAuthor {
|
|
2739
2813
|
/**
|
|
2740
|
-
*
|
|
2814
|
+
* Author id
|
|
2741
2815
|
*/
|
|
2742
|
-
|
|
2743
|
-
/**
|
|
2744
|
-
* Actor that caused the tag mutation
|
|
2745
|
-
*/
|
|
2746
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2747
|
-
|
|
2748
|
-
/**
|
|
2749
|
-
* Actor identifier when available
|
|
2750
|
-
*/
|
|
2751
|
-
id?: string | null;
|
|
2816
|
+
id: string;
|
|
2752
2817
|
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
}
|
|
2758
|
-
}
|
|
2818
|
+
/**
|
|
2819
|
+
* Author type
|
|
2820
|
+
*/
|
|
2821
|
+
type: 'admin' | 'customer' | 'lead' | 'bot' | 'guest' | 'integration';
|
|
2759
2822
|
|
|
2760
|
-
export interface ConversationDetachTagResponse {
|
|
2761
2823
|
/**
|
|
2762
|
-
*
|
|
2824
|
+
* Companies the author belongs to (customers only)
|
|
2763
2825
|
*/
|
|
2764
|
-
|
|
2826
|
+
companies?: Array<SearchMatchingPartAuthor.Company>;
|
|
2765
2827
|
|
|
2766
2828
|
/**
|
|
2767
|
-
*
|
|
2829
|
+
* Email when known
|
|
2768
2830
|
*/
|
|
2769
|
-
|
|
2831
|
+
email?: string | null;
|
|
2770
2832
|
|
|
2771
2833
|
/**
|
|
2772
|
-
*
|
|
2834
|
+
* Display name when known
|
|
2773
2835
|
*/
|
|
2774
|
-
|
|
2836
|
+
name?: string | null;
|
|
2775
2837
|
|
|
2776
2838
|
/**
|
|
2777
|
-
*
|
|
2839
|
+
* Profile picture URL when known
|
|
2778
2840
|
*/
|
|
2779
|
-
|
|
2841
|
+
profilePicture?: string | null;
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2844
|
+
export namespace SearchMatchingPartAuthor {
|
|
2845
|
+
export interface Company {
|
|
2846
|
+
/**
|
|
2847
|
+
* Company id
|
|
2848
|
+
*/
|
|
2849
|
+
id: string;
|
|
2850
|
+
|
|
2851
|
+
/**
|
|
2852
|
+
* Company name
|
|
2853
|
+
*/
|
|
2854
|
+
name?: string;
|
|
2855
|
+
}
|
|
2856
|
+
}
|
|
2780
2857
|
|
|
2858
|
+
/**
|
|
2859
|
+
* Safe Slack message identifiers. Only present for Slack-backed messages while the
|
|
2860
|
+
* organization has Slack integration enabled.
|
|
2861
|
+
*/
|
|
2862
|
+
export interface SlackMessageDetails {
|
|
2781
2863
|
/**
|
|
2782
|
-
*
|
|
2864
|
+
* Slack channel ID for the message
|
|
2783
2865
|
*/
|
|
2784
|
-
|
|
2866
|
+
channelId: string;
|
|
2785
2867
|
|
|
2786
2868
|
/**
|
|
2787
|
-
*
|
|
2869
|
+
* Slack message timestamp
|
|
2788
2870
|
*/
|
|
2789
|
-
|
|
2871
|
+
messageTs: string;
|
|
2790
2872
|
|
|
2791
2873
|
/**
|
|
2792
|
-
*
|
|
2874
|
+
* Slack workspace/team ID for the message
|
|
2793
2875
|
*/
|
|
2794
|
-
|
|
2876
|
+
teamId: string;
|
|
2795
2877
|
|
|
2796
2878
|
/**
|
|
2797
|
-
*
|
|
2798
|
-
* conversation tag mutation.
|
|
2879
|
+
* Slack root thread timestamp when this message belongs to a thread
|
|
2799
2880
|
*/
|
|
2800
|
-
|
|
2881
|
+
threadTs?: string;
|
|
2801
2882
|
}
|
|
2802
2883
|
|
|
2803
|
-
export
|
|
2884
|
+
export interface ConversationDeleteResponse {
|
|
2804
2885
|
/**
|
|
2805
|
-
*
|
|
2886
|
+
* Unique identifier of the deleted conversation
|
|
2806
2887
|
*/
|
|
2807
|
-
|
|
2808
|
-
/**
|
|
2809
|
-
* Actor that caused the tag mutation
|
|
2810
|
-
*/
|
|
2811
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2812
|
-
|
|
2813
|
-
/**
|
|
2814
|
-
* Actor identifier when available
|
|
2815
|
-
*/
|
|
2816
|
-
id?: string | null;
|
|
2817
|
-
|
|
2818
|
-
/**
|
|
2819
|
-
* Actor display name when available
|
|
2820
|
-
*/
|
|
2821
|
-
name?: string | null;
|
|
2822
|
-
}
|
|
2888
|
+
id: string;
|
|
2823
2889
|
|
|
2824
2890
|
/**
|
|
2825
|
-
*
|
|
2891
|
+
* Indicates the resource was deleted
|
|
2826
2892
|
*/
|
|
2827
|
-
|
|
2828
|
-
/**
|
|
2829
|
-
* Actor that caused the tag mutation
|
|
2830
|
-
*/
|
|
2831
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'integration' | 'system' | 'workflow';
|
|
2832
|
-
|
|
2833
|
-
/**
|
|
2834
|
-
* Actor identifier when available
|
|
2835
|
-
*/
|
|
2836
|
-
id?: string | null;
|
|
2893
|
+
deleted: true;
|
|
2837
2894
|
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
}
|
|
2895
|
+
/**
|
|
2896
|
+
* Object type identifier
|
|
2897
|
+
*/
|
|
2898
|
+
object: 'conversation';
|
|
2843
2899
|
}
|
|
2844
2900
|
|
|
2845
2901
|
export interface ConversationSearchResponse {
|
|
@@ -2948,7 +3004,20 @@ export namespace ConversationSearchResponse {
|
|
|
2948
3004
|
* The customer or lead the conversation is with. Use this for the row identity;
|
|
2949
3005
|
* use `matchingPartAuthor` if you specifically want the message author.
|
|
2950
3006
|
*/
|
|
2951
|
-
conversationUser?:
|
|
3007
|
+
conversationUser?: ConversationsAPI.SearchMatchingPartAuthor | null;
|
|
3008
|
+
|
|
3009
|
+
/**
|
|
3010
|
+
* Custom conversation attributes keyed by custom attribute ID. Only org-defined,
|
|
3011
|
+
* non-archived conversation attributes are returned; internal workflow metadata is
|
|
3012
|
+
* omitted.
|
|
3013
|
+
*/
|
|
3014
|
+
customAttributes?: { [key: string]: unknown };
|
|
3015
|
+
|
|
3016
|
+
/**
|
|
3017
|
+
* Custom conversation attribute values expanded with definition metadata. Returned
|
|
3018
|
+
* only when `include=customAttributeDefinitions` is provided.
|
|
3019
|
+
*/
|
|
3020
|
+
customAttributeValues?: Array<ConversationsAPI.ConversationAttributeValue>;
|
|
2952
3021
|
|
|
2953
3022
|
/**
|
|
2954
3023
|
* Plain-text / markdown preview of the matching conversation part body (search
|
|
@@ -2966,7 +3035,7 @@ export namespace ConversationSearchResponse {
|
|
|
2966
3035
|
* The customer or lead the conversation is with. Use this for the row identity;
|
|
2967
3036
|
* use `matchingPartAuthor` if you specifically want the message author.
|
|
2968
3037
|
*/
|
|
2969
|
-
matchingPartAuthor?:
|
|
3038
|
+
matchingPartAuthor?: ConversationsAPI.SearchMatchingPartAuthor | null;
|
|
2970
3039
|
|
|
2971
3040
|
/**
|
|
2972
3041
|
* Aggregate relevance score for the conversation (search mode only). Higher is
|
|
@@ -2974,7 +3043,7 @@ export namespace ConversationSearchResponse {
|
|
|
2974
3043
|
*/
|
|
2975
3044
|
relevanceScore?: number | null;
|
|
2976
3045
|
|
|
2977
|
-
source?:
|
|
3046
|
+
source?: ConversationsAPI.MessageSource;
|
|
2978
3047
|
|
|
2979
3048
|
/**
|
|
2980
3049
|
* Window of conversation messages around the matching part for lightweight context
|
|
@@ -2993,147 +3062,25 @@ export namespace ConversationSearchResponse {
|
|
|
2993
3062
|
}
|
|
2994
3063
|
|
|
2995
3064
|
export namespace Data {
|
|
2996
|
-
/**
|
|
2997
|
-
* The customer or lead the conversation is with. Use this for the row identity;
|
|
2998
|
-
* use `matchingPartAuthor` if you specifically want the message author.
|
|
2999
|
-
*/
|
|
3000
|
-
export interface ConversationUser {
|
|
3001
|
-
/**
|
|
3002
|
-
* Author id
|
|
3003
|
-
*/
|
|
3004
|
-
id: string;
|
|
3005
|
-
|
|
3006
|
-
/**
|
|
3007
|
-
* Author type
|
|
3008
|
-
*/
|
|
3009
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'guest' | 'integration';
|
|
3010
|
-
|
|
3011
|
-
/**
|
|
3012
|
-
* Companies the author belongs to (customers only)
|
|
3013
|
-
*/
|
|
3014
|
-
companies?: Array<ConversationUser.Company>;
|
|
3015
|
-
|
|
3016
|
-
/**
|
|
3017
|
-
* Email when known
|
|
3018
|
-
*/
|
|
3019
|
-
email?: string | null;
|
|
3020
|
-
|
|
3021
|
-
/**
|
|
3022
|
-
* Display name when known
|
|
3023
|
-
*/
|
|
3024
|
-
name?: string | null;
|
|
3025
|
-
|
|
3026
|
-
/**
|
|
3027
|
-
* Profile picture URL when known
|
|
3028
|
-
*/
|
|
3029
|
-
profilePicture?: string | null;
|
|
3030
|
-
}
|
|
3031
|
-
|
|
3032
|
-
export namespace ConversationUser {
|
|
3033
|
-
export interface Company {
|
|
3034
|
-
id: string;
|
|
3035
|
-
|
|
3036
|
-
name?: string;
|
|
3037
|
-
}
|
|
3038
|
-
}
|
|
3039
|
-
|
|
3040
3065
|
/**
|
|
3041
3066
|
* Reference to the conversation part that best matched the search query (search
|
|
3042
3067
|
* mode only)
|
|
3043
3068
|
*/
|
|
3044
|
-
export interface MatchingPart {
|
|
3045
|
-
/**
|
|
3046
|
-
* Conversation part id
|
|
3047
|
-
*/
|
|
3048
|
-
id: string;
|
|
3049
|
-
|
|
3050
|
-
/**
|
|
3051
|
-
* ISO timestamp when the matching part was created
|
|
3052
|
-
*/
|
|
3053
|
-
createdAt?: string | null;
|
|
3054
|
-
|
|
3055
|
-
/**
|
|
3056
|
-
* Conversation part type
|
|
3057
|
-
*/
|
|
3058
|
-
partType?: string;
|
|
3059
|
-
}
|
|
3060
|
-
|
|
3061
|
-
/**
|
|
3062
|
-
* The customer or lead the conversation is with. Use this for the row identity;
|
|
3063
|
-
* use `matchingPartAuthor` if you specifically want the message author.
|
|
3064
|
-
*/
|
|
3065
|
-
export interface MatchingPartAuthor {
|
|
3066
|
-
/**
|
|
3067
|
-
* Author id
|
|
3068
|
-
*/
|
|
3069
|
-
id: string;
|
|
3070
|
-
|
|
3071
|
-
/**
|
|
3072
|
-
* Author type
|
|
3073
|
-
*/
|
|
3074
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'guest' | 'integration';
|
|
3075
|
-
|
|
3076
|
-
/**
|
|
3077
|
-
* Companies the author belongs to (customers only)
|
|
3078
|
-
*/
|
|
3079
|
-
companies?: Array<MatchingPartAuthor.Company>;
|
|
3080
|
-
|
|
3081
|
-
/**
|
|
3082
|
-
* Email when known
|
|
3083
|
-
*/
|
|
3084
|
-
email?: string | null;
|
|
3085
|
-
|
|
3086
|
-
/**
|
|
3087
|
-
* Display name when known
|
|
3088
|
-
*/
|
|
3089
|
-
name?: string | null;
|
|
3090
|
-
|
|
3091
|
-
/**
|
|
3092
|
-
* Profile picture URL when known
|
|
3093
|
-
*/
|
|
3094
|
-
profilePicture?: string | null;
|
|
3095
|
-
}
|
|
3096
|
-
|
|
3097
|
-
export namespace MatchingPartAuthor {
|
|
3098
|
-
export interface Company {
|
|
3099
|
-
id: string;
|
|
3100
|
-
|
|
3101
|
-
name?: string;
|
|
3102
|
-
}
|
|
3103
|
-
}
|
|
3104
|
-
|
|
3105
|
-
export interface Source {
|
|
3106
|
-
/**
|
|
3107
|
-
* Body of the initial message as HTML with signed image URLs
|
|
3108
|
-
*/
|
|
3109
|
-
bodyHtml: string;
|
|
3110
|
-
|
|
3111
|
-
/**
|
|
3112
|
-
* Body of the initial message as markdown
|
|
3113
|
-
*/
|
|
3114
|
-
bodyMarkdown: string;
|
|
3115
|
-
|
|
3116
|
-
/**
|
|
3117
|
-
* Channel through which the conversation was initiated
|
|
3118
|
-
*/
|
|
3119
|
-
channel: 'unknown' | 'desktop' | 'android' | 'ios' | 'email';
|
|
3120
|
-
|
|
3121
|
-
author?: ConversationsAPI.ConversationParticipant;
|
|
3122
|
-
|
|
3069
|
+
export interface MatchingPart {
|
|
3123
3070
|
/**
|
|
3124
|
-
*
|
|
3071
|
+
* Conversation part id
|
|
3125
3072
|
*/
|
|
3126
|
-
|
|
3073
|
+
id: string;
|
|
3127
3074
|
|
|
3128
3075
|
/**
|
|
3129
|
-
*
|
|
3076
|
+
* ISO timestamp when the matching part was created
|
|
3130
3077
|
*/
|
|
3131
|
-
|
|
3078
|
+
createdAt?: string | null;
|
|
3132
3079
|
|
|
3133
3080
|
/**
|
|
3134
|
-
*
|
|
3081
|
+
* Conversation part type
|
|
3135
3082
|
*/
|
|
3136
|
-
|
|
3083
|
+
partType?: string;
|
|
3137
3084
|
}
|
|
3138
3085
|
|
|
3139
3086
|
export interface SurroundingConversationPart {
|
|
@@ -3156,7 +3103,7 @@ export namespace ConversationSearchResponse {
|
|
|
3156
3103
|
* The customer or lead the conversation is with. Use this for the row identity;
|
|
3157
3104
|
* use `matchingPartAuthor` if you specifically want the message author.
|
|
3158
3105
|
*/
|
|
3159
|
-
author?:
|
|
3106
|
+
author?: ConversationsAPI.SearchMatchingPartAuthor | null;
|
|
3160
3107
|
|
|
3161
3108
|
/**
|
|
3162
3109
|
* ISO timestamp when the part was created
|
|
@@ -3168,53 +3115,28 @@ export namespace ConversationSearchResponse {
|
|
|
3168
3115
|
*/
|
|
3169
3116
|
partType?: string;
|
|
3170
3117
|
}
|
|
3118
|
+
}
|
|
3119
|
+
}
|
|
3171
3120
|
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
* Author id
|
|
3180
|
-
*/
|
|
3181
|
-
id: string;
|
|
3182
|
-
|
|
3183
|
-
/**
|
|
3184
|
-
* Author type
|
|
3185
|
-
*/
|
|
3186
|
-
type: 'admin' | 'customer' | 'lead' | 'bot' | 'guest' | 'integration';
|
|
3187
|
-
|
|
3188
|
-
/**
|
|
3189
|
-
* Companies the author belongs to (customers only)
|
|
3190
|
-
*/
|
|
3191
|
-
companies?: Array<Author.Company>;
|
|
3192
|
-
|
|
3193
|
-
/**
|
|
3194
|
-
* Email when known
|
|
3195
|
-
*/
|
|
3196
|
-
email?: string | null;
|
|
3197
|
-
|
|
3198
|
-
/**
|
|
3199
|
-
* Display name when known
|
|
3200
|
-
*/
|
|
3201
|
-
name?: string | null;
|
|
3202
|
-
|
|
3203
|
-
/**
|
|
3204
|
-
* Profile picture URL when known
|
|
3205
|
-
*/
|
|
3206
|
-
profilePicture?: string | null;
|
|
3207
|
-
}
|
|
3121
|
+
export interface ConversationListParams extends CursorPageParams {
|
|
3122
|
+
/**
|
|
3123
|
+
* Query param: Comma-separated optional expansions. Use
|
|
3124
|
+
* `customAttributeDefinitions` to return `customAttributeValues` with names and
|
|
3125
|
+
* types alongside ID-keyed `customAttributes`.
|
|
3126
|
+
*/
|
|
3127
|
+
include?: string | Array<string>;
|
|
3208
3128
|
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3129
|
+
/**
|
|
3130
|
+
* Query param: Filter conversations by one or more tag IDs using a comma-separated
|
|
3131
|
+
* list. Conversations must contain all provided tags.
|
|
3132
|
+
*/
|
|
3133
|
+
tagIds?: string | Array<string>;
|
|
3212
3134
|
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3135
|
+
/**
|
|
3136
|
+
* Header param: API version for this request. Defaults to your organization's
|
|
3137
|
+
* configured API version if not specified.
|
|
3138
|
+
*/
|
|
3139
|
+
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3218
3140
|
}
|
|
3219
3141
|
|
|
3220
3142
|
export interface ConversationCreateParams {
|
|
@@ -3317,6 +3239,21 @@ export namespace ConversationCreateParams {
|
|
|
3317
3239
|
}
|
|
3318
3240
|
|
|
3319
3241
|
export interface ConversationRetrieveParams {
|
|
3242
|
+
/**
|
|
3243
|
+
* Query param: Comma-separated optional expansions. Use
|
|
3244
|
+
* `customAttributeDefinitions` to return `customAttributeValues` with names and
|
|
3245
|
+
* types alongside ID-keyed `customAttributes`.
|
|
3246
|
+
*/
|
|
3247
|
+
include?: string | Array<string>;
|
|
3248
|
+
|
|
3249
|
+
/**
|
|
3250
|
+
* Header param: API version for this request. Defaults to your organization's
|
|
3251
|
+
* configured API version if not specified.
|
|
3252
|
+
*/
|
|
3253
|
+
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3254
|
+
}
|
|
3255
|
+
|
|
3256
|
+
export interface ConversationDeleteParams {
|
|
3320
3257
|
/**
|
|
3321
3258
|
* API version for this request. Defaults to your organization's configured API
|
|
3322
3259
|
* version if not specified.
|
|
@@ -3338,8 +3275,9 @@ export interface ConversationUpdateParams {
|
|
|
3338
3275
|
adminAssigneeId?: string | null;
|
|
3339
3276
|
|
|
3340
3277
|
/**
|
|
3341
|
-
* Body param: Custom attributes to set on the conversation
|
|
3342
|
-
*
|
|
3278
|
+
* Body param: Custom attributes to set on the conversation, keyed by conversation
|
|
3279
|
+
* custom attribute ID. Use the custom attribute definitions for your organization
|
|
3280
|
+
* to map IDs to display names.
|
|
3343
3281
|
*/
|
|
3344
3282
|
customAttributes?: { [key: string]: unknown };
|
|
3345
3283
|
|
|
@@ -3407,96 +3345,6 @@ export namespace ConversationUpdateParams {
|
|
|
3407
3345
|
}
|
|
3408
3346
|
}
|
|
3409
3347
|
|
|
3410
|
-
export interface ConversationListParams extends CursorPageParams {
|
|
3411
|
-
/**
|
|
3412
|
-
* Query param: Filter conversations by one or more tag IDs using a comma-separated
|
|
3413
|
-
* list. Conversations must contain all provided tags.
|
|
3414
|
-
*/
|
|
3415
|
-
tagIds?: string | Array<string>;
|
|
3416
|
-
|
|
3417
|
-
/**
|
|
3418
|
-
* Header param: API version for this request. Defaults to your organization's
|
|
3419
|
-
* configured API version if not specified.
|
|
3420
|
-
*/
|
|
3421
|
-
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3422
|
-
}
|
|
3423
|
-
|
|
3424
|
-
export interface ConversationDeleteParams {
|
|
3425
|
-
/**
|
|
3426
|
-
* API version for this request. Defaults to your organization's configured API
|
|
3427
|
-
* version if not specified.
|
|
3428
|
-
*/
|
|
3429
|
-
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3430
|
-
}
|
|
3431
|
-
|
|
3432
|
-
export interface ConversationAttachTagParams {
|
|
3433
|
-
/**
|
|
3434
|
-
* Body param: Required admin ID performing this tag attachment. Must be a member
|
|
3435
|
-
* of the organization so the mutation can be attributed to a real admin actor.
|
|
3436
|
-
*/
|
|
3437
|
-
actingAdminId: string;
|
|
3438
|
-
|
|
3439
|
-
/**
|
|
3440
|
-
* Body param: The Featurebase tag ID to attach to the conversation.
|
|
3441
|
-
*/
|
|
3442
|
-
tagId: string;
|
|
3443
|
-
|
|
3444
|
-
/**
|
|
3445
|
-
* Header param: API version for this request. Defaults to your organization's
|
|
3446
|
-
* configured API version if not specified.
|
|
3447
|
-
*/
|
|
3448
|
-
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3449
|
-
}
|
|
3450
|
-
|
|
3451
|
-
export interface ConversationDetachTagParams {
|
|
3452
|
-
/**
|
|
3453
|
-
* Path param: Conversation ID (short ID)
|
|
3454
|
-
*/
|
|
3455
|
-
id: string;
|
|
3456
|
-
|
|
3457
|
-
/**
|
|
3458
|
-
* Body param: Required admin ID performing this tag removal. Must be a member of
|
|
3459
|
-
* the organization so the mutation can be attributed to a real admin actor.
|
|
3460
|
-
*/
|
|
3461
|
-
actingAdminId: string;
|
|
3462
|
-
|
|
3463
|
-
/**
|
|
3464
|
-
* Header param: API version for this request. Defaults to your organization's
|
|
3465
|
-
* configured API version if not specified.
|
|
3466
|
-
*/
|
|
3467
|
-
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3468
|
-
}
|
|
3469
|
-
|
|
3470
|
-
export interface ConversationRedactParams {
|
|
3471
|
-
/**
|
|
3472
|
-
* Body param: The conversation short ID that contains the part to redact
|
|
3473
|
-
*/
|
|
3474
|
-
conversationId: string;
|
|
3475
|
-
|
|
3476
|
-
/**
|
|
3477
|
-
* Body param: The conversation part short ID to redact
|
|
3478
|
-
*/
|
|
3479
|
-
conversationPartId: string;
|
|
3480
|
-
|
|
3481
|
-
/**
|
|
3482
|
-
* Body param: The type of item to redact. Currently only "conversation_part" is
|
|
3483
|
-
* supported.
|
|
3484
|
-
*/
|
|
3485
|
-
type: 'conversation_part';
|
|
3486
|
-
|
|
3487
|
-
/**
|
|
3488
|
-
* Body param: The admin ID performing this action. If not provided, changes are
|
|
3489
|
-
* attributed to the system bot user.
|
|
3490
|
-
*/
|
|
3491
|
-
actingAdminId?: string;
|
|
3492
|
-
|
|
3493
|
-
/**
|
|
3494
|
-
* Header param: API version for this request. Defaults to your organization's
|
|
3495
|
-
* configured API version if not specified.
|
|
3496
|
-
*/
|
|
3497
|
-
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3498
|
-
}
|
|
3499
|
-
|
|
3500
3348
|
export type ConversationReplyParams =
|
|
3501
3349
|
| ConversationReplyParams.ContactReplyBody
|
|
3502
3350
|
| ConversationReplyParams.AdminReplyBody;
|
|
@@ -3581,6 +3429,74 @@ export declare namespace ConversationReplyParams {
|
|
|
3581
3429
|
}
|
|
3582
3430
|
}
|
|
3583
3431
|
|
|
3432
|
+
export interface ConversationRedactParams {
|
|
3433
|
+
/**
|
|
3434
|
+
* Body param: The conversation short ID that contains the part to redact
|
|
3435
|
+
*/
|
|
3436
|
+
conversationId: string;
|
|
3437
|
+
|
|
3438
|
+
/**
|
|
3439
|
+
* Body param: The conversation part short ID to redact
|
|
3440
|
+
*/
|
|
3441
|
+
conversationPartId: string;
|
|
3442
|
+
|
|
3443
|
+
/**
|
|
3444
|
+
* Body param: The type of item to redact. Currently only "conversation_part" is
|
|
3445
|
+
* supported.
|
|
3446
|
+
*/
|
|
3447
|
+
type: 'conversation_part';
|
|
3448
|
+
|
|
3449
|
+
/**
|
|
3450
|
+
* Body param: The admin ID performing this action. If not provided, changes are
|
|
3451
|
+
* attributed to the system bot user.
|
|
3452
|
+
*/
|
|
3453
|
+
actingAdminId?: string;
|
|
3454
|
+
|
|
3455
|
+
/**
|
|
3456
|
+
* Header param: API version for this request. Defaults to your organization's
|
|
3457
|
+
* configured API version if not specified.
|
|
3458
|
+
*/
|
|
3459
|
+
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3460
|
+
}
|
|
3461
|
+
|
|
3462
|
+
export interface ConversationAttachTagParams {
|
|
3463
|
+
/**
|
|
3464
|
+
* Body param: Required admin ID performing this tag attachment. Must be a member
|
|
3465
|
+
* of the organization so the mutation can be attributed to a real admin actor.
|
|
3466
|
+
*/
|
|
3467
|
+
actingAdminId: string;
|
|
3468
|
+
|
|
3469
|
+
/**
|
|
3470
|
+
* Body param: The Featurebase tag ID to attach to the conversation.
|
|
3471
|
+
*/
|
|
3472
|
+
tagId: string;
|
|
3473
|
+
|
|
3474
|
+
/**
|
|
3475
|
+
* Header param: API version for this request. Defaults to your organization's
|
|
3476
|
+
* configured API version if not specified.
|
|
3477
|
+
*/
|
|
3478
|
+
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3479
|
+
}
|
|
3480
|
+
|
|
3481
|
+
export interface ConversationDetachTagParams {
|
|
3482
|
+
/**
|
|
3483
|
+
* Path param: Conversation ID (short ID)
|
|
3484
|
+
*/
|
|
3485
|
+
id: string;
|
|
3486
|
+
|
|
3487
|
+
/**
|
|
3488
|
+
* Body param: Required admin ID performing this tag removal. Must be a member of
|
|
3489
|
+
* the organization so the mutation can be attributed to a real admin actor.
|
|
3490
|
+
*/
|
|
3491
|
+
actingAdminId: string;
|
|
3492
|
+
|
|
3493
|
+
/**
|
|
3494
|
+
* Header param: API version for this request. Defaults to your organization's
|
|
3495
|
+
* configured API version if not specified.
|
|
3496
|
+
*/
|
|
3497
|
+
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3498
|
+
}
|
|
3499
|
+
|
|
3584
3500
|
export interface ConversationSearchParams {
|
|
3585
3501
|
/**
|
|
3586
3502
|
* Body param: An opaque cursor for pagination. Use the nextCursor value from a
|
|
@@ -3588,6 +3504,13 @@ export interface ConversationSearchParams {
|
|
|
3588
3504
|
*/
|
|
3589
3505
|
cursor?: string;
|
|
3590
3506
|
|
|
3507
|
+
/**
|
|
3508
|
+
* Body param: Optional expansions. Use `customAttributeDefinitions` to return
|
|
3509
|
+
* `customAttributeValues` with names and types alongside ID-keyed
|
|
3510
|
+
* `customAttributes`.
|
|
3511
|
+
*/
|
|
3512
|
+
include?: Array<'customAttributeDefinitions'>;
|
|
3513
|
+
|
|
3591
3514
|
/**
|
|
3592
3515
|
* Body param: A limit on the number of objects to be returned, between 1 and 100.
|
|
3593
3516
|
*/
|
|
@@ -3595,10 +3518,12 @@ export interface ConversationSearchParams {
|
|
|
3595
3518
|
|
|
3596
3519
|
/**
|
|
3597
3520
|
* Body param: Structured filter AST. Either a single filter clause or one
|
|
3598
|
-
* top-level AND group. Use this for filtering by `state`, `
|
|
3599
|
-
* `
|
|
3521
|
+
* top-level AND group. Use this for filtering by `state`, `tagIds`,
|
|
3522
|
+
* `adminAssigneeId`, `customAttributes.<attributeId>`, etc. (Legacy snake_case
|
|
3523
|
+
* names are accepted for back-compat — see the OpenAPI route description for the
|
|
3524
|
+
* full alias map.)
|
|
3600
3525
|
*/
|
|
3601
|
-
query?:
|
|
3526
|
+
query?: PostsAPI.SearchFilter | PostsAPI.SearchFilterGroup;
|
|
3602
3527
|
|
|
3603
3528
|
/**
|
|
3604
3529
|
* Body param: Plain-text full-text search across conversation messages.
|
|
@@ -3608,11 +3533,12 @@ export interface ConversationSearchParams {
|
|
|
3608
3533
|
|
|
3609
3534
|
/**
|
|
3610
3535
|
* Body param: Result ordering. When omitted, filter mode defaults to
|
|
3611
|
-
*
|
|
3536
|
+
* `lastActivityAt:desc` and search mode defaults to relevance ranking. When set,
|
|
3612
3537
|
* both modes order by lastActivityAt in the requested direction (so you can ask a
|
|
3613
|
-
* search query to return its hits in chronological order).
|
|
3538
|
+
* search query to return its hits in chronological order). Snake_case
|
|
3539
|
+
* `last_activity_at:*` is accepted for back-compat — prefer camelCase in new code.
|
|
3614
3540
|
*/
|
|
3615
|
-
sort?: 'last_activity_at:desc' | 'last_activity_at:asc';
|
|
3541
|
+
sort?: 'lastActivityAt:desc' | 'lastActivityAt:asc' | 'last_activity_at:desc' | 'last_activity_at:asc';
|
|
3616
3542
|
|
|
3617
3543
|
/**
|
|
3618
3544
|
* Header param: API version for this request. Defaults to your organization's
|
|
@@ -3621,83 +3547,38 @@ export interface ConversationSearchParams {
|
|
|
3621
3547
|
'Featurebase-Version'?: '2026-01-01.nova' | '2025-12-12.clover';
|
|
3622
3548
|
}
|
|
3623
3549
|
|
|
3624
|
-
export namespace ConversationSearchParams {
|
|
3625
|
-
export interface SearchFilter {
|
|
3626
|
-
/**
|
|
3627
|
-
* Field name to filter on (e.g. `state`, `tag_ids`, `created_at`)
|
|
3628
|
-
*/
|
|
3629
|
-
field: string;
|
|
3630
|
-
|
|
3631
|
-
/**
|
|
3632
|
-
* Comparison operator
|
|
3633
|
-
*/
|
|
3634
|
-
operator: '=' | '!=' | 'IN' | 'NIN' | '>' | '<' | '>=' | '<=' | '~' | '!~' | '^' | '$';
|
|
3635
|
-
|
|
3636
|
-
/**
|
|
3637
|
-
* Value to compare against (primitive or array of primitives)
|
|
3638
|
-
*/
|
|
3639
|
-
value: string | number | boolean | Array<string | number> | null;
|
|
3640
|
-
}
|
|
3641
|
-
|
|
3642
|
-
export interface SearchFilterGroup {
|
|
3643
|
-
/**
|
|
3644
|
-
* Group operator: AND (all match) or OR (any match)
|
|
3645
|
-
*/
|
|
3646
|
-
operator: 'AND' | 'OR';
|
|
3647
|
-
|
|
3648
|
-
/**
|
|
3649
|
-
* Array of filter clauses (1-15 entries)
|
|
3650
|
-
*/
|
|
3651
|
-
value: Array<SearchFilterGroup.Value>;
|
|
3652
|
-
}
|
|
3653
|
-
|
|
3654
|
-
export namespace SearchFilterGroup {
|
|
3655
|
-
export interface Value {
|
|
3656
|
-
/**
|
|
3657
|
-
* Field name to filter on (e.g. `state`, `tag_ids`, `created_at`)
|
|
3658
|
-
*/
|
|
3659
|
-
field: string;
|
|
3660
|
-
|
|
3661
|
-
/**
|
|
3662
|
-
* Comparison operator
|
|
3663
|
-
*/
|
|
3664
|
-
operator: '=' | '!=' | 'IN' | 'NIN' | '>' | '<' | '>=' | '<=' | '~' | '!~' | '^' | '$';
|
|
3665
|
-
|
|
3666
|
-
/**
|
|
3667
|
-
* Value to compare against (primitive or array of primitives)
|
|
3668
|
-
*/
|
|
3669
|
-
value: string | number | boolean | Array<string | number> | null;
|
|
3670
|
-
}
|
|
3671
|
-
}
|
|
3672
|
-
}
|
|
3673
|
-
|
|
3674
3550
|
Conversations.Participants = Participants;
|
|
3675
3551
|
|
|
3676
3552
|
export declare namespace Conversations {
|
|
3677
3553
|
export {
|
|
3554
|
+
type AttachedConversationTag as AttachedConversationTag,
|
|
3678
3555
|
type Conversation as Conversation,
|
|
3556
|
+
type ConversationAttributeValue as ConversationAttributeValue,
|
|
3679
3557
|
type ConversationPart as ConversationPart,
|
|
3680
3558
|
type ConversationPartAuthor as ConversationPartAuthor,
|
|
3681
3559
|
type ConversationParticipant as ConversationParticipant,
|
|
3682
3560
|
type ConversationTagApplication as ConversationTagApplication,
|
|
3561
|
+
type ConversationTagMutationActor as ConversationTagMutationActor,
|
|
3683
3562
|
type CsatEmailDelivery as CsatEmailDelivery,
|
|
3684
3563
|
type CsatRatedAgent as CsatRatedAgent,
|
|
3564
|
+
type CsatSlackDelivery as CsatSlackDelivery,
|
|
3685
3565
|
type CsatWorkflowLink as CsatWorkflowLink,
|
|
3686
3566
|
type EmailRecipients as EmailRecipients,
|
|
3567
|
+
type MessageSource as MessageSource,
|
|
3568
|
+
type SearchMatchingPartAuthor as SearchMatchingPartAuthor,
|
|
3569
|
+
type SlackMessageDetails as SlackMessageDetails,
|
|
3687
3570
|
type ConversationDeleteResponse as ConversationDeleteResponse,
|
|
3688
|
-
type ConversationAttachTagResponse as ConversationAttachTagResponse,
|
|
3689
|
-
type ConversationDetachTagResponse as ConversationDetachTagResponse,
|
|
3690
3571
|
type ConversationSearchResponse as ConversationSearchResponse,
|
|
3691
3572
|
type ConversationsCursorPage as ConversationsCursorPage,
|
|
3573
|
+
type ConversationListParams as ConversationListParams,
|
|
3692
3574
|
type ConversationCreateParams as ConversationCreateParams,
|
|
3693
3575
|
type ConversationRetrieveParams as ConversationRetrieveParams,
|
|
3694
|
-
type ConversationUpdateParams as ConversationUpdateParams,
|
|
3695
|
-
type ConversationListParams as ConversationListParams,
|
|
3696
3576
|
type ConversationDeleteParams as ConversationDeleteParams,
|
|
3577
|
+
type ConversationUpdateParams as ConversationUpdateParams,
|
|
3578
|
+
type ConversationReplyParams as ConversationReplyParams,
|
|
3579
|
+
type ConversationRedactParams as ConversationRedactParams,
|
|
3697
3580
|
type ConversationAttachTagParams as ConversationAttachTagParams,
|
|
3698
3581
|
type ConversationDetachTagParams as ConversationDetachTagParams,
|
|
3699
|
-
type ConversationRedactParams as ConversationRedactParams,
|
|
3700
|
-
type ConversationReplyParams as ConversationReplyParams,
|
|
3701
3582
|
type ConversationSearchParams as ConversationSearchParams,
|
|
3702
3583
|
};
|
|
3703
3584
|
|