@fern-api/fern-api-dev 5.75.8 → 5.76.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 (2) hide show
  1. package/cli.cjs +228 -13
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -55736,6 +55736,13 @@ var init_WebhookTimestampSchema = __esm({
55736
55736
  }
55737
55737
  });
55738
55738
 
55739
+ // ../fern-definition/schema/lib/schemas/api/resources/webhooks/types/WebhookUrlNormalizationSchema.js
55740
+ var init_WebhookUrlNormalizationSchema = __esm({
55741
+ "../fern-definition/schema/lib/schemas/api/resources/webhooks/types/WebhookUrlNormalizationSchema.js"() {
55742
+ "use strict";
55743
+ }
55744
+ });
55745
+
55739
55746
  // ../fern-definition/schema/lib/schemas/api/resources/webhooks/types/index.js
55740
55747
  var init_types20 = __esm({
55741
55748
  "../fern-definition/schema/lib/schemas/api/resources/webhooks/types/index.js"() {
@@ -55760,6 +55767,7 @@ var init_types20 = __esm({
55760
55767
  init_WebhookSignatureSchema();
55761
55768
  init_WebhookTimestampFormatSchema();
55762
55769
  init_WebhookTimestampSchema();
55770
+ init_WebhookUrlNormalizationSchema();
55763
55771
  }
55764
55772
  });
55765
55773
 
@@ -60428,6 +60436,19 @@ var init_WebhookSignatureAlgorithmSchema2 = __esm({
60428
60436
  }
60429
60437
  });
60430
60438
 
60439
+ // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookUrlNormalizationSchema.js
60440
+ var WebhookUrlNormalizationSchema;
60441
+ var init_WebhookUrlNormalizationSchema2 = __esm({
60442
+ "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookUrlNormalizationSchema.js"() {
60443
+ "use strict";
60444
+ init_core();
60445
+ WebhookUrlNormalizationSchema = schemas_exports.object({
60446
+ "port-variants": schemas_exports.boolean().optional(),
60447
+ "legacy-query-encoding": schemas_exports.boolean().optional()
60448
+ });
60449
+ }
60450
+ });
60451
+
60431
60452
  // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/HmacSignatureSchema.js
60432
60453
  var HmacSignatureSchema;
60433
60454
  var init_HmacSignatureSchema2 = __esm({
@@ -60439,6 +60460,7 @@ var init_HmacSignatureSchema2 = __esm({
60439
60460
  init_WebhookSignatureAlgorithmSchema2();
60440
60461
  init_WebhookSignatureEncodingSchema2();
60441
60462
  init_WebhookTimestampSchema2();
60463
+ init_WebhookUrlNormalizationSchema2();
60442
60464
  HmacSignatureSchema = schemas_exports.object({
60443
60465
  header: schemas_exports.string(),
60444
60466
  algorithm: WebhookSignatureAlgorithmSchema2.optional(),
@@ -60446,7 +60468,8 @@ var init_HmacSignatureSchema2 = __esm({
60446
60468
  "signature-prefix": schemas_exports.string().optional(),
60447
60469
  "payload-format": WebhookPayloadFormatSchema.optional(),
60448
60470
  timestamp: WebhookTimestampSchema.optional(),
60449
- "body-hash-binding": WebhookBodyHashBindingSchema.optional()
60471
+ "body-hash-binding": WebhookBodyHashBindingSchema.optional(),
60472
+ "url-normalization": WebhookUrlNormalizationSchema.optional()
60450
60473
  });
60451
60474
  }
60452
60475
  });
@@ -61354,6 +61377,7 @@ var init_types40 = __esm({
61354
61377
  init_WebhookSignatureSchema2();
61355
61378
  init_WebhookTimestampFormatSchema2();
61356
61379
  init_WebhookTimestampSchema2();
61380
+ init_WebhookUrlNormalizationSchema2();
61357
61381
  }
61358
61382
  });
61359
61383
 
@@ -61379,7 +61403,8 @@ __export(webhooks_exports2, {
61379
61403
  WebhookSignatureEncodingSchema: () => WebhookSignatureEncodingSchema2,
61380
61404
  WebhookSignatureSchema: () => WebhookSignatureSchema,
61381
61405
  WebhookTimestampFormatSchema: () => WebhookTimestampFormatSchema2,
61382
- WebhookTimestampSchema: () => WebhookTimestampSchema
61406
+ WebhookTimestampSchema: () => WebhookTimestampSchema,
61407
+ WebhookUrlNormalizationSchema: () => WebhookUrlNormalizationSchema
61383
61408
  });
61384
61409
  var init_webhooks2 = __esm({
61385
61410
  "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/index.js"() {
@@ -61645,6 +61670,7 @@ __export(serialization_exports, {
61645
61670
  WebhookSignatureSchema: () => WebhookSignatureSchema,
61646
61671
  WebhookTimestampFormatSchema: () => WebhookTimestampFormatSchema2,
61647
61672
  WebhookTimestampSchema: () => WebhookTimestampSchema,
61673
+ WebhookUrlNormalizationSchema: () => WebhookUrlNormalizationSchema,
61648
61674
  WithAudiences: () => WithAudiences,
61649
61675
  WithAuthSchema: () => WithAuthSchema,
61650
61676
  WithAvailability: () => WithAvailability,
@@ -70270,6 +70296,13 @@ var init_WebhookName = __esm({
70270
70296
  }
70271
70297
  });
70272
70298
 
70299
+ // ../../ir-sdk/lib/sdk/api/resources/webhooks/types/WebhookNotificationUrlNormalization.js
70300
+ var init_WebhookNotificationUrlNormalization = __esm({
70301
+ "../../ir-sdk/lib/sdk/api/resources/webhooks/types/WebhookNotificationUrlNormalization.js"() {
70302
+ "use strict";
70303
+ }
70304
+ });
70305
+
70273
70306
  // ../../ir-sdk/lib/sdk/api/resources/webhooks/types/WebhookPayload.js
70274
70307
  var WebhookPayload;
70275
70308
  var init_WebhookPayload = __esm({
@@ -70505,6 +70538,7 @@ var init_types69 = __esm({
70505
70538
  init_WebhookGroup();
70506
70539
  init_WebhookHttpMethod();
70507
70540
  init_WebhookName();
70541
+ init_WebhookNotificationUrlNormalization();
70508
70542
  init_WebhookPayload();
70509
70543
  init_WebhookPayloadBodySort();
70510
70544
  init_WebhookPayloadComponent();
@@ -81223,6 +81257,19 @@ var init_WebhookBodyHashBinding2 = __esm({
81223
81257
  }
81224
81258
  });
81225
81259
 
81260
+ // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookNotificationUrlNormalization.js
81261
+ var WebhookNotificationUrlNormalization;
81262
+ var init_WebhookNotificationUrlNormalization2 = __esm({
81263
+ "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookNotificationUrlNormalization.js"() {
81264
+ "use strict";
81265
+ init_core2();
81266
+ WebhookNotificationUrlNormalization = schemas_exports3.objectWithoutOptionalProperties({
81267
+ portVariants: schemas_exports3.boolean(),
81268
+ legacyQueryEncoding: schemas_exports3.boolean()
81269
+ });
81270
+ }
81271
+ });
81272
+
81226
81273
  // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/HmacSignatureVerification.js
81227
81274
  var HmacSignatureVerification;
81228
81275
  var init_HmacSignatureVerification2 = __esm({
@@ -81232,6 +81279,7 @@ var init_HmacSignatureVerification2 = __esm({
81232
81279
  init_NameAndWireValueOrString3();
81233
81280
  init_HmacAlgorithm2();
81234
81281
  init_WebhookBodyHashBinding2();
81282
+ init_WebhookNotificationUrlNormalization2();
81235
81283
  init_WebhookPayloadFormat2();
81236
81284
  init_WebhookSignatureEncoding2();
81237
81285
  init_WebhookTimestampConfig2();
@@ -81242,7 +81290,8 @@ var init_HmacSignatureVerification2 = __esm({
81242
81290
  signaturePrefix: schemas_exports3.string().optional(),
81243
81291
  payloadFormat: WebhookPayloadFormat,
81244
81292
  timestamp: WebhookTimestampConfig.optional(),
81245
- bodyHashBinding: WebhookBodyHashBinding.optional()
81293
+ bodyHashBinding: WebhookBodyHashBinding.optional(),
81294
+ notificationUrlNormalization: WebhookNotificationUrlNormalization.optional()
81246
81295
  });
81247
81296
  }
81248
81297
  });
@@ -82861,6 +82910,7 @@ var init_types98 = __esm({
82861
82910
  init_WebhookGroup2();
82862
82911
  init_WebhookHttpMethod2();
82863
82912
  init_WebhookName2();
82913
+ init_WebhookNotificationUrlNormalization2();
82864
82914
  init_WebhookPayload2();
82865
82915
  init_WebhookPayloadBodySort2();
82866
82916
  init_WebhookPayloadComponent2();
@@ -82894,6 +82944,7 @@ __export(webhooks_exports4, {
82894
82944
  WebhookGroup: () => WebhookGroup,
82895
82945
  WebhookHttpMethod: () => WebhookHttpMethod2,
82896
82946
  WebhookName: () => WebhookName,
82947
+ WebhookNotificationUrlNormalization: () => WebhookNotificationUrlNormalization,
82897
82948
  WebhookPayload: () => WebhookPayload2,
82898
82949
  WebhookPayloadBodySort: () => WebhookPayloadBodySort2,
82899
82950
  WebhookPayloadComponent: () => WebhookPayloadComponent2,
@@ -83320,6 +83371,7 @@ __export(serialization_exports2, {
83320
83371
  WebhookHttpMethod: () => WebhookHttpMethod2,
83321
83372
  WebhookId: () => WebhookId,
83322
83373
  WebhookName: () => WebhookName,
83374
+ WebhookNotificationUrlNormalization: () => WebhookNotificationUrlNormalization,
83323
83375
  WebhookPayload: () => WebhookPayload2,
83324
83376
  WebhookPayloadBodySort: () => WebhookPayloadBodySort2,
83325
83377
  WebhookPayloadComponent: () => WebhookPayloadComponent2,
@@ -133936,6 +133988,13 @@ var init_WebhookHttpMethod3 = __esm({
133936
133988
  }
133937
133989
  });
133938
133990
 
133991
+ // ../api-importers/openapi/openapi-ir/lib/sdk/api/resources/finalIr/types/WebhookNotificationUrlNormalization.js
133992
+ var init_WebhookNotificationUrlNormalization3 = __esm({
133993
+ "../api-importers/openapi/openapi-ir/lib/sdk/api/resources/finalIr/types/WebhookNotificationUrlNormalization.js"() {
133994
+ "use strict";
133995
+ }
133996
+ });
133997
+
133939
133998
  // ../api-importers/openapi/openapi-ir/lib/sdk/api/resources/finalIr/types/WebhookPayloadBodySort.js
133940
133999
  var WebhookPayloadBodySortValues2, WebhookPayloadBodySort3;
133941
134000
  var init_WebhookPayloadBodySort3 = __esm({
@@ -134288,6 +134347,7 @@ var init_types138 = __esm({
134288
134347
  init_WebhookBodyHashQueryParameterLocation3();
134289
134348
  init_WebhookExampleCall();
134290
134349
  init_WebhookHttpMethod3();
134350
+ init_WebhookNotificationUrlNormalization3();
134291
134351
  init_WebhookPayloadBodySort3();
134292
134352
  init_WebhookPayloadComponent3();
134293
134353
  init_WebhookPayloadFormat3();
@@ -139303,6 +139363,19 @@ var init_WebhookBodyHashBinding4 = __esm({
139303
139363
  }
139304
139364
  });
139305
139365
 
139366
+ // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookNotificationUrlNormalization.js
139367
+ var WebhookNotificationUrlNormalization2;
139368
+ var init_WebhookNotificationUrlNormalization4 = __esm({
139369
+ "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookNotificationUrlNormalization.js"() {
139370
+ "use strict";
139371
+ init_core7();
139372
+ WebhookNotificationUrlNormalization2 = schemas_exports9.objectWithoutOptionalProperties({
139373
+ portVariants: schemas_exports9.boolean(),
139374
+ legacyQueryEncoding: schemas_exports9.boolean()
139375
+ });
139376
+ }
139377
+ });
139378
+
139306
139379
  // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookSignatureAlgorithm.js
139307
139380
  var WebhookSignatureAlgorithm2;
139308
139381
  var init_WebhookSignatureAlgorithm2 = __esm({
@@ -139320,6 +139393,7 @@ var init_HmacWebhookSignatureVerification2 = __esm({
139320
139393
  "use strict";
139321
139394
  init_core7();
139322
139395
  init_WebhookBodyHashBinding4();
139396
+ init_WebhookNotificationUrlNormalization4();
139323
139397
  init_WebhookPayloadFormat4();
139324
139398
  init_WebhookSignatureAlgorithm2();
139325
139399
  init_WebhookSignatureEncoding4();
@@ -139331,7 +139405,8 @@ var init_HmacWebhookSignatureVerification2 = __esm({
139331
139405
  signaturePrefix: schemas_exports9.string().optional(),
139332
139406
  payloadFormat: WebhookPayloadFormat2.optional(),
139333
139407
  timestamp: WebhookTimestamp.optional(),
139334
- bodyHashBinding: WebhookBodyHashBinding2.optional()
139408
+ bodyHashBinding: WebhookBodyHashBinding2.optional(),
139409
+ notificationUrlNormalization: WebhookNotificationUrlNormalization2.optional()
139335
139410
  });
139336
139411
  }
139337
139412
  });
@@ -140214,6 +140289,7 @@ var init_types142 = __esm({
140214
140289
  init_WebhookBodyHashQueryParameterLocation4();
140215
140290
  init_WebhookExampleCall2();
140216
140291
  init_WebhookHttpMethod4();
140292
+ init_WebhookNotificationUrlNormalization4();
140217
140293
  init_WebhookPayloadBodySort4();
140218
140294
  init_WebhookPayloadComponent4();
140219
140295
  init_WebhookPayloadFormat4();
@@ -140326,6 +140402,7 @@ __export(finalIr_exports2, {
140326
140402
  WebhookBodyHashQueryParameterLocation: () => WebhookBodyHashQueryParameterLocation2,
140327
140403
  WebhookExampleCall: () => WebhookExampleCall,
140328
140404
  WebhookHttpMethod: () => WebhookHttpMethod4,
140405
+ WebhookNotificationUrlNormalization: () => WebhookNotificationUrlNormalization2,
140329
140406
  WebhookPayloadBodySort: () => WebhookPayloadBodySort4,
140330
140407
  WebhookPayloadComponent: () => WebhookPayloadComponent4,
140331
140408
  WebhookPayloadFormat: () => WebhookPayloadFormat2,
@@ -141593,6 +141670,7 @@ __export(serialization_exports5, {
141593
141670
  WebhookBodyHashQueryParameterLocation: () => WebhookBodyHashQueryParameterLocation2,
141594
141671
  WebhookExampleCall: () => WebhookExampleCall,
141595
141672
  WebhookHttpMethod: () => WebhookHttpMethod4,
141673
+ WebhookNotificationUrlNormalization: () => WebhookNotificationUrlNormalization2,
141596
141674
  WebhookPayloadBodySort: () => WebhookPayloadBodySort4,
141597
141675
  WebhookPayloadComponent: () => WebhookPayloadComponent4,
141598
141676
  WebhookPayloadFormat: () => WebhookPayloadFormat2,
@@ -146936,7 +147014,8 @@ function convertSignatureVerification(signatureVerification) {
146936
147014
  "signature-prefix": signatureVerification.signaturePrefix,
146937
147015
  "payload-format": convertPayloadFormat(signatureVerification.payloadFormat),
146938
147016
  timestamp: convertTimestamp(signatureVerification.timestamp),
146939
- "body-hash-binding": convertBodyHashBinding(signatureVerification.bodyHashBinding)
147017
+ "body-hash-binding": convertBodyHashBinding(signatureVerification.bodyHashBinding),
147018
+ "url-normalization": convertUrlNormalization(signatureVerification.notificationUrlNormalization)
146940
147019
  };
146941
147020
  case "asymmetric":
146942
147021
  return {
@@ -147024,6 +147103,15 @@ function convertBodyHashBinding(binding) {
147024
147103
  location: convertBodyHashLocation(binding.location)
147025
147104
  };
147026
147105
  }
147106
+ function convertUrlNormalization(normalization) {
147107
+ if (normalization == null) {
147108
+ return void 0;
147109
+ }
147110
+ return {
147111
+ "port-variants": normalization.portVariants,
147112
+ "legacy-query-encoding": normalization.legacyQueryEncoding
147113
+ };
147114
+ }
147027
147115
  function convertBodyHashAlgorithm(algorithm) {
147028
147116
  switch (algorithm) {
147029
147117
  case "sha256":
@@ -166382,6 +166470,29 @@ function convertBodyHashBinding2(binding, logger4) {
166382
166470
  location: convertBodyHashLocation2(binding.location)
166383
166471
  };
166384
166472
  }
166473
+ function convertUrlNormalization2(normalization, logger4) {
166474
+ if (normalization == null) {
166475
+ return void 0;
166476
+ }
166477
+ const portVariants = normalization["port-variants"];
166478
+ const legacyQueryEncoding = normalization["legacy-query-encoding"];
166479
+ if (portVariants != null && typeof portVariants !== "boolean") {
166480
+ logger4.warn(`Ignoring webhook url-normalization: "port-variants" must be a boolean, got "${typeof portVariants}".`);
166481
+ return void 0;
166482
+ }
166483
+ if (legacyQueryEncoding != null && typeof legacyQueryEncoding !== "boolean") {
166484
+ logger4.warn(`Ignoring webhook url-normalization: "legacy-query-encoding" must be a boolean, got "${typeof legacyQueryEncoding}".`);
166485
+ return void 0;
166486
+ }
166487
+ if (!portVariants && !legacyQueryEncoding) {
166488
+ logger4.warn('Ignoring webhook url-normalization: enable at least one of "port-variants" or "legacy-query-encoding".');
166489
+ return void 0;
166490
+ }
166491
+ return {
166492
+ portVariants: portVariants ?? false,
166493
+ legacyQueryEncoding: legacyQueryEncoding ?? false
166494
+ };
166495
+ }
166385
166496
  function convertBodyHashAlgorithm2(algorithm) {
166386
166497
  switch (algorithm) {
166387
166498
  case "sha256":
@@ -166460,7 +166571,8 @@ function convertSignatureSchema(extension4, logger4) {
166460
166571
  signaturePrefix: extension4["signature-prefix"],
166461
166572
  payloadFormat: convertPayloadFormat2(extension4["payload-format"]),
166462
166573
  timestamp: convertTimestamp2(extension4.timestamp),
166463
- bodyHashBinding: convertBodyHashBinding2(extension4["body-hash-binding"], logger4)
166574
+ bodyHashBinding: convertBodyHashBinding2(extension4["body-hash-binding"], logger4),
166575
+ notificationUrlNormalization: convertUrlNormalization2(extension4["url-normalization"], logger4)
166464
166576
  });
166465
166577
  }
166466
166578
  if (extension4.type === "asymmetric") {
@@ -275409,7 +275521,17 @@ function convertHmacSignature({ hmac, file: file4 }) {
275409
275521
  signaturePrefix: hmac["signature-prefix"],
275410
275522
  payloadFormat: convertPayloadFormat3(hmac["payload-format"]),
275411
275523
  timestamp: convertTimestampConfig({ timestamp: hmac.timestamp, file: file4 }),
275412
- bodyHashBinding: convertBodyHashBinding3(hmac["body-hash-binding"])
275524
+ bodyHashBinding: convertBodyHashBinding3(hmac["body-hash-binding"]),
275525
+ notificationUrlNormalization: convertUrlNormalization3(hmac["url-normalization"])
275526
+ };
275527
+ }
275528
+ function convertUrlNormalization3(normalization) {
275529
+ if (normalization == null) {
275530
+ return void 0;
275531
+ }
275532
+ return {
275533
+ portVariants: normalization["port-variants"] ?? false,
275534
+ legacyQueryEncoding: normalization["legacy-query-encoding"] ?? false
275413
275535
  };
275414
275536
  }
275415
275537
  function convertBodyHashBinding3(binding) {
@@ -326019,6 +326141,34 @@ var init_fern_schema = __esm({
326019
326141
  ],
326020
326142
  additionalProperties: false
326021
326143
  },
326144
+ "webhooks.WebhookUrlNormalizationSchema": {
326145
+ type: "object",
326146
+ properties: {
326147
+ "port-variants": {
326148
+ oneOf: [
326149
+ {
326150
+ type: "boolean"
326151
+ },
326152
+ {
326153
+ type: "null"
326154
+ }
326155
+ ],
326156
+ description: "Try the URL both with the scheme's standard port added (:443 for https, :80 for\nhttp) if absent, and with the port removed. All Twilio libraries do this."
326157
+ },
326158
+ "legacy-query-encoding": {
326159
+ oneOf: [
326160
+ {
326161
+ type: "boolean"
326162
+ },
326163
+ {
326164
+ type: "null"
326165
+ }
326166
+ ],
326167
+ description: "Additionally try each port variant with the query string re-encoded using legacy\nform-encoding, reversing percent-encoding differences introduced by WHATWG URL\nparsing. Twilio's Node library does this; the others do not."
326168
+ }
326169
+ },
326170
+ additionalProperties: false
326171
+ },
326022
326172
  "webhooks.AsymmetricAlgorithmSchema": {
326023
326173
  type: "string",
326024
326174
  enum: [
@@ -326117,6 +326267,17 @@ var init_fern_schema = __esm({
326117
326267
  description: `When set, the raw body is not signed directly; instead a hash of the body is
326118
326268
  transmitted separately (e.g. Twilio's "bodySHA256" query parameter for JSON
326119
326269
  bodies) and verification also recomputes and compares the body hash.`
326270
+ },
326271
+ "url-normalization": {
326272
+ oneOf: [
326273
+ {
326274
+ $ref: "#/definitions/webhooks.WebhookUrlNormalizationSchema"
326275
+ },
326276
+ {
326277
+ type: "null"
326278
+ }
326279
+ ],
326280
+ description: "When set, the signature is verified against multiple normalized forms of the\nnotification URL (e.g. with/without port, legacy query encoding), succeeding if any\ncandidate matches. Required by providers like Twilio."
326120
326281
  }
326121
326282
  },
326122
326283
  required: [
@@ -330426,6 +330587,34 @@ var init_package_yml_schema = __esm({
330426
330587
  ],
330427
330588
  additionalProperties: false
330428
330589
  },
330590
+ "webhooks.WebhookUrlNormalizationSchema": {
330591
+ type: "object",
330592
+ properties: {
330593
+ "port-variants": {
330594
+ oneOf: [
330595
+ {
330596
+ type: "boolean"
330597
+ },
330598
+ {
330599
+ type: "null"
330600
+ }
330601
+ ],
330602
+ description: "Try the URL both with the scheme's standard port added (:443 for https, :80 for\nhttp) if absent, and with the port removed. All Twilio libraries do this."
330603
+ },
330604
+ "legacy-query-encoding": {
330605
+ oneOf: [
330606
+ {
330607
+ type: "boolean"
330608
+ },
330609
+ {
330610
+ type: "null"
330611
+ }
330612
+ ],
330613
+ description: "Additionally try each port variant with the query string re-encoded using legacy\nform-encoding, reversing percent-encoding differences introduced by WHATWG URL\nparsing. Twilio's Node library does this; the others do not."
330614
+ }
330615
+ },
330616
+ additionalProperties: false
330617
+ },
330429
330618
  "webhooks.AsymmetricAlgorithmSchema": {
330430
330619
  type: "string",
330431
330620
  enum: [
@@ -330524,6 +330713,17 @@ var init_package_yml_schema = __esm({
330524
330713
  description: `When set, the raw body is not signed directly; instead a hash of the body is
330525
330714
  transmitted separately (e.g. Twilio's "bodySHA256" query parameter for JSON
330526
330715
  bodies) and verification also recomputes and compares the body hash.`
330716
+ },
330717
+ "url-normalization": {
330718
+ oneOf: [
330719
+ {
330720
+ $ref: "#/definitions/webhooks.WebhookUrlNormalizationSchema"
330721
+ },
330722
+ {
330723
+ type: "null"
330724
+ }
330725
+ ],
330726
+ description: "When set, the signature is verified against multiple normalized forms of the\nnotification URL (e.g. with/without port, legacy query encoding), succeeding if any\ncandidate matches. Required by providers like Twilio."
330527
330727
  }
330528
330728
  },
330529
330729
  required: [
@@ -681332,6 +681532,21 @@ function validateHmac(signature, violations) {
681332
681532
  if (signature["body-hash-binding"] != null) {
681333
681533
  validateBodyHashBinding(signature, violations);
681334
681534
  }
681535
+ if (signature["url-normalization"] != null) {
681536
+ validateUrlNormalization(signature, violations);
681537
+ }
681538
+ }
681539
+ function validateUrlNormalization(signature, violations) {
681540
+ const normalization = signature["url-normalization"];
681541
+ if (normalization == null) {
681542
+ return;
681543
+ }
681544
+ if (!normalization["port-variants"] && !normalization["legacy-query-encoding"]) {
681545
+ violations.push({
681546
+ severity: "error",
681547
+ message: "url-normalization must enable at least one of port-variants or legacy-query-encoding"
681548
+ });
681549
+ }
681335
681550
  }
681336
681551
  function validateBodyHashBinding(signature, violations) {
681337
681552
  const binding = signature["body-hash-binding"];
@@ -691168,7 +691383,7 @@ var AccessTokenPosthogManager = class {
691168
691383
  properties: {
691169
691384
  ...event,
691170
691385
  ...event.properties,
691171
- version: "5.75.8",
691386
+ version: "5.76.0",
691172
691387
  usingAccessToken: true,
691173
691388
  ...getRunIdProperties()
691174
691389
  }
@@ -691234,7 +691449,7 @@ var UserPosthogManager = class {
691234
691449
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
691235
691450
  event: "CLI",
691236
691451
  properties: {
691237
- version: "5.75.8",
691452
+ version: "5.76.0",
691238
691453
  ...event,
691239
691454
  ...event.properties,
691240
691455
  usingAccessToken: false,
@@ -872339,7 +872554,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
872339
872554
  var LOGS_FOLDER_NAME = "logs";
872340
872555
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
872341
872556
  function getCliSource() {
872342
- const version7 = "5.75.8";
872557
+ const version7 = "5.76.0";
872343
872558
  return `cli@${version7}`;
872344
872559
  }
872345
872560
  var DebugLogger = class {
@@ -904992,7 +905207,7 @@ var LegacyDocsPublisher = class {
904992
905207
  previewId,
904993
905208
  disableTemplates: void 0,
904994
905209
  skipUpload,
904995
- cliVersion: "5.75.8",
905210
+ cliVersion: "5.76.0",
904996
905211
  loginCommand: "fern auth login"
904997
905212
  });
904998
905213
  if (taskContext.getResult() === TaskResult.Failure) {
@@ -971905,7 +972120,7 @@ function getAutomationContextFromEnv() {
971905
972120
  config_branch: process.env.FERN_CONFIG_BRANCH,
971906
972121
  config_pr_number: process.env.FERN_CONFIG_PR_NUMBER,
971907
972122
  trigger: process.env.GITHUB_EVENT_NAME,
971908
- cli_version: "5.75.8"
972123
+ cli_version: "5.76.0"
971909
972124
  };
971910
972125
  }
971911
972126
  function isAutomationMode() {
@@ -972737,7 +972952,7 @@ var CliContext = class _CliContext {
972737
972952
  if (false) {
972738
972953
  this.logger.error("CLI_VERSION is not defined");
972739
972954
  }
972740
- return "5.75.8";
972955
+ return "5.76.0";
972741
972956
  }
972742
972957
  getCliName() {
972743
972958
  if (false) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.75.8",
2
+ "version": "5.76.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",