@fern-api/fern-api-dev 5.58.0 → 5.60.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 +277 -114
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -60204,6 +60204,42 @@ var init_AsymmetricAlgorithmSchema2 = __esm({
60204
60204
  }
60205
60205
  });
60206
60206
 
60207
+ // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadBodySortSchema.js
60208
+ var WebhookPayloadBodySortSchema2;
60209
+ var init_WebhookPayloadBodySortSchema2 = __esm({
60210
+ "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadBodySortSchema.js"() {
60211
+ "use strict";
60212
+ init_core();
60213
+ WebhookPayloadBodySortSchema2 = schemas_exports.enum_(["alphabetical"]);
60214
+ }
60215
+ });
60216
+
60217
+ // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadComponentSchema.js
60218
+ var WebhookPayloadComponentSchema2;
60219
+ var init_WebhookPayloadComponentSchema2 = __esm({
60220
+ "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadComponentSchema.js"() {
60221
+ "use strict";
60222
+ init_core();
60223
+ WebhookPayloadComponentSchema2 = schemas_exports.enum_(["body", "timestamp", "notification-url", "message-id"]);
60224
+ }
60225
+ });
60226
+
60227
+ // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadFormatSchema.js
60228
+ var WebhookPayloadFormatSchema;
60229
+ var init_WebhookPayloadFormatSchema2 = __esm({
60230
+ "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadFormatSchema.js"() {
60231
+ "use strict";
60232
+ init_core();
60233
+ init_WebhookPayloadBodySortSchema2();
60234
+ init_WebhookPayloadComponentSchema2();
60235
+ WebhookPayloadFormatSchema = schemas_exports.object({
60236
+ components: schemas_exports.list(WebhookPayloadComponentSchema2),
60237
+ delimiter: schemas_exports.string().optional(),
60238
+ "body-sort": WebhookPayloadBodySortSchema2.optional()
60239
+ });
60240
+ }
60241
+ });
60242
+
60207
60243
  // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookSignatureEncodingSchema.js
60208
60244
  var WebhookSignatureEncodingSchema2;
