diff --git a/fern/docs.yml b/fern/docs.yml index 9bc1c56382e..2b8629369ab 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -402,6 +402,9 @@ navigation: - page: Write Markdown in API Reference icon: fa-regular fa-pencil path: ./pages/fern-docs/content/api-ref-content.mdx + - page: Customize API Playground + icon: fa-regular fa-square-terminal + path: ./pages/fern-docs/content/customize-api-playground.mdx - section: Integrations slug: integrations diff --git a/fern/pages/fern-docs/content/customize-api-playground.mdx b/fern/pages/fern-docs/content/customize-api-playground.mdx new file mode 100644 index 00000000000..71de479fdef --- /dev/null +++ b/fern/pages/fern-docs/content/customize-api-playground.mdx @@ -0,0 +1,35 @@ +--- +title: Customize your API Playground +description: Customize your API Playground Settings +--- + +If you subscribe to Fern's Pro or Enterprise Plans, you can customize your API Playground settings to suit your customers needs. + +All configuration settings are defined in the `docs.yml` file, under API Reference navigation configuration, in a `Playground` object. + +### Filtering Server Urls + +If you have multiple environments for your API, you can filter the server URLs that are displayed in the API Playground. + +To filter server URLs, add the `environments` property to the `PlaygroundSettings` object in your `docs.yml`, like so: + +```yaml +navigation: + playground: + environments: + - Staging-A + - Staging-B +``` + +### Enabling OAuth 2.0 Authorization Injection + +If you have defined an endpoint that executes OAuth 2.0 Client Credentials Authorization in your API definition, you can enable OAuth 2.0 Authorization Injection in your API Playground. +More information on enabling OAuth 2.0 Authorization Injection can be found [here](/learn/api-definition/fern/authentication#oauth-client-credentials). + +To enable OAuth 2.0 Authorization Injection, simply add the `oauth` feature flag to the `PlaygroundSettings` object in your `docs.yml`, like so: + +```yaml +navigation: + playground: + oauth: true +``` \ No newline at end of file diff --git a/packages/cli/cli/versions.yml b/packages/cli/cli/versions.yml index fa43c54a4b2..0cb60e4db6c 100644 --- a/packages/cli/cli/versions.yml +++ b/packages/cli/cli/versions.yml @@ -1,3 +1,34 @@ +- changelogEntry: + - summary: | + The Fern Docs CLI now supports OAuth 2.0 Client Credentials injection in API playgrounds. + To enable this feature, you can define the OAuth Authorization Scheme in your API configuration, + and enable the feature in your docs configuration. + + API configuration: + ```yml + api: + auth-schemes: + OAuth: + scheme: oauth + type: client-credentials + get-token: + endpoint: endpoint.authorization + ``` + (More Information)[https://buildwithfern.com/learn/api-definition/fern/authentication#oauth-client-credentials] + + Docs configuration: + ```yml + navigation: + section: API Reference + playground: + oauth: true + ``` + (More Information)[https://buildwithfern.com/learn/docs/api-references/customize-api-playground] + type: feat + createdAt: '2024-09-07' + irVersion: 53 + version: 0.41.6 + - changelogEntry: - summary: | Fix an issue with non-deterministic file ordering when OpenAPI is used as input. diff --git a/packages/cli/configuration/fern/definition/docs.yml b/packages/cli/configuration/fern/definition/docs.yml index e4804c05bfe..0ac42c40051 100644 --- a/packages/cli/configuration/fern/definition/docs.yml +++ b/packages/cli/configuration/fern/definition/docs.yml @@ -973,6 +973,7 @@ types: docs: A list of environment IDs that are allowed to be used in the playground. If not provided, all environments are allowed. And if the provided list is empty, the playground should be disabled. button: optional + oauth: optional PlaygroundButtonSettings: properties: @@ -983,3 +984,4 @@ types: message: type: string docs: The message to display in the announcement bar. Markdown is supported. + diff --git a/packages/cli/configuration/package.json b/packages/cli/configuration/package.json index 2a41ac0af95..c0e3f63d6d2 100644 --- a/packages/cli/configuration/package.json +++ b/packages/cli/configuration/package.json @@ -33,7 +33,7 @@ "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", "@fern-api/fern-definition-schema": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "@fern-fern/fiddle-sdk": "0.0.584", "@fern-fern/generators-sdk": "0.107.0-00fe26566", "find-up": "^6.3.0", diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PlaygroundSettings.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PlaygroundSettings.ts index 0d684e4fc0c..3db55ad22b9 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PlaygroundSettings.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/api/resources/docs/types/PlaygroundSettings.ts @@ -8,4 +8,5 @@ export interface PlaygroundSettings { /** A list of environment IDs that are allowed to be used in the playground. If not provided, all environments are allowed. And if the provided list is empty, the playground should be disabled. */ environments?: string[]; button?: FernDocsConfig.PlaygroundButtonSettings; + oauth?: boolean; } diff --git a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PlaygroundSettings.ts b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PlaygroundSettings.ts index 7b0a2dec715..8b3cbf959ef 100644 --- a/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PlaygroundSettings.ts +++ b/packages/cli/configuration/src/docs-yml/schemas/sdk/serialization/resources/docs/types/PlaygroundSettings.ts @@ -12,11 +12,13 @@ export const PlaygroundSettings: core.serialization.ObjectSchema< > = core.serialization.object({ environments: core.serialization.list(core.serialization.string()).optional(), button: core.serialization.lazyObject(async () => (await import("../../..")).PlaygroundButtonSettings).optional(), + oauth: core.serialization.boolean().optional(), }); export declare namespace PlaygroundSettings { interface Raw { environments?: string[] | null; button?: serializers.PlaygroundButtonSettings.Raw | null; + oauth?: boolean | null; } } diff --git a/packages/cli/docs-markdown-utils/package.json b/packages/cli/docs-markdown-utils/package.json index 3016aff4083..667eeaa78c0 100644 --- a/packages/cli/docs-markdown-utils/package.json +++ b/packages/cli/docs-markdown-utils/package.json @@ -30,7 +30,7 @@ "dependencies": { "@fern-api/fs-utils": "workspace:*", "@fern-api/task-context": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "gray-matter": "^4.0.3", "mdast-util-from-markdown": "^2.0.1", "mdast-util-mdx": "^3.0.0", diff --git a/packages/cli/docs-preview/package.json b/packages/cli/docs-preview/package.json index 0b36eb1d977..1b3e4509b68 100644 --- a/packages/cli/docs-preview/package.json +++ b/packages/cli/docs-preview/package.json @@ -28,11 +28,11 @@ "depcheck": "depcheck" }, "dependencies": { - "@fern-api/docs-resolver": "workspace:*", - "@fern-api/fdr-sdk": "0.107.0-58bab3016", + "@fern-api/docs-resolver": "workspace:*", + "@fern-api/fdr-sdk": "0.108.0-e5e9d69a4", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-sdk": "workspace:*", - "@fern-api/logger": "workspace:*", + "@fern-api/logger": "workspace:*", "@fern-api/project-loader": "workspace:*", "@fern-api/register": "workspace:*", "@fern-api/task-context": "workspace:*", diff --git a/packages/cli/docs-preview/src/previewDocs.ts b/packages/cli/docs-preview/src/previewDocs.ts index 8f721742a25..20519b63b75 100644 --- a/packages/cli/docs-preview/src/previewDocs.ts +++ b/packages/cli/docs-preview/src/previewDocs.ts @@ -95,15 +95,17 @@ class ReferencedAPICollector { public addReferencedAPI({ ir, - snippetsConfig + snippetsConfig, + playgroundConfig }: { ir: IntermediateRepresentation; snippetsConfig: APIV1Write.SnippetsConfig; + playgroundConfig?: DocsV1Read.PlaygroundConfig; }): APIDefinitionID { try { const id = uuidv4(); - const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig }); + const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig, playgroundConfig }); const dbApiDefinition = convertAPIDefinitionToDb( apiDefinition, diff --git a/packages/cli/docs-resolver/package.json b/packages/cli/docs-resolver/package.json index 787dd5fd5a8..f4c01b2ced5 100644 --- a/packages/cli/docs-resolver/package.json +++ b/packages/cli/docs-resolver/package.json @@ -30,7 +30,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/core-utils": "workspace:*", "@fern-api/docs-markdown-utils": "workspace:*", - "@fern-api/fdr-sdk": "0.107.0-58bab3016", + "@fern-api/fdr-sdk": "0.108.0-e5e9d69a4", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-sdk": "workspace:*", diff --git a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts index 48d070d70d1..396c90ba793 100644 --- a/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts +++ b/packages/cli/docs-resolver/src/DocsDefinitionResolver.ts @@ -48,6 +48,7 @@ export class DocsDefinitionResolver { private registerApi: (opts: { ir: IntermediateRepresentation; snippetsConfig: APIV1Write.SnippetsConfig; + playgroundConfig?: DocsV1Write.PlaygroundConfig; }) => Promise ) {} @@ -261,6 +262,7 @@ export class DocsDefinitionResolver { this.parsedDocsConfig.announcement != null ? { text: this.parsedDocsConfig.announcement.message } : undefined, + playground: undefined, // deprecated logo: undefined, logoV2: undefined, @@ -288,7 +290,6 @@ export class DocsDefinitionResolver { private async convertNavigationConfig(): Promise { const slug = FernNavigation.SlugGenerator.init(FernNavigation.utils.slugjoin(this.getDocsBasePath())); - const landingPage = this.parsedDocsConfig.landingPage; switch (this.parsedDocsConfig.navigation.type) { case "versioned": { const versions = await Promise.all( @@ -379,8 +380,12 @@ export class DocsDefinitionResolver { packageName: undefined, context: this.taskContext }); - const apiDefinitionId = await this.registerApi({ ir, snippetsConfig }); - const api = convertIrToApiDefinition(ir, apiDefinitionId); + const apiDefinitionId = await this.registerApi({ + ir, + snippetsConfig, + playgroundConfig: { oauth: item.playground?.oauth } + }); + const api = convertIrToApiDefinition(ir, apiDefinitionId, { oauth: item.playground?.oauth }); const node = new ApiReferenceNodeConverter( item, api, diff --git a/packages/cli/docs-resolver/src/utils/convertIrToApiDefinition.ts b/packages/cli/docs-resolver/src/utils/convertIrToApiDefinition.ts index bf76b611c3e..b70ce6116cb 100644 --- a/packages/cli/docs-resolver/src/utils/convertIrToApiDefinition.ts +++ b/packages/cli/docs-resolver/src/utils/convertIrToApiDefinition.ts @@ -1,4 +1,10 @@ -import { APIV1Read, convertAPIDefinitionToDb, convertDbAPIDefinitionToRead, SDKSnippetHolder } from "@fern-api/fdr-sdk"; +import { + APIV1Read, + DocsV1Read, + convertAPIDefinitionToDb, + convertDbAPIDefinitionToRead, + SDKSnippetHolder +} from "@fern-api/fdr-sdk"; import { IntermediateRepresentation } from "@fern-api/ir-sdk"; import { convertIrToFdrApi } from "@fern-api/register"; @@ -12,10 +18,15 @@ const EMPTY_SNIPPET_HOLDER = new SDKSnippetHolder({ export function convertIrToApiDefinition( ir: IntermediateRepresentation, - apiDefinitionId: string + apiDefinitionId: string, + playgroundConfig?: DocsV1Read.PlaygroundConfig ): APIV1Read.ApiDefinition { // the navigation constructor doesn't need to know about snippets, so we can pass an empty object return convertDbAPIDefinitionToRead( - convertAPIDefinitionToDb(convertIrToFdrApi({ ir, snippetsConfig: {} }), apiDefinitionId, EMPTY_SNIPPET_HOLDER) + convertAPIDefinitionToDb( + convertIrToFdrApi({ ir, snippetsConfig: {}, playgroundConfig }), + apiDefinitionId, + EMPTY_SNIPPET_HOLDER + ) ); } diff --git a/packages/cli/ete-tests/package.json b/packages/cli/ete-tests/package.json index 578b9865ff7..cdfdc161f9d 100644 --- a/packages/cli/ete-tests/package.json +++ b/packages/cli/ete-tests/package.json @@ -29,7 +29,7 @@ }, "dependencies": { "@fern-api/configuration": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "@fern-api/fs-utils": "workspace:*", "@fern-api/logging-execa": "workspace:*", "@fern-typescript/fetcher": "workspace:*", diff --git a/packages/cli/generation/remote-generation/remote-workspace-runner/package.json b/packages/cli/generation/remote-generation/remote-workspace-runner/package.json index c889f2f85e4..8d520988f27 100644 --- a/packages/cli/generation/remote-generation/remote-workspace-runner/package.json +++ b/packages/cli/generation/remote-generation/remote-workspace-runner/package.json @@ -34,7 +34,7 @@ "@fern-api/core-utils": "workspace:*", "@fern-api/docs-resolver": "workspace:*", "@fern-api/logging-execa": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-migrations": "workspace:*", diff --git a/packages/cli/generation/remote-generation/remote-workspace-runner/src/publishDocs.ts b/packages/cli/generation/remote-generation/remote-workspace-runner/src/publishDocs.ts index b353d6c3237..20bf964e6bc 100644 --- a/packages/cli/generation/remote-generation/remote-workspace-runner/src/publishDocs.ts +++ b/packages/cli/generation/remote-generation/remote-workspace-runner/src/publishDocs.ts @@ -150,8 +150,8 @@ export async function publishDocs({ } } }, - async ({ ir, snippetsConfig }) => { - const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig }); + async ({ ir, snippetsConfig, playgroundConfig }) => { + const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig, playgroundConfig }); context.logger.debug("Calling registerAPI... ", JSON.stringify(apiDefinition, undefined, 4)); const response = await fdr.api.v1.register.registerApiDefinition({ orgId: organization, diff --git a/packages/cli/register/package.json b/packages/cli/register/package.json index 5eb2f03ec71..c04d998ebee 100644 --- a/packages/cli/register/package.json +++ b/packages/cli/register/package.json @@ -32,7 +32,7 @@ "@fern-api/configuration": "workspace:*", "@fern-api/core": "workspace:*", "@fern-api/core-utils": "workspace:*", - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "@fern-api/fs-utils": "workspace:*", "@fern-api/ir-generator": "workspace:*", "@fern-api/ir-sdk": "workspace:*", diff --git a/packages/cli/register/src/ir-to-fdr-converter/convertIrToFdrApi.ts b/packages/cli/register/src/ir-to-fdr-converter/convertIrToFdrApi.ts index aebf7380151..a7b4ddf1ac3 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/convertIrToFdrApi.ts +++ b/packages/cli/register/src/ir-to-fdr-converter/convertIrToFdrApi.ts @@ -1,22 +1,25 @@ import { entries } from "@fern-api/core-utils"; import { IntermediateRepresentation } from "@fern-api/ir-sdk"; import { FernRegistry as FdrCjsSdk } from "@fern-fern/fdr-cjs-sdk"; +import { PlaygroundConfig } from "@fern-fern/fdr-cjs-sdk/api/resources/docs/resources/v1/resources/commons"; import { convertIrAvailability, convertPackage } from "./convertPackage"; import { convertTypeReference, convertTypeShape } from "./convertTypeShape"; import { convertAuth } from "./covertAuth"; export function convertIrToFdrApi({ ir, - snippetsConfig + snippetsConfig, + playgroundConfig }: { ir: IntermediateRepresentation; snippetsConfig: FdrCjsSdk.api.v1.register.SnippetsConfig; + playgroundConfig?: PlaygroundConfig; }): FdrCjsSdk.api.v1.register.ApiDefinition { const fdrApi: FdrCjsSdk.api.v1.register.ApiDefinition = { types: {}, subpackages: {}, rootPackage: convertPackage(ir.rootPackage, ir), - auth: convertAuth(ir.auth), + auth: convertAuth(ir.auth, ir, playgroundConfig), snippetsConfiguration: snippetsConfig, globalHeaders: ir.headers.map( (header): FdrCjsSdk.api.v1.register.Header => ({ diff --git a/packages/cli/register/src/ir-to-fdr-converter/covertAuth.ts b/packages/cli/register/src/ir-to-fdr-converter/covertAuth.ts index 5cc9c16d2b9..ad8ab58b1f1 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/covertAuth.ts +++ b/packages/cli/register/src/ir-to-fdr-converter/covertAuth.ts @@ -1,8 +1,13 @@ import { assertNever } from "@fern-api/core-utils"; import { FernIr as Ir } from "@fern-api/ir-sdk"; import { FernRegistry as FdrCjsSdk } from "@fern-fern/fdr-cjs-sdk"; +import { PlaygroundConfig } from "@fern-fern/fdr-cjs-sdk/api/resources/docs/resources/v1/resources/commons"; -export function convertAuth(auth: Ir.auth.ApiAuth): FdrCjsSdk.api.v1.register.ApiAuth | undefined { +export function convertAuth( + auth: Ir.auth.ApiAuth, + ir: Ir.ir.IntermediateRepresentation, + playgroundConfig?: PlaygroundConfig +): FdrCjsSdk.api.v1.register.ApiAuth | undefined { const scheme = auth.schemes[0]; if (auth.schemes.length === 1 && scheme != null) { switch (scheme.type) { @@ -24,13 +29,29 @@ export function convertAuth(auth: Ir.auth.ApiAuth): FdrCjsSdk.api.v1.register.Ap nameOverride: scheme.name.name.originalName, prefix: scheme.prefix }; - case "oauth": - // TODO: Add support oauth for FDR. For now, we just map - // it to the default bearer auth. - return { - type: "bearerAuth", - tokenName: "token" - }; + case "oauth": { + const tokenPath = + scheme.configuration.tokenEndpoint.responseProperties.accessToken.propertyPath + ?.map((p) => p.originalName) + .join(".") || "$.body.access_token"; + + return playgroundConfig?.oauth + ? { + type: "oAuth", + value: { + type: "clientCredentials", + value: { + type: "referencedEndpoint", + endpointId: scheme.configuration.tokenEndpoint.endpointReference.endpointId, + accessTokenLocator: tokenPath + } + } + } + : { + type: "bearerAuth", + tokenName: "token" + }; + } default: assertNever(scheme); } diff --git a/packages/cli/register/src/registerApi.ts b/packages/cli/register/src/registerApi.ts index 347bcd9ac11..3ea8ed0b016 100644 --- a/packages/cli/register/src/registerApi.ts +++ b/packages/cli/register/src/registerApi.ts @@ -6,6 +6,7 @@ import { IntermediateRepresentation } from "@fern-api/ir-sdk"; import { TaskContext } from "@fern-api/task-context"; import { FernWorkspace } from "@fern-api/workspace-loader"; import { FernRegistry as FdrCjsSdk } from "@fern-fern/fdr-cjs-sdk"; +import { PlaygroundConfig } from "@fern-fern/fdr-cjs-sdk/api/resources/docs/resources/v1/resources/commons"; import { convertIrToFdrApi } from "./ir-to-fdr-converter/convertIrToFdrApi"; export async function registerApi({ @@ -14,7 +15,8 @@ export async function registerApi({ context, token, audiences, - snippetsConfig + snippetsConfig, + playgroundConfig }: { organization: string; workspace: FernWorkspace; @@ -22,6 +24,7 @@ export async function registerApi({ token: FernToken; audiences: Audiences; snippetsConfig: FdrCjsSdk.api.v1.register.SnippetsConfig; + playgroundConfig?: PlaygroundConfig; }): Promise<{ id: FdrCjsSdk.ApiDefinitionId; ir: IntermediateRepresentation }> { const ir = await generateIntermediateRepresentation({ workspace, @@ -40,7 +43,7 @@ export async function registerApi({ token: token.value }); - const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig }); + const apiDefinition = convertIrToFdrApi({ ir, snippetsConfig, playgroundConfig }); context.logger.debug("Calling registerAPI... ", JSON.stringify(apiDefinition, undefined, 4)); const response = await fdrService.api.v1.register.registerApiDefinition({ orgId: organization, diff --git a/packages/core/package.json b/packages/core/package.json index 450a1d99c9a..34e02b38d37 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -28,7 +28,7 @@ "depcheck": "depcheck" }, "dependencies": { - "@fern-fern/fdr-cjs-sdk": "0.1.0", + "@fern-fern/fdr-cjs-sdk": "0.108.0-e5e9d69a4", "@fern-api/venus-api-sdk": "0.0.38", "@fern-fern/fdr-test-sdk": "^0.0.5297", "@fern-fern/fiddle-sdk": "0.0.584" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df13cb41897..13429bc1b25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3104,6 +3104,8 @@ importers: packages/cli/cli/dist/dev: {} + packages/cli/cli/dist/local: {} + packages/cli/cli/dist/prod: {} packages/cli/configuration: @@ -3121,8 +3123,8 @@ importers: specifier: workspace:* version: link:../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 '@fern-fern/fiddle-sdk': specifier: 0.0.584 version: 0.0.584 @@ -3194,8 +3196,8 @@ importers: specifier: workspace:* version: link:../task-context '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 gray-matter: specifier: ^4.0.3 version: 4.0.3 @@ -3249,8 +3251,8 @@ importers: specifier: workspace:* version: link:../docs-resolver '@fern-api/fdr-sdk': - specifier: 0.107.0-58bab3016 - version: 0.107.0-58bab3016(typescript@4.6.4) + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4(typescript@4.6.4) '@fern-api/fs-utils': specifier: workspace:* version: link:../../commons/fs-utils @@ -3352,8 +3354,8 @@ importers: specifier: workspace:* version: link:../docs-markdown-utils '@fern-api/fdr-sdk': - specifier: 0.107.0-58bab3016 - version: 0.107.0-58bab3016(typescript@4.6.4) + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4(typescript@4.6.4) '@fern-api/fs-utils': specifier: workspace:* version: link:../../commons/fs-utils @@ -3425,8 +3427,8 @@ importers: specifier: workspace:* version: link:../../commons/logging-execa '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 '@fern-typescript/fetcher': specifier: workspace:* version: link:../../../generators/typescript/utils/core-utilities/fetcher @@ -4148,8 +4150,8 @@ importers: specifier: workspace:* version: link:../../../workspace-loader '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 '@fern-fern/fiddle-sdk': specifier: 0.0.584 version: 0.0.584 @@ -4757,8 +4759,8 @@ importers: specifier: workspace:* version: link:../workspace-loader '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -5216,8 +5218,8 @@ importers: specifier: 0.0.38 version: 0.0.38 '@fern-fern/fdr-cjs-sdk': - specifier: 0.1.0 - version: 0.1.0 + specifier: 0.108.0-e5e9d69a4 + version: 0.108.0-e5e9d69a4 '@fern-fern/fdr-test-sdk': specifier: ^0.0.5297 version: 0.0.5297 @@ -6478,8 +6480,8 @@ packages: '@exodus/schemasafe@1.0.0': resolution: {integrity: sha512-2cyupPIZI69HQxEAPllLXBjQp4njDKkOjYRCYxvMZe3/LY9pp9fBM3Tb1wiFAdP6Emo4v3OEbCLGj6u73Q5KLw==} - '@fern-api/fdr-sdk@0.107.0-58bab3016': - resolution: {integrity: sha512-cQOi7Ye5/R0RkPFD0AmZOZjo5k8NISWveJjZb2dGbGgmVxZNsO9Es2Ze1034a930pIXBhd6+Shc4/8NU/m+1hw==} + '@fern-api/fdr-sdk@0.108.0-e5e9d69a4': + resolution: {integrity: sha512-LrvlYSw1h8nP/h0nB9g3n24eq1CiTxHPYue6nU6t7rs9gsWUHkN4VxO7fHSj3KU1T1qbFq/L8+HYKuiB7P4ljA==} '@fern-api/venus-api-sdk@0.0.38': resolution: {integrity: sha512-1JjuctZwyPu4jN51bBqjIy+uCBPGa/ROcDfqN0UnGeVEW7NyztkGh/qOFwnN6K07VMMql1AIF4Zov+MVqTPwmw==} @@ -6487,8 +6489,8 @@ packages: '@fern-fern/docs-config@0.0.80': resolution: {integrity: sha512-wAZCNxwM4qIPn3idoIihPP65KWPjNuoTSfdP4+5f8K2jJLgs5cdkY0pm4cQlGWvi5K6b+lfbUWDaslnXscJ2gQ==} - '@fern-fern/fdr-cjs-sdk@0.1.0': - resolution: {integrity: sha512-d55immLwXpBQ5nwPtzg1bXKpGc8ENPTVGqoxLwcmo4wbN4N2HF6/O/qTLa/ZpfzDBmUA6DFcvlRQKzXk8sKDtQ==} + '@fern-fern/fdr-cjs-sdk@0.108.0-e5e9d69a4': + resolution: {integrity: sha512-vYw5dh/hqubHn2pNnocHvrYkg924tx3z107oZSHOoTynLd+fHlF/zFO8h/iK0370JlUUfCQ82GRBvZyoPHtUHA==} '@fern-fern/fdr-test-sdk@0.0.5297': resolution: {integrity: sha512-jrZUZ6oIA64LHtrv77xEq0X7qJhT9xRMGWhKcLjIUArMsD7h6KMWUHVdoB/1MP0Mz/uL/E2xmM31SOgJicpIcA==} @@ -13530,7 +13532,7 @@ snapshots: '@exodus/schemasafe@1.0.0': {} - '@fern-api/fdr-sdk@0.107.0-58bab3016(typescript@4.6.4)': + '@fern-api/fdr-sdk@0.108.0-e5e9d69a4(typescript@4.6.4)': dependencies: dayjs: 1.11.11 fast-deep-equal: 3.1.3 @@ -13558,7 +13560,7 @@ snapshots: '@fern-fern/docs-config@0.0.80': {} - '@fern-fern/fdr-cjs-sdk@0.1.0': + '@fern-fern/fdr-cjs-sdk@0.108.0-e5e9d69a4': dependencies: form-data: 4.0.0 formdata-node: 6.0.3