@novu/api 0.6.2 → 0.7.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.
Files changed (253) hide show
  1. package/FUNCTIONS.md +12 -3
  2. package/README.md +143 -30
  3. package/bin/mcp-server.js +644 -433
  4. package/bin/mcp-server.js.map +53 -48
  5. package/docs/sdks/novu/README.md +142 -24
  6. package/jsr.json +1 -1
  7. package/lib/config.d.ts +4 -4
  8. package/lib/config.js +4 -4
  9. package/lib/config.js.map +1 -1
  10. package/lib/matchers.d.ts +3 -1
  11. package/lib/matchers.d.ts.map +1 -1
  12. package/lib/matchers.js +13 -1
  13. package/lib/matchers.js.map +1 -1
  14. package/lib/sdks.d.ts +3 -1
  15. package/lib/sdks.d.ts.map +1 -1
  16. package/lib/sdks.js +13 -13
  17. package/lib/sdks.js.map +1 -1
  18. package/mcp-server/mcp-server.js +1 -1
  19. package/mcp-server/prompts.d.ts.map +1 -1
  20. package/mcp-server/prompts.js +5 -1
  21. package/mcp-server/prompts.js.map +1 -1
  22. package/mcp-server/resources.d.ts.map +1 -1
  23. package/mcp-server/resources.js +10 -2
  24. package/mcp-server/resources.js.map +1 -1
  25. package/mcp-server/server.d.ts.map +1 -1
  26. package/mcp-server/server.js +2 -3
  27. package/mcp-server/server.js.map +1 -1
  28. package/mcp-server/tools.d.ts.map +1 -1
  29. package/mcp-server/tools.js +4 -3
  30. package/mcp-server/tools.js.map +1 -1
  31. package/models/components/activitynotificationjobresponsedto.d.ts +15 -15
  32. package/models/components/activitynotificationjobresponsedto.d.ts.map +1 -1
  33. package/models/components/activitynotificationjobresponsedto.js +19 -18
  34. package/models/components/activitynotificationjobresponsedto.js.map +1 -1
  35. package/models/components/activitynotificationstepresponsedto.d.ts +15 -15
  36. package/models/components/activitynotificationstepresponsedto.d.ts.map +1 -1
  37. package/models/components/activitynotificationstepresponsedto.js +18 -18
  38. package/models/components/activitynotificationstepresponsedto.js.map +1 -1
  39. package/models/components/channelsettingsdto.d.ts +2 -78
  40. package/models/components/channelsettingsdto.d.ts.map +1 -1
  41. package/models/components/channelsettingsdto.js +4 -41
  42. package/models/components/channelsettingsdto.js.map +1 -1
  43. package/models/components/chatorpushproviderenum.d.ts +79 -0
  44. package/models/components/chatorpushproviderenum.d.ts.map +1 -0
  45. package/models/components/chatorpushproviderenum.js +68 -0
  46. package/models/components/chatorpushproviderenum.js.map +1 -0
  47. package/models/components/constraintvalidation.d.ts +115 -0
  48. package/models/components/constraintvalidation.d.ts.map +1 -0
  49. package/models/components/constraintvalidation.js +157 -0
  50. package/models/components/constraintvalidation.js.map +1 -0
  51. package/models/components/digestmetadatadto.d.ts +8 -8
  52. package/models/components/digestmetadatadto.d.ts.map +1 -1
  53. package/models/components/digestmetadatadto.js +13 -13
  54. package/models/components/digestmetadatadto.js.map +1 -1
  55. package/models/components/digestregularmetadata.d.ts +16 -16
  56. package/models/components/digestregularmetadata.d.ts.map +1 -1
  57. package/models/components/digestregularmetadata.js +25 -25
  58. package/models/components/digestregularmetadata.js.map +1 -1
  59. package/models/components/digesttimedconfigdto.d.ts +8 -8
  60. package/models/components/digesttimedconfigdto.d.ts.map +1 -1
  61. package/models/components/digesttimedconfigdto.js +13 -14
  62. package/models/components/digesttimedconfigdto.js.map +1 -1
  63. package/models/components/getsubscriberpreferencesdto.d.ts +6 -6
  64. package/models/components/getsubscriberpreferencesdto.d.ts.map +1 -1
  65. package/models/components/getsubscriberpreferencesdto.js +6 -6
  66. package/models/components/getsubscriberpreferencesdto.js.map +1 -1
  67. package/models/components/index.d.ts +10 -5
  68. package/models/components/index.d.ts.map +1 -1
  69. package/models/components/index.js +10 -5
  70. package/models/components/index.js.map +1 -1
  71. package/models/components/integrationresponsedto.d.ts +8 -8
  72. package/models/components/integrationresponsedto.d.ts.map +1 -1
  73. package/models/components/integrationresponsedto.js +14 -13
  74. package/models/components/integrationresponsedto.js.map +1 -1
  75. package/models/components/messageactionresult.d.ts +15 -15
  76. package/models/components/messageactionresult.d.ts.map +1 -1
  77. package/models/components/messageactionresult.js +18 -18
  78. package/models/components/messageactionresult.js.map +1 -1
  79. package/models/components/messagecta.d.ts +2 -2
  80. package/models/components/messagecta.d.ts.map +1 -1
  81. package/models/components/messagecta.js +2 -2
  82. package/models/components/messagecta.js.map +1 -1
  83. package/models/components/messageresponsedto.d.ts +14 -4
  84. package/models/components/messageresponsedto.d.ts.map +1 -1
  85. package/models/components/messageresponsedto.js +8 -4
  86. package/models/components/messageresponsedto.js.map +1 -1
  87. package/models/components/messagesresponsedto.d.ts +53 -0
  88. package/models/components/messagesresponsedto.d.ts.map +1 -0
  89. package/models/components/messagesresponsedto.js +68 -0
  90. package/models/components/messagesresponsedto.js.map +1 -0
  91. package/models/components/notificationfeeditemdto.d.ts +0 -5
  92. package/models/components/notificationfeeditemdto.d.ts.map +1 -1
  93. package/models/components/notificationfeeditemdto.js +0 -2
  94. package/models/components/notificationfeeditemdto.js.map +1 -1
  95. package/models/components/notificationstepdto.d.ts +13 -13
  96. package/models/components/notificationstepdto.d.ts.map +1 -1
  97. package/models/components/notificationstepdto.js +16 -16
  98. package/models/components/notificationstepdto.js.map +1 -1
  99. package/models/components/notificationtriggerdto.d.ts +8 -8
  100. package/models/components/notificationtriggerdto.d.ts.map +1 -1
  101. package/models/components/notificationtriggerdto.js +13 -13
  102. package/models/components/notificationtriggerdto.js.map +1 -1
  103. package/models/components/patchsubscriberpreferencesdto.d.ts +1 -1
  104. package/models/components/preferenceoverridesourceenum.d.ts +37 -0
  105. package/models/components/preferenceoverridesourceenum.d.ts.map +1 -0
  106. package/models/components/preferenceoverridesourceenum.js +54 -0
  107. package/models/components/preferenceoverridesourceenum.js.map +1 -0
  108. package/models/components/providersidenum.d.ts +3 -0
  109. package/models/components/providersidenum.d.ts.map +1 -1
  110. package/models/components/providersidenum.js +1 -0
  111. package/models/components/providersidenum.js.map +1 -1
  112. package/models/components/stepfilterdto.d.ts +8 -8
  113. package/models/components/stepfilterdto.d.ts.map +1 -1
  114. package/models/components/stepfilterdto.js +13 -13
  115. package/models/components/stepfilterdto.js.map +1 -1
  116. package/models/components/stepsoverrides.d.ts +40 -0
  117. package/models/components/stepsoverrides.d.ts.map +1 -0
  118. package/models/components/{workflowinfodto.js → stepsoverrides.js} +19 -25
  119. package/models/components/stepsoverrides.js.map +1 -0
  120. package/models/components/steptypeenum.d.ts +2 -2
  121. package/models/components/steptypeenum.js +1 -1
  122. package/models/components/subscriberchanneldto.d.ts +8 -8
  123. package/models/components/subscriberchanneldto.d.ts.map +1 -1
  124. package/models/components/subscriberchanneldto.js +14 -13
  125. package/models/components/subscriberchanneldto.js.map +1 -1
  126. package/models/components/subscriberglobalpreferencedto.d.ts +38 -0
  127. package/models/components/subscriberglobalpreferencedto.d.ts.map +1 -0
  128. package/models/components/subscriberglobalpreferencedto.js +62 -0
  129. package/models/components/subscriberglobalpreferencedto.js.map +1 -0
  130. package/models/components/subscriberpreferencechannels.d.ts +52 -0
  131. package/models/components/subscriberpreferencechannels.d.ts.map +1 -0
  132. package/models/components/{preferencechannels.js → subscriberpreferencechannels.js} +17 -17
  133. package/models/components/subscriberpreferencechannels.js.map +1 -0
  134. package/models/components/subscriberpreferenceoverridedto.d.ts +39 -0
  135. package/models/components/subscriberpreferenceoverridedto.d.ts.map +1 -0
  136. package/models/components/subscriberpreferenceoverridedto.js +63 -0
  137. package/models/components/subscriberpreferenceoverridedto.js.map +1 -0
  138. package/models/components/subscriberpreferencesworkflowinfodto.d.ts +47 -0
  139. package/models/components/subscriberpreferencesworkflowinfodto.d.ts.map +1 -0
  140. package/models/components/subscriberpreferencesworkflowinfodto.js +65 -0
  141. package/models/components/subscriberpreferencesworkflowinfodto.js.map +1 -0
  142. package/models/components/subscriberresponsedto.d.ts +26 -26
  143. package/models/components/subscriberresponsedto.d.ts.map +1 -1
  144. package/models/components/subscriberresponsedto.js +12 -12
  145. package/models/components/subscriberresponsedto.js.map +1 -1
  146. package/models/components/subscriberworkflowpreferencedto.d.ts +50 -0
  147. package/models/components/subscriberworkflowpreferencedto.d.ts.map +1 -0
  148. package/models/components/subscriberworkflowpreferencedto.js +68 -0
  149. package/models/components/subscriberworkflowpreferencedto.js.map +1 -0
  150. package/models/components/timedconfig.d.ts +8 -8
  151. package/models/components/timedconfig.d.ts.map +1 -1
  152. package/models/components/timedconfig.js +14 -13
  153. package/models/components/timedconfig.js.map +1 -1
  154. package/models/components/triggereventrequestdto.d.ts +102 -10
  155. package/models/components/triggereventrequestdto.d.ts.map +1 -1
  156. package/models/components/triggereventrequestdto.js +43 -3
  157. package/models/components/triggereventrequestdto.js.map +1 -1
  158. package/models/components/triggereventtoallrequestdto.d.ts +84 -2
  159. package/models/components/triggereventtoallrequestdto.d.ts.map +1 -1
  160. package/models/components/triggereventtoallrequestdto.js +28 -2
  161. package/models/components/triggereventtoallrequestdto.js.map +1 -1
  162. package/models/components/updatesubscriberchannelrequestdto.d.ts +2 -78
  163. package/models/components/updatesubscriberchannelrequestdto.d.ts.map +1 -1
  164. package/models/components/updatesubscriberchannelrequestdto.js +4 -41
  165. package/models/components/updatesubscriberchannelrequestdto.js.map +1 -1
  166. package/models/components/workflowresponse.d.ts +3 -3
  167. package/models/components/workflowresponse.d.ts.map +1 -1
  168. package/models/components/workflowresponse.js +3 -3
  169. package/models/components/workflowresponse.js.map +1 -1
  170. package/models/errors/errordto.d.ts +83 -3
  171. package/models/errors/errordto.d.ts.map +1 -1
  172. package/models/errors/errordto.js +99 -3
  173. package/models/errors/errordto.js.map +1 -1
  174. package/models/errors/validationerrordto.d.ts +66 -51
  175. package/models/errors/validationerrordto.d.ts.map +1 -1
  176. package/models/errors/validationerrordto.js +83 -67
  177. package/models/errors/validationerrordto.js.map +1 -1
  178. package/models/operations/messagescontrollergetmessages.d.ts +2 -2
  179. package/models/operations/messagescontrollergetmessages.d.ts.map +1 -1
  180. package/models/operations/messagescontrollergetmessages.js +2 -2
  181. package/models/operations/messagescontrollergetmessages.js.map +1 -1
  182. package/package.json +3 -3
  183. package/sources/json-development.json +2037 -305
  184. package/src/lib/config.ts +4 -4
  185. package/src/lib/matchers.ts +20 -0
  186. package/src/lib/sdks.ts +19 -13
  187. package/src/mcp-server/mcp-server.ts +1 -1
  188. package/src/mcp-server/prompts.ts +8 -1
  189. package/src/mcp-server/resources.ts +16 -2
  190. package/src/mcp-server/server.ts +3 -3
  191. package/src/mcp-server/tools.ts +6 -3
  192. package/src/models/components/activitynotificationjobresponsedto.ts +48 -26
  193. package/src/models/components/activitynotificationstepresponsedto.ts +50 -29
  194. package/src/models/components/channelsettingsdto.ts +8 -50
  195. package/src/models/components/chatorpushproviderenum.ts +54 -0
  196. package/src/models/components/constraintvalidation.ts +270 -0
  197. package/src/models/components/digestmetadatadto.ts +16 -15
  198. package/src/models/components/digestregularmetadata.ts +30 -36
  199. package/src/models/components/digesttimedconfigdto.ts +18 -14
  200. package/src/models/components/getsubscriberpreferencesdto.ts +18 -18
  201. package/src/models/components/index.ts +10 -5
  202. package/src/models/components/integrationresponsedto.ts +14 -18
  203. package/src/models/components/messageactionresult.ts +24 -31
  204. package/src/models/components/messagecta.ts +4 -4
  205. package/src/models/components/messageresponsedto.ts +22 -8
  206. package/src/models/components/messagesresponsedto.ts +103 -0
  207. package/src/models/components/notificationfeeditemdto.ts +0 -7
  208. package/src/models/components/notificationstepdto.ts +20 -26
  209. package/src/models/components/notificationtriggerdto.ts +18 -15
  210. package/src/models/components/patchsubscriberpreferencesdto.ts +1 -1
  211. package/src/models/components/preferenceoverridesourceenum.ts +42 -0
  212. package/src/models/components/providersidenum.ts +1 -0
  213. package/src/models/components/stepfilterdto.ts +16 -15
  214. package/src/models/components/stepsoverrides.ts +65 -0
  215. package/src/models/components/steptypeenum.ts +2 -2
  216. package/src/models/components/subscriberchanneldto.ts +14 -18
  217. package/src/models/components/subscriberglobalpreferencedto.ts +84 -0
  218. package/src/models/components/subscriberpreferencechannels.ts +108 -0
  219. package/src/models/components/subscriberpreferenceoverridedto.ts +88 -0
  220. package/src/models/components/subscriberpreferencesworkflowinfodto.ts +95 -0
  221. package/src/models/components/subscriberresponsedto.ts +34 -34
  222. package/src/models/components/subscriberworkflowpreferencedto.ts +110 -0
  223. package/src/models/components/timedconfig.ts +14 -16
  224. package/src/models/components/triggereventrequestdto.ts +122 -4
  225. package/src/models/components/triggereventtoallrequestdto.ts +92 -5
  226. package/src/models/components/updatesubscriberchannelrequestdto.ts +8 -56
  227. package/src/models/components/workflowresponse.ts +9 -9
  228. package/src/models/errors/errordto.ts +202 -5
  229. package/src/models/errors/validationerrordto.ts +178 -110
  230. package/src/models/operations/messagescontrollergetmessages.ts +4 -4
  231. package/models/components/globalpreferencedto.d.ts +0 -38
  232. package/models/components/globalpreferencedto.d.ts.map +0 -1
  233. package/models/components/globalpreferencedto.js +0 -62
  234. package/models/components/globalpreferencedto.js.map +0 -1
  235. package/models/components/overrides.d.ts +0 -112
  236. package/models/components/overrides.d.ts.map +0 -1
  237. package/models/components/overrides.js +0 -111
  238. package/models/components/overrides.js.map +0 -1
  239. package/models/components/preferencechannels.d.ts +0 -37
  240. package/models/components/preferencechannels.d.ts.map +0 -1
  241. package/models/components/preferencechannels.js.map +0 -1
  242. package/models/components/workflowinfodto.d.ts +0 -47
  243. package/models/components/workflowinfodto.d.ts.map +0 -1
  244. package/models/components/workflowinfodto.js.map +0 -1
  245. package/models/components/workflowpreferencedto.d.ts +0 -50
  246. package/models/components/workflowpreferencedto.d.ts.map +0 -1
  247. package/models/components/workflowpreferencedto.js +0 -68
  248. package/models/components/workflowpreferencedto.js.map +0 -1
  249. package/src/models/components/globalpreferencedto.ts +0 -82
  250. package/src/models/components/overrides.ts +0 -139
  251. package/src/models/components/preferencechannels.ts +0 -91
  252. package/src/models/components/workflowinfodto.ts +0 -88
  253. package/src/models/components/workflowpreferencedto.ts +0 -108
