rcs-js 2.0.14 → 2.0.16

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.
Files changed (118) hide show
  1. package/dist/cjs/Client.js +2 -2
  2. package/dist/cjs/api/resources/campaigns/resources/rcs/client/Client.d.ts +6 -12
  3. package/dist/cjs/api/resources/campaigns/resources/rcs/client/Client.js +6 -12
  4. package/dist/cjs/api/resources/campaigns/resources/rcs/client/requests/UpsertRcsCampaignParams.d.ts +12 -32
  5. package/dist/cjs/api/resources/messages/resources/rcs/client/Client.d.ts +0 -10
  6. package/dist/cjs/api/resources/messages/resources/rcs/client/Client.js +0 -10
  7. package/dist/cjs/api/resources/phoneNumbers/client/Client.d.ts +0 -3
  8. package/dist/cjs/api/resources/phoneNumbers/client/Client.js +0 -5
  9. package/dist/cjs/api/resources/phoneNumbers/resources/index.d.ts +0 -1
  10. package/dist/cjs/api/resources/phoneNumbers/resources/index.js +1 -2
  11. package/dist/cjs/api/resources/webhooks/client/Client.d.ts +43 -0
  12. package/dist/cjs/api/resources/webhooks/client/Client.js +157 -0
  13. package/dist/cjs/api/resources/webhooks/client/requests/AttachWebhookParams.d.ts +23 -0
  14. package/dist/cjs/api/resources/webhooks/client/requests/DetachWebhookParams.d.ts +13 -0
  15. package/dist/cjs/api/resources/webhooks/client/requests/index.d.ts +2 -0
  16. package/dist/cjs/api/types/AttachWebhookResult.d.ts +22 -0
  17. package/dist/cjs/api/types/BaseRichMessage.d.ts +18 -1
  18. package/dist/cjs/api/types/DetachWebhookResult.d.ts +9 -0
  19. package/dist/cjs/api/types/ExtendedBrandWithVetting.d.ts +2 -2
  20. package/dist/cjs/api/types/ExtendedRcsCampaign.d.ts +6 -20
  21. package/dist/cjs/api/types/FailedSender.d.ts +6 -0
  22. package/dist/cjs/api/types/FailedSender.js +3 -0
  23. package/dist/cjs/api/types/RcsCampaign.d.ts +6 -20
  24. package/dist/cjs/api/types/RcsCampaignSummary.d.ts +0 -2
  25. package/dist/cjs/api/types/RcsCardsContent.d.ts +1 -1
  26. package/dist/cjs/api/types/RcsMediaContent.d.ts +1 -1
  27. package/dist/cjs/api/types/RcsValidateContent.d.ts +1 -1
  28. package/dist/cjs/api/types/RichCards.d.ts +1 -1
  29. package/dist/cjs/api/types/RichCardsMessage.d.ts +15 -1
  30. package/dist/cjs/api/types/RichMediaMessage.d.ts +1 -1
  31. package/dist/cjs/api/types/RichText.d.ts +1 -1
  32. package/dist/cjs/api/types/{SendRichMessageOptions.d.ts → SendRichMessageOptions4.d.ts} +1 -1
  33. package/dist/cjs/api/types/SendRichMessageOptions4.js +3 -0
  34. package/dist/cjs/api/types/SentRichMessageFallbackMms.d.ts +1 -1
  35. package/dist/cjs/api/types/SentRichMessageFallbackSms.d.ts +1 -1
  36. package/dist/cjs/api/types/SuccessfulConversationUpdate.d.ts +1 -1
  37. package/dist/cjs/api/types/VcardContent.d.ts +1 -1
  38. package/dist/cjs/api/types/WebhookEventEnum.d.ts +3 -2
  39. package/dist/cjs/api/types/WebhookEventEnum.js +3 -2
  40. package/dist/cjs/api/types/index.d.ts +4 -5
  41. package/dist/cjs/api/types/index.js +4 -5
  42. package/dist/cjs/version.d.ts +1 -1
  43. package/dist/cjs/version.js +1 -1
  44. package/dist/esm/Client.mjs +2 -2
  45. package/dist/esm/api/resources/campaigns/resources/rcs/client/Client.d.mts +6 -12
  46. package/dist/esm/api/resources/campaigns/resources/rcs/client/Client.mjs +6 -12
  47. package/dist/esm/api/resources/campaigns/resources/rcs/client/requests/UpsertRcsCampaignParams.d.mts +12 -32
  48. package/dist/esm/api/resources/messages/resources/rcs/client/Client.d.mts +0 -10
  49. package/dist/esm/api/resources/messages/resources/rcs/client/Client.mjs +0 -10
  50. package/dist/esm/api/resources/phoneNumbers/client/Client.d.mts +0 -3
  51. package/dist/esm/api/resources/phoneNumbers/client/Client.mjs +0 -5
  52. package/dist/esm/api/resources/phoneNumbers/resources/index.d.mts +0 -1
  53. package/dist/esm/api/resources/phoneNumbers/resources/index.mjs +0 -1
  54. package/dist/esm/api/resources/webhooks/client/Client.d.mts +43 -0
  55. package/dist/esm/api/resources/webhooks/client/Client.mjs +157 -0
  56. package/dist/esm/api/resources/webhooks/client/requests/AttachWebhookParams.d.mts +23 -0
  57. package/dist/esm/api/resources/webhooks/client/requests/DetachWebhookParams.d.mts +13 -0
  58. package/dist/esm/api/resources/webhooks/client/requests/index.d.mts +2 -0
  59. package/dist/esm/api/types/AttachWebhookResult.d.mts +22 -0
  60. package/dist/esm/api/types/BaseRichMessage.d.mts +18 -1
  61. package/dist/esm/api/types/DetachWebhookResult.d.mts +9 -0
  62. package/dist/esm/api/types/ExtendedBrandWithVetting.d.mts +2 -2
  63. package/dist/esm/api/types/ExtendedRcsCampaign.d.mts +6 -20
  64. package/dist/esm/api/types/FailedSender.d.mts +6 -0
  65. package/dist/esm/api/types/FailedSender.mjs +2 -0
  66. package/dist/esm/api/types/RcsCampaign.d.mts +6 -20
  67. package/dist/esm/api/types/RcsCampaignSummary.d.mts +0 -2
  68. package/dist/esm/api/types/RcsCardsContent.d.mts +1 -1
  69. package/dist/esm/api/types/RcsMediaContent.d.mts +1 -1
  70. package/dist/esm/api/types/RcsValidateContent.d.mts +1 -1
  71. package/dist/esm/api/types/RichCards.d.mts +1 -1
  72. package/dist/esm/api/types/RichCardsMessage.d.mts +15 -1
  73. package/dist/esm/api/types/RichMediaMessage.d.mts +1 -1
  74. package/dist/esm/api/types/RichText.d.mts +1 -1
  75. package/dist/esm/api/types/{SendRichMessageOptions.d.mts → SendRichMessageOptions4.d.mts} +1 -1
  76. package/dist/esm/api/types/SendRichMessageOptions4.mjs +2 -0
  77. package/dist/esm/api/types/SentRichMessageFallbackMms.d.mts +1 -1
  78. package/dist/esm/api/types/SentRichMessageFallbackSms.d.mts +1 -1
  79. package/dist/esm/api/types/SuccessfulConversationUpdate.d.mts +1 -1
  80. package/dist/esm/api/types/VcardContent.d.mts +1 -1
  81. package/dist/esm/api/types/WebhookEventEnum.d.mts +3 -2
  82. package/dist/esm/api/types/WebhookEventEnum.mjs +3 -2
  83. package/dist/esm/api/types/index.d.mts +4 -5
  84. package/dist/esm/api/types/index.mjs +4 -5
  85. package/dist/esm/version.d.mts +1 -1
  86. package/dist/esm/version.mjs +1 -1
  87. package/package.json +1 -1
  88. package/reference.md +143 -182
  89. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/client/Client.d.ts +0 -63
  90. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/client/Client.js +0 -231
  91. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/client/index.d.ts +0 -1
  92. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/client/index.js +0 -2
  93. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/index.d.ts +0 -1
  94. package/dist/cjs/api/resources/phoneNumbers/resources/webhook/index.js +0 -17
  95. package/dist/cjs/api/types/AttachWebhookParams.d.ts +0 -19
  96. package/dist/cjs/api/types/ConfiguredWebhook.d.ts +0 -32
  97. package/dist/cjs/api/types/DetachedWebhookInfo.d.ts +0 -8
  98. package/dist/cjs/api/types/RcsCampaignUseCaseEnum.d.ts +0 -37
  99. package/dist/cjs/api/types/RcsCampaignUseCaseEnum.js +0 -40
  100. package/dist/esm/api/resources/phoneNumbers/resources/webhook/client/Client.d.mts +0 -63
  101. package/dist/esm/api/resources/phoneNumbers/resources/webhook/client/Client.mjs +0 -194
  102. package/dist/esm/api/resources/phoneNumbers/resources/webhook/client/index.d.mts +0 -1
  103. package/dist/esm/api/resources/phoneNumbers/resources/webhook/client/index.mjs +0 -1
  104. package/dist/esm/api/resources/phoneNumbers/resources/webhook/index.d.mts +0 -1
  105. package/dist/esm/api/resources/phoneNumbers/resources/webhook/index.mjs +0 -1
  106. package/dist/esm/api/types/AttachWebhookParams.d.mts +0 -19
  107. package/dist/esm/api/types/ConfiguredWebhook.d.mts +0 -32
  108. package/dist/esm/api/types/DetachedWebhookInfo.d.mts +0 -8
  109. package/dist/esm/api/types/RcsCampaignUseCaseEnum.d.mts +0 -37
  110. package/dist/esm/api/types/RcsCampaignUseCaseEnum.mjs +0 -37
  111. /package/dist/cjs/api/{types → resources/webhooks/client/requests}/AttachWebhookParams.js +0 -0
  112. /package/dist/cjs/api/{types/ConfiguredWebhook.js → resources/webhooks/client/requests/DetachWebhookParams.js} +0 -0
  113. /package/dist/cjs/api/types/{DetachedWebhookInfo.js → AttachWebhookResult.js} +0 -0
  114. /package/dist/cjs/api/types/{SendRichMessageOptions.js → DetachWebhookResult.js} +0 -0
  115. /package/dist/esm/api/{types → resources/webhooks/client/requests}/AttachWebhookParams.mjs +0 -0
  116. /package/dist/esm/api/{types/ConfiguredWebhook.mjs → resources/webhooks/client/requests/DetachWebhookParams.mjs} +0 -0
  117. /package/dist/esm/api/types/{DetachedWebhookInfo.mjs → AttachWebhookResult.mjs} +0 -0
  118. /package/dist/esm/api/types/{SendRichMessageOptions.mjs → DetachWebhookResult.mjs} +0 -0