60209
60245
  var init_WebhookSignatureEncodingSchema2 = __esm({
@@ -60246,6 +60282,7 @@ var init_AsymmetricSignatureSchema2 = __esm({
60246
60282
  "use strict";
60247
60283
  init_core();
60248
60284
  init_AsymmetricAlgorithmSchema2();
60285
+ init_WebhookPayloadFormatSchema2();
60249
60286
  init_WebhookSignatureEncodingSchema2();
60250
60287
  init_WebhookTimestampSchema2();
60251
60288
  AsymmetricSignatureSchema = schemas_exports.object({
@@ -60255,47 +60292,12 @@ var init_AsymmetricSignatureSchema2 = __esm({
60255
60292
  "signature-prefix": schemas_exports.string().optional(),
60256
60293
  "jwks-url": schemas_exports.string().optional(),
60257
60294
  "key-id-header": schemas_exports.string().optional(),
60295
+ "payload-format": WebhookPayloadFormatSchema.optional(),
60258
60296
  timestamp: WebhookTimestampSchema.optional()
60259
60297
  });
60260
60298
  }
60261
60299
  });
60262
60300
 
60263
- // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadBodySortSchema.js
60264
- var WebhookPayloadBodySortSchema2;
60265
- var init_WebhookPayloadBodySortSchema2 = __esm({
60266
- "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadBodySortSchema.js"() {
60267
- "use strict";
60268
- init_core();
60269
- WebhookPayloadBodySortSchema2 = schemas_exports.enum_(["alphabetical"]);
60270
- }
60271
- });
60272
-
60273
- // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadComponentSchema.js
60274
- var WebhookPayloadComponentSchema2;
60275
- var init_WebhookPayloadComponentSchema2 = __esm({
60276
- "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadComponentSchema.js"() {
60277
- "use strict";
60278
- init_core();
60279
- WebhookPayloadComponentSchema2 = schemas_exports.enum_(["body", "timestamp", "notification-url", "message-id"]);
60280
- }
60281
- });
60282
-
60283
- // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadFormatSchema.js
60284
- var WebhookPayloadFormatSchema;
60285
- var init_WebhookPayloadFormatSchema2 = __esm({
60286
- "../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookPayloadFormatSchema.js"() {
60287
- "use strict";
60288
- init_core();
60289
- init_WebhookPayloadBodySortSchema2();
60290
- init_WebhookPayloadComponentSchema2();
60291
- WebhookPayloadFormatSchema = schemas_exports.object({
60292
- components: schemas_exports.list(WebhookPayloadComponentSchema2),
60293
- delimiter: schemas_exports.string().optional(),
60294
- "body-sort": WebhookPayloadBodySortSchema2.optional()
60295
- });
60296
- }
60297
- });
60298
-
60299
60301
  // ../fern-definition/schema/lib/schemas/serialization/resources/webhooks/types/WebhookSignatureAlgorithmSchema.js
60300
60302
  var WebhookSignatureAlgorithmSchema2;
60301
60303
  var init_WebhookSignatureAlgorithmSchema2 = __esm({
@@ -76219,6 +76221,7 @@ var init_V2HttpEndpointExample2 = __esm({
76219
76221
  init_V2HttpEndpointResponse2();
76220
76222
  V2HttpEndpointExample = schemas_exports3.objectWithoutOptionalProperties({
76221
76223
  displayName: schemas_exports3.string().optional(),
76224
+ contentType: schemas_exports3.string().optional(),
76222
76225
  request: V2HttpEndpointRequest.optional(),
76223
76226
  response: V2HttpEndpointResponse.optional(),
76224
76227
  codeSamples: schemas_exports3.list(V2HttpEndpointCodeSample).optional()
@@ -80569,6 +80572,42 @@ var init_AsymmetricKeySource2 = __esm({
80569
80572
  }
80570
80573
  });
80571
80574
 
80575
+ // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadBodySort.js
80576
+ var WebhookPayloadBodySort2;
80577
+ var init_WebhookPayloadBodySort2 = __esm({
80578
+ "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadBodySort.js"() {
80579
+ "use strict";
80580
+ init_core2();
80581
+ WebhookPayloadBodySort2 = schemas_exports3.enum_(["ALPHABETICAL"]);
80582
+ }
80583
+ });
80584
+
80585
+ // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadComponent.js
80586
+ var WebhookPayloadComponent2;
80587
+ var init_WebhookPayloadComponent2 = __esm({
80588
+ "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadComponent.js"() {
80589
+ "use strict";
80590
+ init_core2();
80591
+ WebhookPayloadComponent2 = schemas_exports3.enum_(["BODY", "TIMESTAMP", "NOTIFICATION_URL", "MESSAGE_ID"]);
80592
+ }
80593
+ });
80594
+
80595
+ // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadFormat.js
80596
+ var WebhookPayloadFormat;
80597
+ var init_WebhookPayloadFormat2 = __esm({
80598
+ "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadFormat.js"() {
80599
+ "use strict";
80600
+ init_core2();
80601
+ init_WebhookPayloadBodySort2();
80602
+ init_WebhookPayloadComponent2();
80603
+ WebhookPayloadFormat = schemas_exports3.objectWithoutOptionalProperties({
80604
+ components: schemas_exports3.list(WebhookPayloadComponent2),
80605
+ delimiter: schemas_exports3.string(),
80606
+ bodySort: WebhookPayloadBodySort2.optional()
80607
+ });
80608
+ }
80609
+ });
80610
+
80572
80611
  // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookSignatureEncoding.js
80573
80612
  var WebhookSignatureEncoding2;
80574
80613
  var init_WebhookSignatureEncoding2 = __esm({
@@ -80614,6 +80653,7 @@ var init_AsymmetricKeySignatureVerification2 = __esm({
80614
80653
  init_NameAndWireValueOrString3();
80615
80654
  init_AsymmetricAlgorithm2();
80616
80655
  init_AsymmetricKeySource2();
80656
+ init_WebhookPayloadFormat2();
80617
80657
  init_WebhookSignatureEncoding2();
80618
80658
  init_WebhookTimestampConfig2();
80619
80659
  AsymmetricKeySignatureVerification = schemas_exports3.objectWithoutOptionalProperties({
@@ -80622,6 +80662,7 @@ var init_AsymmetricKeySignatureVerification2 = __esm({
80622
80662
  encoding: WebhookSignatureEncoding2,
80623
80663
  signaturePrefix: schemas_exports3.string().optional(),
80624
80664
  keySource: AsymmetricKeySource2,
80665
+ payloadFormat: WebhookPayloadFormat.optional(),
80625
80666
  timestamp: WebhookTimestampConfig.optional()
80626
80667
  });
80627
80668
  }
@@ -80637,42 +80678,6 @@ var init_HmacAlgorithm2 = __esm({
80637
80678
  }
80638
80679
  });
80639
80680
 
80640
- // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadBodySort.js
80641
- var WebhookPayloadBodySort2;
80642
- var init_WebhookPayloadBodySort2 = __esm({
80643
- "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadBodySort.js"() {
80644
- "use strict";
80645
- init_core2();
80646
- WebhookPayloadBodySort2 = schemas_exports3.enum_(["ALPHABETICAL"]);
80647
- }
80648
- });
80649
-
80650
- // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadComponent.js
80651
- var WebhookPayloadComponent2;
80652
- var init_WebhookPayloadComponent2 = __esm({
80653
- "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadComponent.js"() {
80654
- "use strict";
80655
- init_core2();
80656
- WebhookPayloadComponent2 = schemas_exports3.enum_(["BODY", "TIMESTAMP", "NOTIFICATION_URL", "MESSAGE_ID"]);
80657
- }
80658
- });
80659
-
80660
- // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadFormat.js
80661
- var WebhookPayloadFormat;
80662
- var init_WebhookPayloadFormat2 = __esm({
80663
- "../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/WebhookPayloadFormat.js"() {
80664
- "use strict";
80665
- init_core2();
80666
- init_WebhookPayloadBodySort2();
80667
- init_WebhookPayloadComponent2();
80668
- WebhookPayloadFormat = schemas_exports3.objectWithoutOptionalProperties({
80669
- components: schemas_exports3.list(WebhookPayloadComponent2),
80670
- delimiter: schemas_exports3.string(),
80671
- bodySort: WebhookPayloadBodySort2.optional()
80672
- });
80673
- }
80674
- });
80675
-
80676
80681
  // ../../ir-sdk/lib/sdk/serialization/resources/webhooks/types/HmacSignatureVerification.js
80677
80682
  var HmacSignatureVerification;
80678
80683
  var init_HmacSignatureVerification2 = __esm({
@@ -116904,6 +116909,7 @@ var init_DocsYmlSchemas = __esm({
116904
116909
  chatgpt: external_exports.boolean().optional(),
116905
116910
  claude: external_exports.boolean().optional(),
116906
116911
  cursor: external_exports.boolean().optional(),
116912
+ mcp: external_exports.boolean().optional(),
116907
116913
  vscode: external_exports.boolean().optional(),
116908
116914
  custom: external_exports.array(CustomPageAction).optional()
116909
116915
  });
@@ -122910,6 +122916,7 @@ var init_PageActionOptions2 = __esm({
122910
122916
  claude: schemas_exports6.boolean().optional(),
122911
122917
  claudeCode: schemas_exports6.property("claude-code", schemas_exports6.boolean().optional()),
122912
122918
  cursor: schemas_exports6.boolean().optional(),
122919
+ mcp: schemas_exports6.boolean().optional(),
122913
122920
  vscode: schemas_exports6.boolean().optional(),
122914
122921
  custom: schemas_exports6.list(CustomPageAction2).optional(),
122915
122922
  skills: SkillsPageActionConfig.optional()
@@ -137416,6 +137423,42 @@ var init_AsymmetricAlgorithm4 = __esm({
137416
137423
  }
137417
137424
  });
137418
137425
 
137426
+ // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadBodySort.js
137427
+ var WebhookPayloadBodySort4;
137428
+ var init_WebhookPayloadBodySort4 = __esm({
137429
+ "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadBodySort.js"() {
137430
+ "use strict";
137431
+ init_core7();
137432
+ WebhookPayloadBodySort4 = schemas_exports9.enum_(["alphabetical"]);
137433
+ }
137434
+ });
137435
+
137436
+ // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadComponent.js
137437
+ var WebhookPayloadComponent4;
137438
+ var init_WebhookPayloadComponent4 = __esm({
137439
+ "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadComponent.js"() {
137440
+ "use strict";
137441
+ init_core7();
137442
+ WebhookPayloadComponent4 = schemas_exports9.enum_(["body", "timestamp", "notification-url", "message-id"]);
137443
+ }
137444
+ });
137445
+
137446
+ // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadFormat.js
137447
+ var WebhookPayloadFormat2;
137448
+ var init_WebhookPayloadFormat4 = __esm({
137449
+ "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadFormat.js"() {
137450
+ "use strict";
137451
+ init_core7();
137452
+ init_WebhookPayloadBodySort4();
137453
+ init_WebhookPayloadComponent4();
137454
+ WebhookPayloadFormat2 = schemas_exports9.objectWithoutOptionalProperties({
137455
+ components: schemas_exports9.list(WebhookPayloadComponent4),
137456
+ delimiter: schemas_exports9.string().optional(),
137457
+ bodySort: WebhookPayloadBodySort4.optional()
137458
+ });
137459
+ }
137460
+ });
137461
+
137419
137462
  // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookSignatureEncoding.js
137420
137463
  var WebhookSignatureEncoding4;
137421
137464
  var init_WebhookSignatureEncoding4 = __esm({
@@ -137458,6 +137501,7 @@ var init_AsymmetricWebhookSignatureVerification2 = __esm({
137458
137501
  "use strict";
137459
137502
  init_core7();
137460
137503
  init_AsymmetricAlgorithm4();
137504
+ init_WebhookPayloadFormat4();
137461
137505
  init_WebhookSignatureEncoding4();
137462
137506
  init_WebhookTimestamp2();
137463
137507
  AsymmetricWebhookSignatureVerification = schemas_exports9.objectWithoutOptionalProperties({
@@ -137467,6 +137511,7 @@ var init_AsymmetricWebhookSignatureVerification2 = __esm({
137467
137511
  signaturePrefix: schemas_exports9.string().optional(),
137468
137512
  jwksUrl: schemas_exports9.string().optional(),
137469
137513
  keyIdHeader: schemas_exports9.string().optional(),
137514
+ payloadFormat: WebhookPayloadFormat2.optional(),
137470
137515
  timestamp: WebhookTimestamp.optional()
137471
137516
  });
137472
137517
  }
@@ -138426,42 +138471,6 @@ var init_GlobalSecurity2 = __esm({
138426
138471
  }
138427
138472
  });
138428
138473
 
138429
- // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadBodySort.js
138430
- var WebhookPayloadBodySort4;
138431
- var init_WebhookPayloadBodySort4 = __esm({
138432
- "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadBodySort.js"() {
138433
- "use strict";
138434
- init_core7();
138435
- WebhookPayloadBodySort4 = schemas_exports9.enum_(["alphabetical"]);
138436
- }
138437
- });
138438
-
138439
- // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadComponent.js
138440
- var WebhookPayloadComponent4;
138441
- var init_WebhookPayloadComponent4 = __esm({
138442
- "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadComponent.js"() {
138443
- "use strict";
138444
- init_core7();
138445
- WebhookPayloadComponent4 = schemas_exports9.enum_(["body", "timestamp", "notification-url", "message-id"]);
138446
- }
138447
- });
138448
-
138449
- // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadFormat.js
138450
- var WebhookPayloadFormat2;
138451
- var init_WebhookPayloadFormat4 = __esm({
138452
- "../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookPayloadFormat.js"() {
138453
- "use strict";
138454
- init_core7();
138455
- init_WebhookPayloadBodySort4();
138456
- init_WebhookPayloadComponent4();
138457
- WebhookPayloadFormat2 = schemas_exports9.objectWithoutOptionalProperties({
138458
- components: schemas_exports9.list(WebhookPayloadComponent4),
138459
- delimiter: schemas_exports9.string().optional(),
138460
- bodySort: WebhookPayloadBodySort4.optional()
138461
- });
138462
- }
138463
- });
138464
-
138465
138474
  // ../api-importers/openapi/openapi-ir/lib/sdk/serialization/resources/finalIr/types/WebhookSignatureAlgorithm.js
138466
138475
  var WebhookSignatureAlgorithm2;
138467
138476
  var init_WebhookSignatureAlgorithm2 = __esm({
@@ -146032,6 +146041,7 @@ function convertSignatureVerification(signatureVerification) {
146032
146041
  "signature-prefix": signatureVerification.signaturePrefix,
146033
146042
  "jwks-url": signatureVerification.jwksUrl,
146034
146043
  "key-id-header": signatureVerification.keyIdHeader,
146044
+ "payload-format": convertPayloadFormat(signatureVerification.payloadFormat),
146035
146045
  timestamp: convertTimestamp(signatureVerification.timestamp)
146036
146046
  };
146037
146047
  default:
@@ -165270,6 +165280,7 @@ function convertSignatureSchema(extension4) {
165270
165280
  signaturePrefix: extension4["signature-prefix"],
165271
165281
  jwksUrl: extension4["jwks-url"],
165272
165282
  keyIdHeader: extension4["key-id-header"],
165283
+ payloadFormat: convertPayloadFormat2(extension4["payload-format"]),
165273
165284
  timestamp: convertTimestamp2(extension4.timestamp)
165274
165285
  });
165275
165286
  }
@@ -232161,6 +232172,7 @@ function convertPageActions(pageActions, absoluteFilepathToDocsConfig) {
232161
232172
  claude: pageActions.options?.claude ?? true,
232162
232173
  cursor: pageActions.options?.cursor ?? true,
232163
232174
  claudeCode: pageActions.options?.claudeCode ?? true,
232175
+ mcp: pageActions.options?.mcp ?? true,
232164
232176
  vscode: pageActions.options?.vscode ?? false,
232165
232177
  custom: (pageActions.options?.custom ?? []).map((action) => convertCustomPageAction(action, absoluteFilepathToDocsConfig)),
232166
232178
  skills: convertSkillsPageAction(pageActions.options?.skills)
@@ -263778,6 +263790,7 @@ function maybeCreateAndStoreExample({ key: key2, displayName, request: request7,
263778
263790
  if (!exampleStore.has(key2)) {
263779
263791
  const example = {
263780
263792
  displayName,
263793
+ contentType: void 0,
263781
263794
  request: request7,
263782
263795
  response,
263783
263796
  codeSamples: void 0
@@ -273611,6 +273624,7 @@ function convertAsymmetricSignature({ asymmetric, file: file4 }) {
273611
273624
  encoding: convertSignatureEncoding2(asymmetric.encoding),
273612
273625
  signaturePrefix: asymmetric["signature-prefix"],
273613
273626
  keySource: convertKeySource({ asymmetric, file: file4 }),
273627
+ payloadFormat: asymmetric["payload-format"] != null ? convertPayloadFormat3(asymmetric["payload-format"]) : void 0,
273614
273628
  timestamp: convertTimestampConfig({ timestamp: asymmetric.timestamp, file: file4 })
273615
273629
  };
273616
273630
  }
@@ -323787,6 +323801,17 @@ var init_fern_schema = __esm({
323787
323801
  ],
323788
323802
  description: "HTTP header containing the key ID for JWKS key selection."
323789
323803
  },
323804
+ "payload-format": {
323805
+ oneOf: [
323806
+ {
323807
+ $ref: "#/definitions/webhooks.WebhookPayloadFormatSchema"
323808
+ },
323809
+ {
323810
+ type: "null"
323811
+ }
323812
+ ],
323813
+ description: 'Describes how the signed payload is constructed.\nDefaults to body-only (components: [body], delimiter: "").'
323814
+ },
323790
323815
  timestamp: {
323791
323816
  oneOf: [
323792
323817
  {
@@ -328092,6 +328117,17 @@ var init_package_yml_schema = __esm({
328092
328117
  ],
328093
328118
  description: "HTTP header containing the key ID for JWKS key selection."
328094
328119
  },
328120
+ "payload-format": {
328121
+ oneOf: [
328122
+ {
328123
+ $ref: "#/definitions/webhooks.WebhookPayloadFormatSchema"
328124
+ },
328125
+ {
328126
+ type: "null"
328127
+ }
328128
+ ],
328129
+ description: 'Describes how the signed payload is constructed.\nDefaults to body-only (components: [body], delimiter: "").'
328130
+ },
328095
328131
  timestamp: {
328096
328132
  oneOf: [
328097
328133
  {
@@ -350712,6 +350748,19 @@ var init_OperationConverter = __esm({
350712
350748
  }
350713
350749
  }
350714
350750
  }
350751
+ if (Object.keys(fernExamples.examples).length === 0 && Object.keys(fernExamples.streamExamples).length === 0 && convertedRequestBodies != null && convertedRequestBodies.length > 1) {
350752
+ const perContentTypeExamples = this.synthesizeEndpointExamplesFromPerContentTypeRequestBodies({
350753
+ convertedRequestBodies,
350754
+ httpPath: path119,
350755
+ httpMethod,
350756
+ baseUrl
350757
+ });
350758
+ if (perContentTypeExamples != null) {
350759
+ for (const [name2, example] of Object.entries(perContentTypeExamples)) {
350760
+ fernExamples.examples[name2] = example;
350761
+ }
350762
+ }
350763
+ }
350715
350764
  const endpointLevelSecuritySchemes = new Set(this.operation.security?.flatMap((securityRequirement) => Object.keys(securityRequirement)) ?? []);
350716
350765
  const securityHeaders = this.authSchemeToHeaders(Array.from(endpointLevelSecuritySchemes));
350717
350766
  if (securityHeaders.length > 0) {
@@ -351235,6 +351284,7 @@ var init_OperationConverter = __esm({
351235
351284
  if (resolvedValue != null) {
351236
351285
  result[name2] = {
351237
351286
  displayName: void 0,
351287
+ contentType: void 0,
351238
351288
  request: {
351239
351289
  docs: void 0,
351240
351290
  endpoint: {
@@ -351298,6 +351348,104 @@ var init_OperationConverter = __esm({
351298
351348
  }
351299
351349
  return void 0;
351300
351350
  }
351351
+ /**
351352
+ * Synthesizes endpoint-level v2Examples from per-content-type request body
351353
+ * examples that have already been extracted by the RequestBodyConverter.
351354
+ *
351355
+ * This handles the case where multiple content types (e.g. application/json
351356
+ * and application/ld+json) reference the same schema but have distinct
351357
+ * per-content-type examples. The RequestBodyConverter correctly extracts
351358
+ * these into each body's v2Examples, but they need to be elevated to
351359
+ * endpoint-level examples (tagged with contentType) for docs rendering.
351360
+ */
351361
+ synthesizeEndpointExamplesFromPerContentTypeRequestBodies({ convertedRequestBodies, httpPath, httpMethod, baseUrl }) {
351362
+ const result = {};
351363
+ const responseExamplesByContentType = this.extractNativeResponseExamplesByContentType();
351364
+ for (const convertedBody of convertedRequestBodies) {
351365
+ const body = convertedBody.requestBody;
351366
+ const bodyContentType = body.contentType;
351367
+ const bodyV2Examples = body.v2Examples;
351368
+ if (bodyV2Examples == null) {
351369
+ continue;
351370
+ }
351371
+ const userExamples = bodyV2Examples.userSpecifiedExamples;
351372
+ if (Object.keys(userExamples).length === 0) {
351373
+ continue;
351374
+ }
351375
+ const matchedResponse = bodyContentType != null ? responseExamplesByContentType.get(bodyContentType) : void 0;
351376
+ for (const [exampleName, exampleValue] of Object.entries(userExamples)) {
351377
+ const key2 = convertedRequestBodies.length > 1 && bodyContentType != null ? `${exampleName} (${bodyContentType})` : exampleName;
351378
+ result[key2] = {
351379
+ displayName: convertedRequestBodies.length > 1 ? key2 : void 0,
351380
+ contentType: bodyContentType ?? void 0,
351381
+ request: {
351382
+ docs: void 0,
351383
+ endpoint: {
351384
+ method: httpMethod,
351385
+ path: this.buildExamplePath(httpPath, {})
351386
+ },
351387
+ baseUrl: void 0,
351388
+ environment: baseUrl,
351389
+ auth: void 0,
351390
+ pathParameters: {},
351391
+ queryParameters: {},
351392
+ headers: {},
351393
+ requestBody: exampleValue
351394
+ },
351395
+ response: matchedResponse ?? this.extractNativeResponseExample() ?? void 0,
351396
+ codeSamples: void 0
351397
+ };
351398
+ }
351399
+ }
351400
+ return Object.keys(result).length > 0 ? result : void 0;
351401
+ }
351402
+ /**
351403
+ * Extracts native response examples grouped by content type from the
351404
+ * operation's successful (2xx) responses. Used by
351405
+ * synthesizeEndpointExamplesFromPerContentTypeRequestBodies to match
351406
+ * response examples to their corresponding request content types.
351407
+ */
351408
+ extractNativeResponseExamplesByContentType() {
351409
+ const responsesByContentType = /* @__PURE__ */ new Map();
351410
+ if (this.operation.responses == null) {
351411
+ return responsesByContentType;
351412
+ }
351413
+ for (const [statusCode, response] of Object.entries(this.operation.responses)) {
351414
+ const statusCodeNum = parseInt(statusCode);
351415
+ if (isNaN(statusCodeNum) || statusCodeNum < 200 || statusCodeNum >= 300) {
351416
+ continue;
351417
+ }
351418
+ const resolvedResponse = this.context.resolveMaybeReference({
351419
+ schemaOrReference: response,
351420
+ breadcrumbs: [...this.breadcrumbs, "responses", statusCode]
351421
+ });
351422
+ if (resolvedResponse?.content == null) {
351423
+ continue;
351424
+ }
351425
+ for (const [responseContentType, responseMediaType] of Object.entries(resolvedResponse.content)) {
351426
+ if (responsesByContentType.has(responseContentType)) {
351427
+ continue;
351428
+ }
351429
+ const namedExamples = this.context.getNamedExamplesFromMediaTypeObject({
351430
+ mediaTypeObject: responseMediaType,
351431
+ breadcrumbs: [...this.breadcrumbs, "responses", statusCode],
351432
+ defaultExampleName: "Example"
351433
+ });
351434
+ for (const [, example] of namedExamples) {
351435
+ const resolvedValue = this.context.resolveExampleWithValue(example);
351436
+ if (resolvedValue != null) {
351437
+ responsesByContentType.set(responseContentType, {
351438
+ docs: void 0,
351439
+ statusCode: statusCodeNum,
351440
+ body: api_exports.V2HttpEndpointResponseBody.json(resolvedValue)
351441
+ });
351442
+ break;
351443
+ }
351444
+ }
351445
+ }
351446
+ }
351447
+ return responsesByContentType;
351448
+ }
351301
351449
  convertStreamConditionExamples({ httpPath, httpMethod, baseUrl, fernExamples }) {
351302
351450
  const filteredJsonExamples = fernExamples.filter((example) => !(example.response != null && "stream" in example.response));
351303
351451
  const filteredStreamExamples = fernExamples.filter((example) => example.response != null && "stream" in example.response);
@@ -351321,6 +351469,7 @@ var init_OperationConverter = __esm({
351321
351469
  this.getExampleName({ example, exampleIndex }),
351322
351470
  {
351323
351471
  displayName: void 0,
351472
+ contentType: void 0,
351324
351473
  request: example.request != null || example["path-parameters"] != null || example["query-parameters"] != null || example.headers != null ? {
351325
351474
  docs: void 0,
351326
351475
  endpoint: {
@@ -352776,6 +352925,7 @@ var init_MethodConverter = __esm({
352776
352925
  }
352777
352926
  examples[exampleName] = {
352778
352927
  displayName: void 0,
352928
+ contentType: void 0,
352779
352929
  request: {
352780
352930
  docs: void 0,
352781
352931
  endpoint: {
@@ -460746,6 +460896,7 @@ https://buildwithfern.com/learn/docs/getting-started/project-structure#api-defin
460746
460896
  cursor: this.parsedDocsConfig.pageActions.options.cursor,
460747
460897
  claudeCode: this.parsedDocsConfig.pageActions.options.claudeCode,
460748
460898
  vscode: this.parsedDocsConfig.pageActions.options.vscode,
460899
+ ...!this.parsedDocsConfig.pageActions.options.mcp ? { mcp: false } : {},
460749
460900
  custom: this.parsedDocsConfig.pageActions.options.custom.map((customAction) => ({
460750
460901
  title: customAction.title,
460751
460902
  subtitle: customAction.subtitle,
@@ -686972,7 +687123,7 @@ var AccessTokenPosthogManager = class {
686972
687123
  properties: {
686973
687124
  ...event,
686974
687125
  ...event.properties,
686975
- version: "5.58.0",
687126
+ version: "5.60.0",
686976
687127
  usingAccessToken: true,
686977
687128
  ...getRunIdProperties()
686978
687129
  }
@@ -687038,7 +687189,7 @@ var UserPosthogManager = class {
687038
687189
  distinctId: this.userId ?? await this.getPersistedDistinctId(),
687039
687190
  event: "CLI",
687040
687191
  properties: {
687041
- version: "5.58.0",
687192
+ version: "5.60.0",
687042
687193
  ...event,
687043
687194
  ...event.properties,
687044
687195
  usingAccessToken: false,
@@ -868133,7 +868284,7 @@ var LOCAL_STORAGE_FOLDER4 = ".fern-dev";
868133
868284
  var LOGS_FOLDER_NAME = "logs";
868134
868285
  var MAX_LOGS_DIR_SIZE_BYTES = 100 * 1024 * 1024;
868135
868286
  function getCliSource() {
868136
- const version7 = "5.58.0";
868287
+ const version7 = "5.60.0";
868137
868288
  return `cli@${version7}`;
868138
868289
  }
868139
868290
  var DebugLogger = class {
@@ -894532,6 +894683,17 @@ var definitions6 = {
894532
894683
  ],
894533
894684
  description: 'Controls the "Connect to Cursor" button, which installs this docs site\'s MCP server in\nCursor via a deeplink. The button only renders on docs sites that have Ask AI enabled; set\nto `false` to hide it on those sites.\n\n@default: true'
894534
894685
  },
894686
+ mcp: {
894687
+ oneOf: [
894688
+ {
894689
+ type: "boolean"
894690
+ },
894691
+ {
894692
+ type: "null"
894693
+ }
894694
+ ],
894695
+ description: 'Controls whether the MCP server endpoint (`/_mcp/server`) is enabled for this docs site.\nWhen set to `false`, the endpoint returns 404, the MCP server URL is omitted from\n`llms.txt` and agent prompts, and the "Connect to Claude Code" / "Connect to Cursor"\nbuttons are hidden. Useful for authenticated docs sites where unauthenticated AI agents\ndiscovering the endpoint would cause confusion.\n\n@default: true'
894696
+ },
894535
894697
  vscode: {
894536
894698
  oneOf: [
894537
894699
  {
@@ -900614,7 +900776,7 @@ var LegacyDocsPublisher = class {
900614
900776
  previewId,
900615
900777
  disableTemplates: void 0,
900616
900778
  skipUpload,
900617
- cliVersion: "5.58.0",
900779
+ cliVersion: "5.60.0",
900618
900780
  loginCommand: "fern auth login"
900619
900781
  });
900620
900782
  if (taskContext.getResult() === TaskResult.Failure) {
@@ -964455,6 +964617,7 @@ init_lib9();
964455
964617
  function initializeEmptyServiceExample() {
964456
964618
  return {
964457
964619
  displayName: void 0,
964620
+ contentType: void 0,
964458
964621
  request: {
964459
964622
  endpoint: {
964460
964623
  method: V2EndpointLocationHttpMethod.Post,
@@ -966883,7 +967046,7 @@ function getAutomationContextFromEnv() {
966883
967046
  config_branch: process.env.FERN_CONFIG_BRANCH,
966884
967047
  config_pr_number: process.env.FERN_CONFIG_PR_NUMBER,
966885
967048
  trigger: process.env.GITHUB_EVENT_NAME,
966886
- cli_version: "5.58.0"
967049
+ cli_version: "5.60.0"
966887
967050
  };
966888
967051
  }
966889
967052
  function isAutomationMode() {
@@ -967715,7 +967878,7 @@ var CliContext = class _CliContext {
967715
967878
  if (false) {
967716
967879
  this.logger.error("CLI_VERSION is not defined");
967717
967880
  }
967718
- return "5.58.0";
967881
+ return "5.60.0";
967719
967882
  }
967720
967883
  getCliName() {
967721
967884
  if (false) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "5.58.0",
2
+ "version": "5.60.0",
3
3
  "repository": {
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/fern-api/fern.git",