package/src/lib/config.ts CHANGED
@@ -54,8 +54,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
54
54
 
55
55
  export const SDK_METADATA = {
56
56
  language: "typescript",
57
- openapiDocVersion: "1.0",
58
- sdkVersion: "0.6.2",
59
- genVersion: "2.563.1",
60
- userAgent: "speakeasy-sdk/typescript 0.6.2 2.563.1 1.0 @novu/api",
57
+ openapiDocVersion: "2.1.13",
58
+ sdkVersion: "0.7.0",
59
+ genVersion: "2.597.9",
60
+ userAgent: "speakeasy-sdk/typescript 0.7.0 2.597.9 2.1.13 @novu/api",
61
61
  } as const;
@@ -10,6 +10,7 @@ import { isPlainObject } from "./is-plain-object.js";
10
10
  import { safeParse } from "./schemas.js";
11
11
 
12
12
  export type Encoding =
13
+ | "jsonl"
13
14
  | "json"
14
15
  | "text"
15
16
  | "bytes"
@@ -19,6 +20,7 @@ export type Encoding =
19
20
  | "fail";
20
21
 
21
22
  const DEFAULT_CONTENT_TYPES: Record<Encoding, string> = {
23
+ jsonl: "application/jsonl",
22
24
  json: "application/json",
23
25
  text: "text/plain",
24
26
  bytes: "application/octet-stream",
@@ -72,6 +74,21 @@ export function json<T>(
72
74
  return { ...options, enc: "json", codes, schema };
73
75
  }
74
76
 
77
+ export function jsonl<T>(
78
+ codes: StatusCodePredicate,
79
+ schema: Schema<T>,
80
+ options?: MatchOptions,
81
+ ): ValueMatcher<T> {
82
+ return { ...options, enc: "jsonl", codes, schema };
83
+ }
84
+
85
+ export function jsonlErr<E>(
86
+ codes: StatusCodePredicate,
87
+ schema: Schema<E>,
88
+ options?: MatchOptions,
89
+ ): ErrorMatcher<E> {
90
+ return { ...options, err: true, enc: "jsonl", codes, schema };
91
+ }
75
92
  export function textErr<E>(
76
93
  codes: StatusCodePredicate,
77
94
  schema: Schema<E>,
@@ -204,6 +221,9 @@ export function match<T, E>(
204
221
  case "json":
205
222
  raw = await response.json();
206
223
  break;
224
+ case "jsonl":
225
+ raw = response.body;
226
+ break;
207
227
  case "bytes":
208
228
  raw = new Uint8Array(await response.arrayBuffer());
209
229
  break;
package/src/lib/sdks.ts CHANGED
@@ -46,12 +46,14 @@ export type RequestOptions = {
46
46
  */
47
47
  serverURL?: string | URL;
48
48
  /**
49
+ * @deprecated `fetchOptions` has been flattened into `RequestOptions`.
50
+ *
49
51
  * Sets various request options on the `fetch` call made by an SDK method.
50
52
  *
51
53
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#options|Request}
52
54
  */
53
55
  fetchOptions?: Omit<RequestInit, "method" | "body">;
54
- };
56
+ } & Omit<RequestInit, "method" | "body">;
55
57
 
56
58
  type RequestConfig = {
57
59
  method: string;
@@ -168,7 +170,9 @@ export class ClientSDK {
168
170
  cookie = cookie.startsWith("; ") ? cookie.slice(2) : cookie;
169
171
  headers.set("cookie", cookie);
170
172
 
171
- const userHeaders = new Headers(options?.fetchOptions?.headers);
173
+ const userHeaders = new Headers(
174
+ options?.headers ?? options?.fetchOptions?.headers,
175
+ );
172
176
  for (const [k, v] of userHeaders) {
173
177
  headers.set(k, v);
174
178
  }
@@ -179,20 +183,16 @@ export class ClientSDK {
179
183
  headers.set(conf.uaHeader ?? "user-agent", SDK_METADATA.userAgent);
180
184
  }
181
185
 
182
- let fetchOptions = options?.fetchOptions;
186
+ const fetchOptions: Omit<RequestInit, "method" | "body"> = {
187
+ ...options?.fetchOptions,
188
+ ...options,
189
+ };
183
190
  if (!fetchOptions?.signal && conf.timeoutMs && conf.timeoutMs > 0) {
184
191
  const timeoutSignal = AbortSignal.timeout(conf.timeoutMs);
185
- if (!fetchOptions) {
186
- fetchOptions = { signal: timeoutSignal };
187
- } else {
188
- fetchOptions.signal = timeoutSignal;
189
- }
192
+ fetchOptions.signal = timeoutSignal;
190
193
  }
191
194
 
192
195
  if (conf.body instanceof ReadableStream) {
193
- if (!fetchOptions) {
194
- fetchOptions = {};
195
- }
196
196
  Object.assign(fetchOptions, { duplex: "half" });
197
197
  }
198
198
 
@@ -298,7 +298,9 @@ export class ClientSDK {
298
298
  }
299
299
  }
300
300
 
301
- const jsonLikeContentTypeRE = /^application\/(?:.{0,100}\+)?json/;
301
+ const jsonLikeContentTypeRE = /(application|text)\/.*?\+*json.*/;
302
+ const jsonlLikeContentTypeRE =
303
+ /(application|text)\/(.*?\+*\bjsonl\b.*|.*?\+*\bx-ndjson\b.*)/;
302
304
  async function logRequest(logger: Logger | undefined, req: Request) {
303
305
  if (!logger) {
304
306
  return;
@@ -364,9 +366,13 @@ async function logResponse(
364
366
  logger.group("Body:");
365
367
  switch (true) {
366
368
  case matchContentType(res, "application/json")
367
- || jsonLikeContentTypeRE.test(ct):
369
+ || jsonLikeContentTypeRE.test(ct) && !jsonlLikeContentTypeRE.test(ct):
368
370
  logger.log(await res.clone().json());
369
371
  break;
372
+ case matchContentType(res, "application/jsonl")
373
+ || jsonlLikeContentTypeRE.test(ct):
374
+ logger.log(await res.clone().text());
375
+ break;
370
376
  case matchContentType(res, "text/event-stream"):
371
377
  logger.log(`<${contentType}>`);
372
378
  break;
@@ -19,7 +19,7 @@ const routes = buildRouteMap({
19
19
  export const app = buildApplication(routes, {
20
20
  name: "mcp",
21
21
  versionInfo: {
22
- currentVersion: "0.6.2",
22
+ currentVersion: "0.7.0",
23
23
  },
24
24
  });
25
25
 
@@ -74,7 +74,14 @@ export function createRegisterPrompt(
74
74
  prompt: PromptDefinition<A>,
75
75
  ): void => {
76
76
  const scopes = prompt.scopes ?? [];
77
- if (!scopes.every((s: MCPScope) => allowedScopes.has(s))) {
77
+ if (allowedScopes.size > 0 && scopes.length === 0) {
78
+ return;
79
+ }
80
+
81
+ if (
82
+ allowedScopes.size > 0
83
+ && !scopes.every((s: MCPScope) => allowedScopes.has(s))
84
+ ) {
78
85
  return;
79
86
  }
80
87
 
@@ -109,7 +109,14 @@ export function createRegisterResource(
109
109
  ): (resource: ResourceDefinition) => void {
110
110
  return (resource: ResourceDefinition): void => {
111
111
  const scopes = resource.scopes ?? [];
112
- if (!scopes.every((s: MCPScope) => allowedScopes.has(s))) {
112
+ if (allowedScopes.size > 0 && scopes.length === 0) {
113
+ return;
114
+ }
115
+
116
+ if (
117
+ allowedScopes.size > 0
118
+ && !scopes.every((s: MCPScope) => allowedScopes.has(s))
119
+ ) {
113
120
  return;
114
121
  }
115
122
 
@@ -137,7 +144,14 @@ export function createRegisterResourceTemplate(
137
144
  ): (resource: ResourceTemplateDefinition) => void {
138
145
  return (resource: ResourceTemplateDefinition): void => {
139
146
  const scopes = resource.scopes ?? [];
140
- if (!scopes.every((s: MCPScope) => allowedScopes.has(s))) {
147
+ if (allowedScopes.size > 0 && scopes.length === 0) {
148
+ return;
149
+ }
150
+
151
+ if (
152
+ allowedScopes.size > 0
153
+ && !scopes.every((s: MCPScope) => allowedScopes.has(s))
154
+ ) {
141
155
  return;
142
156
  }
143
157
 
@@ -11,7 +11,7 @@ import {
11
11
  createRegisterResource,
12
12
  createRegisterResourceTemplate,
13
13
  } from "./resources.js";
14
- import { MCPScope, mcpScopes } from "./scopes.js";
14
+ import { MCPScope } from "./scopes.js";
15
15
  import { createRegisterTool } from "./tools.js";
16
16
  import { tool$cancel } from "./tools/cancel.js";
17
17
  import { tool$integrationsCreate } from "./tools/integrationsCreate.js";
@@ -71,7 +71,7 @@ export function createMCPServer(deps: {
71
71
  }) {
72
72
  const server = new McpServer({
73
73
  name: "Novu",
74
- version: "0.6.2",
74
+ version: "0.7.0",
75
75
  });
76
76
 
77
77
  const client = new NovuCore({
@@ -80,7 +80,7 @@ export function createMCPServer(deps: {
80
80
  serverIdx: deps.serverIdx,
81
81
  });
82
82
 
83
- const scopes = new Set(deps.scopes ?? mcpScopes);
83
+ const scopes = new Set(deps.scopes);
84
84
 
85
85
  const allowedTools = deps.allowedTools && new Set(deps.allowedTools);
86
86
  const tool = createRegisterTool(
@@ -102,12 +102,15 @@ export function createRegisterTool(
102
102
  return;
103
103
  }
104
104
 
105
- const toolScopes = tool.scopes ?? [];
106
- if (allowedScopes.size > 0 && toolScopes.length === 0) {
105
+ const scopes = tool.scopes ?? [];
106
+ if (allowedScopes.size > 0 && scopes.length === 0) {
107
107
  return;
108
108
  }
109
109
 
110
- if (!toolScopes.every((s) => allowedScopes.has(s))) {
110
+ if (
111
+ allowedScopes.size > 0
112
+ && !scopes.every((s: MCPScope) => allowedScopes.has(s))
113
+ ) {
111
114
  return;
112
115
  }
113
116
 
@@ -56,7 +56,7 @@ export type ActivityNotificationJobResponseDtoType = ClosedEnum<
56
56
  /**
57
57
  * Optional payload for the job
58
58
  */
59
- export type Payload = {};
59
+ export type ActivityNotificationJobResponseDtoPayload = {};
60
60
 
61
61
  export type ActivityNotificationJobResponseDto = {
62
62
  /**
@@ -86,7 +86,7 @@ export type ActivityNotificationJobResponseDto = {
86
86
  /**
87
87
  * Optional payload for the job
88
88
  */
89
- payload?: Payload | undefined;
89
+ payload?: ActivityNotificationJobResponseDtoPayload | undefined;
90
90
  /**
91
91
  * Provider ID of the job
92
92
  */
@@ -126,43 +126,62 @@ export namespace ActivityNotificationJobResponseDtoType$ {
126
126
  }
127
127
 
128
128
  /** @internal */
129
- export const Payload$inboundSchema: z.ZodType<Payload, z.ZodTypeDef, unknown> =
130
- z.object({});
129
+ export const ActivityNotificationJobResponseDtoPayload$inboundSchema: z.ZodType<
130
+ ActivityNotificationJobResponseDtoPayload,
131
+ z.ZodTypeDef,
132
+ unknown
133
+ > = z.object({});
131
134
 
132
135
  /** @internal */
133
- export type Payload$Outbound = {};
136
+ export type ActivityNotificationJobResponseDtoPayload$Outbound = {};
134
137
 
135
138
  /** @internal */
136
- export const Payload$outboundSchema: z.ZodType<
137
- Payload$Outbound,
138
- z.ZodTypeDef,
139
- Payload
140
- > = z.object({});
139
+ export const ActivityNotificationJobResponseDtoPayload$outboundSchema:
140
+ z.ZodType<
141
+ ActivityNotificationJobResponseDtoPayload$Outbound,
142
+ z.ZodTypeDef,
143
+ ActivityNotificationJobResponseDtoPayload
144
+ > = z.object({});
141
145
 
142
146
  /**
143
147
  * @internal
144
148
  * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
145
149
  */
146
- export namespace Payload$ {
147
- /** @deprecated use `Payload$inboundSchema` instead. */
148
- export const inboundSchema = Payload$inboundSchema;
149
- /** @deprecated use `Payload$outboundSchema` instead. */
150
- export const outboundSchema = Payload$outboundSchema;
151
- /** @deprecated use `Payload$Outbound` instead. */
152
- export type Outbound = Payload$Outbound;
150
+ export namespace ActivityNotificationJobResponseDtoPayload$ {
151
+ /** @deprecated use `ActivityNotificationJobResponseDtoPayload$inboundSchema` instead. */
152
+ export const inboundSchema =
153
+ ActivityNotificationJobResponseDtoPayload$inboundSchema;
154
+ /** @deprecated use `ActivityNotificationJobResponseDtoPayload$outboundSchema` instead. */
155
+ export const outboundSchema =
156
+ ActivityNotificationJobResponseDtoPayload$outboundSchema;
157
+ /** @deprecated use `ActivityNotificationJobResponseDtoPayload$Outbound` instead. */
158
+ export type Outbound = ActivityNotificationJobResponseDtoPayload$Outbound;
153
159
  }
154
160
 
155
- export function payloadToJSON(payload: Payload): string {
156
- return JSON.stringify(Payload$outboundSchema.parse(payload));
161
+ export function activityNotificationJobResponseDtoPayloadToJSON(
162
+ activityNotificationJobResponseDtoPayload:
163
+ ActivityNotificationJobResponseDtoPayload,
164
+ ): string {
165
+ return JSON.stringify(
166
+ ActivityNotificationJobResponseDtoPayload$outboundSchema.parse(
167
+ activityNotificationJobResponseDtoPayload,
168
+ ),
169
+ );
157
170
  }
158
171
 
159
- export function payloadFromJSON(
172
+ export function activityNotificationJobResponseDtoPayloadFromJSON(
160
173
  jsonString: string,
161
- ): SafeParseResult<Payload, SDKValidationError> {
174
+ ): SafeParseResult<
175
+ ActivityNotificationJobResponseDtoPayload,
176
+ SDKValidationError
177
+ > {
162
178
  return safeParse(
163
179
  jsonString,
164
- (x) => Payload$inboundSchema.parse(JSON.parse(x)),
165
- `Failed to parse 'Payload' from JSON`,
180
+ (x) =>
181
+ ActivityNotificationJobResponseDtoPayload$inboundSchema.parse(
182
+ JSON.parse(x),
183
+ ),
184
+ `Failed to parse 'ActivityNotificationJobResponseDtoPayload' from JSON`,
166
185
  );
167
186
  }
168
187
 
@@ -180,7 +199,8 @@ export const ActivityNotificationJobResponseDto$inboundSchema: z.ZodType<
180
199
  ),
181
200
  step: ActivityNotificationStepResponseDto$inboundSchema,
182
201
  overrides: z.record(z.any()).optional(),
183
- payload: z.lazy(() => Payload$inboundSchema).optional(),
202
+ payload: z.lazy(() => ActivityNotificationJobResponseDtoPayload$inboundSchema)
203
+ .optional(),
184
204
  providerId: ProvidersIdEnum$inboundSchema,
185
205
  status: z.string(),
186
206
  updatedAt: z.string().optional(),
@@ -200,7 +220,7 @@ export type ActivityNotificationJobResponseDto$Outbound = {
200
220
  >;
201
221
  step: ActivityNotificationStepResponseDto$Outbound;
202
222
  overrides?: { [k: string]: any } | undefined;
203
- payload?: Payload$Outbound | undefined;
223
+ payload?: ActivityNotificationJobResponseDtoPayload$Outbound | undefined;
204
224
  providerId: string;
205
225
  status: string;
206
226
  updatedAt?: string | undefined;
@@ -220,7 +240,9 @@ export const ActivityNotificationJobResponseDto$outboundSchema: z.ZodType<
220
240
  ),
221
241
  step: ActivityNotificationStepResponseDto$outboundSchema,
222
242
  overrides: z.record(z.any()).optional(),
223
- payload: z.lazy(() => Payload$outboundSchema).optional(),
243
+ payload: z.lazy(() =>
244
+ ActivityNotificationJobResponseDtoPayload$outboundSchema
245
+ ).optional(),
224
246
  providerId: ProvidersIdEnum$outboundSchema,
225
247
  status: z.string(),
226
248
  updatedAt: z.string().optional(),
@@ -33,7 +33,7 @@ export type ControlVariables = {};
33
33
  /**
34
34
  * Metadata for the workflow step
35
35
  */
36
- export type Metadata = {};
36
+ export type ActivityNotificationStepResponseDtoMetadata = {};
37
37
 
38
38
  /**
39
39
  * Step issues
@@ -60,7 +60,7 @@ export type ActivityNotificationStepResponseDto = {
60
60
  /**
61
61
  * Metadata for the workflow step
62
62
  */
63
- metadata?: Metadata | undefined;
63
+ metadata?: ActivityNotificationStepResponseDtoMetadata | undefined;
64
64
  /**
65
65
  * Step issues
66
66
  */
@@ -202,46 +202,63 @@ export function controlVariablesFromJSON(
202
202
  }
203
203
 
204
204
  /** @internal */
205
- export const Metadata$inboundSchema: z.ZodType<
206
- Metadata,
207
- z.ZodTypeDef,
208
- unknown
209
- > = z.object({});
205
+ export const ActivityNotificationStepResponseDtoMetadata$inboundSchema:
206
+ z.ZodType<
207
+ ActivityNotificationStepResponseDtoMetadata,
208
+ z.ZodTypeDef,
209
+ unknown
210
+ > = z.object({});
210
211
 
211
212
  /** @internal */
212
- export type Metadata$Outbound = {};
213
+ export type ActivityNotificationStepResponseDtoMetadata$Outbound = {};
213
214
 
214
215
  /** @internal */
215
- export const Metadata$outboundSchema: z.ZodType<
216
- Metadata$Outbound,
217
- z.ZodTypeDef,
218
- Metadata
219
- > = z.object({});
216
+ export const ActivityNotificationStepResponseDtoMetadata$outboundSchema:
217
+ z.ZodType<
218
+ ActivityNotificationStepResponseDtoMetadata$Outbound,
219
+ z.ZodTypeDef,
220
+ ActivityNotificationStepResponseDtoMetadata
221
+ > = z.object({});
220
222
 
221
223
  /**
222
224
  * @internal
223
225
  * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
224
226
  */
225
- export namespace Metadata$ {
226
- /** @deprecated use `Metadata$inboundSchema` instead. */
227
- export const inboundSchema = Metadata$inboundSchema;
228
- /** @deprecated use `Metadata$outboundSchema` instead. */
229
- export const outboundSchema = Metadata$outboundSchema;
230
- /** @deprecated use `Metadata$Outbound` instead. */
231
- export type Outbound = Metadata$Outbound;
227
+ export namespace ActivityNotificationStepResponseDtoMetadata$ {
228
+ /** @deprecated use `ActivityNotificationStepResponseDtoMetadata$inboundSchema` instead. */
229
+ export const inboundSchema =
230
+ ActivityNotificationStepResponseDtoMetadata$inboundSchema;
231
+ /** @deprecated use `ActivityNotificationStepResponseDtoMetadata$outboundSchema` instead. */
232
+ export const outboundSchema =
233
+ ActivityNotificationStepResponseDtoMetadata$outboundSchema;
234
+ /** @deprecated use `ActivityNotificationStepResponseDtoMetadata$Outbound` instead. */
235
+ export type Outbound = ActivityNotificationStepResponseDtoMetadata$Outbound;
232
236
  }
233
237
 
234
- export function metadataToJSON(metadata: Metadata): string {
235
- return JSON.stringify(Metadata$outboundSchema.parse(metadata));
238
+ export function activityNotificationStepResponseDtoMetadataToJSON(
239
+ activityNotificationStepResponseDtoMetadata:
240
+ ActivityNotificationStepResponseDtoMetadata,
241
+ ): string {
242
+ return JSON.stringify(
243
+ ActivityNotificationStepResponseDtoMetadata$outboundSchema.parse(
244
+ activityNotificationStepResponseDtoMetadata,
245
+ ),
246
+ );
236
247
  }
237
248
 
238
- export function metadataFromJSON(
249
+ export function activityNotificationStepResponseDtoMetadataFromJSON(
239
250
  jsonString: string,
240
- ): SafeParseResult<Metadata, SDKValidationError> {
251
+ ): SafeParseResult<
252
+ ActivityNotificationStepResponseDtoMetadata,
253
+ SDKValidationError
254
+ > {
241
255
  return safeParse(
242
256
  jsonString,
243
- (x) => Metadata$inboundSchema.parse(JSON.parse(x)),
244
- `Failed to parse 'Metadata' from JSON`,
257
+ (x) =>
258
+ ActivityNotificationStepResponseDtoMetadata$inboundSchema.parse(
259
+ JSON.parse(x),
260
+ ),
261
+ `Failed to parse 'ActivityNotificationStepResponseDtoMetadata' from JSON`,
245
262
  );
246
263
  }
247
264
 
@@ -298,7 +315,9 @@ export const ActivityNotificationStepResponseDto$inboundSchema: z.ZodType<
298
315
  ActivityNotificationStepResponseDtoReplyCallback$inboundSchema
299
316
  ).optional(),
300
317
  controlVariables: z.lazy(() => ControlVariables$inboundSchema).optional(),
301
- metadata: z.lazy(() => Metadata$inboundSchema).optional(),
318
+ metadata: z.lazy(() =>
319
+ ActivityNotificationStepResponseDtoMetadata$inboundSchema
320
+ ).optional(),
302
321
  issues: z.lazy(() => Issues$inboundSchema).optional(),
303
322
  filters: z.array(StepFilterDto$inboundSchema),
304
323
  template: MessageTemplateDto$inboundSchema.optional(),
@@ -324,7 +343,7 @@ export type ActivityNotificationStepResponseDto$Outbound = {
324
343
  | ActivityNotificationStepResponseDtoReplyCallback$Outbound
325
344
  | undefined;
326
345
  controlVariables?: ControlVariables$Outbound | undefined;
327
- metadata?: Metadata$Outbound | undefined;
346
+ metadata?: ActivityNotificationStepResponseDtoMetadata$Outbound | undefined;
328
347
  issues?: Issues$Outbound | undefined;
329
348
  filters: Array<StepFilterDto$Outbound>;
330
349
  template?: MessageTemplateDto$Outbound | undefined;
@@ -346,7 +365,9 @@ export const ActivityNotificationStepResponseDto$outboundSchema: z.ZodType<
346
365
  ActivityNotificationStepResponseDtoReplyCallback$outboundSchema
347
366
  ).optional(),
348
367
  controlVariables: z.lazy(() => ControlVariables$outboundSchema).optional(),
349
- metadata: z.lazy(() => Metadata$outboundSchema).optional(),
368
+ metadata: z.lazy(() =>
369
+ ActivityNotificationStepResponseDtoMetadata$outboundSchema
370
+ ).optional(),
350
371
  issues: z.lazy(() => Issues$outboundSchema).optional(),
351
372
  filters: z.array(StepFilterDto$outboundSchema),
352
373
  template: MessageTemplateDto$outboundSchema.optional(),
@@ -5,7 +5,6 @@
5
5
  import * as z from "zod";
6
6
  import { remap as remap$ } from "../../lib/primitives.js";
7
7
  import { safeParse } from "../../lib/schemas.js";
8
- import { ClosedEnum } from "../../types/enums.js";
9
8
  import { Result as SafeParseResult } from "../../types/fp.js";
10
9
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
11
10
  import {
@@ -14,39 +13,17 @@ import {
14
13
  ChannelCredentials$Outbound,
15
14
  ChannelCredentials$outboundSchema,
16
15
  } from "./channelcredentials.js";
17
-
18
- /**
19
- * The provider identifier for the credentials
20
- */
21
- export const ProviderId = {
22
- Slack: "slack",
23
- Discord: "discord",
24
- Msteams: "msteams",
25
- Mattermost: "mattermost",
26
- Ryver: "ryver",
27
- Zulip: "zulip",
28
- GrafanaOnCall: "grafana-on-call",
29
- Getstream: "getstream",
30
- RocketChat: "rocket-chat",
31
- WhatsappBusiness: "whatsapp-business",
32
- Fcm: "fcm",
33
- Apns: "apns",
34
- Expo: "expo",
35
- OneSignal: "one-signal",
36
- Pushpad: "pushpad",
37
- PushWebhook: "push-webhook",
38
- PusherBeams: "pusher-beams",
39
- } as const;
40
- /**
41
- * The provider identifier for the credentials
42
- */
43
- export type ProviderId = ClosedEnum<typeof ProviderId>;
16
+ import {
17
+ ChatOrPushProviderEnum,
18
+ ChatOrPushProviderEnum$inboundSchema,
19
+ ChatOrPushProviderEnum$outboundSchema,
20
+ } from "./chatorpushproviderenum.js";
44
21
 
45
22
  export type ChannelSettingsDto = {
46
23
  /**
47
24
  * The provider identifier for the credentials
48
25
  */
49
- providerId: ProviderId;
26
+ providerId: ChatOrPushProviderEnum;
50
27
  /**
51
28
  * The integration identifier
52
29
  */
@@ -61,32 +38,13 @@ export type ChannelSettingsDto = {
61
38
  integrationId: string;
62
39
  };
63
40
 
64
- /** @internal */
65
- export const ProviderId$inboundSchema: z.ZodNativeEnum<typeof ProviderId> = z
66
- .nativeEnum(ProviderId);
67
-
68
- /** @internal */
69
- export const ProviderId$outboundSchema: z.ZodNativeEnum<typeof ProviderId> =
70
- ProviderId$inboundSchema;
71
-
72
- /**
73
- * @internal
74
- * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
75
- */
76
- export namespace ProviderId$ {
77
- /** @deprecated use `ProviderId$inboundSchema` instead. */
78
- export const inboundSchema = ProviderId$inboundSchema;
79
- /** @deprecated use `ProviderId$outboundSchema` instead. */
80
- export const outboundSchema = ProviderId$outboundSchema;
81
- }
82
-
83
41
  /** @internal */
84
42
  export const ChannelSettingsDto$inboundSchema: z.ZodType<
85
43
  ChannelSettingsDto,
86
44
  z.ZodTypeDef,
87
45
  unknown
88
46
  > = z.object({
89
- providerId: ProviderId$inboundSchema,
47
+ providerId: ChatOrPushProviderEnum$inboundSchema,
90
48
  integrationIdentifier: z.string().optional(),
91
49
  credentials: ChannelCredentials$inboundSchema,
92
50
  _integrationId: z.string(),
@@ -110,7 +68,7 @@ export const ChannelSettingsDto$outboundSchema: z.ZodType<
110
68
  z.ZodTypeDef,
111
69
  ChannelSettingsDto
112
70
  > = z.object({
113
- providerId: ProviderId$outboundSchema,
71
+ providerId: ChatOrPushProviderEnum$outboundSchema,
114
72
  integrationIdentifier: z.string().optional(),
115
73
  credentials: ChannelCredentials$outboundSchema,
116
74
  integrationId: z.string(),
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import * as z from "zod";
6
+ import { ClosedEnum } from "../../types/enums.js";
7
+
8
+ /**
9
+ * The provider identifier for the credentials
10
+ */
11
+ export const ChatOrPushProviderEnum = {
12
+ Slack: "slack",
13
+ Discord: "discord",
14
+ Msteams: "msteams",
15
+ Mattermost: "mattermost",
16
+ Ryver: "ryver",
17
+ Zulip: "zulip",
18
+ GrafanaOnCall: "grafana-on-call",
19
+ Getstream: "getstream",
20
+ RocketChat: "rocket-chat",
21
+ WhatsappBusiness: "whatsapp-business",
22
+ Fcm: "fcm",
23
+ Apns: "apns",
24
+ Expo: "expo",
25
+ OneSignal: "one-signal",
26
+ Pushpad: "pushpad",
27
+ PushWebhook: "push-webhook",
28
+ PusherBeams: "pusher-beams",
29
+ } as const;
30
+ /**
31
+ * The provider identifier for the credentials
32
+ */
33
+ export type ChatOrPushProviderEnum = ClosedEnum<typeof ChatOrPushProviderEnum>;
34
+
35
+ /** @internal */
36
+ export const ChatOrPushProviderEnum$inboundSchema: z.ZodNativeEnum<
37
+ typeof ChatOrPushProviderEnum
38
+ > = z.nativeEnum(ChatOrPushProviderEnum);
39
+
40
+ /** @internal */
41
+ export const ChatOrPushProviderEnum$outboundSchema: z.ZodNativeEnum<
42
+ typeof ChatOrPushProviderEnum
43
+ > = ChatOrPushProviderEnum$inboundSchema;
44
+
45
+ /**
46
+ * @internal
47
+ * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
48
+ */
49
+ export namespace ChatOrPushProviderEnum$ {
50
+ /** @deprecated use `ChatOrPushProviderEnum$inboundSchema` instead. */
51
+ export const inboundSchema = ChatOrPushProviderEnum$inboundSchema;
52
+ /** @deprecated use `ChatOrPushProviderEnum$outboundSchema` instead. */
53
+ export const outboundSchema = ChatOrPushProviderEnum$outboundSchema;
54
+ }