@@ -53,8 +53,8 @@ class PinnacleClient {
53
53
  this._options = Object.assign(Object.assign({}, _options), { logging: core.logging.createLogger(_options === null || _options === void 0 ? void 0 : _options.logging), headers: (0, headers_js_1.mergeHeaders)({
54
54
  "X-Fern-Language": "JavaScript",
55
55
  "X-Fern-SDK-Name": "rcs-js",
56
- "X-Fern-SDK-Version": "2.0.14",
57
- "User-Agent": "rcs-js/2.0.14",
56
+ "X-Fern-SDK-Version": "2.0.16",
57
+ "User-Agent": "rcs-js/2.0.16",
58
58
  "X-Fern-Runtime": core.RUNTIME.type,
59
59
  "X-Fern-Runtime-Version": core.RUNTIME.version,
60
60
  }, _options === null || _options === void 0 ? void 0 : _options.headers) });
@@ -109,16 +109,13 @@ export declare class Rcs {
109
109
  * campaignId: "rcs_1234567890",
110
110
  * expectedAgentResponses: ["Here are the things I can help you with.", "I can assist you with booking an appointment, or you may choose to book manually.", "Here are the available times to connect with a representative tomorrow.", "Your appointment has been scheduled."],
111
111
  * links: {
112
- * privacyPolicy: "https://www.trypinnacle.app/privacy",
113
- * termsOfService: "https://www.trypinnacle.app/terms"
112
+ * privacyPolicy: "\u201Chttps://www.trypinnacle.app/privacy\u201D",
113
+ * termsOfService: "\u201Chttps://www.trypinnacle.app/terms\u201D"
114
114
  * },
115
- * useCase: {
116
- * behavior: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
117
- * value: "OTHER"
118
- * },
119
- * optInTermsAndConditions: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
120
- * messagingType: "MULTI_USE",
121
- * carrierDescription: "Demonstrate the power of RCS to medium and large companies already sending massive SMS/MMS volumes through our platform. These clients send conversational messages in industries such as commerce, appointments, and customer support.",
115
+ * useCaseDescription: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
116
+ * messagingType: "OTP",
117
+ * ctaMedia: "\u201Chttps://www.pinnacle.sh/send\u201D",
118
+ * optInMethod: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
122
119
  * keywords: {
123
120
  * HELP: {
124
121
  * message: "Email founders@trypinnacle.app for support.",
@@ -137,9 +134,6 @@ export declare class Rcs {
137
134
  * monthlyWebsite: 10000,
138
135
  * monthlyRcsEstimate: 10000
139
136
  * },
140
- * agentTriggers: "The agent sends the first message when the user subscribes to Pinnacle. Messages are based on user actions such as pressing suggestion buttons. External triggers such as reminders can be setup by users in advance for a later time.",
141
- * interactionDescription: "The agent's primary interaction will be customer service \u2014 helping users with questions, troubleshooting issues, and providing quick assistance through chat. Other interactions include appointment management and sending notifications to the user.",
142
- * isConversational: true,
143
137
  * ctaLanguage: "By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.",
144
138
  * demoTrigger: "Text \"START\" to trigger the flow."
145
139
  * })
@@ -326,16 +326,13 @@ class Rcs {
326
326
  * campaignId: "rcs_1234567890",
327
327
  * expectedAgentResponses: ["Here are the things I can help you with.", "I can assist you with booking an appointment, or you may choose to book manually.", "Here are the available times to connect with a representative tomorrow.", "Your appointment has been scheduled."],
328
328
  * links: {
329
- * privacyPolicy: "https://www.trypinnacle.app/privacy",
330
- * termsOfService: "https://www.trypinnacle.app/terms"
329
+ * privacyPolicy: "\u201Chttps://www.trypinnacle.app/privacy\u201D",
330
+ * termsOfService: "\u201Chttps://www.trypinnacle.app/terms\u201D"
331
331
  * },
332
- * useCase: {
333
- * behavior: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
334
- * value: "OTHER"
335
- * },
336
- * optInTermsAndConditions: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
337
- * messagingType: "MULTI_USE",
338
- * carrierDescription: "Demonstrate the power of RCS to medium and large companies already sending massive SMS/MMS volumes through our platform. These clients send conversational messages in industries such as commerce, appointments, and customer support.",
332
+ * useCaseDescription: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
333
+ * messagingType: "OTP",
334
+ * ctaMedia: "\u201Chttps://www.pinnacle.sh/send\u201D",
335
+ * optInMethod: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
339
336
  * keywords: {
340
337
  * HELP: {
341
338
  * message: "Email founders@trypinnacle.app for support.",
@@ -354,9 +351,6 @@ class Rcs {
354
351
  * monthlyWebsite: 10000,
355
352
  * monthlyRcsEstimate: 10000
356
353
  * },
357
- * agentTriggers: "The agent sends the first message when the user subscribes to Pinnacle. Messages are based on user actions such as pressing suggestion buttons. External triggers such as reminders can be setup by users in advance for a later time.",
358
- * interactionDescription: "The agent's primary interaction will be customer service \u2014 helping users with questions, troubleshooting issues, and providing quick assistance through chat. Other interactions include appointment management and sending notifications to the user.",
359
- * isConversational: true,
360
354
  * ctaLanguage: "By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.",
361
355
  * demoTrigger: "Text \"START\" to trigger the flow."
362
356
  * })
@@ -25,16 +25,13 @@ import type * as Pinnacle from "../../../../../../index.js";
25
25
  * campaignId: "rcs_1234567890",
26
26
  * expectedAgentResponses: ["Here are the things I can help you with.", "I can assist you with booking an appointment, or you may choose to book manually.", "Here are the available times to connect with a representative tomorrow.", "Your appointment has been scheduled."],
27
27
  * links: {
28
- * privacyPolicy: "https://www.trypinnacle.app/privacy",
29
- * termsOfService: "https://www.trypinnacle.app/terms"
28
+ * privacyPolicy: "\u201Chttps://www.trypinnacle.app/privacy\u201D",
29
+ * termsOfService: "\u201Chttps://www.trypinnacle.app/terms\u201D"
30
30
  * },
31
- * useCase: {
32
- * behavior: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
33
- * value: "OTHER"
34
- * },
35
- * optInTermsAndConditions: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
36
- * messagingType: "MULTI_USE",
37
- * carrierDescription: "Demonstrate the power of RCS to medium and large companies already sending massive SMS/MMS volumes through our platform. These clients send conversational messages in industries such as commerce, appointments, and customer support.",
31
+ * useCaseDescription: "Pinnacle is a developer-focused RCS assistant that helps teams design, test, and optimize rich messaging experiences across SMS, MMS, and RCS. The agent acts as both an \u201Conboarding guide\u201D for new customers and a \u201Cbest-practices coach\u201D for existing teams exploring higher-value RCS workflows like rich cards, carousels, and suggested actions.<br>\nThe agent delivers a mix of operational updates and educational content (2\u20136 messages/month). Content includes important platform notices (e.g., deliverability or throughput changes), implementation tips with sample RCS templates, and personalized recommendations on how to upgrade existing SMS campaigns into richer, higher-converting RCS conversations.\n",
32
+ * messagingType: "OTP",
33
+ * ctaMedia: "\u201Chttps://www.pinnacle.sh/send\u201D",
34
+ * optInMethod: "We ensure consent through an explicit opt-in process that follows 10DLC best practices.Users must agree to receive messages from Pinnacle before the agent sends them any messages.<br>\nUsers agree to these messages by signing an opt-in paper form that they can be found online at https://www.pinnacle.sh/opt-in. We only send messages once users have filled out the form and submitted it to us via email or through the dashboard.\n",
38
35
  * keywords: {
39
36
  * HELP: {
40
37
  * message: "Email founders@trypinnacle.app for support.",
@@ -53,9 +50,6 @@ import type * as Pinnacle from "../../../../../../index.js";
53
50
  * monthlyWebsite: 10000,
54
51
  * monthlyRcsEstimate: 10000
55
52
  * },
56
- * agentTriggers: "The agent sends the first message when the user subscribes to Pinnacle. Messages are based on user actions such as pressing suggestion buttons. External triggers such as reminders can be setup by users in advance for a later time.",
57
- * interactionDescription: "The agent's primary interaction will be customer service \u2014 helping users with questions, troubleshooting issues, and providing quick assistance through chat. Other interactions include appointment management and sending notifications to the user.",
58
- * isConversational: true,
59
53
  * ctaLanguage: "By checking this box and submitting this form, you consent to receive transactional text messages for support, appointment, and reminder messages from Pinnacle Software Development Inc. Reply STOP to opt out. Reply HELP for help. Standard message and data rates may apply. Message frequency may vary. View our Terms and Conditions at https://www.pinnacle.sh/terms. View our Privacy Policy at https://www.pinnacle.sh/privacy.",
60
54
  * demoTrigger: "Text \"START\" to trigger the flow."
61
55
  * }
@@ -74,21 +68,15 @@ export interface UpsertRcsCampaignParams {
74
68
  expectedAgentResponses?: string[];
75
69
  /** Legal documentation links. */
76
70
  links?: UpsertRcsCampaignParams.Links;
77
- /** Use case classification for the campaign. */
78
- useCase?: UpsertRcsCampaignParams.UseCase;
79
- /** Details on how opt-in is acquired. If it is done through a website or app, provide the link. See the [Opt-In Terms and Conditions](/guides/campaigns/rcs-compliance#opt-in-terms-and-conditions) section for requirements. */
80
- optInTermsAndConditions?: string;
71
+ /** Detailed summary of what the brand is and how this agent will be used. See the [Use Case Behavior](/guides/campaigns/rcs-compliance#use-case-behavior) section for requirements. */
72
+ useCaseDescription?: string;
81
73
  messagingType?: Pinnacle.RcsMessagingTypeEnum;
82
- /** Description of the agent's purpose, shown to carriers for approval. See the [Carrier Description](/guides/campaigns/rcs-compliance#carrier-description) section for requirements. */
83
- carrierDescription?: string;
74
+ /** URL to the opt-in form or a URL to a screenshot of the opt-in CTA. */
75
+ ctaMedia?: string;
76
+ /** Details on how opt-in is acquired. If it is done through a website or app, provide the link. See the [Opt-In Method](/guides/campaigns/rcs-compliance#opt-in-method) section for requirements. */
77
+ optInMethod?: string;
84
78
  keywords?: UpsertRcsCampaignParams.Keywords;
85
79
  traffic?: UpsertRcsCampaignParams.Traffic;
86
- /** Explanation of how the agent is triggered. This includes how the first message is delivered, whether messages follow a schedule or triggered by user actions, and any external triggers. See the [Agent Triggers](/guides/campaigns/rcs-compliance#agent-triggers) section for requirements. */
87
- agentTriggers?: string;
88
- /** Description of all agent interactions, including primary and secondary use cases. See the [Interaction Description](/guides/campaigns/rcs-compliance#interaction-description) section for requirements. */
89
- interactionDescription?: string;
90
- /** Whether the agent supports conversational flows or respond to P2A messages from the users. Set to false for one-way messages from agent to user. */
91
- isConversational?: boolean;
92
80
  /** Required text that appears next to the opt-in checkbox for your opt-in form. This checkbox has to be unchecked by default. See the [CTA Language](/guides/campaigns/rcs-compliance#cta-language-opt-in-disclosure) section for requirements. */
93
81
  ctaLanguage?: string;
94
82
  /** Instructions on how an external reviewer can trigger messages and an example flow from the agent. This is usually an inbound text message to the agent that will start a flow of messages between the agent and the user. See the [Demo Trigger](/guides/campaigns/rcs-compliance#demo-trigger) section for requirements. */
@@ -175,14 +163,6 @@ export declare namespace UpsertRcsCampaignParams {
175
163
  /** Terms of service URL. */
176
164
  termsOfService?: string;
177
165
  }
178
- /**
179
- * Use case classification for the campaign.
180
- */
181
- interface UseCase {
182
- /** Detailed summary of what the brand is and how this agent will be used. See the [Use Case Behavior](/guides/campaigns/rcs-compliance#use-case-behavior) section for requirements. */
183
- behavior?: string;
184
- value?: Pinnacle.RcsCampaignUseCaseEnum;
185
- }
186
166
  interface Keywords {
187
167
  HELP?: Keywords.Help;
188
168
  OPT_IN?: Keywords.OptIn;
@@ -28,11 +28,6 @@ export declare class Rcs {
28
28
  *
29
29
  * @example
30
30
  * await client.messages.rcs.send({
31
- * quickReplies: [{
32
- * type: "openUrl",
33
- * payload: "payload",
34
- * title: "title"
35
- * }],
36
31
  * text: "text",
37
32
  * from: "from",
38
33
  * to: "to"
@@ -84,11 +79,6 @@ export declare class Rcs {
84
79
  *
85
80
  * @example
86
81
  * await client.messages.rcs.validate({
87
- * quickReplies: [{
88
- * type: "openUrl",
89
- * payload: "payload",
90
- * title: "title"
91
- * }],
92
82
  * text: "text"
93
83
  * })
94
84
  */
@@ -71,11 +71,6 @@ class Rcs {
71
71
  *
72
72
  * @example
73
73
  * await client.messages.rcs.send({
74
- * quickReplies: [{
75
- * type: "openUrl",
76
- * payload: "payload",
77
- * title: "title"
78
- * }],
79
74
  * text: "text",
80
75
  * from: "from",
81
76
  * to: "to"
@@ -254,11 +249,6 @@ class Rcs {
254
249
  *
255
250
  * @example
256
251
  * await client.messages.rcs.validate({
257
- * quickReplies: [{
258
- * type: "openUrl",
259
- * payload: "payload",
260
- * title: "title"
261
- * }],
262
252
  * text: "text"
263
253
  * })
264
254
  */
@@ -2,7 +2,6 @@ import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClie
2
2
  import * as core from "../../../../core/index.js";
3
3
  import * as Pinnacle from "../../../index.js";
4
4
  import { Campaign } from "../resources/campaign/client/Client.js";
5
- import { Webhook } from "../resources/webhook/client/Client.js";
6
5
  export declare namespace PhoneNumbers {
7
6
  interface Options extends BaseClientOptions {
8
7
  }
@@ -11,10 +10,8 @@ export declare namespace PhoneNumbers {
11
10
  }
12
11
  export declare class PhoneNumbers {
13
12
  protected readonly _options: PhoneNumbers.Options;
14
- protected _webhook: Webhook | undefined;
15
13
  protected _campaign: Campaign | undefined;
16
14
  constructor(_options: PhoneNumbers.Options);
17
- get webhook(): Webhook;
18
15
  get campaign(): Campaign;
19
16
  /**
20
17
  * Search for available phone numbers that match your exact criteria.
@@ -50,15 +50,10 @@ const environments = __importStar(require("../../../../environments.js"));
50
50
  const errors = __importStar(require("../../../../errors/index.js"));
51
51
  const Pinnacle = __importStar(require("../../../index.js"));
52
52
  const Client_js_1 = require("../resources/campaign/client/Client.js");
53
- const Client_js_2 = require("../resources/webhook/client/Client.js");
54
53
  class PhoneNumbers {
55
54
  constructor(_options) {
56
55
  this._options = _options;
57
56
  }
58
- get webhook() {
59
- var _a;
60
- return ((_a = this._webhook) !== null && _a !== void 0 ? _a : (this._webhook = new Client_js_2.Webhook(this._options)));
61
- }
62
57
  get campaign() {
63
58
  var _a;
64
59
  return ((_a = this._campaign) !== null && _a !== void 0 ? _a : (this._campaign = new Client_js_1.Campaign(this._options)));
@@ -1,3 +1,2 @@
1
1
  export * from "./campaign/client/requests/index.js";
2
2
  export * as campaign from "./campaign/index.js";
3
- export * as webhook from "./webhook/index.js";
@@ -36,7 +36,6 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  };
37
37
  })();
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.webhook = exports.campaign = void 0;
39
+ exports.campaign = void 0;
40
40
  __exportStar(require("./campaign/client/requests/index.js"), exports);
41
41
  exports.campaign = __importStar(require("./campaign/index.js"));
42
- exports.webhook = __importStar(require("./webhook/index.js"));
@@ -43,5 +43,48 @@ export declare class Webhooks {
43
43
  */
44
44
  list(request?: Pinnacle.ListWebhooksParams, requestOptions?: Webhooks.RequestOptions): core.HttpResponsePromise<Pinnacle.ListWebhooksResponse>;
45
45
  private __list;
46
+ /**
47
+ * Attach a webhook to one or more senders (phone numbers or RCS agent IDs) to receive real-time event notifications. <br>
48
+ *
49
+ * You can attach an existing webhook by providing its ID, or create a new webhook by specifying a name and URL. Supports bulk operations with up to 50 senders per request. <br>
50
+ *
51
+ * Subscriptions are additive — attaching new senders does not remove existing ones. Re-attaching the same sender updates the event type filter without creating duplicates.
52
+ *
53
+ * @param {Pinnacle.AttachWebhookParams} request
54
+ * @param {Webhooks.RequestOptions} requestOptions - Request-specific configuration.
55
+ *
56
+ * @throws {@link Pinnacle.BadRequestError}
57
+ * @throws {@link Pinnacle.UnauthorizedError}
58
+ * @throws {@link Pinnacle.NotFoundError}
59
+ * @throws {@link Pinnacle.InternalServerError}
60
+ *
61
+ * @example
62
+ * await client.webhooks.attach({
63
+ * senders: ["+14155551234", "agent_abc123"]
64
+ * })
65
+ */
66
+ attach(request: Pinnacle.AttachWebhookParams, requestOptions?: Webhooks.RequestOptions): core.HttpResponsePromise<Pinnacle.AttachWebhookResult>;
67
+ private __attach;
68
+ /**
69
+ * Detach a webhook from one or more senders (phone numbers or RCS agent IDs) to stop receiving event notifications. <br>
70
+ *
71
+ * The webhook itself is not deleted and remains available for use with other senders. Works regardless of webhook status. Supports bulk operations with up to 50 senders per request.
72
+ *
73
+ * @param {Pinnacle.DetachWebhookParams} request
74
+ * @param {Webhooks.RequestOptions} requestOptions - Request-specific configuration.
75
+ *
76
+ * @throws {@link Pinnacle.BadRequestError}
77
+ * @throws {@link Pinnacle.UnauthorizedError}
78
+ * @throws {@link Pinnacle.NotFoundError}
79
+ * @throws {@link Pinnacle.InternalServerError}
80
+ *
81
+ * @example
82
+ * await client.webhooks.detach({
83
+ * webhookId: "webhookId",
84
+ * senders: ["+14155551234", "agent_abc123"]
85
+ * })
86
+ */
87
+ detach(request: Pinnacle.DetachWebhookParams, requestOptions?: Webhooks.RequestOptions): core.HttpResponsePromise<Pinnacle.DetachWebhookResult>;
88
+ private __detach;
46
89
  protected _getCustomAuthorizationHeaders(): Promise<Record<string, string | undefined>>;
47
90
  }
@@ -198,6 +198,163 @@ class Webhooks {
198
198
  }
199
199
  });
200
200
  }
201
+ /**
202
+ * Attach a webhook to one or more senders (phone numbers or RCS agent IDs) to receive real-time event notifications. <br>
203
+ *
204
+ * You can attach an existing webhook by providing its ID, or create a new webhook by specifying a name and URL. Supports bulk operations with up to 50 senders per request. <br>
205
+ *
206
+ * Subscriptions are additive — attaching new senders does not remove existing ones. Re-attaching the same sender updates the event type filter without creating duplicates.
207
+ *
208
+ * @param {Pinnacle.AttachWebhookParams} request
209
+ * @param {Webhooks.RequestOptions} requestOptions - Request-specific configuration.
210
+ *
211
+ * @throws {@link Pinnacle.BadRequestError}
212
+ * @throws {@link Pinnacle.UnauthorizedError}
213
+ * @throws {@link Pinnacle.NotFoundError}
214
+ * @throws {@link Pinnacle.InternalServerError}
215
+ *
216
+ * @example
217
+ * await client.webhooks.attach({
218
+ * senders: ["+14155551234", "agent_abc123"]
219
+ * })
220
+ */
221
+ attach(request, requestOptions) {
222
+ return core.HttpResponsePromise.fromPromise(this.__attach(request, requestOptions));
223
+ }
224
+ __attach(request, requestOptions) {
225
+ return __awaiter(this, void 0, void 0, function* () {
226
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
227
+ const _headers = (0, headers_js_1.mergeHeaders)((_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, (0, headers_js_1.mergeOnlyDefinedHeaders)(Object.assign({}, (yield this._getCustomAuthorizationHeaders()))), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
228
+ const _response = yield core.fetcher({
229
+ url: core.url.join((_c = (_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.PinnacleEnvironment.Default, "webhooks/attach"),
230
+ method: "POST",
231
+ headers: _headers,
232
+ contentType: "application/json",
233
+ queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
234
+ requestType: "json",
235
+ body: request,
236
+ timeoutMs: ((_f = (_d = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) !== null && _d !== void 0 ? _d : (_e = this._options) === null || _e === void 0 ? void 0 : _e.timeoutInSeconds) !== null && _f !== void 0 ? _f : 60) * 1000,
237
+ maxRetries: (_g = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries) !== null && _g !== void 0 ? _g : (_h = this._options) === null || _h === void 0 ? void 0 : _h.maxRetries,
238
+ abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
239
+ fetchFn: (_j = this._options) === null || _j === void 0 ? void 0 : _j.fetch,
240
+ logging: this._options.logging,
241
+ });
242
+ if (_response.ok) {
243
+ return { data: _response.body, rawResponse: _response.rawResponse };
244
+ }
245
+ if (_response.error.reason === "status-code") {
246
+ switch (_response.error.statusCode) {
247
+ case 400:
248
+ throw new Pinnacle.BadRequestError(_response.error.body, _response.rawResponse);
249
+ case 401:
250
+ throw new Pinnacle.UnauthorizedError(_response.error.body, _response.rawResponse);
251
+ case 404:
252
+ throw new Pinnacle.NotFoundError(_response.error.body, _response.rawResponse);
253
+ case 500:
254
+ throw new Pinnacle.InternalServerError(_response.error.body, _response.rawResponse);
255
+ default:
256
+ throw new errors.PinnacleError({
257
+ statusCode: _response.error.statusCode,
258
+ body: _response.error.body,
259
+ rawResponse: _response.rawResponse,
260
+ });
261
+ }
262
+ }
263
+ switch (_response.error.reason) {
264
+ case "non-json":
265
+ throw new errors.PinnacleError({
266
+ statusCode: _response.error.statusCode,
267
+ body: _response.error.rawBody,
268
+ rawResponse: _response.rawResponse,
269
+ });
270
+ case "timeout":
271
+ throw new errors.PinnacleTimeoutError("Timeout exceeded when calling POST /webhooks/attach.");
272
+ case "unknown":
273
+ throw new errors.PinnacleError({
274
+ message: _response.error.errorMessage,
275
+ rawResponse: _response.rawResponse,
276
+ });
277
+ }
278
+ });
279
+ }
280
+ /**
281
+ * Detach a webhook from one or more senders (phone numbers or RCS agent IDs) to stop receiving event notifications. <br>
282
+ *
283
+ * The webhook itself is not deleted and remains available for use with other senders. Works regardless of webhook status. Supports bulk operations with up to 50 senders per request.
284
+ *
285
+ * @param {Pinnacle.DetachWebhookParams} request
286
+ * @param {Webhooks.RequestOptions} requestOptions - Request-specific configuration.
287
+ *
288
+ * @throws {@link Pinnacle.BadRequestError}
289
+ * @throws {@link Pinnacle.UnauthorizedError}
290
+ * @throws {@link Pinnacle.NotFoundError}
291
+ * @throws {@link Pinnacle.InternalServerError}
292
+ *
293
+ * @example
294
+ * await client.webhooks.detach({
295
+ * webhookId: "webhookId",
296
+ * senders: ["+14155551234", "agent_abc123"]
297
+ * })
298
+ */
299
+ detach(request, requestOptions) {
300
+ return core.HttpResponsePromise.fromPromise(this.__detach(request, requestOptions));
301
+ }
302
+ __detach(request, requestOptions) {
303
+ return __awaiter(this, void 0, void 0, function* () {
304
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
305
+ const _headers = (0, headers_js_1.mergeHeaders)((_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, (0, headers_js_1.mergeOnlyDefinedHeaders)(Object.assign({}, (yield this._getCustomAuthorizationHeaders()))), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
306
+ const _response = yield core.fetcher({
307
+ url: core.url.join((_c = (_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.PinnacleEnvironment.Default, "webhooks/detach"),
308
+ method: "POST",
309
+ headers: _headers,
310
+ contentType: "application/json",
311
+ queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
312
+ requestType: "json",
313
+ body: request,
314
+ timeoutMs: ((_f = (_d = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) !== null && _d !== void 0 ? _d : (_e = this._options) === null || _e === void 0 ? void 0 : _e.timeoutInSeconds) !== null && _f !== void 0 ? _f : 60) * 1000,
315
+ maxRetries: (_g = requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.maxRetries) !== null && _g !== void 0 ? _g : (_h = this._options) === null || _h === void 0 ? void 0 : _h.maxRetries,
316
+ abortSignal: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.abortSignal,
317
+ fetchFn: (_j = this._options) === null || _j === void 0 ? void 0 : _j.fetch,
318
+ logging: this._options.logging,
319
+ });
320
+ if (_response.ok) {
321
+ return { data: _response.body, rawResponse: _response.rawResponse };
322
+ }
323
+ if (_response.error.reason === "status-code") {
324
+ switch (_response.error.statusCode) {
325
+ case 400:
326
+ throw new Pinnacle.BadRequestError(_response.error.body, _response.rawResponse);
327
+ case 401:
328
+ throw new Pinnacle.UnauthorizedError(_response.error.body, _response.rawResponse);
329
+ case 404:
330
+ throw new Pinnacle.NotFoundError(_response.error.body, _response.rawResponse);
331
+ case 500:
332
+ throw new Pinnacle.InternalServerError(_response.error.body, _response.rawResponse);
333
+ default:
334
+ throw new errors.PinnacleError({
335
+ statusCode: _response.error.statusCode,
336
+ body: _response.error.body,
337
+ rawResponse: _response.rawResponse,
338
+ });
339
+ }
340
+ }
341
+ switch (_response.error.reason) {
342
+ case "non-json":
343
+ throw new errors.PinnacleError({
344
+ statusCode: _response.error.statusCode,
345
+ body: _response.error.rawBody,
346
+ rawResponse: _response.rawResponse,
347
+ });
348
+ case "timeout":
349
+ throw new errors.PinnacleTimeoutError("Timeout exceeded when calling POST /webhooks/detach.");
350
+ case "unknown":
351
+ throw new errors.PinnacleError({
352
+ message: _response.error.errorMessage,
353
+ rawResponse: _response.rawResponse,
354
+ });
355
+ }
356
+ });
357
+ }
201
358
  _getCustomAuthorizationHeaders() {
202
359
  return __awaiter(this, void 0, void 0, function* () {
203
360
  const apiKeyValue = yield core.Supplier.get(this._options.apiKey);
@@ -0,0 +1,23 @@
1
+ import type * as Pinnacle from "../../../../index.js";
2
+ /**
3
+ * @example
4
+ * {
5
+ * senders: ["+14155551234", "agent_abc123"]
6
+ * }
7
+ */
8
+ export interface AttachWebhookParams {
9
+ /** Array of senders to attach the webhook to. Can be phone numbers in E.164 format or RCS agent IDs. */
10
+ senders: string[];
11
+ /** Existing webhook ID (starts with `wh_`). Provide this OR `name` + `url` to create a new webhook. The webhook must be in ENABLED status. Disabled webhooks can be re-enabled from the [dashboard](https://app.pinnacle.sh/dashboard/development/webhooks). */
12
+ webhookId?: string;
13
+ /** Name for a new webhook (required if no `webhookId`). */
14
+ name?: string;
15
+ /** HTTPS endpoint URL for a new webhook (required if no `webhookId`). */
16
+ url?: string;
17
+ /**
18
+ * Event type filter for the subscription. Set to `null` to receive all events. <br>
19
+ *
20
+ * `USER.TYPING` is only supported for RCS agent senders, not phone numbers.
21
+ */
22
+ event?: Pinnacle.WebhookEventEnum | null;
23
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @example
3
+ * {
4
+ * webhookId: "webhookId",
5
+ * senders: ["+14155551234", "agent_abc123"]
6
+ * }
7
+ */
8
+ export interface DetachWebhookParams {
9
+ /** Webhook ID to detach (starts with `wh_`). Must be a webhook owned by your team. */
10
+ webhookId: string;
11
+ /** Array of senders to detach the webhook from. Can be phone numbers in E.164 format or RCS agent IDs. */
12
+ senders: string[];
13
+ }
@@ -1,2 +1,4 @@
1
+ export type { AttachWebhookParams } from "./AttachWebhookParams.js";
2
+ export type { DetachWebhookParams } from "./DetachWebhookParams.js";
1
3
  export type { GetWebhookParams } from "./GetWebhookParams.js";
2
4
  export type { ListWebhooksParams } from "./ListWebhooksParams.js";
@@ -0,0 +1,22 @@
1
+ import type * as Pinnacle from "../index.js";
2
+ export interface AttachWebhookResult {
3
+ webhook: AttachWebhookResult.Webhook;
4
+ /** The event type filter applied to these subscriptions. */
5
+ event: Pinnacle.WebhookEventEnum | null;
6
+ /** Senders that were successfully attached (phone numbers in E.164 format or RCS agent IDs). */
7
+ senders: string[];
8
+ /** Senders that could not be attached, with error details. */
9
+ failed: Pinnacle.FailedSender[];
10
+ }
11
+ export declare namespace AttachWebhookResult {
12
+ interface Webhook {
13
+ /** Unique webhook identifier (starts with `wh_`). */
14
+ id: string;
15
+ /** Name of the webhook. */
16
+ name: string;
17
+ /** HTTPS endpoint URL where events are delivered. */
18
+ url: string;
19
+ /** Signing secret sent in the `PINNACLE-SIGNING-SECRET` header for request verification. */
20
+ secret: string;
21
+ }
22
+ }
@@ -4,7 +4,24 @@ export interface BaseRichMessage {
4
4
  from: string;
5
5
  fallback?: Pinnacle.FallbackMessage;
6
6
  /** Configure how your RCS message is sent and tracked. */
7
- options?: Pinnacle.SendRichMessageOptions;
7
+ options?: BaseRichMessage.Options;
8
8
  /** Recipient's phone number in E.164 format. */
9
9
  to: string;
10
10
  }
11
+ export declare namespace BaseRichMessage {
12
+ /**
13
+ * Configure how your RCS message is sent and tracked.
14
+ */
15
+ interface Options {
16
+ schedule?: Pinnacle.MessageSchedule;
17
+ tracking?: Pinnacle.Tracking;
18
+ /** Media files and card media will be transcoded to a supported RCS format. This adds a small delay to sending the message. Ignored for rich text messages. */
19
+ transcode?: boolean;
20
+ /**
21
+ * Validate your message for any unsupported files. <br>
22
+ *
23
+ * If failed, errors will be thrown and the message will not send.
24
+ */
25
+ validate?: boolean;
26
+ }
27
+ }
@@ -0,0 +1,9 @@
1
+ import type * as Pinnacle from "../index.js";
2
+ export interface DetachWebhookResult {
3
+ /** The webhook that was detached from the senders. */
4
+ webhookId: string;
5
+ /** Senders that were successfully detached (phone numbers in E.164 format or RCS agent IDs). */
6
+ senders: string[];
7
+ /** Senders that could not be detached, with error details. */
8
+ failed: Pinnacle.FailedSender[];
9
+ }
@@ -1,9 +1,9 @@
1
1
  import type * as Pinnacle from "../index.js";
2
2
  export interface ExtendedBrandWithVetting extends Pinnacle.ExtendedBrand {
3
3
  /** ISO 8601 formatted timestamp of the last TCR vetting. */
4
- lastTcrVettingDate: string | null;
4
+ lastTcrVettingDate: string;
5
5
  /** Feedback from The Campaign Registry if TCR vetting was performed. */
6
- tcrFeedback: Pinnacle.VettingFeedback[] | null;
6
+ tcrFeedback: Pinnacle.VettingFeedback[];
7
7
  /** History of all external vetting attempts for this brand. */
8
8
  vettingHistory: Pinnacle.VettingHistory[];
9
9
  }