diff --git a/fern/docs.yml b/fern/docs.yml index ee9fd1ae628..cf0ab8b8acb 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -467,6 +467,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/changelogs/csharp-sdk/2024-10-30.mdx b/fern/pages/changelogs/csharp-sdk/2024-10-30.mdx index 1e22e53fc29..7dd32f21be9 100644 --- a/fern/pages/changelogs/csharp-sdk/2024-10-30.mdx +++ b/fern/pages/changelogs/csharp-sdk/2024-10-30.mdx @@ -1,86 +1,3 @@ ## 1.8.5 -**`(feat):`** Add forward-compatible enums. -Set `experimental-enable-forward-compatible-enums` to `true` in the configuration to generate forward-compatible enums. - -With forward-compatible enums you can create and parse an enum value that is not predefined. - -- Forward compatible enums are not compatible with the previously generated native enums. - This is a breaking change for the users of the generated SDK, but only users using switch-case statements are affected. -- Use the `Value` property to get the string value of the enum. -- For each value in the enum, - - a public static property is generated, which is an instance of the enum class, - - a public static property is generated within the nested `Values` class with the string value of the enum. - -Here's a before and after for creating and parsing a resource with a predefined enum value and a custom enum value: - -**Before**: - -```csharp -var resource = client.CreateResource(new Resource { Id = "2", EnumProperty = MyEnum.Value2 } ); -// The line below does not compile because the enum does not have a `Value3` value. -// resource = client.CreateResource(new Resource { Id = "3", EnumProperty = MyEnum.Value3 } ); -resource = client.GetResource("3"); -switch(resource.EnumProperty) -{ - case MyEnum.Value1: - Console.WriteLine("Value1"); - break; - case MyEnum.Value2: - Console.WriteLine("Value2"); - break; - default: - // this will never be reached until the SDK is updated with the new enum value - Console.WriteLine("Unknown"); - break; -} -if(resource.EnumProperty == MyEnum.Value1) -{ - Console.WriteLine("Value1"); -} -else if (resource.EnumProperty == MyEnum.Value2) -{ - Console.WriteLine("Value2"); -} -else -{ - // this will never be reached until the SDK is updated with the new enum value - Console.WriteLine("Unknown"); -} -``` - -No exception is thrown, but the output incorrectly shows `Value1` because .NET falls back to the first value in the enum. - -**After**: - -```csharp -var resource = client.CreateResource(new Resource { Id = "2", EnumProperty = MyEnum.Value2 } ); -resource = client.CreateResource(new Resource { Id = "3", EnumProperty = MyEnum.Custom("value3") } ); -resource = client.GetResource("3"); -switch(resource.EnumProperty.Value) -{ - case MyEnum.Values.Value1: - Console.WriteLine("Value1"); - break; - case MyEnum.Values.Value2: - Console.WriteLine("Value2"); - break; - default: - Console.WriteLine(resource.EnumProperty.Value); - break; -} -if(resource.EnumProperty == MyEnum.Value1) -{ - Console.WriteLine("Value1"); -} -else if (resource.EnumProperty == MyEnum.Value2) -{ - Console.WriteLine("Value2"); -} -else -{ - Console.WriteLine(resource.EnumProperty.Value); -} -``` - -The output correctly shows `Value3`. +**`(feat):`** Add forward compatible enums. Set `experimental-enable-forward-compatible-enums` to `true` in the configuration to generate forward compatible enums. diff --git a/fern/pages/fern-docs/content/customize-api-playground.mdx b/fern/pages/fern-docs/content/customize-api-playground.mdx index e16639cab90..866aa81f827 100644 --- a/fern/pages/fern-docs/content/customize-api-playground.mdx +++ b/fern/pages/fern-docs/content/customize-api-playground.mdx @@ -1,6 +1,6 @@ --- -title: Advanced configuration -description: Configure advanced settings like the server URLs reachable by the API playground and authentication with OAuth. +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. diff --git a/generators/go-v2/dynamic-snippets/src/__test__/__snapshots__/ir.test.ts.snap b/generators/go-v2/dynamic-snippets/src/__test__/__snapshots__/ir.test.ts.snap index d01c45e51a7..16d71c758d6 100644 --- a/generators/go-v2/dynamic-snippets/src/__test__/__snapshots__/ir.test.ts.snap +++ b/generators/go-v2/dynamic-snippets/src/__test__/__snapshots__/ir.test.ts.snap @@ -2888,14 +2888,61 @@ func do() { exports[`test definitions > grpc-proto-exhaustive 1`] = ` "package example +import ( + context "context" + client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" +) + +func do() { + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) + client.Dataservice.Foo( + context.TODO(), + ) +} + +------------------------ + +package example + +import ( + context "context" + client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" +) + +func do() { + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) + client.Dataservice.Foo( + context.TODO(), + ) +} + +------------------------ + +package example + import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Upload( context.TODO(), &acme.UploadRequest{ @@ -2919,10 +2966,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Upload( context.TODO(), &acme.UploadRequest{ @@ -2991,10 +3043,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Delete( context.TODO(), &acme.DeleteRequest{}, @@ -3009,10 +3066,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Delete( context.TODO(), &acme.DeleteRequest{ @@ -3045,10 +3107,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Describe( context.TODO(), &acme.DescribeRequest{}, @@ -3063,10 +3130,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Describe( context.TODO(), &acme.DescribeRequest{ @@ -3089,10 +3161,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Fetch( context.TODO(), &acme.FetchRequest{}, @@ -3107,10 +3184,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Fetch( context.TODO(), &acme.FetchRequest{ @@ -3134,10 +3216,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.List( context.TODO(), &acme.ListRequest{}, @@ -3152,10 +3239,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.List( context.TODO(), &acme.ListRequest{ @@ -3183,10 +3275,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Query( context.TODO(), &acme.QueryRequest{ @@ -3203,10 +3300,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Query( context.TODO(), &acme.QueryRequest{ @@ -3316,10 +3418,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Update( context.TODO(), &acme.UpdateRequest{ @@ -3336,10 +3443,15 @@ import ( context "context" acme "github.com/acme/acme-go" client "github.com/acme/acme-go/client" + option "github.com/acme/acme-go/option" ) func do() { - client := client.NewClient() + client := client.NewClient( + option.WithAPIKey( + "", + ), + ) client.Dataservice.Update( context.TODO(), &acme.UpdateRequest{ diff --git a/generators/python-v2/ast/.depcheckrc.json b/generators/python-v2/ast/.depcheckrc.json new file mode 100644 index 00000000000..a3a4f43188c --- /dev/null +++ b/generators/python-v2/ast/.depcheckrc.json @@ -0,0 +1,10 @@ +{ + "ignores": [ + "@types/jest", + "globals", + "@types/node" + ], + "ignore-patterns": [ + "lib" + ] +} \ No newline at end of file diff --git a/generators/python-v2/codegen/.prettierrc.cjs b/generators/python-v2/ast/.prettierrc.cjs similarity index 100% rename from generators/python-v2/codegen/.prettierrc.cjs rename to generators/python-v2/ast/.prettierrc.cjs diff --git a/generators/python-v2/codegen/package.json b/generators/python-v2/ast/package.json similarity index 94% rename from generators/python-v2/codegen/package.json rename to generators/python-v2/ast/package.json index 0d365ff1fd0..3b134f3b192 100644 --- a/generators/python-v2/codegen/package.json +++ b/generators/python-v2/ast/package.json @@ -1,5 +1,5 @@ { - "name": "@fern-api/pythonv2-codegen", + "name": "@fern-api/python-ast", "version": "0.0.0", "repository": { "type": "git", @@ -29,7 +29,6 @@ "dependencies": { "@fern-api/core-utils": "workspace:*", "@fern-api/generator-commons": "workspace:*", - "@fern-fern/ir-sdk": "53.7.0", "@wasm-fmt/ruff_fmt": "^0.6.1" }, "devDependencies": { diff --git a/generators/python-v2/codegen/src/ast/BaseInvocation.ts b/generators/python-v2/ast/src/BaseInvocation.ts similarity index 91% rename from generators/python-v2/codegen/src/ast/BaseInvocation.ts rename to generators/python-v2/ast/src/BaseInvocation.ts index 8de505cd55d..1dadcd8934b 100644 --- a/generators/python-v2/codegen/src/ast/BaseInvocation.ts +++ b/generators/python-v2/ast/src/BaseInvocation.ts @@ -1,8 +1,5 @@ -import { python } from ".."; -import { CodeBlock } from "./CodeBlock"; import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; -import { Method } from "./Method"; import { MethodArgument } from "./MethodArgument"; import { Reference } from "./Reference"; diff --git a/generators/python-v2/codegen/src/ast/Class.ts b/generators/python-v2/ast/src/Class.ts similarity index 73% rename from generators/python-v2/codegen/src/ast/Class.ts rename to generators/python-v2/ast/src/Class.ts index 79a25d44324..5961baab2d3 100644 --- a/generators/python-v2/codegen/src/ast/Class.ts +++ b/generators/python-v2/ast/src/Class.ts @@ -1,14 +1,15 @@ import { Reference } from "./Reference"; import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; -import { Field } from "./Field"; import { Decorator } from "./Decorator"; -import { CodeBlock } from "./CodeBlock"; +import { Field } from "./Field"; export declare namespace Class { interface Args { /* The name of the Python class */ name: string; + /* Documentation string for the class */ + docs?: string; /* The parent classes that this class inherits from */ extends_?: Reference[]; /* The decorators that should be applied to this class */ @@ -20,13 +21,16 @@ export class Class extends AstNode { public readonly name: string; public readonly extends_: Reference[]; public readonly decorators: Decorator[]; + public readonly fields: Field[] = []; + public readonly docs?: string; private statements: AstNode[] = []; - constructor({ name, extends_, decorators }: Class.Args) { + constructor({ docs, name, extends_, decorators }: Class.Args) { super(); this.name = name; this.extends_ = extends_ ?? []; this.decorators = decorators ?? []; + this.docs = docs; this.extends_.forEach((parentClassReference) => { this.addReference(parentClassReference); @@ -53,6 +57,20 @@ export class Class extends AstNode { writer.write(":"); writer.newLine(); + if (this.docs != null) { + writer.write('"""'); + writer.write(this.docs); + writer.write('"""'); + } + writer.writeNewLineIfLastLineNot(); + + writer.indent(); + this.fields.forEach((field) => { + field.write(writer); + writer.writeNewLineIfLastLineNot(); + }); + writer.dedent(); + writer.indent(); if (this.statements.length) { this.writeStatements({ writer }); @@ -62,14 +80,19 @@ export class Class extends AstNode { writer.dedent(); } - public addStatement(statement: AstNode): void { + public add(statement: AstNode): void { this.statements.push(statement); this.inheritReferences(statement); } + private writeStatements({ writer }: { writer: Writer }): void { this.statements.forEach((statement, index) => { statement.write(writer); writer.writeNewLineIfLastLineNot(); }); } + + public addField(field: Field): void { + this.add(field); + } } diff --git a/generators/python-v2/codegen/src/ast/ClassInstantiation.ts b/generators/python-v2/ast/src/ClassInstantiation.ts similarity index 68% rename from generators/python-v2/codegen/src/ast/ClassInstantiation.ts rename to generators/python-v2/ast/src/ClassInstantiation.ts index d83fccd0422..7ba4b08a12b 100644 --- a/generators/python-v2/codegen/src/ast/ClassInstantiation.ts +++ b/generators/python-v2/ast/src/ClassInstantiation.ts @@ -1,9 +1,3 @@ -import { python } from ".."; -import { CodeBlock } from "./CodeBlock"; -import { AstNode } from "./core/AstNode"; -import { Writer } from "./core/Writer"; -import { Method } from "./Method"; -import { MethodArgument } from "./MethodArgument"; import { Reference } from "./Reference"; import { BaseInvocation } from "./BaseInvocation"; diff --git a/generators/python-v2/codegen/src/ast/CodeBlock.ts b/generators/python-v2/ast/src/CodeBlock.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/CodeBlock.ts rename to generators/python-v2/ast/src/CodeBlock.ts diff --git a/generators/python-v2/codegen/src/ast/Decorator.ts b/generators/python-v2/ast/src/Decorator.ts similarity index 72% rename from generators/python-v2/codegen/src/ast/Decorator.ts rename to generators/python-v2/ast/src/Decorator.ts index 8004d2794b1..77318acb177 100644 --- a/generators/python-v2/codegen/src/ast/Decorator.ts +++ b/generators/python-v2/ast/src/Decorator.ts @@ -1,9 +1,5 @@ import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; -import { Reference } from "./Reference"; -import { BaseInvocation } from "./BaseInvocation"; -import { MethodInvocation } from "./MethodInvocation"; -import { ClassInstantiation } from "./ClassInstantiation"; export declare namespace Decorator { interface Args { diff --git a/generators/python-v2/codegen/src/ast/Field.ts b/generators/python-v2/ast/src/Field.ts similarity index 74% rename from generators/python-v2/codegen/src/ast/Field.ts rename to generators/python-v2/ast/src/Field.ts index 5707ac61dd9..37002d43d85 100644 --- a/generators/python-v2/codegen/src/ast/Field.ts +++ b/generators/python-v2/ast/src/Field.ts @@ -6,6 +6,8 @@ export declare namespace Field { export interface BaseArgs { /* The name of the field */ name: string; + /* The documentation for the field */ + docs?: string; } /* At least one of type or initializer must be defined @@ -24,12 +26,14 @@ export class Field extends AstNode { public readonly name: string; public readonly type: Type | undefined; public readonly initializer: AstNode | undefined; + public readonly docs: string | undefined; - constructor({ name, type, initializer }: Field.Args) { + constructor({ name, type, initializer, docs }: Field.Args) { super(); this.name = name; this.type = type; this.initializer = initializer; + this.docs = docs; this.inheritReferences(this.type); this.inheritReferences(this.initializer); @@ -46,5 +50,14 @@ export class Field extends AstNode { if (this.initializer !== undefined) { writer.write(` = ${this.initializer}`); } + + if (this.docs != null) { + writer.newLine(); + writer.write('"""'); + writer.newLine(); + writer.write(this.docs); + writer.newLine(); + writer.write('"""'); + } } } diff --git a/generators/python-v2/codegen/src/ast/Method.ts b/generators/python-v2/ast/src/Method.ts similarity index 86% rename from generators/python-v2/codegen/src/ast/Method.ts rename to generators/python-v2/ast/src/Method.ts index 82004db7f87..734a4ab36e0 100644 --- a/generators/python-v2/codegen/src/ast/Method.ts +++ b/generators/python-v2/ast/src/Method.ts @@ -2,10 +2,8 @@ import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; import { Type } from "./Type"; import { CodeBlock } from "./CodeBlock"; -import { Reference } from "./Reference"; -import { Field } from "./Field"; import { Parameter } from "./Parameter"; -import { python } from ".."; +import { python } from "."; import { Decorator } from "./Decorator"; export enum ClassMethodType { @@ -19,13 +17,15 @@ export declare namespace Method { /* The name of the method */ name: string; /* The parameters of the method */ - parameters: Parameter[]; + parameters?: Parameter[]; /* The return type of the method */ return_?: Type; /* The docstring for the method */ docstring?: string; /* The type of the method if defined within the context of a class */ type?: ClassMethodType; + /* Whether the method is a static method */ + static_?: boolean; /* The decorators that should be applied to this method */ decorators?: Decorator[]; } @@ -39,15 +39,17 @@ export class Method extends AstNode { private readonly parameters: Parameter[]; private readonly decorators: Decorator[]; private readonly statements: AstNode[] = []; + private readonly static_: boolean; - constructor({ name, parameters, return_, docstring, type, decorators }: Method.Args) { + constructor({ static_, name, parameters, return_, docstring, type, decorators }: Method.Args) { super(); this.name = name; - this.parameters = parameters; + this.parameters = parameters ?? []; this.return = return_; this.docstring = docstring; this.type = type; this.decorators = decorators ?? []; + this.static_ = static_ ?? false; } public addStatement(statement: AstNode): void { @@ -56,6 +58,14 @@ export class Method extends AstNode { } public write(writer: Writer): void { + if (this.static_) { + this.decorators.push( + python.decorator({ + callable: python.codeBlock("staticmethod") + }) + ); + } + // Write decorators this.decorators.forEach((decorator) => { decorator.write(writer); diff --git a/generators/python-v2/codegen/src/ast/MethodArgument.ts b/generators/python-v2/ast/src/MethodArgument.ts similarity index 92% rename from generators/python-v2/codegen/src/ast/MethodArgument.ts rename to generators/python-v2/ast/src/MethodArgument.ts index d19d7006723..68491fc3c33 100644 --- a/generators/python-v2/codegen/src/ast/MethodArgument.ts +++ b/generators/python-v2/ast/src/MethodArgument.ts @@ -1,7 +1,5 @@ -import { CodeBlock } from "./CodeBlock"; import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; -import { Type } from "./Type"; export declare namespace MethodArgument { interface Args { diff --git a/generators/python-v2/codegen/src/ast/MethodInvocation.ts b/generators/python-v2/ast/src/MethodInvocation.ts similarity index 68% rename from generators/python-v2/codegen/src/ast/MethodInvocation.ts rename to generators/python-v2/ast/src/MethodInvocation.ts index f1c2ea03d80..bc193e0fcd7 100644 --- a/generators/python-v2/codegen/src/ast/MethodInvocation.ts +++ b/generators/python-v2/ast/src/MethodInvocation.ts @@ -1,9 +1,3 @@ -import { python } from ".."; -import { CodeBlock } from "./CodeBlock"; -import { AstNode } from "./core/AstNode"; -import { Writer } from "./core/Writer"; -import { Method } from "./Method"; -import { MethodArgument } from "./MethodArgument"; import { Reference } from "./Reference"; import { BaseInvocation } from "./BaseInvocation"; diff --git a/generators/python-v2/codegen/src/ast/Operator.ts b/generators/python-v2/ast/src/Operator.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/Operator.ts rename to generators/python-v2/ast/src/Operator.ts diff --git a/generators/python-v2/codegen/src/ast/OperatorType.ts b/generators/python-v2/ast/src/OperatorType.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/OperatorType.ts rename to generators/python-v2/ast/src/OperatorType.ts diff --git a/generators/python-v2/codegen/src/ast/Parameter.ts b/generators/python-v2/ast/src/Parameter.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/Parameter.ts rename to generators/python-v2/ast/src/Parameter.ts diff --git a/generators/python-v2/codegen/src/ast/PythonFile.ts b/generators/python-v2/ast/src/PythonFile.ts similarity index 97% rename from generators/python-v2/codegen/src/ast/PythonFile.ts rename to generators/python-v2/ast/src/PythonFile.ts index 9341258c918..16e31b47863 100644 --- a/generators/python-v2/codegen/src/ast/PythonFile.ts +++ b/generators/python-v2/ast/src/PythonFile.ts @@ -1,8 +1,5 @@ import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; -import { Class } from "./Class"; -import { Method } from "./Method"; -import { CodeBlock } from "./CodeBlock"; import { Reference } from "./Reference"; import { ModulePath } from "./core/types"; diff --git a/generators/python-v2/codegen/src/ast/Reference.ts b/generators/python-v2/ast/src/Reference.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/Reference.ts rename to generators/python-v2/ast/src/Reference.ts diff --git a/generators/python-v2/codegen/src/ast/Type.ts b/generators/python-v2/ast/src/Type.ts similarity index 85% rename from generators/python-v2/codegen/src/ast/Type.ts rename to generators/python-v2/ast/src/Type.ts index 650508e3cfb..d3ebda14da5 100644 --- a/generators/python-v2/codegen/src/ast/Type.ts +++ b/generators/python-v2/ast/src/Type.ts @@ -1,5 +1,5 @@ import { assertNever } from "@fern-api/core-utils"; -import { python } from ".."; +import { python } from "."; import { AstNode } from "./core/AstNode"; import { Writer } from "./core/Writer"; import { Reference } from "./Reference"; @@ -19,7 +19,9 @@ type InternalType = | Optional | Union | Any - | ReferenceType; + | ReferenceType + | Datetime + | Literal; interface Int { type: "int"; @@ -80,6 +82,10 @@ interface Union { values: Type[]; } +interface Datetime { + type: "datetime"; +} + interface Any { type: "any"; } @@ -89,6 +95,11 @@ interface ReferenceType { value: Reference; } +interface Literal { + type: "literal"; + value: string | number | boolean; +} + export class Type extends AstNode { private internalType: InternalType; @@ -176,12 +187,24 @@ export class Type extends AstNode { return anyType; } + public static datetime(): Type { + const datetimeType = new this({ type: "datetime" }); + datetimeType.addReference(python.reference({ name: "datetime", modulePath: ["datetime"] })); + return datetimeType; + } + public static reference(value: Reference): Type { const referenceType = new this({ type: "reference", value }); referenceType.addReference(value); return referenceType; } + public static literal(value: string | boolean | number): Type { + const literalType = new this({ type: "literal", value }); + literalType.addReference(python.reference({ name: "Literal", modulePath: ["typing"] })); + return literalType; + } + public write(writer: Writer): void { switch (this.internalType.type) { case "int": @@ -253,6 +276,16 @@ export class Type extends AstNode { case "reference": this.internalType.value.write(writer); break; + case "datetime": + writer.write("datetime"); + break; + case "literal": + if (typeof this.internalType.value === "string") { + writer.write(`Literal["${this.internalType.value}"]`); + } else { + writer.write(`Literal[${this.internalType.value}]`); + } + break; default: assertNever(this.internalType); } diff --git a/generators/python-v2/codegen/src/ast/TypeInstantiation.ts b/generators/python-v2/ast/src/TypeInstantiation.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/TypeInstantiation.ts rename to generators/python-v2/ast/src/TypeInstantiation.ts diff --git a/generators/python-v2/codegen/src/ast/__test__/Class.test.ts b/generators/python-v2/ast/src/__test__/Class.test.ts similarity index 91% rename from generators/python-v2/codegen/src/ast/__test__/Class.test.ts rename to generators/python-v2/ast/src/__test__/Class.test.ts index 000e773d7ab..7386fb1ddfd 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Class.test.ts +++ b/generators/python-v2/ast/src/__test__/Class.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; describe("class", () => { @@ -20,10 +20,8 @@ describe("class", () => { const clazz = python.class_({ name: "Car" }); - clazz.addStatement( - python.field({ name: "color", type: python.Type.str(), initializer: python.codeBlock("'red'") }) - ); - clazz.addStatement( + clazz.add(python.field({ name: "color", type: python.Type.str(), initializer: python.codeBlock("'red'") })); + clazz.add( python.field({ name: "partNameById", type: python.Type.dict(python.Type.int(), python.Type.str()), @@ -98,9 +96,9 @@ describe("class", () => { parameters: [python.parameter({ name: "self", type: python.Type.str() })] }); innerMethod.addStatement(python.codeBlock('return "Inner method called"')); - innerClassDef.addStatement(innerMethod); + innerClassDef.add(innerMethod); - clazz.addStatement(innerClassDef); + clazz.add(innerClassDef); clazz.write(writer); expect(await writer.toStringFormatted()).toMatchSnapshot(); diff --git a/generators/python-v2/codegen/src/ast/__test__/ClassInstantiation.test.ts b/generators/python-v2/ast/src/__test__/ClassInstantiation.test.ts similarity index 97% rename from generators/python-v2/codegen/src/ast/__test__/ClassInstantiation.test.ts rename to generators/python-v2/ast/src/__test__/ClassInstantiation.test.ts index 04ee10cb0b4..193f06b4c9d 100644 --- a/generators/python-v2/codegen/src/ast/__test__/ClassInstantiation.test.ts +++ b/generators/python-v2/ast/src/__test__/ClassInstantiation.test.ts @@ -1,6 +1,5 @@ -import { MethodInvocation } from "../MethodInvocation"; import { Writer } from "../core/Writer"; -import { python } from "../.."; +import { python } from ".."; describe("ClassInstantiation", () => { let writer: Writer; diff --git a/generators/python-v2/codegen/src/ast/__test__/CodeBlock.test.ts b/generators/python-v2/ast/src/__test__/CodeBlock.test.ts similarity index 97% rename from generators/python-v2/codegen/src/ast/__test__/CodeBlock.test.ts rename to generators/python-v2/ast/src/__test__/CodeBlock.test.ts index eb14b3dccc9..f19a949905e 100644 --- a/generators/python-v2/codegen/src/ast/__test__/CodeBlock.test.ts +++ b/generators/python-v2/ast/src/__test__/CodeBlock.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; describe("CodeBlock", () => { diff --git a/generators/python-v2/codegen/src/ast/__test__/Decorator.test.ts b/generators/python-v2/ast/src/__test__/Decorator.test.ts similarity index 98% rename from generators/python-v2/codegen/src/ast/__test__/Decorator.test.ts rename to generators/python-v2/ast/src/__test__/Decorator.test.ts index 1d07efc26e9..a08aeff97a4 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Decorator.test.ts +++ b/generators/python-v2/ast/src/__test__/Decorator.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; describe("Decorator", () => { describe("toString", () => { diff --git a/generators/python-v2/codegen/src/ast/__test__/Field.test.ts b/generators/python-v2/ast/src/__test__/Field.test.ts similarity index 98% rename from generators/python-v2/codegen/src/ast/__test__/Field.test.ts rename to generators/python-v2/ast/src/__test__/Field.test.ts index 4bbfe03fc15..5daff5f6ba9 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Field.test.ts +++ b/generators/python-v2/ast/src/__test__/Field.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; describe("Field", () => { diff --git a/generators/python-v2/codegen/src/ast/__test__/Method.test.ts b/generators/python-v2/ast/src/__test__/Method.test.ts similarity index 97% rename from generators/python-v2/codegen/src/ast/__test__/Method.test.ts rename to generators/python-v2/ast/src/__test__/Method.test.ts index 70f6e405456..2e46f51d6ff 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Method.test.ts +++ b/generators/python-v2/ast/src/__test__/Method.test.ts @@ -1,7 +1,5 @@ import { ClassMethodType } from "../Method"; -import { Type } from "../Type"; -import { CodeBlock } from "../CodeBlock"; -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; describe("Method", () => { @@ -158,7 +156,7 @@ describe("Method", () => { }); childMethod.addStatement(python.codeBlock("self.parent_method()")); childMethod.addStatement(python.codeBlock('return "Child method called"')); - childClassDef.addStatement(childMethod); + childClassDef.add(childMethod); method.addStatement(childClassDef); method.addStatement(python.codeBlock("return ChildClass()")); diff --git a/generators/python-v2/codegen/src/ast/__test__/MethodInvocation.test.ts b/generators/python-v2/ast/src/__test__/MethodInvocation.test.ts similarity index 97% rename from generators/python-v2/codegen/src/ast/__test__/MethodInvocation.test.ts rename to generators/python-v2/ast/src/__test__/MethodInvocation.test.ts index 1de8df3d93e..b05fe88b285 100644 --- a/generators/python-v2/codegen/src/ast/__test__/MethodInvocation.test.ts +++ b/generators/python-v2/ast/src/__test__/MethodInvocation.test.ts @@ -1,6 +1,5 @@ -import { MethodInvocation } from "../MethodInvocation"; import { Writer } from "../core/Writer"; -import { python } from "../.."; +import { python } from ".."; describe("MethodInvocation", () => { let writer: Writer; diff --git a/generators/python-v2/codegen/src/ast/__test__/Operator.test.ts b/generators/python-v2/ast/src/__test__/Operator.test.ts similarity index 98% rename from generators/python-v2/codegen/src/ast/__test__/Operator.test.ts rename to generators/python-v2/ast/src/__test__/Operator.test.ts index 54dd92dd8d7..d2f741b88e0 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Operator.test.ts +++ b/generators/python-v2/ast/src/__test__/Operator.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; import { OperatorType } from "../OperatorType"; diff --git a/generators/python-v2/codegen/src/ast/__test__/PythonFile.test.ts b/generators/python-v2/ast/src/__test__/PythonFile.test.ts similarity index 96% rename from generators/python-v2/codegen/src/ast/__test__/PythonFile.test.ts rename to generators/python-v2/ast/src/__test__/PythonFile.test.ts index d576d6a1eff..914ee9b461f 100644 --- a/generators/python-v2/codegen/src/ast/__test__/PythonFile.test.ts +++ b/generators/python-v2/ast/src/__test__/PythonFile.test.ts @@ -1,10 +1,7 @@ -import { python } from "../../../src"; +import { python } from ".."; import { Writer } from "../core/Writer"; -import { Reference } from "../Reference"; -import { Class } from "../Class"; import { Method } from "../Method"; import { CodeBlock } from "../CodeBlock"; -import { Type } from "../Type"; describe("PythonFile", () => { let writer: Writer; @@ -38,7 +35,7 @@ describe("PythonFile", () => { name: "TestClass" }); testClass.addReference(python.reference({ modulePath: ["itertools"], name: "chain" })); - testClass.addStatement(python.codeBlock("flat_list = list(itertools.chain([[1, 2], [3, 4]]))")); + testClass.add(python.codeBlock("flat_list = list(itertools.chain([[1, 2], [3, 4]]))")); file.addStatement(testClass); diff --git a/generators/python-v2/codegen/src/ast/__test__/Reference.test.ts b/generators/python-v2/ast/src/__test__/Reference.test.ts similarity index 99% rename from generators/python-v2/codegen/src/ast/__test__/Reference.test.ts rename to generators/python-v2/ast/src/__test__/Reference.test.ts index 7d1e3ddda76..d9311c1ed07 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Reference.test.ts +++ b/generators/python-v2/ast/src/__test__/Reference.test.ts @@ -1,4 +1,4 @@ -import { python } from "../.."; +import { python } from ".."; import { Writer } from "../core/Writer"; describe("Reference", () => { diff --git a/generators/python-v2/codegen/src/ast/__test__/Type.test.ts b/generators/python-v2/ast/src/__test__/Type.test.ts similarity index 98% rename from generators/python-v2/codegen/src/ast/__test__/Type.test.ts rename to generators/python-v2/ast/src/__test__/Type.test.ts index c29d4bda9f1..079b3efc4e8 100644 --- a/generators/python-v2/codegen/src/ast/__test__/Type.test.ts +++ b/generators/python-v2/ast/src/__test__/Type.test.ts @@ -1,5 +1,4 @@ -import { python } from "../.."; -import { Reference } from "../Reference"; +import { python } from ".."; import { Type } from "../Type"; import { Writer } from "../core/Writer"; diff --git a/generators/python-v2/codegen/src/ast/__test__/TypeInstantiation.test.ts b/generators/python-v2/ast/src/__test__/TypeInstantiation.test.ts similarity index 99% rename from generators/python-v2/codegen/src/ast/__test__/TypeInstantiation.test.ts rename to generators/python-v2/ast/src/__test__/TypeInstantiation.test.ts index 0e36509083e..d391c567b08 100644 --- a/generators/python-v2/codegen/src/ast/__test__/TypeInstantiation.test.ts +++ b/generators/python-v2/ast/src/__test__/TypeInstantiation.test.ts @@ -1,6 +1,6 @@ import { TypeInstantiation } from "../TypeInstantiation"; import { Writer } from "../core/Writer"; -import { python } from "../.."; +import { python } from ".."; describe("TypeInstantiation", () => { let writer: Writer; diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Class.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Class.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Class.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Class.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/ClassInstantiation.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/ClassInstantiation.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/ClassInstantiation.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/ClassInstantiation.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/CodeBlock.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/CodeBlock.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/CodeBlock.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/CodeBlock.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Decorator.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Decorator.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Decorator.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Decorator.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Field.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Field.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Field.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Field.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Method.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Method.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Method.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Method.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/MethodInvocation.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/MethodInvocation.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/MethodInvocation.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/MethodInvocation.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Operator.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Operator.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Operator.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Operator.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/PythonFile.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/PythonFile.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/PythonFile.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/PythonFile.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Reference.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Reference.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Reference.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Reference.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/Type.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/Type.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/Type.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/Type.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/__test__/__snapshots__/TypeInstantiation.test.ts.snap b/generators/python-v2/ast/src/__test__/__snapshots__/TypeInstantiation.test.ts.snap similarity index 100% rename from generators/python-v2/codegen/src/ast/__test__/__snapshots__/TypeInstantiation.test.ts.snap rename to generators/python-v2/ast/src/__test__/__snapshots__/TypeInstantiation.test.ts.snap diff --git a/generators/python-v2/codegen/src/ast/core/AstNode.ts b/generators/python-v2/ast/src/core/AstNode.ts similarity index 78% rename from generators/python-v2/codegen/src/ast/core/AstNode.ts rename to generators/python-v2/ast/src/core/AstNode.ts index 6400693e471..a28e3adc6ad 100644 --- a/generators/python-v2/codegen/src/ast/core/AstNode.ts +++ b/generators/python-v2/ast/src/core/AstNode.ts @@ -1,7 +1,6 @@ import { AbstractAstNode } from "@fern-api/generator-commons"; import { Writer } from "./Writer"; -import init, { Config, format } from "@wasm-fmt/ruff_fmt"; -import type { Reference } from "../Reference"; +import { Reference } from "../Reference"; export abstract class AstNode extends AbstractAstNode { protected references: Reference[] = []; @@ -38,8 +37,9 @@ export abstract class AstNode extends AbstractAstNode { /** * Writes the node to a string and formats it. */ - public async toStringFormatted(config?: Config): Promise { - await init(); - return format(this.toString(), undefined, config); + public async toStringFormatted(): Promise { + const writer = new Writer(); + this.write(writer); + return await writer.toStringFormatted(); } } diff --git a/generators/python-v2/codegen/src/ast/core/Writer.ts b/generators/python-v2/ast/src/core/Writer.ts similarity index 71% rename from generators/python-v2/codegen/src/ast/core/Writer.ts rename to generators/python-v2/ast/src/core/Writer.ts index 5001802b950..f46b42eb19d 100644 --- a/generators/python-v2/codegen/src/ast/core/Writer.ts +++ b/generators/python-v2/ast/src/core/Writer.ts @@ -1,14 +1,17 @@ import { AbstractWriter } from "@fern-api/generator-commons"; -import init, { format } from "@wasm-fmt/ruff_fmt"; export declare namespace Writer {} +/* Dot delimited string where */ +type Module = string; + export class Writer extends AbstractWriter { public toString(): string { return this.buffer; } public async toStringFormatted(): Promise { + const { default: init, format } = await import("@wasm-fmt/ruff_fmt"); await init(); return format(this.buffer); } diff --git a/generators/python-v2/codegen/src/ast/core/types.ts b/generators/python-v2/ast/src/core/types.ts similarity index 100% rename from generators/python-v2/codegen/src/ast/core/types.ts rename to generators/python-v2/ast/src/core/types.ts diff --git a/generators/python-v2/codegen/src/index.ts b/generators/python-v2/ast/src/index.ts similarity index 100% rename from generators/python-v2/codegen/src/index.ts rename to generators/python-v2/ast/src/index.ts diff --git a/generators/python-v2/codegen/src/python.ts b/generators/python-v2/ast/src/python.ts similarity index 51% rename from generators/python-v2/codegen/src/python.ts rename to generators/python-v2/ast/src/python.ts index 45b87739039..67d6795a5c9 100644 --- a/generators/python-v2/codegen/src/python.ts +++ b/generators/python-v2/ast/src/python.ts @@ -1,17 +1,30 @@ -import { - Class, - Field, - Reference, - CodeBlock, - Method, - Parameter, - MethodArgument, - PythonFile, - Decorator, - MethodInvocation, - ClassInstantiation, - Operator -} from "./ast"; +import { Class } from "./Class"; +import { Field } from "./Field"; +import { Reference } from "./Reference"; +import { CodeBlock } from "./CodeBlock"; +import { Method } from "./Method"; +import { MethodInvocation } from "./MethodInvocation"; +import { ClassInstantiation } from "./ClassInstantiation"; +import { Parameter } from "./Parameter"; +import { MethodArgument } from "./MethodArgument"; +import { PythonFile } from "./PythonFile"; +import { Decorator } from "./Decorator"; +import { Operator } from "./Operator"; + +export { Class } from "./Class"; +export { Field } from "./Field"; +export { Reference } from "./Reference"; +export { CodeBlock } from "./CodeBlock"; +export { Method } from "./Method"; +export { MethodInvocation } from "./MethodInvocation"; +export { ClassInstantiation } from "./ClassInstantiation"; +export { Parameter } from "./Parameter"; +export { MethodArgument } from "./MethodArgument"; +export { PythonFile } from "./PythonFile"; +export { Decorator } from "./Decorator"; +export { Operator } from "./Operator"; +export { Type } from "./Type"; +export { TypeInstantiation } from "./TypeInstantiation"; export function file(args: PythonFile.Args): PythonFile { return new PythonFile(args); @@ -60,21 +73,3 @@ export function methodArgument(args: MethodArgument.Args): MethodArgument { export function operator(args: Operator.Args): Operator { return new Operator(args); } - -export { - AstNode, - Class, - Decorator, - Field, - Type, - Writer, - Reference, - CodeBlock, - Method, - TypeInstantiation, - PythonFile, - MethodInvocation, - ClassInstantiation, - Operator, - OperatorType -} from "./ast"; diff --git a/generators/python-v2/codegen/tsconfig.json b/generators/python-v2/ast/tsconfig.json similarity index 100% rename from generators/python-v2/codegen/tsconfig.json rename to generators/python-v2/ast/tsconfig.json diff --git a/generators/python-v2/codegen/vitest.config.ts b/generators/python-v2/ast/vitest.config.ts similarity index 100% rename from generators/python-v2/codegen/vitest.config.ts rename to generators/python-v2/ast/vitest.config.ts diff --git a/generators/python-v2/codegen/.depcheckrc.json b/generators/python-v2/base/.depcheckrc.json similarity index 100% rename from generators/python-v2/codegen/.depcheckrc.json rename to generators/python-v2/base/.depcheckrc.json diff --git a/generators/python-v2/base/.prettierrc.cjs b/generators/python-v2/base/.prettierrc.cjs new file mode 100644 index 00000000000..39cf0d0b8c9 --- /dev/null +++ b/generators/python-v2/base/.prettierrc.cjs @@ -0,0 +1 @@ +module.exports = require("../../../.prettierrc.json"); diff --git a/generators/python-v2/base/package.json b/generators/python-v2/base/package.json new file mode 100644 index 00000000000..748e935dd8b --- /dev/null +++ b/generators/python-v2/base/package.json @@ -0,0 +1,49 @@ +{ + "name": "@fern-api/base-python-generator", + "version": "0.0.0", + "repository": { + "type": "git", + "url": "https://github.com/fern-api/fern.git", + "directory": "generators/pythonv2/codegen" + }, + "files": [ + "lib" + ], + "type": "module", + "source": "src/index.ts", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "sideEffects": false, + "scripts": { + "clean": "rm -rf ./lib && tsc --build --clean", + "compile": "tsc --build", + "test": "vitest --passWithNoTests --run", + "test:update": "vitest --passWithNoTests --run -u", + "lint:eslint": "eslint --max-warnings 0 . --ignore-path=../../../.eslintignore", + "lint:eslint:fix": "yarn lint:eslint --fix", + "format": "prettier --write --ignore-unknown --ignore-path ../../../shared/.prettierignore \"**\"", + "format:check": "prettier --check --ignore-unknown --ignore-path ../../../shared/.prettierignore \"**\"", + "organize-imports": "organize-imports-cli tsconfig.json", + "depcheck": "depcheck" + }, + "dependencies": { + "@fern-api/fs-utils": "workspace:*", + "@fern-api/core-utils": "workspace:*", + "@fern-api/generator-commons": "workspace:*", + "@fern-api/python-ast": "workspace:*", + "@fern-api/logging-execa": "workspace:*", + "@fern-fern/ir-sdk": "53.7.0", + "lodash-es": "^4.17.21", + "zod": "^3.22.4" + }, + "devDependencies": { + "@types/lodash-es": "^4.17.12", + "@types/node": "18.7.18", + "depcheck": "^1.4.6", + "eslint": "^8.56.0", + "organize-imports-cli": "^0.10.0", + "prettier": "^2.7.1", + "typescript": "4.6.4", + "vitest": "^2.0.5" + } +} \ No newline at end of file diff --git a/generators/python-v2/base/src/asIs/core.ts b/generators/python-v2/base/src/asIs/core.ts new file mode 100644 index 00000000000..07531d6c48d --- /dev/null +++ b/generators/python-v2/base/src/asIs/core.ts @@ -0,0 +1,6 @@ +import { python } from "@fern-api/python-ast"; + +export const serialize_datetime = python.reference({ + modulePath: ["core", "datetime_utils"], + name: "serialize_datetime" +}); diff --git a/generators/python-v2/base/src/cli/AbstractPythonGeneratorCli.ts b/generators/python-v2/base/src/cli/AbstractPythonGeneratorCli.ts new file mode 100644 index 00000000000..00f5fffb0e3 --- /dev/null +++ b/generators/python-v2/base/src/cli/AbstractPythonGeneratorCli.ts @@ -0,0 +1,23 @@ +import { AbsoluteFilePath } from "@fern-api/fs-utils"; +import { AbstractGeneratorCli, parseIR } from "@fern-api/generator-commons"; +import { IntermediateRepresentation } from "@fern-fern/ir-sdk/api"; +import * as IrSerialization from "@fern-fern/ir-sdk/serialization"; +import { AbstractPythonGeneratorContext } from "../context/AbstractPythonGeneratorContext"; +import { BasePythonCustomConfigSchema } from "../custom-config/BasePythonCustomConfigSchema"; + +export abstract class AbstractPythonGeneratorCli< + CustomConfig extends BasePythonCustomConfigSchema, + PythonGeneratorContext extends AbstractPythonGeneratorContext +> extends AbstractGeneratorCli { + /** + * Parses the IR for the Python generators + * @param irFilepath + * @returns + */ + protected async parseIntermediateRepresentation(irFilepath: string): Promise { + return await parseIR({ + absolutePathToIR: AbsoluteFilePath.of(irFilepath), + parse: IrSerialization.IntermediateRepresentation.parse + }); + } +} diff --git a/generators/python-v2/base/src/cli/index.ts b/generators/python-v2/base/src/cli/index.ts new file mode 100644 index 00000000000..24e287a7a74 --- /dev/null +++ b/generators/python-v2/base/src/cli/index.ts @@ -0,0 +1,2 @@ +export { AbstractPythonGeneratorContext } from "../context/AbstractPythonGeneratorContext"; +export { AbstractPythonGeneratorCli } from "./AbstractPythonGeneratorCli"; diff --git a/generators/python-v2/base/src/context/AbstractPythonGeneratorContext.ts b/generators/python-v2/base/src/context/AbstractPythonGeneratorContext.ts new file mode 100644 index 00000000000..e8550567007 --- /dev/null +++ b/generators/python-v2/base/src/context/AbstractPythonGeneratorContext.ts @@ -0,0 +1,61 @@ +import { AbstractGeneratorContext, FernGeneratorExec, GeneratorNotificationService } from "@fern-api/generator-commons"; +import { IntermediateRepresentation, Name, TypeDeclaration, TypeId, TypeReference } from "@fern-fern/ir-sdk/api"; +import { snakeCase } from "lodash-es"; +import { BasePythonCustomConfigSchema } from "../custom-config/BasePythonCustomConfigSchema"; +import { PythonProject } from "../project"; +import { PythonTypeMapper } from "./PythonTypeMapper"; + +export abstract class AbstractPythonGeneratorContext< + CustomConfig extends BasePythonCustomConfigSchema +> extends AbstractGeneratorContext { + private packageName: string; + public readonly pythonTypeMapper: PythonTypeMapper; + public readonly project: PythonProject; + + public constructor( + public readonly ir: IntermediateRepresentation, + public readonly config: FernGeneratorExec.config.GeneratorConfig, + public readonly customConfig: CustomConfig, + public readonly generatorNotificationService: GeneratorNotificationService + ) { + super(config, generatorNotificationService); + this.packageName = snakeCase(`${this.config.organization}_${this.ir.apiName.snakeCase.unsafeName}`); + this.pythonTypeMapper = new PythonTypeMapper(this); + this.project = new PythonProject({ context: this }); + } + + public getTypeDeclarationOrThrow(typeId: TypeId): TypeDeclaration { + const typeDeclaration = this.ir.types[typeId]; + if (typeDeclaration == null) { + throw new Error(`Could not find type declaration for type id: ${typeId}`); + } + return typeDeclaration; + } + + public isTypeReferenceOptional(typeReference: TypeReference): boolean { + if (typeReference.type === "container" && typeReference.container.type === "optional") { + return true; + } + if (typeReference.type === "named") { + const typeDeclaration = this.getTypeDeclarationOrThrow(typeReference.typeId); + if (typeDeclaration.shape.type === "alias") { + return this.isTypeReferenceOptional(typeDeclaration.shape.aliasOf); + } + } + return false; + } + + public getClassName(name: Name): string { + return name.pascalCase.safeName; + } + + public getPascalCaseSafeName(name: Name): string { + return name.pascalCase.safeName; + } + + public getSnakeCaseSafeName(name: Name): string { + return name.snakeCase.safeName; + } + + public abstract getModulePathForId(typeId: TypeId): string[]; +} diff --git a/generators/python-v2/base/src/context/PythonTypeMapper.ts b/generators/python-v2/base/src/context/PythonTypeMapper.ts new file mode 100644 index 00000000000..5d3be9393b0 --- /dev/null +++ b/generators/python-v2/base/src/context/PythonTypeMapper.ts @@ -0,0 +1,120 @@ +import { assertNever } from "@fern-api/core-utils"; +import { + ContainerType, + DeclaredTypeName, + Literal, + Name, + PrimitiveType, + PrimitiveTypeV1, + TypeId, + TypeReference +} from "@fern-fern/ir-sdk/api"; +import { BasePythonCustomConfigSchema } from "../custom-config/BasePythonCustomConfigSchema"; +import { AbstractPythonGeneratorContext } from "./AbstractPythonGeneratorContext"; +import { python } from "@fern-api/python-ast"; + +export declare namespace PythonTypeMapper { + interface Args { + reference: TypeReference; + } +} + +export class PythonTypeMapper { + private context: AbstractPythonGeneratorContext; + + constructor(context: AbstractPythonGeneratorContext) { + this.context = context; + } + + public convert({ reference }: PythonTypeMapper.Args): python.Type { + switch (reference.type) { + case "container": + return this.convertContainer({ + container: reference.container + }); + case "named": + return this.convertNamed({ named: reference }); + case "primitive": + return this.convertPrimitive(reference); + case "unknown": + return python.Type.any(); + default: + assertNever(reference); + } + } + + public convertToClassReference({ typeId, name }: { typeId: TypeId; name: Name }): python.Reference { + return new python.Reference({ + name: this.context.getPascalCaseSafeName(name), + modulePath: [...this.context.getModulePathForId(typeId), this.context.getSnakeCaseSafeName(name)] + }); + } + + private convertContainer({ container }: { container: ContainerType }): python.Type { + switch (container.type) { + case "list": + return python.Type.list(this.convert({ reference: container.list })); + case "map": { + const key = this.convert({ reference: container.keyType }); + const value = this.convert({ reference: container.valueType }); + return python.Type.dict(key, value); + } + case "set": + return python.Type.set(this.convert({ reference: container.set })); + case "optional": + return python.Type.optional(this.convert({ reference: container.optional })); + case "literal": + return this.convertLiteral({ literal: container.literal }); + default: + assertNever(container); + } + } + + private convertPrimitive({ primitive }: { primitive: PrimitiveType }): python.Type { + return PrimitiveTypeV1._visit(primitive.v1, { + integer: () => python.Type.int(), + long: () => python.Type.int(), + uint: () => python.Type.int(), + uint64: () => python.Type.int(), + float: () => python.Type.float(), + double: () => python.Type.float(), + boolean: () => python.Type.bool(), + string: () => python.Type.str(), + date: () => python.Type.str(), + dateTime: () => python.Type.datetime(), + uuid: () => python.Type.uuid(), + base64: () => python.Type.bytes(), + bigInteger: () => python.Type.str(), + _other: () => python.Type.any() + }); + } + + private convertLiteral({ literal }: { literal: Literal }): python.Type { + switch (literal.type) { + case "boolean": + return python.Type.bool(); + case "string": + return python.Type.str(); + } + } + + private convertNamed({ named }: { named: DeclaredTypeName }): python.Type { + const objectClassReference = this.convertToClassReference(named); + const typeDeclaration = this.context.getTypeDeclarationOrThrow(named.typeId); + switch (typeDeclaration.shape.type) { + case "alias": + return this.convert({ reference: typeDeclaration.shape.aliasOf }); + case "enum": + return python.Type.reference(objectClassReference); + case "object": + return python.Type.reference(objectClassReference); + case "union": + return python.Type.reference(objectClassReference); + case "undiscriminatedUnion": { + return python.Type.reference(objectClassReference); + } + default: + assertNever(typeDeclaration.shape); + } + } +} diff --git a/generators/python-v2/base/src/context/index.ts b/generators/python-v2/base/src/context/index.ts new file mode 100644 index 00000000000..785d90a9f34 --- /dev/null +++ b/generators/python-v2/base/src/context/index.ts @@ -0,0 +1,2 @@ +export { AbstractPythonGeneratorContext } from "./AbstractPythonGeneratorContext"; +export { PythonTypeMapper } from "./PythonTypeMapper"; diff --git a/generators/python-v2/base/src/custom-config/BasePythonCustomConfigSchema.ts b/generators/python-v2/base/src/custom-config/BasePythonCustomConfigSchema.ts new file mode 100644 index 00000000000..3ca1ad3a695 --- /dev/null +++ b/generators/python-v2/base/src/custom-config/BasePythonCustomConfigSchema.ts @@ -0,0 +1,5 @@ +import { z } from "zod"; + +export const BasePythonCustomConfigSchema = z.object({}); + +export type BasePythonCustomConfigSchema = z.infer; diff --git a/generators/python-v2/base/src/custom-config/index.ts b/generators/python-v2/base/src/custom-config/index.ts new file mode 100644 index 00000000000..ee97842c713 --- /dev/null +++ b/generators/python-v2/base/src/custom-config/index.ts @@ -0,0 +1 @@ +export { BasePythonCustomConfigSchema } from "./BasePythonCustomConfigSchema"; diff --git a/generators/python-v2/base/src/dependencies/dt.ts b/generators/python-v2/base/src/dependencies/dt.ts new file mode 100644 index 00000000000..fff1855c1f5 --- /dev/null +++ b/generators/python-v2/base/src/dependencies/dt.ts @@ -0,0 +1,6 @@ +import { python } from "@fern-api/python-ast"; + +export const datetime = python.reference({ + name: "datetime", + modulePath: ["dt"] +}); diff --git a/generators/python-v2/base/src/dependencies/pydantic.ts b/generators/python-v2/base/src/dependencies/pydantic.ts new file mode 100644 index 00000000000..fd82df294b7 --- /dev/null +++ b/generators/python-v2/base/src/dependencies/pydantic.ts @@ -0,0 +1,18 @@ +import { python } from "@fern-api/python-ast"; + +export const BaseModel = python.reference({ + name: "BaseModel", + modulePath: ["pydantic"] +}); + +export const Field = python.reference({ + name: "Field", + modulePath: ["pydantic"] +}); + +export const RootModel = (type: python.Type): python.Reference => + python.reference({ + name: "RootModel", + modulePath: ["pydantic"], + genericTypes: [type] + }); diff --git a/generators/python-v2/base/src/index.ts b/generators/python-v2/base/src/index.ts new file mode 100644 index 00000000000..99d94b063b7 --- /dev/null +++ b/generators/python-v2/base/src/index.ts @@ -0,0 +1,7 @@ +export * from "./context"; +export * from "./project"; +export * from "./custom-config"; +export * from "./cli"; +export * as dt from "./dependencies/dt"; +export * as pydantic from "./dependencies/pydantic"; +export * as core from "./asIs/core"; diff --git a/generators/python-v2/base/src/project/PythonProject.ts b/generators/python-v2/base/src/project/PythonProject.ts new file mode 100644 index 00000000000..86f2fde9c36 --- /dev/null +++ b/generators/python-v2/base/src/project/PythonProject.ts @@ -0,0 +1,31 @@ +import { AbstractProject } from "@fern-api/generator-commons"; +import { AbstractPythonGeneratorContext } from "../cli"; +import { BasePythonCustomConfigSchema } from "../custom-config"; +import { WriteablePythonFile } from "./WriteablePythonFile"; +import { loggingExeca } from "@fern-api/logging-execa"; + +/** + * In memory representation of a Python project. + */ +export class PythonProject extends AbstractProject> { + private sourceFiles: WriteablePythonFile[] = []; + + public constructor({ context }: { context: AbstractPythonGeneratorContext }) { + super(context); + } + + public addSourceFiles(file: WriteablePythonFile): void { + this.sourceFiles.push(file); + } + + public async persist(): Promise { + await Promise.all( + this.sourceFiles.map(async (file) => { + return await file.write(this.absolutePathToOutputDirectory); + }) + ); + await loggingExeca(undefined, "ruff", ["format", "."], { + cwd: this.absolutePathToOutputDirectory + }); + } +} diff --git a/generators/python-v2/base/src/project/WriteablePythonFile.ts b/generators/python-v2/base/src/project/WriteablePythonFile.ts new file mode 100644 index 00000000000..2bd99a70c2b --- /dev/null +++ b/generators/python-v2/base/src/project/WriteablePythonFile.ts @@ -0,0 +1,23 @@ +import { AbsoluteFilePath, RelativeFilePath } from "@fern-api/fs-utils"; +import { File } from "@fern-api/generator-commons"; +import { python } from "@fern-api/python-ast"; + +export declare namespace WriteablePythonFile { + interface Args { + filename: string; + /* Directory of the filepath */ + directory: RelativeFilePath; + + contents: python.PythonFile; + } +} + +export class WriteablePythonFile extends File { + constructor({ filename, directory, contents }: WriteablePythonFile.Args) { + super(`${filename}.py`, directory, contents.toString()); + } + + public async tryWrite(directoryPrefix: AbsoluteFilePath): Promise { + await this.write(directoryPrefix); + } +} diff --git a/generators/python-v2/base/src/project/index.ts b/generators/python-v2/base/src/project/index.ts new file mode 100644 index 00000000000..b61fe467824 --- /dev/null +++ b/generators/python-v2/base/src/project/index.ts @@ -0,0 +1,2 @@ +export { WriteablePythonFile } from "./WriteablePythonFile"; +export { PythonProject } from "./PythonProject"; diff --git a/generators/python-v2/base/tsconfig.json b/generators/python-v2/base/tsconfig.json new file mode 100644 index 00000000000..71c717c3d69 --- /dev/null +++ b/generators/python-v2/base/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../../shared/tsconfig.shared.json", + "compilerOptions": { "composite": true, "outDir": "lib", "rootDir": "src" }, + "include": ["./src/**/*"], + "references": [ + { "path": "../../../packages/commons/core-utils" }, + { "path": "../../../packages/commons/fs-utils" }, + { "path": "../../../packages/commons/logging-execa" }, + { "path": "../../commons" }, + { "path": "../ast" }, + { "path": "../../../packages/commons/logging-execa" } + ] +} diff --git a/generators/python-v2/base/vitest.config.ts b/generators/python-v2/base/vitest.config.ts new file mode 100644 index 00000000000..fecc099c58a --- /dev/null +++ b/generators/python-v2/base/vitest.config.ts @@ -0,0 +1 @@ +export { default } from "../../../shared/vitest.config"; diff --git a/generators/python-v2/codegen/src/ast/index.ts b/generators/python-v2/codegen/src/ast/index.ts deleted file mode 100644 index fc501ca9734..00000000000 --- a/generators/python-v2/codegen/src/ast/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -export { Class } from "./Class"; -export { Field } from "./Field"; -export { Writer } from "./core/Writer"; -export { Type } from "./Type"; -export { Reference } from "./Reference"; -export { CodeBlock } from "./CodeBlock"; -export { AstNode } from "./core/AstNode"; -export { Method } from "./Method"; -export { MethodInvocation } from "./MethodInvocation"; -export { ClassInstantiation } from "./ClassInstantiation"; -export { Parameter } from "./Parameter"; -export { MethodArgument } from "./MethodArgument"; -export { PythonFile } from "./PythonFile"; -export { Decorator } from "./Decorator"; -export { TypeInstantiation } from "./TypeInstantiation"; -export { Operator } from "./Operator"; -export { OperatorType } from "./OperatorType"; diff --git a/generators/python-v2/fastapi/tsconfig.json b/generators/python-v2/fastapi/tsconfig.json index 945efb0f393..5c1e319cac3 100644 --- a/generators/python-v2/fastapi/tsconfig.json +++ b/generators/python-v2/fastapi/tsconfig.json @@ -6,6 +6,7 @@ { "path": "../../../packages/commons/core-utils" }, { "path": "../../../packages/commons/fs-utils" }, { "path": "../../commons" }, - { "path": "../codegen" } + { "path": "../ast" }, + { "path": "../base" } ] } diff --git a/generators/python-v2/pydantic-model/Dockerfile b/generators/python-v2/pydantic-model/Dockerfile index 07851f423ae..b6899996cca 100644 --- a/generators/python-v2/pydantic-model/Dockerfile +++ b/generators/python-v2/pydantic-model/Dockerfile @@ -1,3 +1,7 @@ -FROM node:18.1.0-alpine +FROM node:lts-slim +RUN apt-get update && apt-get install -y curl +RUN curl -LsSf https://astral.sh/ruff/install.sh | sh +ENV PATH="/root/.cargo/bin:${PATH}" +RUN ruff --version COPY generators/python-v2/pydantic-model/dist /dist ENTRYPOINT ["node", "/dist/cli.cjs"] diff --git a/generators/python-v2/pydantic-model/build.cjs b/generators/python-v2/pydantic-model/build.cjs new file mode 100644 index 00000000000..63282b4b22f --- /dev/null +++ b/generators/python-v2/pydantic-model/build.cjs @@ -0,0 +1,18 @@ +const packageJson = require("./package.json"); +const tsup = require('tsup'); +const { writeFile, rename } = require("fs/promises"); +const path = require("path"); + +main(); + +async function main() { + await tsup.build({ + entry: ['src/**/*.ts', '!src/__test__'], + format: ['cjs'], + clean: true, + outDir: 'dist', + external: [ + "@wasm-fmt/ruff_fmt", + ], + }); +} \ No newline at end of file diff --git a/generators/python-v2/pydantic-model/build.tsconfig.json b/generators/python-v2/pydantic-model/build.tsconfig.json new file mode 100644 index 00000000000..6a461575e21 --- /dev/null +++ b/generators/python-v2/pydantic-model/build.tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../../shared/tsconfig.shared.json", + "include": ["src/**/*.ts"], + "exclude": ["src/**/__test__"] +} diff --git a/generators/python-v2/pydantic-model/package.json b/generators/python-v2/pydantic-model/package.json index c53dd59affa..a35562fa59d 100644 --- a/generators/python-v2/pydantic-model/package.json +++ b/generators/python-v2/pydantic-model/package.json @@ -25,11 +25,19 @@ "format:check": "prettier --check --ignore-unknown --ignore-path ../../../shared/.prettierignore \"**\"", "organize-imports": "organize-imports-cli tsconfig.json", "depcheck": "depcheck", - "dist:cli": "pnpm compile && tsup ./src/cli.ts --format cjs", + "dist:cli": "pnpm compile && node build.cjs", "publish:cli": "pnpm dist:cli && cd dist && yarn npm publish", "dockerTagLatest": "pnpm dist:cli && docker build -f ./Dockerfile -t fernapi/fern-pydantic-model-v2:latest ../../.." }, "devDependencies": { + "@fern-api/core-utils": "workspace:*", + "@fern-api/base-python-generator": "workspace:*", + "@fern-api/python-ast": "workspace:*", + "@fern-fern/generator-exec-sdk": "^0.0.898", + "zod": "^3.22.4", + "@fern-fern/ir-sdk": "53.7.0", + "@fern-api/fs-utils": "workspace:*", + "@fern-api/generator-commons": "workspace:*", "@types/node": "18.7.18", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.14", "depcheck": "^1.4.6", diff --git a/generators/python-v2/pydantic-model/src/ModelCustomConfig.ts b/generators/python-v2/pydantic-model/src/ModelCustomConfig.ts new file mode 100644 index 00000000000..c26a5256ef1 --- /dev/null +++ b/generators/python-v2/pydantic-model/src/ModelCustomConfig.ts @@ -0,0 +1,9 @@ +import { z } from "zod"; + +export const PydanticModelCustomConfigSchema = z.object({ + include_union_utils: z.optional(z.boolean()), + version: z.optional(z.enum(["both", "v1", "v2"])), + include_validators: z.optional(z.boolean()) +}); + +export type PydanticModelCustomConfigSchema = z.infer; diff --git a/generators/python-v2/pydantic-model/src/ModelGeneratorCli.ts b/generators/python-v2/pydantic-model/src/ModelGeneratorCli.ts new file mode 100644 index 00000000000..1abb5f9b548 --- /dev/null +++ b/generators/python-v2/pydantic-model/src/ModelGeneratorCli.ts @@ -0,0 +1,53 @@ +import { AbstractPythonGeneratorCli } from "@fern-api/base-python-generator"; +import { FernGeneratorExec } from "@fern-fern/generator-exec-sdk"; +import { IntermediateRepresentation } from "@fern-fern/ir-sdk/api"; +import { PydanticModelCustomConfigSchema } from "./ModelCustomConfig"; +import { PydanticModelGeneratorContext } from "./ModelGeneratorContext"; +import { generateV2Models } from "./v2/generateV2Models"; +import { GeneratorNotificationService } from "@fern-api/generator-commons"; + +export class ModelGeneratorCLI extends AbstractPythonGeneratorCli< + PydanticModelCustomConfigSchema, + PydanticModelGeneratorContext +> { + protected constructContext({ + ir, + customConfig, + generatorConfig, + generatorNotificationService + }: { + ir: IntermediateRepresentation; + customConfig: PydanticModelCustomConfigSchema; + generatorConfig: FernGeneratorExec.GeneratorConfig; + generatorNotificationService: GeneratorNotificationService; + }): PydanticModelGeneratorContext { + return new PydanticModelGeneratorContext(ir, generatorConfig, customConfig, generatorNotificationService); + } + + protected parseCustomConfigOrThrow(customConfig: unknown): PydanticModelCustomConfigSchema { + const parsed = customConfig != null ? PydanticModelCustomConfigSchema.parse(customConfig) : undefined; + if (parsed != null) { + return parsed; + } + return {}; + } + + protected async writeForDownload(context: PydanticModelGeneratorContext): Promise { + return await this.generate(context); + } + + protected async generate(context: PydanticModelGeneratorContext): Promise { + const files = generateV2Models({ context }); + for (const file of files) { + context.project.addSourceFiles(file); + } + await context.project.persist(); + } + + protected publishPackage(context: PydanticModelGeneratorContext): Promise { + throw new Error("Method not implemented."); + } + protected writeForGithub(context: PydanticModelGeneratorContext): Promise { + throw new Error("Method not implemented."); + } +} diff --git a/generators/python-v2/pydantic-model/src/ModelGeneratorContext.ts b/generators/python-v2/pydantic-model/src/ModelGeneratorContext.ts new file mode 100644 index 00000000000..7133e94d1da --- /dev/null +++ b/generators/python-v2/pydantic-model/src/ModelGeneratorContext.ts @@ -0,0 +1,10 @@ +import { AbstractPythonGeneratorContext } from "@fern-api/base-python-generator"; +import { PydanticModelCustomConfigSchema } from "./ModelCustomConfig"; + +export class PydanticModelGeneratorContext extends AbstractPythonGeneratorContext { + public getModulePathForId(typeId: string): string[] { + const typeDeclaration = super.getTypeDeclarationOrThrow(typeId); + const fernFilepath = typeDeclaration.name.fernFilepath; + return [...fernFilepath.allParts.flatMap((part) => ["resources", super.getSnakeCaseSafeName(part)]), "types"]; + } +} diff --git a/generators/python-v2/pydantic-model/src/cli.ts b/generators/python-v2/pydantic-model/src/cli.ts index f01677eeca1..30174f71d0d 100644 --- a/generators/python-v2/pydantic-model/src/cli.ts +++ b/generators/python-v2/pydantic-model/src/cli.ts @@ -1,6 +1,7 @@ +import { ModelGeneratorCLI } from "./ModelGeneratorCli"; + void runCli(); export async function runCli(): Promise { - // eslint-disable-next-line no-console - console.log("Noop..."); + await new ModelGeneratorCLI().run(); } diff --git a/generators/python-v2/pydantic-model/src/v2/ObjectGenerator.ts b/generators/python-v2/pydantic-model/src/v2/ObjectGenerator.ts new file mode 100644 index 00000000000..fa4a8e60a30 --- /dev/null +++ b/generators/python-v2/pydantic-model/src/v2/ObjectGenerator.ts @@ -0,0 +1,152 @@ +import { WriteablePythonFile, pydantic, core, dt } from "@fern-api/base-python-generator"; +import { python } from "@fern-api/python-ast"; +import { NameAndWireValue, ObjectTypeDeclaration, TypeDeclaration, TypeId } from "@fern-fern/ir-sdk/api"; +import { PydanticModelGeneratorContext } from "../ModelGeneratorContext"; +import { RelativeFilePath } from "@fern-api/fs-utils"; + +export class ObjectGenerator { + constructor( + private readonly typeId: TypeId, + private readonly context: PydanticModelGeneratorContext, + private readonly typeDeclaration: TypeDeclaration, + private readonly objectDeclaration: ObjectTypeDeclaration + ) {} + + public doGenerate(): WriteablePythonFile { + const class_ = python.class_({ + name: this.context.getPascalCaseSafeName(this.typeDeclaration.name.name), + docs: this.typeDeclaration.docs, + extends_: [ + pydantic.BaseModel, + ...this.objectDeclaration.extends.map((extend) => { + return this.context.pythonTypeMapper.convertToClassReference({ + typeId: extend.typeId, + name: extend.name + }); + }) + ], + decorators: [] + }); + + for (const property of this.objectDeclaration.properties) { + const propertyName = this.getPropertyName({ + className: this.context.getPascalCaseSafeName(this.typeDeclaration.name.name), + objectProperty: property.name + }); + + const propertyType = this.context.pythonTypeMapper.convert({ reference: property.valueType }); + + const value = this.context.isTypeReferenceOptional(property.valueType) + ? python.codeBlock("None") + : undefined; + + const wireValue = propertyName === property.name.wireValue ? undefined : property.name.wireValue; + + let initializer = undefined; + + if (value != null && wireValue == null) { + initializer = value; + } else if (wireValue != null || value != null) { + // TODO(dsinghvi): uncomment after redoing imports + python.codeBlock((writer) => { + const arguments_: python.MethodArgument[] = []; + if (wireValue != null) { + arguments_.push( + python.methodArgument({ + name: "alias", + value: python.codeBlock(`"${wireValue}"`) + }) + ); + } + if (value != null) { + arguments_.push( + python.methodArgument({ + name: "default", + value + }) + ); + } + // writer.writeNode( + // python.instantiateClass({ + // classReference: pydantic.Field, + // arguments_ + // }) + // ); + }); + } + + class_.addField( + python.field({ + name: propertyName, + type: propertyType, + docs: property.docs, + initializer + }) + ); + } + + class_.add(this.getConfigClass()); + + const module = this.context.getModulePathForId(this.typeId); + const filename = this.context.getSnakeCaseSafeName(this.typeDeclaration.name.name); + const file = python.file({ + moduleName: module.join("."), + path: ["test"], + name: filename + }); + file.addStatement(class_); + + return new WriteablePythonFile({ + contents: file, + directory: RelativeFilePath.of(module.join("/")), + filename + }); + } + + /** + * Class Names and Property Names cannot overlap in C# otherwise there are compilation errors. + */ + private getPropertyName({ + className, + objectProperty + }: { + className: string; + objectProperty: NameAndWireValue; + }): string { + return this.context.getSnakeCaseSafeName(objectProperty.name); + } + + private getConfigClass(): python.Class { + const configClass = python.class_({ + name: "Config" + }); + + configClass.addField( + python.field({ + name: "frozen", + initializer: python.TypeInstantiation.bool(true) + }) + ); + + configClass.addField( + python.field({ + name: "smart_union", + initializer: python.TypeInstantiation.bool(true) + }) + ); + + configClass.addField( + python.field({ + name: "json_encoders", + initializer: python.TypeInstantiation.dict([ + { + key: dt.datetime, + value: core.serialize_datetime + } + ]) + }) + ); + + return configClass; + } +} diff --git a/generators/python-v2/pydantic-model/src/v2/WrappedAliasGenerator.ts b/generators/python-v2/pydantic-model/src/v2/WrappedAliasGenerator.ts new file mode 100644 index 00000000000..966491291c8 --- /dev/null +++ b/generators/python-v2/pydantic-model/src/v2/WrappedAliasGenerator.ts @@ -0,0 +1,261 @@ +import { WriteablePythonFile, pydantic, core, dt } from "@fern-api/base-python-generator"; +import { python } from "@fern-api/python-ast"; +import { AliasTypeDeclaration, PrimitiveTypeV1, TypeDeclaration, TypeId, TypeReference } from "@fern-fern/ir-sdk/api"; +import { PydanticModelGeneratorContext } from "../ModelGeneratorContext"; +import { RelativeFilePath } from "@fern-api/fs-utils"; +import { assertNever } from "@fern-api/core-utils"; + +export class WrappedAliasGenerator { + private readonly className: string; + + constructor( + private readonly typeId: TypeId, + private readonly context: PydanticModelGeneratorContext, + private readonly typeDeclaration: TypeDeclaration, + private readonly aliasDeclaration: AliasTypeDeclaration + ) { + this.className = this.context.getClassName(this.typeDeclaration.name.name); + } + + public doGenerate(): WriteablePythonFile { + const valueType = this.context.pythonTypeMapper.convert({ reference: this.aliasDeclaration.aliasOf }); + + const class_ = python.class_({ + name: this.className, + docs: this.typeDeclaration.docs, + extends_: [pydantic.RootModel(valueType)], + decorators: [] + }); + + class_.addField( + python.field({ + name: "root", + type: valueType, + docs: undefined, + initializer: undefined + }) + ); + + class_.add(this.getGetterMethod()); + + class_.add(this.getBuilderMethod()); + + class_.add(this.getConfigClass()); + + const module = this.context.getModulePathForId(this.typeId); + const filename = this.context.getSnakeCaseSafeName(this.typeDeclaration.name.name); + const file = python.file({ + moduleName: module.join("."), + path: ["test"], + name: filename + }); + file.addStatement(class_); + + return new WriteablePythonFile({ + contents: file, + directory: RelativeFilePath.of(module.join("/")), + filename + }); + } + + private getConfigClass(): python.Class { + const configClass = python.class_({ + name: "Config" + }); + + configClass.addField( + python.field({ + name: "frozen", + initializer: python.TypeInstantiation.bool(true) + }) + ); + + configClass.addField( + python.field({ + name: "smart_union", + initializer: python.TypeInstantiation.bool(true) + }) + ); + + configClass.addField( + python.field({ + name: "json_encoders", + initializer: python.TypeInstantiation.dict([ + { + key: dt.datetime, + value: core.serialize_datetime + } + ]) + }) + ); + + return configClass; + } + + private getGetterMethod(): python.Method { + const method = python.method({ + name: this.getGetterName(this.aliasDeclaration.aliasOf), + return_: python.Type.uuid() + }); + method.addStatement(python.codeBlock("return self.root")); + return method; + } + + private getGetterName(typeReference: TypeReference): string { + return typeReference._visit({ + container: (container) => + container._visit({ + list: () => "get_as_list", + map: () => "get_as_map", + set: () => "get_as_set", + optional: (opt) => this.getGetterName(opt), + literal: () => "get_as_string", + _other: () => "get_value" + }), + named: (typeName) => "get_as_" + typeName.name.snakeCase.unsafeName, + primitive: (primitive) => { + if (primitive.v2 != null) { + return primitive.v2?._visit({ + integer: () => "get_as_int", + double: () => "get_as_float", + string: () => "get_as_str", + boolean: () => "get_as_bool", + long: () => "get_as_int", + dateTime: () => "get_as_datetime", + date: () => "get_as_date", + uuid: () => "get_as_uuid", + base64: () => "get_as_str", + bigInteger: () => "get_as_str", + uint: () => "get_as_int", + uint64: () => "get_as_int", + float: () => "get_as_float", + _other: () => "get_value" + }); + } + switch (primitive.v1) { + case PrimitiveTypeV1.Integer: + return "get_as_int"; + case PrimitiveTypeV1.Double: + return "get_as_float"; + case PrimitiveTypeV1.String: + return "get_as_str"; + case PrimitiveTypeV1.Boolean: + return "get_as_bool"; + case PrimitiveTypeV1.Long: + return "get_as_int"; + case PrimitiveTypeV1.DateTime: + return "get_as_datetime"; + case PrimitiveTypeV1.Date: + return "get_as_date"; + case PrimitiveTypeV1.Uuid: + return "get_as_uuid"; + case PrimitiveTypeV1.Base64: + return "get_as_str"; + case PrimitiveTypeV1.BigInteger: + return "get_as_str"; + case PrimitiveTypeV1.Uint: + return "get_as_int"; + case PrimitiveTypeV1.Uint64: + return "get_as_int"; + case PrimitiveTypeV1.Float: + return "get_as_float"; + default: + assertNever(primitive.v1); + } + }, + unknown: () => "get_value", + _other: () => "get_value" + }); + } + + private getBuilderMethod(): python.Method { + const method = python.method({ + name: this.getBuilderName(this.aliasDeclaration.aliasOf), + static_: true, + parameters: [ + python.parameter({ + name: "value", + type: this.context.pythonTypeMapper.convert({ reference: this.aliasDeclaration.aliasOf }) + }) + ], + return_: python.Type.reference( + new python.Reference({ + name: this.className + }) + ) + }); + method.addStatement( + python.codeBlock((writer) => { + writer.write(`${this.className}(root=value)`); + }) + ); + return method; + } + + private getBuilderName(typeReference: TypeReference): string { + return typeReference._visit({ + container: (container) => + container._visit({ + list: () => "from_list", + map: () => "from_map", + set: () => "from_set", + optional: (opt) => this.getBuilderName(opt), + literal: () => "from_string", + _other: () => "from_value" + }), + named: (typeName) => "from_" + typeName.name.snakeCase.unsafeName, + primitive: (primitive) => { + if (primitive.v2 != null) { + return primitive.v2?._visit({ + integer: () => "from_int", + double: () => "from_float", + string: () => "from_str", + boolean: () => "from_bool", + long: () => "from_int", + dateTime: () => "from_datetime", + date: () => "from_date", + uuid: () => "from_uuid", + base64: () => "from_str", + bigInteger: () => "from_str", + uint: () => "from_int", + uint64: () => "from_int", + float: () => "from_float", + _other: () => "from_value" + }); + } + switch (primitive.v1) { + case PrimitiveTypeV1.Integer: + return "from_int"; + case PrimitiveTypeV1.Double: + return "from_float"; + case PrimitiveTypeV1.String: + return "from_str"; + case PrimitiveTypeV1.Boolean: + return "from_bool"; + case PrimitiveTypeV1.Long: + return "from_int"; + case PrimitiveTypeV1.DateTime: + return "from_datetime"; + case PrimitiveTypeV1.Date: + return "from_date"; + case PrimitiveTypeV1.Uuid: + return "from_uuid"; + case PrimitiveTypeV1.Base64: + return "from_str"; + case PrimitiveTypeV1.BigInteger: + return "from_str"; + case PrimitiveTypeV1.Uint: + return "from_int"; + case PrimitiveTypeV1.Uint64: + return "from_int"; + case PrimitiveTypeV1.Float: + return "from_float"; + default: + assertNever(primitive.v1); + } + }, + unknown: () => "from_value", + _other: () => "from_value" + }); + } +} diff --git a/generators/python-v2/pydantic-model/src/v2/generateV2Models.ts b/generators/python-v2/pydantic-model/src/v2/generateV2Models.ts new file mode 100644 index 00000000000..967b01b485b --- /dev/null +++ b/generators/python-v2/pydantic-model/src/v2/generateV2Models.ts @@ -0,0 +1,26 @@ +import { WriteablePythonFile } from "@fern-api/base-python-generator"; +import { PydanticModelGeneratorContext } from "../ModelGeneratorContext"; +import { ObjectGenerator } from "./ObjectGenerator"; +import { WrappedAliasGenerator } from "./WrappedAliasGenerator"; + +export function generateV2Models({ context }: { context: PydanticModelGeneratorContext }): WriteablePythonFile[] { + const files: WriteablePythonFile[] = []; + for (const [typeId, typeDeclaration] of Object.entries(context.ir.types)) { + const file = typeDeclaration.shape._visit({ + alias: (aliasTypeDeclaration) => { + return new WrappedAliasGenerator(typeId, context, typeDeclaration, aliasTypeDeclaration).doGenerate(); + }, + enum: () => undefined, + object: (objectTypDeclaration) => { + return new ObjectGenerator(typeId, context, typeDeclaration, objectTypDeclaration).doGenerate(); + }, + undiscriminatedUnion: () => undefined, + union: () => undefined, + _other: () => undefined + }); + if (file != null) { + files.push(file); + } + } + return files; +} diff --git a/generators/python-v2/pydantic-model/tsconfig.json b/generators/python-v2/pydantic-model/tsconfig.json index 945efb0f393..5c1e319cac3 100644 --- a/generators/python-v2/pydantic-model/tsconfig.json +++ b/generators/python-v2/pydantic-model/tsconfig.json @@ -6,6 +6,7 @@ { "path": "../../../packages/commons/core-utils" }, { "path": "../../../packages/commons/fs-utils" }, { "path": "../../commons" }, - { "path": "../codegen" } + { "path": "../ast" }, + { "path": "../base" } ] } diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ada.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ada.json index 5669b63f4cd..93694e95ff2 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ada.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/ada.json @@ -521,6 +521,9 @@ types: "docs": "OK", "type": "root.EndUser", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEndUsers": { "auth": true, @@ -565,6 +568,9 @@ types: "docs": "OK", "type": "root.EndUsers", }, + "source": { + "openapi": "../openapi.json", + }, }, "updateEndUserById": { "auth": true, @@ -595,6 +601,9 @@ types: "docs": "OK", "type": "root.EndUser", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -613,6 +622,8 @@ service: method: GET auth: true docs: Get a specific end user + source: + openapi: ../openapi.json path-parameters: end_user_id: type: string @@ -637,6 +648,8 @@ service: method: PATCH auth: true docs: Update an end user. Request data is limited to 4KB in size total. + source: + openapi: ../openapi.json path-parameters: end_user_id: type: string @@ -660,6 +673,8 @@ service: method: GET auth: true docs: Get multiple end users + source: + openapi: ../openapi.json display-name: Get multiple end users by ID request: name: GetEndUsersRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/anyOf.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/anyOf.json index e82b99bfdf6..d6d5a2b41e9 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/anyOf.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/anyOf.json @@ -44,6 +44,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -75,6 +78,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/apiture.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/apiture.json index 590a06905ad..c0cca8670c0 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/apiture.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/apiture.json @@ -13187,6 +13187,9 @@ types: "docs": "OK.", "type": "root.AccountJointOwners", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13207,6 +13210,8 @@ service: docs: >- Return a collection of account joint owners. The user must have the `account.manageJointOwners` permission to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -13304,6 +13309,9 @@ docs: Account Joint Owners "docs": "OK. The response is a representation of the customer's account.", "type": "root.Account", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAccountBalances": { "auth": true, @@ -13365,6 +13373,9 @@ The response may be incomplete. Given a `Retry-After` response header, the clien "docs": "OK. The response contains the balances for all the accounts in the `?accounts=` query parameter.", "type": "root.AccountBalances", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAccounts": { "auth": true, @@ -13469,6 +13480,9 @@ The response may be incomplete. Given a `Retry-After` response header, the clien "docs": "OK. A page from the full list of the customer's accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.Accounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listEligibleAchAccounts": { "auth": true, @@ -13515,6 +13529,9 @@ Optionally, an agent can access a business customer's ACH accounts when acting o "docs": "OK. A page from the full list of the customer's ACH-eligible accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.Accounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13554,6 +13571,8 @@ service: Return a paginated list of the customer's accounts, consisting of internal accounts at this financial institution and accounts at other financial institutions, if any. + source: + openapi: ../openapi.yml display-name: List Accounts request: name: AccountsListAccountsRequest @@ -13654,6 +13673,8 @@ service: method: GET auth: true docs: Return details of the customer's internal account. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -13712,6 +13733,8 @@ service: the client can retry the operation after a short delay, requesting only the accounts which are incomplete; see the 202 Accepted response for details. + source: + openapi: ../openapi.yml display-name: List Account Balances request: name: AccountsListAccountBalancesRequest @@ -13770,6 +13793,8 @@ service: Optionally, an agent can access a business customer's ACH accounts when acting on behalf of that business customer via the optional `customerId` query parameter. + source: + openapi: ../openapi.yml display-name: List Eligible ACH Accounts request: name: AccountsListEligibleAchAccountsRequest @@ -13916,6 +13941,9 @@ Cutoff times are very slowly changing data. This is a _conditional operation_ wh "docs": "OK.", "type": "root.CutoffTimes", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransferDateRestrictions": { "auth": true, @@ -14078,6 +14106,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.TransferDateRestrictions", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTransferSchedule": { "auth": true, @@ -14171,6 +14202,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.TransferSchedules", }, + "source": { + "openapi": "../openapi.yml", + }, }, "lookUpInstitutionByLocator": { "auth": true, @@ -14254,6 +14288,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.InstitutionLookupResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14280,6 +14317,8 @@ service: code](https://www.swift.com/standards/data-standards/bic-business-identifier-code). Optionally, include a list of intermediary institutions that may be necessary to complete international wire transfers. + source: + openapi: ../openapi.yml display-name: Look up institution by routing number, IBAN, or SWIFT/BIC code request: name: InstitutionsLookUpInstitutionByLocatorRequest @@ -14351,6 +14390,8 @@ service: method: GET auth: true docs: Return a transfer schedule list for this institution. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -14437,6 +14478,8 @@ service: `getCutoffTimes` response and the `ETag` returned from a previous call to this operation, this operation returns a 304 Not Modified when called again if the cutoff times have not changed. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -14504,6 +14547,8 @@ service: restricted dates but the financial institution may shift the date when funds are drafted to account for holidays, closures, or to adjust based on the risk level of the funding account. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -14706,6 +14751,9 @@ The authenticated user must have the `account.allows.manageJointOwners` permissi "docs": "OK.", "type": "root.JointOwnerInvitation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14732,6 +14780,8 @@ service: The authenticated user must have the `account.allows.manageJointOwners` permission to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -14828,6 +14878,9 @@ service: "docs": "OK.", "type": "root.OverdraftProtection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listEligibleOverdraftAccounts": { "auth": true, @@ -14897,6 +14950,9 @@ To obtain available balances for these accounts, use [`listAccountBalances`](#op "docs": "OK. A page from the full list of the customer's eligible overdraft accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.EligibleOverdraftAccounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchOverdraftAccounts": { "auth": true, @@ -14953,6 +15009,9 @@ The user must have the `allows.manageOverdraftAccounts` permission on the accoun "docs": "OK.", "type": "root.OverdraftProtection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14984,6 +15043,8 @@ service: To obtain available balances for these accounts, use [`listAccountBalances`](#op-listAccountBalances). + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -15048,6 +15109,8 @@ service: docs: >- Return the JSON representation of this account's overdraft protection settings. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -15084,6 +15147,8 @@ service: The user must have the `allows.manageOverdraftAccounts` permission on the account to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -15180,6 +15245,9 @@ This is a _conditional operation_ when the `If-None-Match` header is used. If th "docs": "OK.", "type": "root.TransactionCategories", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15206,6 +15274,8 @@ service: used. If the client has a `transactionCategories` response and the `ETag` returned from a previous call, this operation returns a 304 Not Modified if called again when the categories collection has not changed. + source: + openapi: ../openapi.yml display-name: Return a collection of transaction categories request: name: TransactionCategoriesListTransactionCategoriesRequest @@ -15415,6 +15485,9 @@ The default response lists only recent transactions. Normally, this is transacti "docs": "OK.", "type": "root.Transactions", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15449,6 +15522,8 @@ service: The default response lists only recent transactions. Normally, this is transactions for the most recent 30 days, although for high-volume accounts, it may be a shorter period. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -15758,6 +15833,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "Created.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTransfer": { "auth": true, @@ -15785,6 +15863,9 @@ Note: This operation requires an identity challenge if the financial institution "type": "root.ResourceId", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransfer": { "auth": true, @@ -15849,6 +15930,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTransfers": { "auth": true, @@ -15974,6 +16058,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfers", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchTransfer": { "auth": true, @@ -16076,6 +16163,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16099,6 +16189,8 @@ service: collection of transfers. The [nextPage_url](https://dx.apiture.com/docs/api-documentation/concepts/links) in the response is a pagination link. + source: + openapi: ../openapi.yml display-name: Return a collection of transfers request: name: TransfersListTransfersRequest @@ -16238,6 +16330,8 @@ service: Note: This operation requires an identity challenge if the financial institution requires the user to proove their identity for some types of transfers. See the "Challenges API". + source: + openapi: ../openapi.yml display-name: Create a new transfer request: name: NewTransfer @@ -16318,6 +16412,8 @@ service: method: GET auth: true docs: Return the JSON representation of this transfer resource. + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId @@ -16369,6 +16465,8 @@ service: docs: >- Delete this transfer resource and any resources that are owned by it. Only transfers that have not been processed may be deleted. + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId @@ -16396,6 +16494,8 @@ service: Note: This operation requires an identity challenge if the financial institution requires the user to prove their identity for some types of transfers. See the "Challenges API". + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/application-json.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/application-json.json index 4c032b3a31f..e2c70ce1468 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/application-json.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/application-json.json @@ -29,6 +29,9 @@ "docs": "Success", "type": "Data", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getVndFernUserJsonVersion1": { "auth": false, @@ -50,6 +53,9 @@ "docs": "Success", "type": "Data", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -77,6 +83,8 @@ path: /vnd.fern.user+json;version=1 method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: Data @@ -89,6 +97,8 @@ path: /application-json method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: Data diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/aries.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/aries.json index 062838d1380..ab8027fac96 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/aries.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/aries.json @@ -77,6 +77,9 @@ "docs": "", "type": "TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6906,6 +6909,8 @@ path: /transactions/{tran_id}/endorse method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -11360,6 +11365,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch_menu_by_conn_id": { "auth": true, @@ -11404,6 +11412,9 @@ types: "docs": "", "type": "root.ActionMenuFetchResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "perform_action_by_conn_id": { "auth": true, @@ -11458,6 +11469,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "request_menu_by_conn_id": { "auth": true, @@ -11488,6 +11502,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_menu_to_conn_id": { "auth": true, @@ -11539,6 +11556,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11556,6 +11576,8 @@ service: path: /action-menu/{conn_id}/close method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11574,6 +11596,8 @@ service: path: /action-menu/{conn_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11602,6 +11626,8 @@ service: path: /action-menu/{conn_id}/perform method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11635,6 +11661,8 @@ service: path: /action-menu/{conn_id}/request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11653,6 +11681,8 @@ service: path: /action-menu/{conn_id}/send-menu method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11742,6 +11772,9 @@ docs: Menu interaction over connection "docs": "", "type": "root.BasicMessageModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11759,6 +11792,8 @@ service: path: /connections/{conn_id}/send-message method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11866,6 +11901,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "accept_connection_request": { "auth": true, @@ -11924,6 +11962,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_connection_invitation": { "auth": true, @@ -12032,6 +12073,9 @@ docs: Simple messaging "docs": "", "type": "root.InvitationResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_static_connection": { "auth": true, @@ -12149,6 +12193,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionStaticResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_connection_record": { "auth": true, @@ -12179,6 +12226,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_endpoint": { "auth": true, @@ -12210,6 +12260,9 @@ docs: Simple messaging "docs": "", "type": "root.EndpointsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_metadata": { "auth": true, @@ -12247,6 +12300,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionMetadata", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_record": { "auth": true, @@ -12296,6 +12352,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_connections": { "auth": true, @@ -12403,6 +12462,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_connection_invitation": { "auth": true, @@ -12516,6 +12578,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_connection_metadata": { "auth": true, @@ -12561,6 +12626,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionMetadata", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_inbound_connection": { "auth": true, @@ -12596,6 +12664,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12711,6 +12782,8 @@ service: path: /connections method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query agent-to-agent connections request: name: GetMatchingConnectionsRequest @@ -12793,6 +12866,8 @@ service: path: /connections/create-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new connection invitation request: name: CreateInvitationRequest @@ -12870,6 +12945,8 @@ service: path: /connections/create-static method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new static connection request: name: ConnectionStaticRequest @@ -12954,6 +13031,8 @@ service: path: /connections/receive-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive a new connection invitation request: name: ReceiveInvitationRequest @@ -13037,6 +13116,8 @@ service: path: /connections/{conn_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13074,6 +13155,8 @@ service: path: /connections/{conn_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13092,6 +13175,8 @@ service: path: /connections/{conn_id}/accept-invitation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13141,6 +13226,8 @@ service: path: /connections/{conn_id}/accept-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13184,6 +13271,8 @@ service: path: /connections/{conn_id}/endpoints method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13203,6 +13292,8 @@ service: path: /connections/{conn_id}/establish-inbound/{ref_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13225,6 +13316,8 @@ service: path: /connections/{conn_id}/metadata method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13248,6 +13341,8 @@ service: path: /connections/{conn_id}/metadata method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13341,6 +13436,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionsCreatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_definition": { "auth": true, @@ -13400,6 +13498,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_credential_definition": { "auth": true, @@ -13510,6 +13611,9 @@ docs: Connection management "docs": "", "type": "root.TxnOrCredentialDefinitionSendResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "write_credential_definition": { "auth": true, @@ -13569,6 +13673,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13586,6 +13693,8 @@ service: path: /credential-definitions method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a credential definition to the ledger request: name: CredentialDefinitionSendRequest @@ -13658,6 +13767,8 @@ service: path: /credential-definitions/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching credential definitions that agent originated request: name: GetCreatedCredDefsRequest @@ -13693,6 +13804,8 @@ service: path: /credential-definitions/{cred_def_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -13735,6 +13848,8 @@ service: path: /credential-definitions/{cred_def_id}/write_record method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -13820,6 +13935,9 @@ docs: Credential definition operations "docs": "", "type": "root.HolderModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_w3c_credential": { "auth": true, @@ -13850,6 +13968,9 @@ docs: Credential definition operations "docs": "", "type": "root.HolderModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_mime_types": { "auth": true, @@ -13882,6 +14003,9 @@ docs: Credential definition operations "docs": "", "type": "root.AttributeMimeTypesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_record": { "auth": true, @@ -13919,6 +14043,9 @@ docs: Credential definition operations "docs": "", "type": "root.IndyCredInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credentials": { "auth": true, @@ -13978,6 +14105,9 @@ docs: Credential definition operations "docs": "", "type": "root.CredInfoList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_revocation_status": { "auth": true, @@ -14021,6 +14151,9 @@ docs: Credential definition operations "docs": "", "type": "root.CredRevokedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_w3c_credential": { "auth": true, @@ -14076,6 +14209,9 @@ docs: Credential definition operations "docs": "", "type": "root.VCRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_w3c_credentials": { "auth": true, @@ -14238,6 +14374,9 @@ docs: Credential definition operations "docs": "", "type": "root.VCRecordList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14255,6 +14394,8 @@ service: path: /credential/mime-types/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14274,6 +14415,8 @@ service: path: /credential/revoked/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14301,6 +14444,8 @@ service: path: /credential/w3c/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14338,6 +14483,8 @@ service: path: /credential/w3c/{credential_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14356,6 +14503,8 @@ service: path: /credential/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14381,6 +14530,8 @@ service: path: /credential/{credential_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14399,6 +14550,8 @@ service: path: /credentials method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch credentials from wallet request: name: GetCredentialsRequest @@ -14439,6 +14592,8 @@ service: path: /credentials/w3c method: POST auth: true + source: + openapi: ../openapi.yml display-name: Fetch W3C credentials from wallet request: name: W3CCredentialsListRequest @@ -14626,6 +14781,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "accept_didex_request": { "auth": true, @@ -14688,6 +14846,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_didex_request": { "auth": true, @@ -14760,6 +14921,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_didex_request": { "auth": true, @@ -14873,6 +15037,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14890,6 +15057,8 @@ service: path: /didexchange/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create and send a request against public DID's implicit invitation request: name: CreateDidexRequestRequest @@ -14944,6 +15113,8 @@ service: path: /didexchange/receive-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive request against public DID's implicit invitation request: name: DIDXRequest @@ -15028,6 +15199,8 @@ service: path: /didexchange/{conn_id}/accept-invitation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -15074,6 +15247,8 @@ service: path: /didexchange/{conn_id}/accept-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -15210,6 +15385,9 @@ docs: Connection management via DID exchange "docs": "", "type": "root.V10DiscoveryExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_v10_features_query": { "auth": true, @@ -15269,6 +15447,9 @@ docs: Connection management via DID exchange "docs": "", "type": "root.V10DiscoveryRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15286,6 +15467,8 @@ service: path: /discover-features/query method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query supported features request: name: GetV10FeaturesQueryRequest @@ -15328,6 +15511,8 @@ service: path: /discover-features/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Discover Features records request: name: GetV10FeatureRecordsRequest @@ -15466,6 +15651,9 @@ docs: Feature discovery "docs": "", "type": "root.V20DiscoveryExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_v20_features_queries": { "auth": true, @@ -15531,6 +15719,9 @@ docs: Feature discovery "docs": "", "type": "root.V20DiscoveryExchangeResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15548,6 +15739,8 @@ service: path: /discover-features-2.0/queries method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query supported features request: name: GetV20FeaturesQueriesRequest @@ -15592,6 +15785,8 @@ service: path: /discover-features-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Discover Features v2.0 records request: name: GetV20FeatureRecordsRequest @@ -15713,6 +15908,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_transaction_request": { "auth": true, @@ -15793,6 +15991,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_transaction_list": { "auth": true, @@ -15881,6 +16082,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_transaction_record": { "auth": true, @@ -15941,6 +16145,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_endorsed_transaction": { "auth": true, @@ -16001,6 +16208,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "refuse_transaction": { "auth": true, @@ -16061,6 +16271,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "resend_transaction_request": { "auth": true, @@ -16121,6 +16334,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_endorser_info_for_conn_id": { "auth": true, @@ -16168,6 +16384,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.EndorserInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_endorser_role_for_conn_id": { "auth": true, @@ -16208,6 +16427,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionJobs", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16237,6 +16459,8 @@ service: path: /transaction/{tran_id}/resend method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16277,6 +16501,8 @@ service: path: /transactions method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query transactions response: docs: '' @@ -16335,6 +16561,8 @@ service: path: /transactions/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: For author to send a transaction request request: name: Date @@ -16388,6 +16616,8 @@ service: path: /transactions/{conn_id}/set-endorser-info method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16418,6 +16648,8 @@ service: path: /transactions/{conn_id}/set-endorser-role method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16443,6 +16675,8 @@ service: path: /transactions/{tran_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16483,6 +16717,8 @@ service: path: /transactions/{tran_id}/cancel method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16523,6 +16759,8 @@ service: path: /transactions/{tran_id}/refuse method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16563,6 +16801,8 @@ service: path: /transactions/{tran_id}/write method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16670,6 +16910,9 @@ types: "docs": "", "type": "root.IntroModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16687,6 +16930,8 @@ service: path: /connections/{conn_id}/start-introduction method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16984,6 +17229,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_free_credential_offer": { "auth": true, @@ -17195,6 +17443,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_cred_ex_record": { "auth": true, @@ -17225,6 +17476,9 @@ docs: Introduction of known parties "docs": "", "type": "root.IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_cred_ex_record": { "auth": true, @@ -17384,6 +17638,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_cred_ex_records": { "auth": true, @@ -17683,6 +17940,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "issue_credential_to_holder": { "auth": true, @@ -17859,6 +18119,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_cred_ex_problem": { "auth": true, @@ -17903,6 +18166,9 @@ docs: Introduction of known parties "docs": "", "type": "root.IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_offer": { "auth": true, @@ -18076,6 +18342,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_request": { "auth": true, @@ -18235,6 +18504,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential": { "auth": true, @@ -18501,6 +18773,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_offer": { "auth": true, @@ -18723,6 +18998,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_proposal": { "auth": true, @@ -18989,6 +19267,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store_received_credential": { "auth": true, @@ -19164,6 +19445,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19210,6 +19494,8 @@ service: path: /issue-credential/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Create a credential record without sending (generally for use with Out-Of-Band) @@ -19394,6 +19680,8 @@ service: path: /issue-credential/create-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a credential offer, independent of any proposal or connection request: name: V10CredentialConnFreeOfferRequest @@ -19551,6 +19839,8 @@ service: path: /issue-credential/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all credential exchange records request: name: GetMatchingCredExRecordsRequest @@ -19772,6 +20062,8 @@ service: path: /issue-credential/records/{cred_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -19891,6 +20183,8 @@ service: path: /issue-credential/records/{cred_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -19909,6 +20203,8 @@ service: path: /issue-credential/records/{cred_ex_id}/issue method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20038,6 +20334,8 @@ service: path: /issue-credential/records/{cred_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20064,6 +20362,8 @@ service: path: /issue-credential/records/{cred_ex_id}/send-offer method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20191,6 +20491,8 @@ service: path: /issue-credential/records/{cred_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20310,6 +20612,8 @@ service: path: /issue-credential/records/{cred_ex_id}/store method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20438,6 +20742,8 @@ service: path: /issue-credential/send method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential, automating entire flow request: name: V10CredentialProposalRequestMand @@ -20626,6 +20932,8 @@ service: path: /issue-credential/send-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential offer, independent of any proposal request: name: V10CredentialFreeOfferRequest @@ -20789,6 +21097,8 @@ service: path: /issue-credential/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send issuer a credential proposal request: name: V10CredentialProposalRequestOpt @@ -21268,6 +21578,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_free_credential_offer": { "auth": true, @@ -21529,6 +21842,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_cred_ex_record": { "auth": true, @@ -21559,6 +21875,9 @@ types: "docs": "", "type": "root.V20IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_cred_ex_record": { "auth": true, @@ -21797,6 +22116,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_cred_ex_records-v2": { "auth": true, @@ -22254,6 +22576,9 @@ types: "docs": "", "type": "root.V20CredExRecordListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "issue_credential_to_holder": { "auth": true, @@ -22509,6 +22834,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_cred_ex_problem": { "auth": true, @@ -22553,6 +22881,9 @@ types: "docs": "", "type": "root.V20IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_offer": { "auth": true, @@ -22804,6 +23135,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_request": { "auth": true, @@ -23039,6 +23373,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential": { "auth": true, @@ -23277,6 +23614,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_offer": { "auth": true, @@ -23549,6 +23889,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_proposal": { "auth": true, @@ -23787,6 +24130,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_request": { "auth": true, @@ -24068,6 +24414,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store_received_credential": { "auth": true, @@ -24322,6 +24671,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24395,6 +24747,8 @@ service: path: /issue-credential-2.0/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Create a credential record without sending (generally for use with Out-Of-Band) @@ -24576,6 +24930,8 @@ service: path: /issue-credential-2.0/create-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a credential offer, independent of any proposal or connection request: name: V20CredOfferConnFreeRequest @@ -24761,6 +25117,8 @@ service: path: /issue-credential-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all credential exchange records request: name: GetMatchingCredExRecordsV2Request @@ -25086,6 +25444,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25256,6 +25616,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25274,6 +25636,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/issue method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25454,6 +25818,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25480,6 +25846,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/send-offer method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25651,6 +26019,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25813,6 +26183,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/store method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25992,6 +26364,8 @@ service: path: /issue-credential-2.0/send method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential, automating entire flow request: body: @@ -26158,6 +26532,8 @@ service: path: /issue-credential-2.0/send-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential offer, independent of any proposal request: name: V20CredOfferRequest @@ -26349,6 +26725,8 @@ service: path: /issue-credential-2.0/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send issuer a credential proposal request: body: @@ -26515,6 +26893,8 @@ service: path: /issue-credential-2.0/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Send issuer a credential request not bound to an existing thread. Indy credentials cannot start at a request @@ -26802,6 +27182,9 @@ types: "docs": "", "type": "root.SignResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify": { "auth": true, @@ -26848,6 +27231,9 @@ types: "docs": "", "type": "root.VerifyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26865,6 +27251,8 @@ service: path: /jsonld/sign method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sign a JSON-LD structure and return it request: name: SignRequest @@ -26894,6 +27282,8 @@ service: path: /jsonld/verify method: POST auth: true + source: + openapi: ../openapi.yml display-name: Verify a JSON-LD structure. request: name: VerifyRequest @@ -26980,6 +27370,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_nym_role": { "auth": true, @@ -27013,6 +27406,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetNymRoleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_verkey": { "auth": true, @@ -27046,6 +27442,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetDIDVerkeyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_multiple_ledger_config": { "auth": true, @@ -27082,6 +27481,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerConfigList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_published_did_endpoint": { "auth": true, @@ -27119,6 +27521,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetDIDEndpointResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_taa": { "auth": true, @@ -27158,6 +27563,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.TAAResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_write_ledger": { "auth": true, @@ -27179,6 +27587,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.WriteLedgerRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register_nym": { "auth": true, @@ -27266,6 +27677,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.TxnOrRegisterLedgerNymResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "rotate_public_did_keypair": { "auth": true, @@ -27287,6 +27701,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -27345,6 +27762,8 @@ service: path: /ledger/did-endpoint method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the endpoint for a DID from the ledger. request: name: GetPublishedDidEndpointRequest @@ -27368,6 +27787,8 @@ service: path: /ledger/did-verkey method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the verkey for a DID from the ledger. request: name: GetDidVerkeyRequest @@ -27388,6 +27809,8 @@ service: path: /ledger/get-nym-role method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the role from the NYM registration of a public DID. request: name: GetDidNymRoleRequest @@ -27408,6 +27831,8 @@ service: path: /ledger/multiple/config method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the multiple ledger configuration currently in use response: docs: '' @@ -27430,6 +27855,8 @@ service: path: /ledger/multiple/get-write-ledger method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current write ledger response: docs: '' @@ -27442,6 +27869,8 @@ service: path: /ledger/register-nym method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send a NYM registration to the ledger. request: name: RegisterNymRequest @@ -27502,6 +27931,8 @@ service: path: /ledger/rotate-public-did-keypair method: PATCH auth: true + source: + openapi: ../openapi.yml display-name: Rotate key pair for public DID. response: docs: '' @@ -27514,6 +27945,8 @@ service: path: /ledger/taa method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current transaction author agreement, if any response: docs: '' @@ -27539,6 +27972,8 @@ service: path: /ledger/taa/accept method: POST auth: true + source: + openapi: ../openapi.yml display-name: Accept the transaction author agreement request: name: TAAAccept @@ -27618,6 +28053,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_mediation_record": { "auth": true, @@ -27666,6 +28104,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deny_mediation_request": { "auth": true, @@ -27733,6 +28174,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationDeny", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_default_mediator": { "auth": true, @@ -27772,6 +28216,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_keylists": { "auth": true, @@ -27827,6 +28274,9 @@ docs: Interaction with ledger "docs": "", "type": "root.Keylist", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_mediation_records": { "auth": true, @@ -27914,6 +28364,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_mediation_record": { "auth": true, @@ -27962,6 +28415,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "grant_mediation_request": { "auth": true, @@ -27998,6 +28454,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationGrant", }, + "source": { + "openapi": "../openapi.yml", + }, }, "request_mediation_for_connection": { "auth": true, @@ -28074,6 +28533,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_keylist_query_to_mediator": { "auth": true, @@ -28133,6 +28595,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistQuery", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_keylist_update_to_mediator": { "auth": true, @@ -28199,6 +28664,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistUpdate", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_default_mediator": { "auth": true, @@ -28247,6 +28715,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_keylist_for_conn_id": { "auth": true, @@ -28311,6 +28782,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistUpdate", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28357,6 +28831,8 @@ service: path: /mediation/default-mediator method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get default mediator response: docs: '' @@ -28384,6 +28860,8 @@ service: path: /mediation/default-mediator method: DELETE auth: true + source: + openapi: ../openapi.yml display-name: Clear default mediator response: docs: '' @@ -28411,6 +28889,8 @@ service: path: /mediation/keylists method: GET auth: true + source: + openapi: ../openapi.yml display-name: Retrieve keylists by connection or role request: name: GetKeylistsRequest @@ -28450,6 +28930,8 @@ service: path: /mediation/keylists/{mediation_id}/send-keylist-query method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28488,6 +28970,8 @@ service: path: /mediation/keylists/{mediation_id}/send-keylist-update method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28525,6 +29009,8 @@ service: path: /mediation/request/{conn_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -28576,6 +29062,8 @@ service: path: /mediation/requests method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query mediation requests, returns list of all mediation records request: name: GetMatchingMediationRecordsRequest @@ -28637,6 +29125,8 @@ service: path: /mediation/requests/{mediation_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28670,6 +29160,8 @@ service: path: /mediation/requests/{mediation_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28703,6 +29195,8 @@ service: path: /mediation/requests/{mediation_id}/deny method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28746,6 +29240,8 @@ service: path: /mediation/requests/{mediation_id}/grant method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28769,6 +29265,8 @@ service: path: /mediation/update-keylist/{conn_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -28805,6 +29303,8 @@ service: path: /mediation/{mediation_id}/default-mediator method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28957,6 +29457,9 @@ types: "docs": "", "type": "root.CreateWalletResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_wallet": { "auth": true, @@ -29004,6 +29507,9 @@ types: "docs": "", "type": "root.MultitenantModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_auth_token": { "auth": true, @@ -29048,6 +29554,9 @@ types: "docs": "", "type": "root.CreateWalletTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_wallets": { "auth": true, @@ -29093,6 +29602,9 @@ types: "docs": "", "type": "root.WalletList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_wallet_record": { "auth": true, @@ -29127,6 +29639,9 @@ types: "docs": "", "type": "root.WalletRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_wallet": { "auth": true, @@ -29196,6 +29711,9 @@ types: "docs": "", "type": "root.WalletRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29300,6 +29818,8 @@ service: path: /multitenancy/wallet method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a subwallet request: name: CreateWalletRequest @@ -29372,6 +29892,8 @@ service: path: /multitenancy/wallet/{wallet_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29394,6 +29916,8 @@ service: path: /multitenancy/wallet/{wallet_id} method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29450,6 +29974,8 @@ service: path: /multitenancy/wallet/{wallet_id}/remove method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29480,6 +30006,8 @@ service: path: /multitenancy/wallet/{wallet_id}/token method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: string display-name: Get auth token for a subwallet @@ -29509,6 +30037,8 @@ service: path: /multitenancy/wallets method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query subwallets request: name: GetMatchingWalletsRequest @@ -29734,6 +30264,9 @@ docs: Multitenant wallet management "docs": "", "type": "root.InvitationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_oob_invitation": { "auth": true, @@ -29942,6 +30475,9 @@ docs: Multitenant wallet management "docs": "", "type": "root.OobRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29974,6 +30510,8 @@ service: path: /out-of-band/create-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new connection invitation request: name: InvitationCreateRequest @@ -30108,6 +30646,8 @@ service: path: /out-of-band/receive-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive a new connection invitation request: body: @@ -30498,6 +31038,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_pres_ex_record": { "auth": true, @@ -30528,6 +31071,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_pres_ex_records": { "auth": true, @@ -30807,6 +31353,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchangeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_credentials": { "auth": true, @@ -30877,6 +31426,9 @@ docs: Out-of-band connections "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_record": { "auth": true, @@ -31046,6 +31598,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_pres_ex_problem": { "auth": true, @@ -31090,6 +31645,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_presentation_request": { "auth": true, @@ -31327,6 +31885,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_presentation_proposal": { "auth": true, @@ -31561,6 +32122,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation": { "auth": true, @@ -31754,6 +32318,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation_request": { "auth": true, @@ -31945,6 +32512,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify_received_presentation": { "auth": true, @@ -32114,6 +32684,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -32158,6 +32731,8 @@ service: path: /present-proof/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a presentation request not bound to any proposal or connection request: name: V10PresentationCreateRequestRequest @@ -32306,6 +32881,8 @@ service: path: /present-proof/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all present-proof exchange records request: name: GetMatchingPresExRecordsRequest @@ -32497,6 +33074,8 @@ service: path: /present-proof/records/{pres_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32611,6 +33190,8 @@ service: path: /present-proof/records/{pres_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32629,6 +33210,8 @@ service: path: /present-proof/records/{pres_ex_id}/credentials method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32676,6 +33259,8 @@ service: path: /present-proof/records/{pres_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32702,6 +33287,8 @@ service: path: /present-proof/records/{pres_ex_id}/send-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32832,6 +33419,8 @@ service: path: /present-proof/records/{pres_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32960,6 +33549,8 @@ service: path: /present-proof/records/{pres_ex_id}/verify-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -33074,6 +33665,8 @@ service: path: /present-proof/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a presentation proposal request: name: V10PresentationProposalRequest @@ -33233,6 +33826,8 @@ service: path: /present-proof/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a free presentation request not bound to any proposal request: name: V10PresentationSendRequestRequest @@ -33622,6 +34217,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_pres_ex_record": { "auth": true, @@ -33652,6 +34250,9 @@ types: "docs": "", "type": "root.V20PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_pres_ex_records-v2": { "auth": true, @@ -33919,6 +34520,9 @@ types: "docs": "", "type": "root.V20PresExRecordList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_credentials-v2": { "auth": true, @@ -33989,6 +34593,9 @@ types: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_record": { "auth": true, @@ -34132,6 +34739,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_pres_ex_problem": { "auth": true, @@ -34176,6 +34786,9 @@ types: "docs": "", "type": "root.V20PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_presentation_request": { "auth": true, @@ -34389,6 +35002,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_presentation_proposal": { "auth": true, @@ -34603,6 +35219,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation": { "auth": true, @@ -34787,6 +35406,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation_request": { "auth": true, @@ -34952,6 +35574,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify_received_presentation": { "auth": true, @@ -35095,6 +35720,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -35156,6 +35784,8 @@ service: path: /present-proof-2.0/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a presentation request not bound to any proposal or connection request: name: V20PresCreateRequestRequest @@ -35294,6 +35924,8 @@ service: path: /present-proof-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all present-proof exchange records request: name: GetMatchingPresExRecordsV2Request @@ -35485,6 +36117,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35588,6 +36222,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35606,6 +36242,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/credentials method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35653,6 +36291,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35679,6 +36319,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/send-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35808,6 +36450,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35925,6 +36569,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/verify-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -36028,6 +36674,8 @@ service: path: /present-proof-2.0/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a presentation proposal request: name: V20PresProposalRequest @@ -36175,6 +36823,8 @@ service: path: /present-proof-2.0/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a free presentation request not bound to any proposal request: name: V20PresSendRequestRequest @@ -36388,6 +37038,9 @@ types: "docs": "", "type": "root.ResolutionResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36405,6 +37058,8 @@ service: path: /resolver/resolve/{did} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: did: type: string @@ -36485,6 +37140,9 @@ docs: did resolver interface. "docs": "", "type": "root.PublishRevocations", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_revocation_registry": { "auth": true, @@ -36578,6 +37236,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_tails_file": { "auth": true, @@ -36612,6 +37273,9 @@ docs: did resolver interface. "docs": "", "type": "root.TailsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "download_tails_file": { "auth": true, @@ -36630,6 +37294,9 @@ docs: did resolver interface. "docs": "tails file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "download_tails_file_sparse": { "auth": true, @@ -36648,6 +37315,9 @@ docs: did resolver interface. "docs": "tails file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_active_registry_for_cred_def_id": { "auth": true, @@ -36715,6 +37385,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_created_registries": { "auth": true, @@ -36752,6 +37425,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegsCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_revocation_record": { "auth": true, @@ -36800,6 +37476,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevRecordResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_issued_credential_details": { "auth": true, @@ -36853,6 +37532,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevRecordDetailsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_issued_credentials_count": { "auth": true, @@ -36883,6 +37565,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegIssuedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_published_credential_details": { "auth": true, @@ -36911,6 +37596,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevIndyRecordsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_revocation_registry": { "auth": true, @@ -36978,6 +37666,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocation_registry_definition": { "auth": true, @@ -37083,6 +37774,9 @@ docs: did resolver interface. "docs": "", "type": "root.TxnOrRevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocation_registry_entry": { "auth": true, @@ -37163,6 +37857,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocations": { "auth": true, @@ -37238,6 +37935,9 @@ docs: did resolver interface. "docs": "", "type": "root.TxnOrPublishRevocationsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "revoke_issued_credential": { "auth": true, @@ -37340,6 +38040,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevocationModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_revocation_registry_state": { "auth": true, @@ -37419,6 +38122,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_revocation_entry_state": { "auth": true, @@ -37459,6 +38165,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegWalletUpdatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_revocation_registry": { "auth": true, @@ -37543,6 +38252,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upload_tails_file": { "auth": true, @@ -37573,6 +38285,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevocationModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37626,6 +38341,8 @@ service: path: /revocation/active-registry/{cred_def_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -37677,6 +38394,8 @@ service: path: /revocation/clear-pending-revocations method: POST auth: true + source: + openapi: ../openapi.yml display-name: Clear pending revocations request: name: ClearPendingRevocationsRequest @@ -37708,6 +38427,8 @@ service: path: /revocation/create-registry method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a new revocation registry request: name: RevRegCreateRequest @@ -37773,6 +38494,8 @@ service: path: /revocation/credential-record method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get credential revocation status request: name: GetCredentialRevocationRecordRequest @@ -37807,6 +38530,8 @@ service: path: /revocation/publish-revocations method: POST auth: true + source: + openapi: ../openapi.yml display-name: Publish pending revocations to ledger request: body: @@ -37856,6 +38581,8 @@ service: path: /revocation/registries/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching revocation registries that current agent created request: name: GetCreatedRegistriesRequest @@ -37881,6 +38608,8 @@ service: path: /revocation/registry/delete-tails-file method: DELETE auth: true + source: + openapi: ../openapi.yml display-name: Delete the tail files request: name: DeleteTailsFileRequest @@ -37902,6 +38631,8 @@ service: path: /revocation/registry/{rev_reg_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -37953,6 +38684,8 @@ service: path: /revocation/registry/{rev_reg_id} method: PATCH auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38015,6 +38748,8 @@ service: path: /revocation/registry/{rev_reg_id}/definition method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38092,6 +38827,8 @@ service: path: /revocation/registry/{rev_reg_id}/entry method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38152,6 +38889,8 @@ service: path: /revocation/registry/{rev_reg_id}/fix-revocation-entry-state method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38177,6 +38916,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38195,6 +38936,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued/details method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38233,6 +38976,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued/indy_recs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38250,6 +38995,8 @@ service: path: /revocation/registry/{rev_reg_id}/set-state method: PATCH auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38309,6 +39056,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file-less-deets method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38321,6 +39070,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38333,6 +39084,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38351,6 +39104,8 @@ service: path: /revocation/revoke method: POST auth: true + source: + openapi: ../openapi.yml display-name: Revoke an issued credential request: name: RevokeRequest @@ -38509,6 +39264,9 @@ types: "docs": "", "type": "root.SchemasCreatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_schema": { "auth": true, @@ -38549,6 +39307,9 @@ types: "docs": "", "type": "root.SchemaGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_schema": { "auth": true, @@ -38661,6 +39422,9 @@ types: "docs": "", "type": "root.TxnOrSchemaSendResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "write_schema_record_to_wallet": { "auth": true, @@ -38701,6 +39465,9 @@ types: "docs": "", "type": "root.SchemaGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38718,6 +39485,8 @@ service: path: /schemas method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a schema to the ledger request: name: SchemaSendRequest @@ -38793,6 +39562,8 @@ service: path: /schemas/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching schema that agent originated request: name: GetMatchingCreatedSchemasRequest @@ -38822,6 +39593,8 @@ service: path: /schemas/{schema_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: schema_id: type: string @@ -38848,6 +39621,8 @@ service: path: /schemas/{schema_id}/write_record method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: schema_id: type: string @@ -38904,6 +39679,9 @@ docs: Schema operations "docs": "", "type": "root.AdminConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_liveliness": { "auth": true, @@ -38925,6 +39703,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatusLiveliness", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_loaded_plugins": { "auth": true, @@ -38949,6 +39730,9 @@ docs: Schema operations "docs": "", "type": "root.AdminModules", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_readiness": { "auth": true, @@ -38970,6 +39754,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatusReadiness", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_status": { "auth": true, @@ -38992,6 +39779,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, "reset_statistics": { "auth": true, @@ -39013,6 +39803,9 @@ docs: Schema operations "docs": "", "type": "root.AdminReset", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shutdown_server": { "auth": true, @@ -39034,6 +39827,9 @@ docs: Schema operations "docs": "", "type": "root.AdminShutdown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39051,6 +39847,8 @@ service: path: /plugins method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the list of loaded plugins response: docs: '' @@ -39065,6 +39863,8 @@ service: path: /shutdown method: GET auth: true + source: + openapi: ../openapi.yml display-name: Shut down server response: docs: '' @@ -39077,6 +39877,8 @@ service: path: /status method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the server status response: docs: '' @@ -39090,6 +39892,8 @@ service: path: /status/config method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the server configuration response: docs: '' @@ -39101,6 +39905,8 @@ service: path: /status/live method: GET auth: true + source: + openapi: ../openapi.yml display-name: Liveliness check response: docs: '' @@ -39113,6 +39919,8 @@ service: path: /status/ready method: GET auth: true + source: + openapi: ../openapi.yml display-name: Readiness check response: docs: '' @@ -39125,6 +39933,8 @@ service: path: /status/reset method: POST auth: true + source: + openapi: ../openapi.yml display-name: Reset statistics response: docs: '' @@ -39195,6 +40005,9 @@ service: "docs": "", "type": "root.PingRequestResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39212,6 +40025,8 @@ service: path: /connections/{conn_id}/send-ping method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -39305,6 +40120,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_endpoint": { "auth": true, @@ -39339,6 +40157,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDEndpoint", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_dids": { "auth": true, @@ -39400,6 +40221,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_public_did": { "auth": true, @@ -39427,6 +40251,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "rotate_keypair": { "auth": true, @@ -39460,6 +40287,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.WalletModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_did_endpoint": { "auth": true, @@ -39529,6 +40359,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.WalletModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_public_did": { "auth": true, @@ -39580,6 +40413,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39668,6 +40504,8 @@ service: path: /wallet/did method: GET auth: true + source: + openapi: ../openapi.yml display-name: List wallet DIDs request: name: GetDidsRequest @@ -39710,6 +40548,8 @@ service: path: /wallet/did/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a local DID request: name: DIDCreate @@ -39747,6 +40587,8 @@ service: path: /wallet/did/local/rotate-keypair method: PATCH auth: true + source: + openapi: ../openapi.yml display-name: Rotate keypair for a DID not posted to the ledger request: name: RotateKeypairRequest @@ -39767,6 +40609,8 @@ service: path: /wallet/did/public method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current public DID response: docs: '' @@ -39784,6 +40628,8 @@ service: path: /wallet/did/public method: POST auth: true + source: + openapi: ../openapi.yml display-name: Assign the current public DID request: name: SetPublicDidRequest @@ -39818,6 +40664,8 @@ service: path: /wallet/get-did-endpoint method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query DID endpoint in wallet request: name: GetDidEndpointRequest @@ -39839,6 +40687,8 @@ service: path: /wallet/set-did-endpoint method: POST auth: true + source: + openapi: ../openapi.yml display-name: Update endpoint in wallet and on ledger if posted to it request: name: DIDEndpointWithType diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/assembly.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/assembly.json index eb8a3ab9997..3dd916178db 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/assembly.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/assembly.json @@ -4922,6 +4922,9 @@ types: "docs": "File uploaded successfully", "type": "root.UploadedFile", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4942,6 +4945,8 @@ service: docs: >- Upload your audio or video file directly to the AssemblyAI API if it isn't accessible via a URL already. + source: + openapi: ../openapi.yml display-name: Upload an audio or video file which can be transcribed. request: body: bytes @@ -5012,6 +5017,9 @@ service: "docs": "LeMUR action items response", "type": "root.LemurActionItemsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purgeRequestData": { "auth": true, @@ -5055,6 +5063,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR request data deleted.", "type": "root.PurgeLemurRequestDataResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "questionAnswer": { "auth": true, @@ -5118,6 +5129,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR question & answer response", "type": "root.LemurQuestionAnswerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "summary": { "auth": true, @@ -5172,6 +5186,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR summary response", "type": "root.LemurSummaryResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task": { "auth": true, @@ -5226,6 +5243,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR task response", "type": "root.LemurTaskResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -5248,6 +5268,8 @@ service: impactful sentences. You can give the model context to obtain more targeted results while outputting the results in a variety of formats described in human language. + source: + openapi: ../openapi.yml display-name: Generate a custom summary from one or more transcripts. request: name: LemurSummaryParameters @@ -5290,6 +5312,8 @@ service: answers you find useful, such as judging whether a caller is likely to become a customer or whether all items on a meeting's agenda were covered. + source: + openapi: ../openapi.yml display-name: Create answers to one or more questions about one or more transcripts. request: name: LemurQuestionAnswerParameters @@ -5329,6 +5353,8 @@ service: method: POST auth: true docs: Use LeMUR to generate a list of Action Items from a transcript + source: + openapi: ../openapi.yml display-name: Extract action items from one or more meeting transcripts. request: body: root.LemurActionItemsParameters @@ -5357,6 +5383,8 @@ service: method: POST auth: true docs: Use LeMUR to ask anything with Custom Task + source: + openapi: ../openapi.yml display-name: >- Ask LeMUR to use one or more transcripts with a Custom Task to handle your specialized task. @@ -5401,6 +5429,8 @@ service: The LLM response data, as well as any context provided in the original request will be removed. + source: + openapi: ../openapi.yml path-parameters: request_id: type: string @@ -5498,6 +5528,9 @@ docs: LeMUR related operations "docs": "Temporary authentication token generated.", "type": "root.RealtimeTemporaryTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -5516,6 +5549,8 @@ service: method: POST auth: true docs: Create a temporary authentication token for real-time transcription + source: + openapi: ../openapi.yml display-name: Create a temporary authentication token for real-time transcription request: name: CreateRealtimeTemporaryTokenParameters @@ -5780,6 +5815,9 @@ docs: Real-time transcription "docs": "Transcript created and queued for processing.", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -5988,6 +6026,9 @@ docs: Real-time transcription "docs": "The deleted transcript response.", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -6196,6 +6237,9 @@ docs: Real-time transcription "docs": "The transcript resource", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getParagraphs": { "auth": true, @@ -6253,6 +6297,9 @@ docs: Real-time transcription "docs": "Exported paragraphs", "type": "root.ParagraphsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRedactedAudio": { "auth": true, @@ -6293,6 +6340,9 @@ docs: Real-time transcription "docs": "The redacted audio object containing the status and URL to the redacted audio.", "type": "root.RedactedAudioResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSentences": { "auth": true, @@ -6350,6 +6400,9 @@ docs: Real-time transcription "docs": "Exported sentences", "type": "root.SentencesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSubtitles": { "auth": true, @@ -6390,6 +6443,9 @@ docs: Real-time transcription "docs": "The exported captions as text", "type": "text", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -6465,6 +6521,9 @@ docs: Real-time transcription "docs": "A list of transcripts filtered by `limit` and `status`", "type": "root.TranscriptList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "wordSearch": { "auth": true, @@ -6502,6 +6561,9 @@ docs: Real-time transcription "docs": "Word search response", "type": "root.WordSearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6562,6 +6624,8 @@ service: method: GET auth: true docs: Retrieve a list of transcripts you have created. + source: + openapi: ../openapi.yml display-name: List transcripts request: name: TranscriptListRequest @@ -6618,6 +6682,8 @@ service: docs: >- Create a transcript from an audio or video file that is accessible via a URL. + source: + openapi: ../openapi.yml display-name: Create a transcript from an audio file request: name: CreateTranscriptParameters @@ -6774,6 +6840,8 @@ service: docs: >- Get the transcript resource. The transcript is ready when the "status" is "completed". + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -6922,6 +6990,8 @@ service: method: DELETE auth: true docs: Delete the transcript + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -7072,6 +7142,8 @@ service: docs: >- Export your transcript in SRT or VTT format, to be plugged into a video player for subtitles and closed captions. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -7105,6 +7177,8 @@ service: Get the transcript split by sentences. The API will attempt to semantically segment the transcript into sentences to create more reader-friendly transcripts. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -7147,6 +7221,8 @@ service: Get the transcript split by paragraphs. The API will attempt to semantically segment your transcript into paragraphs to create more reader-friendly transcripts. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -7189,6 +7265,8 @@ service: Search through the transcript for a specific set of keywords. You can search for individual words, numbers, or phrases containing up to five words or numbers. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -7219,6 +7297,8 @@ service: docs: >- Retrieves the redacted audio object containing the status and URL to the redacted audio. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/availability.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/availability.json index f1f10309cf8..66577281dc5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/availability.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/availability.json @@ -94,6 +94,9 @@ "docs": "OK", "type": "WholeDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlineBetaBody": { "auth": false, @@ -127,6 +130,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlineObjectDeprecation": { "auth": false, @@ -160,6 +166,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlinePropertyDeprecation": { "auth": false, @@ -196,6 +205,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessRef": { "auth": false, @@ -232,6 +244,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -270,6 +285,8 @@ /collection/{id}/{active_id}/{deprecated_ref_id}/{x-fern-availability_path_param} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -333,6 +350,8 @@ path: /success-ref method: POST auth: false + source: + openapi: ../openapi.yml request: name: Settings body: @@ -354,6 +373,8 @@ path: /success-inline-property-deprecation method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlinePropertyDeprecationRequest body: @@ -375,6 +396,8 @@ path: /success-inline-object-deprecation method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlineObjectDeprecationRequest body: @@ -394,6 +417,8 @@ path: /success-inline-beta-body method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlineBetaBodyRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/axle.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/axle.json index 3de1f09c7dc..5ee10880330 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/axle.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/axle.json @@ -439,6 +439,9 @@ "docs": "", "type": "GetAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -608,6 +611,8 @@ service: high-level account information (e.g., name) and any children objects (e.g., Policies) associated with the Account. Please note that this method will NOT refresh the Account object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -705,6 +710,9 @@ service: "docs": "", "type": "GetCarrierResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "GetCarriers": { "auth": false, @@ -738,6 +746,9 @@ service: "docs": "", "type": "GetCarriersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -793,6 +804,8 @@ service: docs: >- The Get Carrier method returns a Carrier object that include additional details about an Axle-supported insurance carrier. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -829,6 +842,8 @@ service: method: GET auth: false docs: The Get Carriers method returns an array of Carrier objects. + source: + openapi: ../openapi.yml display-name: Get Carriers response: docs: '' @@ -912,6 +927,9 @@ service: "docs": "", "type": "StartIgnitionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -981,6 +999,8 @@ service: docs: >- Start an Ignition session. Returns the ignitionUri to direct the user to authenticate. + source: + openapi: ../openapi.yml display-name: Start Ignition request: name: StartIgnitionRequest @@ -1137,6 +1157,9 @@ service: "docs": "", "type": "GetPolicyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1179,6 +1202,8 @@ service: policy information (e.g., policy number) and any children objects (e.g., Coverages) associated with the Policy. Please note that this method will NOT refresh the Policy object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1316,6 +1341,9 @@ Auth codes are ephemeral and expire after 10 minutes, while accessTokens do not "docs": "", "type": "ExchangeTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1402,6 +1430,8 @@ service: Auth codes are ephemeral and expire after 10 minutes, while accessTokens do not expire. + source: + openapi: ../openapi.yml display-name: Exchange Token request: name: ExchangeTokenRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/belvo.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/belvo.json index 5591ea0bc46..cd69b91b423 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/belvo.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/belvo.json @@ -29001,6 +29001,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailAccount": { "auth": true, @@ -29964,6 +29967,9 @@ client.connect() "docs": "Ok", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListAccounts": { "auth": true, @@ -30320,6 +30326,9 @@ client.connect() "docs": "Ok", "type": "root.AccountsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchAccounts": { "auth": true, @@ -31342,6 +31351,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list>", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveAccounts": { "auth": true, @@ -32319,6 +32331,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list>", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -32339,6 +32354,8 @@ service: docs: >- Get a paginated list of all existing accounts in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all accounts request: name: ListAccountsRequest @@ -32716,6 +32733,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml display-name: Retrieve accounts for a link request: body: root.StandardRequest @@ -33517,6 +33536,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml display-name: Complete an accounts request request: body: root.PatchBody @@ -34362,6 +34383,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -35131,6 +35154,8 @@ service: docs: >- Delete a specific account and all associated transactions, as well as owners, from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -35544,6 +35569,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailBalance": { "auth": true, @@ -35757,6 +35785,9 @@ client.connect() "docs": "Ok", "type": "root.Balance", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListBalances": { "auth": true, @@ -36056,6 +36087,9 @@ client.connect() "docs": "Ok", "type": "root.BalancesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchBalances": { "auth": true, @@ -36257,6 +36291,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveBalances": { "auth": true, @@ -36518,6 +36555,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36538,6 +36578,8 @@ service: docs: >- Get a paginated list of all existing balances in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all balances request: name: ListBalancesRequest @@ -36822,6 +36864,8 @@ service: docs: >- Retrieve balances from one or more accounts for a specific link within a specified date range. + source: + openapi: ../openapi.yml display-name: Retrieve balances for a link request: name: BalancesRequest @@ -37045,6 +37089,8 @@ service: docs: >- Used to resume a Balance retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a balances request request: body: root.PatchBody @@ -37217,6 +37263,8 @@ service: method: GET auth: true docs: Get the details of a specific balance. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -37395,6 +37443,8 @@ service: method: DELETE auth: true docs: Delete a specific balance from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -37903,6 +37953,9 @@ docs: >- "docs": "OK (Created)", "type": "CreateBankAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailBankAccount": { "auth": true, @@ -38011,6 +38064,9 @@ docs: >- "docs": "OK", "type": "DetailBankAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListBankAccount": { "auth": true, @@ -38240,6 +38296,9 @@ docs: >- "docs": "OK", "type": "root.BankAccountPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38304,6 +38363,8 @@ service: method: GET auth: true docs: List all bank accounts associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all bank accounts request: name: ListBankAccountRequest @@ -38486,6 +38547,8 @@ service: method: POST auth: true docs: Create a new bank account from which to send or request funds. + source: + openapi: ../openapi.yml display-name: Create a new bank account request: body: CreateBankAccountRequest @@ -38689,6 +38752,8 @@ service: method: GET auth: true docs: Get the details about a specific bank account + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -38923,6 +38988,9 @@ types: "docs": "Ok", "type": "root.Categorization", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38953,6 +39021,8 @@ service: transactions per request. + source: + openapi: ../openapi.yml display-name: Categorize transactions request: name: CategorizationRequest @@ -39243,6 +39313,9 @@ docs: >- "docs": "OK (Created)", "type": "CreateCustomerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailCustomer": { "auth": true, @@ -39330,6 +39403,9 @@ docs: >- "docs": "OK", "type": "DetailCustomerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListCustomers": { "auth": true, @@ -39548,6 +39624,9 @@ docs: >- "docs": "OK", "type": "root.CustomerPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39616,6 +39695,8 @@ service: method: GET auth: true docs: List all customers associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all customers request: name: ListCustomersRequest @@ -39803,6 +39884,8 @@ service: method: POST auth: true docs: Create a new customer to send or request funds. + source: + openapi: ../openapi.yml display-name: Create a new customer request: body: CreateCustomerRequest @@ -39948,6 +40031,8 @@ service: method: GET auth: true docs: Get the details about a specific customer + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -40088,6 +40173,9 @@ At the moment, the employment records resource is available for: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailEmploymentRecord": { "auth": true, @@ -40191,6 +40279,9 @@ At the moment, the employment records resource is available for: "docs": "Ok", "type": "root.EmploymentRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListEmploymentRecords": { "auth": true, @@ -40276,6 +40367,9 @@ At the moment, the employment records resource is available for: "docs": "Ok", "type": "root.EmploymentRecordsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveEmploymentRecordDetails": { "auth": true, @@ -40397,6 +40491,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40417,6 +40514,8 @@ service: docs: >- Get a paginated list of all existing employment records in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all employment records request: name: ListEmploymentRecordsRequest @@ -40490,6 +40589,8 @@ service: auth: true docs: | Retrieve employment record details for an individual. + source: + openapi: ../openapi.yml display-name: Retrieve employment record details request: name: EmploymentRecordRequest @@ -40588,6 +40689,8 @@ service: method: GET auth: true docs: Get the details of a specific employment record. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -40671,6 +40774,8 @@ service: method: DELETE auth: true docs: Delete a specific employment record from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -40858,6 +40963,9 @@ docs: "# Employment Records\n\nOur employment records\_resource lets you get a c "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40888,6 +40996,8 @@ service: transactions per request. + source: + openapi: ../openapi.yml display-name: Verify incomes request: name: EyodIncomeVerificationRequest @@ -41197,6 +41307,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailIncome": { "auth": true, @@ -41342,6 +41455,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListIncomes": { "auth": true, @@ -41523,6 +41639,9 @@ client.connect() "docs": "Ok", "type": "root.IncomesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchIncomes": { "auth": true, @@ -41685,6 +41804,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveIncome": { "auth": true, @@ -41912,6 +42034,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.Income", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -41932,6 +42057,8 @@ service: docs: >- Get a paginated list of all incomes in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all incomes request: name: ListIncomesRequest @@ -42101,6 +42228,8 @@ service: specific link. You can receive insights for a period of up to 365 days, depending on the transaction history available for each [bank](https://developers.belvo.com/docs/institution). + source: + openapi: ../openapi.yml display-name: Retrieve incomes for a link request: name: IncomesRequest @@ -42305,6 +42434,8 @@ service: docs: >- Used to resume an Income retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an incomes request request: body: root.PatchBody @@ -42446,6 +42577,8 @@ service: method: GET auth: true docs: Get the details of a specific income. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -42568,6 +42701,8 @@ service: method: DELETE auth: true docs: Delete a specific income from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -42939,6 +43074,9 @@ client.connect() "docs": "Ok", "type": "root.Institution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListInstitutions": { "auth": true, @@ -43164,6 +43302,9 @@ client.connect() "docs": "Ok", "type": "root.InstitutionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -43184,6 +43325,8 @@ service: docs: >- Get a paginated list of all the institutions currently supported by Belvo. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all institutions request: name: ListInstitutionsRequest @@ -43389,6 +43532,8 @@ service: method: GET auth: true docs: Get the details of a specific institution. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -43697,6 +43842,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPortfolio": { "auth": true, @@ -43861,6 +44009,9 @@ client.connect() "docs": "Ok", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPortfolio": { "auth": true, @@ -44031,6 +44182,9 @@ client.connect() "docs": "Ok", "type": "root.InvestmentsPortfoliosPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchPortfolio": { "auth": true, @@ -44202,6 +44356,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrievePortfolio": { "auth": true, @@ -44366,6 +44523,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44387,6 +44547,8 @@ service: Get a paginated list of all the existing portfolios (and their instruments) in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all portfolios request: name: ListPortfolioRequest @@ -44540,6 +44702,8 @@ service: method: POST auth: true docs: Retrieve all portfolios for an existing link. + source: + openapi: ../openapi.yml display-name: Retrieve portfolios for a link request: body: root.StandardRequest @@ -44678,6 +44842,8 @@ service: docs: >- Used to resume a portfolio retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a portfolios request request: body: root.PatchBodyWithoutSaveData @@ -44821,6 +44987,8 @@ service: method: GET auth: true docs: Get the details of a specific portfolio. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44962,6 +45130,8 @@ service: docs: >- Delete a specific investment portfolio and all associated instruments, transactions, and owners from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -45311,6 +45481,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailInvoice": { "auth": true, @@ -46283,6 +46456,9 @@ client.connect() "docs": "Ok", "type": "DetailInvoiceResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListInvoices": { "auth": true, @@ -47527,6 +47703,9 @@ client.connect() "docs": "Ok", "type": "root.InvoicesResponsePaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchInvoices": { "auth": true, @@ -47758,6 +47937,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveInvoices": { "auth": true, @@ -48875,6 +49057,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -48945,6 +49130,8 @@ service: docs: >- Get a paginated list of all existing invoices in your Belvo account. By default, we return 100 results per page. + source: + openapi: ../openapi.yml display-name: List all invoices request: name: ListInvoicesRequest @@ -50055,6 +50242,8 @@ service: margin-right: 25px"> Info: You can ask for up to **one** year (365 days) of invoices per request. If you need invoices for more than one year, just make another request. + source: + openapi: ../openapi.yml display-name: Retrieve invoices for a link request: name: InvoicesRequest @@ -51005,6 +51194,8 @@ service: docs: >- Used to resume an Invoice retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an invoices request request: body: root.PatchBody @@ -51208,6 +51399,8 @@ service: method: GET auth: true docs: Get the details of a specific invoice. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -52027,6 +52220,8 @@ service: method: DELETE auth: true docs: Delete a specific invoice from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -52360,6 +52555,9 @@ For single links, you have to perform POST calls to an institution **every time* "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DestroyLink": { "auth": true, @@ -52467,6 +52665,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailLink": { "auth": true, @@ -52600,6 +52801,9 @@ client.connect() "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListLinks": { "auth": true, @@ -52840,6 +53044,9 @@ client.connect() "docs": "Ok", "type": "root.PaginatedResponseLink", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchLinks": { "auth": true, @@ -52989,6 +53196,9 @@ client.connect() "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RegisterLink": { "auth": true, @@ -53283,6 +53493,9 @@ For a list of standards codes, see the table below. "docs": "Created", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateLink": { "auth": true, @@ -53511,6 +53724,9 @@ Belvo supports a base64 encoded `private_key`. If the `private_key` parameter is "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -53531,6 +53747,8 @@ service: docs: >- Get a paginated list of all the existing links in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all links request: name: ListLinksRequest @@ -53776,6 +53994,8 @@ service: status updates. + source: + openapi: ../openapi.yml display-name: Register a new link request: name: LinksRequest @@ -54117,6 +54337,8 @@ service: docs: >- Used to resume a Link register session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a links request request: body: root.PatchBodyWithoutSaveData @@ -54248,6 +54470,8 @@ service: method: GET auth: true docs: Get the details of a specific link. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54372,6 +54596,8 @@ service: href="https://developers.belvo.com/docs/connect-widget" target="_blank">Connect Widget to handle updating invalid or token_required links. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54597,6 +54823,8 @@ service: > An important technical note for performing operations in batches is to take into consideration our rate-limiting: up to 80 requests every 30 seconds. If you exceed this limit, you run the risk of Belvo blocking your IP from making further requests. > > For more information, or if your IP address has been blocked, please contact our [support team](https://support.belvo.com/hc/en-us/requests/new). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54680,6 +54908,8 @@ service: ℹ️ **Note**: When you change a link from `single`` to `recurrent`, they will only be updated the next day at the scheduled interval. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54962,6 +55192,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailOwner": { "auth": true, @@ -55103,6 +55336,9 @@ Cancun, COL 10447", "docs": "Ok", "type": "root.Owner", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListOwners": { "auth": true, @@ -55311,6 +55547,9 @@ Cancun, COL 10447", "docs": "Ok", "type": "root.OwnersPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchOwners": { "auth": true, @@ -55471,6 +55710,9 @@ Cancun, COL 10447", "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveOwners": { "auth": true, @@ -55622,6 +55864,9 @@ Cancun, COL 10447", "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -55642,6 +55887,8 @@ service: docs: >- Get a paginated list of all existing owners in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all owners request: name: ListOwnersRequest @@ -55837,6 +56084,8 @@ service: method: POST auth: true docs: Retrieve owner information from a specific link. + source: + openapi: ../openapi.yml display-name: Retrieve owners for a link request: body: root.StandardRequest @@ -55970,6 +56219,8 @@ service: docs: >- Used to resume an Owner retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an owners request request: body: root.PatchBody @@ -56110,6 +56361,8 @@ service: method: GET auth: true docs: Get the details of a specific owner. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -56231,6 +56484,8 @@ service: method: DELETE auth: true docs: Delete a specific owner from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -56469,6 +56724,9 @@ docs: >- "docs": "OK", "type": "root.PaymentInstitution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentInstitutions": { "auth": true, @@ -56574,6 +56832,9 @@ docs: >- "docs": "OK", "type": "root.PaymentsInstitutionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -56592,6 +56853,8 @@ service: method: GET auth: true docs: List all available payment institutions. + source: + openapi: ../openapi.yml display-name: List all payment institutions request: name: ListPaymentInstitutionsRequest @@ -56677,6 +56940,8 @@ service: method: GET auth: true docs: Get the details about a specific payment institution + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -56936,6 +57201,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK (Created)", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPaymentIntent": { "auth": true, @@ -57069,6 +57337,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentIntents": { "auth": true, @@ -57277,6 +57548,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK", "type": "root.PaymentIntentPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchPaymentIntent": { "auth": true, @@ -57434,6 +57708,9 @@ During the payment intent flow, you need to fill in the payment intent with requ "docs": "OK (Created)", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57477,6 +57754,8 @@ service: method: GET auth: true docs: List all payment intents associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment intents request: name: ListPaymentIntentsRequest @@ -57647,6 +57926,8 @@ service: method: POST auth: true docs: Create a payment intent. + source: + openapi: ../openapi.yml display-name: Create a new payment intent request: name: CreatePaymentIntentPse @@ -57806,6 +58087,8 @@ service: method: GET auth: true docs: Get the details about a specific payment intent. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -57923,6 +58206,8 @@ service: intent, check our PSE payment initiation guides for 🇨🇴 Colombia. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -58219,6 +58504,9 @@ types: "docs": "OK (Created)", "type": "CreatePaymentlinkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailCreatePaymentlink": { "auth": true, @@ -58341,6 +58629,9 @@ types: "docs": "OK (Created)", "type": "DetailCreatePaymentlinkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentLinks": { "auth": true, @@ -58456,6 +58747,9 @@ types: "docs": "OK", "type": "root.PaymentLinkPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -58586,6 +58880,8 @@ service: docs: >- List all payment links associated with your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all payment links request: name: ListPaymentLinksRequest @@ -58691,6 +58987,8 @@ service: method: POST auth: true docs: Create a new payment link to start a hosted-widget payment. + source: + openapi: ../openapi.yml display-name: Create a payment link request: body: CreatePaymentlinkRequest @@ -58792,6 +59090,8 @@ service: method: GET auth: true docs: Get the details about a payment link. + source: + openapi: ../openapi.yml path-parameters: access_token: type: string @@ -58954,6 +59254,9 @@ You can use the Payment Transactions resource in order to get useful information "docs": "OK", "type": "root.PaymentTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentTransactions": { "auth": true, @@ -59119,6 +59422,9 @@ You can use the Payment Transactions resource in order to get useful information "docs": "OK", "type": "root.PaymentsTransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -59137,6 +59443,8 @@ service: method: GET auth: true docs: List all payment transactions associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment transactions request: name: ListPaymentTransactionsRequest @@ -59279,6 +59587,8 @@ service: method: GET auth: true docs: Get the details about a specific payment transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -59358,6 +59668,9 @@ docs: > "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPaymentWebhooks": { "auth": true, @@ -59400,6 +59713,9 @@ docs: > "docs": "OK", "type": "root.PaymentWebhook", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentWebhooks": { "auth": true, @@ -59439,6 +59755,9 @@ docs: > "docs": "OK", "type": "root.PaymentsWebhooksPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RegisterPaymentWebhook": { "auth": true, @@ -59511,6 +59830,9 @@ docs: > "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -59529,6 +59851,8 @@ service: method: GET auth: true docs: List all payment webhooks associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment webhooks response: docs: OK @@ -59556,6 +59880,8 @@ service: auth: true docs: | Register a new payments webhook for your Belvo account. + source: + openapi: ../openapi.yml display-name: Register a new payment webhook request: name: PaymentWebhookRequest @@ -59609,6 +59935,8 @@ service: method: GET auth: true docs: Get the details about a specific payment webhook. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -59638,6 +59966,8 @@ service: method: DELETE auth: true docs: Delete a specific payment webhook from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -59702,6 +60032,9 @@ docs: >+ "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailReceivableTransaction": { "auth": true, @@ -59780,6 +60113,9 @@ docs: >+ "docs": "Ok", "type": "root.ReceivablesTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListReceivableTransactions": { "auth": true, @@ -59947,6 +60283,9 @@ docs: >+ "docs": "Ok", "type": "root.ReceivablesTransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveReceivableTransactions": { "auth": true, @@ -60073,6 +60412,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.ReceivablesTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60093,6 +60435,8 @@ service: docs: >- Get a paginated list of all the existing receivable transactions in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all receivable transactions request: name: ListReceivableTransactionsRequest @@ -60265,6 +60609,8 @@ service: method: POST auth: true docs: Retrieve all receivable transactions for an existing link. + source: + openapi: ../openapi.yml display-name: Retrieve receivable transactions for a link request: name: ReceivableTransactionRequest @@ -60370,6 +60716,8 @@ service: method: GET auth: true docs: Get the details of a specific receivable transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -60433,6 +60781,8 @@ service: method: DELETE auth: true docs: Delete a specific receivable transaction from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -60604,6 +60954,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailRecurringExpense": { "auth": true, @@ -60787,6 +61140,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListRecurringExpenses": { "auth": true, @@ -60989,6 +61345,9 @@ client.connect() "docs": "Ok", "type": "root.RecurringExpensesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchRecurringExpenses": { "auth": true, @@ -61180,6 +61539,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveRecurringExpenses": { "auth": true, @@ -61416,6 +61778,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -61436,6 +61801,8 @@ service: docs: >- Get a paginated list of all recurring expenses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all recurring expenses request: name: ListRecurringExpensesRequest @@ -61625,6 +61992,8 @@ service: accounts from a specific link. You can receive insights for a period of up to 365 days, depending on the transaction history available for each [bank](https://developers.belvo.com/docs/institution). + source: + openapi: ../openapi.yml display-name: Retrieve recurring expenses for a link request: name: RecurringExpensesRequest @@ -61830,6 +62199,8 @@ service: docs: >- Used to resume an Recurring Expenses retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a recurring expenses request request: body: root.PatchBody @@ -61994,6 +62365,8 @@ service: method: GET auth: true docs: Get the details of a specific recurring expense. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -62150,6 +62523,8 @@ service: method: DELETE auth: true docs: Delete a specific recurring expense from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -62449,6 +62824,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailRiskInsights": { "auth": true, @@ -62651,6 +63029,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListRiskInsights": { "auth": true, @@ -62886,6 +63267,9 @@ client.connect() "docs": "Ok", "type": "root.RiskInsightsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchRiskInsights": { "auth": true, @@ -63105,6 +63489,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveRiskInsights": { "auth": true, @@ -63317,6 +63704,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -63337,6 +63727,8 @@ service: docs: >- Get a paginated list of all risk insight analyses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all risk insights request: name: ListRiskInsightsRequest @@ -63557,6 +63949,8 @@ service: If you need to know the currency of the account, just do a GET Details to the accounts endpoint (using the ID you receive from the accounts response). + source: + openapi: ../openapi.yml display-name: Retrieve risk insights for a link request: body: root.StandardRequest @@ -63744,6 +64138,8 @@ service: docs: >- Used to resume an Risk insights retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a risk insights request request: body: root.PatchBody @@ -63938,6 +64334,8 @@ service: method: GET auth: true docs: Get the details of a specific risk insight. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -64113,6 +64511,8 @@ service: method: DELETE auth: true docs: Delete a specific risk insight from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -64349,6 +64749,9 @@ For example: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListSecretKeys": { "auth": true, @@ -64386,6 +64789,9 @@ For example: "docs": "OK", "type": "root.SecretKeysPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -64409,6 +64815,8 @@ service: **Note**: We only return the ID of the secret keys. + source: + openapi: ../openapi.yml display-name: List all secret keys response: docs: OK @@ -64444,6 +64852,8 @@ service: POST https://api.belvo.com/payments/secret-keys/ Authorization: Basic username:password ``` + source: + openapi: ../openapi.yml display-name: Request API keys response: docs: Ok @@ -64670,6 +65080,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxComplianceStatus": { "auth": true, @@ -64800,6 +65213,9 @@ client.connect() "docs": "Ok", "type": "root.TaxComplianceStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxComplianceStatus": { "auth": true, @@ -64988,6 +65404,9 @@ client.connect() "docs": "Ok", "type": "root.TaxComplianceStatusPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxComplianceStatus": { "auth": true, @@ -65151,6 +65570,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.TaxComplianceStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -65171,6 +65593,8 @@ service: docs: >- Get a paginated list of all existing Tax compliance statuses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax compliance statuses request: name: ListTaxComplianceStatusRequest @@ -65353,6 +65777,8 @@ service: docs: >- Retrieve the Tax compliance status information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax compliance statuses for a link request: name: TaxComplianceStatusRequest @@ -65495,6 +65921,8 @@ service: method: GET auth: true docs: Get the details of a specific Tax compliance status. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -65607,6 +66035,8 @@ service: method: DELETE auth: true docs: Delete a specific Tax compliance status from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -65900,6 +66330,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxDeclaration": { "auth": true, @@ -66096,6 +66529,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxDeclarationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxDeclarations": { "auth": true, @@ -66382,6 +66818,9 @@ client.connect() "docs": "Ok", "type": "ListTaxDeclarationsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxDeclarations": { "auth": true, @@ -66625,6 +67064,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -66717,6 +67159,8 @@ service: docs: >- Get a paginated list of all existing tax declarations in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax declarations request: name: ListTaxDeclarationsRequest @@ -66978,6 +67422,8 @@ service: method: POST auth: true docs: Retrieve tax declaration information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax declarations for a link request: name: TaxDeclarationsRequest @@ -67199,6 +67645,8 @@ service: method: GET auth: true docs: Get the details of a specific Tax declaration. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -67367,6 +67815,8 @@ service: method: DELETE auth: true docs: Delete a specific Tax declaration from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -67552,6 +68002,9 @@ client.tax_retentions.list(params: { "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxRetentions": { "auth": true, @@ -67630,6 +68083,9 @@ client.tax_retentions.list(params: { "docs": "Ok", "type": "root.TaxRetentions", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxRetentions": { "auth": true, @@ -67755,6 +68211,9 @@ client.tax_retentions.list(params: { "docs": "Ok", "type": "root.TaxRetentionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxRetentions": { "auth": true, @@ -67888,6 +68347,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -67908,6 +68370,8 @@ service: docs: >- Get a paginated list of all existing tax retentions in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax retentions request: name: ListTaxRetentionsRequest @@ -68032,6 +68496,8 @@ service: docs: >- Retrieve tax retention information from a specific link. The maximum number of tax retentions that can be returned for a period is 500. + source: + openapi: ../openapi.yml display-name: Retrieve tax retentions for a link request: name: TaxRetentionsRequest @@ -68145,6 +68611,8 @@ service: method: GET auth: true docs: Get the details of a specific tax retention. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -68211,6 +68679,8 @@ service: method: DELETE auth: true docs: Delete a specific tax retention from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -68500,6 +68970,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxReturn": { "auth": true, @@ -69916,6 +70389,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxReturnResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxReturns": { "auth": true, @@ -71179,6 +71655,9 @@ client.connect() "docs": "Ok", "type": "ListTaxReturnsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxReturns": { "auth": true, @@ -72948,6 +73427,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -73088,6 +73570,8 @@ service: Get a paginated list of all existing tax returns in your Belvo account. By default, we return up to 100 results per page. The results will include a mix of both monthly and yearly tax returns. + source: + openapi: ../openapi.yml display-name: List all tax returns request: name: ListTaxReturnsRequest @@ -74150,6 +74634,8 @@ service: method: POST auth: true docs: Retrieve tax return information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax returns for a link request: body: RetrieveTaxReturnsRequestBody @@ -75611,6 +76097,8 @@ service: method: GET auth: true docs: Get the details of a specific tax return. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -76702,6 +77190,8 @@ service: method: DELETE auth: true docs: Delete a specific tax return from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -77039,6 +77529,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxStatus": { "auth": true, @@ -77392,6 +77885,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxStatus": { "auth": true, @@ -77802,6 +78298,9 @@ client.connect() "docs": "Ok", "type": "root.TaxStatusPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxStatus": { "auth": true, @@ -78198,6 +78697,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "RetrieveTaxStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -78252,6 +78754,8 @@ service: docs: >- Get a paginated list of all existing tax status in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax statuses request: name: ListTaxStatusRequest @@ -78613,6 +79117,8 @@ service: method: POST auth: true docs: Retrieve tax status information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax statuses for a link request: name: TaxStatusRequest @@ -78951,6 +79457,8 @@ service: method: GET auth: true docs: Get the details of a specific tax status. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -79247,6 +79755,8 @@ service: method: DELETE auth: true docs: Delete a specific tax status from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -79595,6 +80105,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTransaction": { "auth": true, @@ -80226,6 +80739,9 @@ client.connect() "docs": "Ok", "type": "root.Transaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTransactions": { "auth": true, @@ -81106,6 +81622,9 @@ client.connect() "docs": "Ok", "type": "root.TransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchTransactions": { "auth": true, @@ -81703,6 +82222,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTransactions": { "auth": true, @@ -82318,6 +82840,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTransactions_async": { "auth": true, @@ -82476,6 +83001,9 @@ client.connect() "docs": "Accepted (when `X-Belvo-Request-Mode` is `async`)", "type": "root.AsynchronousAccepted202", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -82496,6 +83024,8 @@ service: docs: >- Get a paginated list of all existing transactions in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all transactions request: name: ListTransactionsRequest @@ -83358,6 +83888,8 @@ service: you request transactions for the last year and we can only access the last six months, we will return the information corresponding to these six months of data. + source: + openapi: ../openapi.yml display-name: Retrieve transactions for a link request: body: root.TransactionsRequest @@ -83892,6 +84424,8 @@ service: you request transactions for the last year and we can only access the last six months, we will return the information corresponding to these six months of data. + source: + openapi: ../openapi.yml display-name: Retrieve transactions for a link request: body: root.TransactionsRequest @@ -84028,6 +84562,8 @@ service: docs: >- Used to resume a Transaction retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a transactions request request: body: root.PatchBody @@ -84534,6 +85070,8 @@ service: method: GET auth: true docs: Get the details of a specific transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -85060,6 +85598,8 @@ service: method: DELETE auth: true docs: Delete a specific transaction from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/buzzshot.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/buzzshot.json index 4400e7a5ee9..52ae34cb367 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/buzzshot.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/buzzshot.json @@ -632,6 +632,9 @@ "docs": "", "type": "ListAccountsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listGames": { "auth": false, @@ -706,6 +709,9 @@ "docs": "", "type": "ListGamesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listGroups": { "auth": false, @@ -789,6 +795,9 @@ "docs": "", "type": "ListGroupsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLocations": { "auth": false, @@ -827,6 +836,9 @@ "docs": "", "type": "ListLocationsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPhotos": { "auth": false, @@ -870,6 +882,9 @@ "docs": "", "type": "ListPhotosResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPlayers": { "auth": false, @@ -919,6 +934,9 @@ "docs": "", "type": "ListPlayersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveAccount": { "auth": false, @@ -950,6 +968,9 @@ "docs": "", "type": "root.Room", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveGame": { "auth": false, @@ -1033,6 +1054,9 @@ "docs": "", "type": "root.Game", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveGroup": { "auth": false, @@ -1130,6 +1154,9 @@ "docs": "", "type": "root.Group", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveLocation": { "auth": false, @@ -1161,6 +1188,9 @@ "docs": "", "type": "root.Room", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrievePhoto": { "auth": false, @@ -1202,6 +1232,9 @@ "docs": "", "type": "root.Photo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrievePlayer": { "auth": false, @@ -1248,6 +1281,9 @@ "docs": "", "type": "root.Player", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1519,6 +1555,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listAccountsRequest query-parameters: @@ -1543,6 +1581,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1563,6 +1603,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listGamesRequest query-parameters: @@ -1612,6 +1654,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1670,6 +1714,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listGroupsRequest query-parameters: @@ -1721,6 +1767,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1787,6 +1835,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listPlayersRequest query-parameters: @@ -1819,6 +1869,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1850,6 +1902,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listLocationsRequest query-parameters: @@ -1874,6 +1928,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1894,6 +1950,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listPhotosRequest query-parameters: @@ -1920,6 +1978,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: photo_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/deel.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/deel.json index cb9646cba62..a8cba248b63 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/deel.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/deel.json @@ -20265,6 +20265,9 @@ errors: "docs": "Successful operation.", "type": "root.PaymentBreakDownContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBillingInvoiceDownloadLink": { "audiences": [ @@ -20311,6 +20314,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceDownloadContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceDownloadLink": { "audiences": [ @@ -20357,6 +20363,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceDownloadContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceList": { "audiences": [ @@ -20429,6 +20438,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPaymentList": { "audiences": [ @@ -20509,6 +20521,9 @@ errors: "docs": "Successful operation.", "type": "root.PaymentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20527,6 +20542,8 @@ service: method: GET auth: true docs: Retrieve a list of paid invoices for your workforce. + source: + openapi: ../openapi.yml display-name: Retrieve invoices request: name: GetInvoiceListRequest @@ -20578,6 +20595,8 @@ service: method: GET auth: true docs: Get link to download the invoice PDF. + source: + openapi: ../openapi.yml path-parameters: invoice_id: type: long @@ -20610,6 +20629,8 @@ service: method: GET auth: true docs: Get a link to download the Deel billing invoice PDF. + source: + openapi: ../openapi.yml path-parameters: invoice_id: type: long @@ -20642,6 +20663,8 @@ service: method: GET auth: true docs: Retrieve a list of payments made to Deel. + source: + openapi: ../openapi.yml display-name: Retrieve payment reciepts request: name: GetPaymentListRequest @@ -20703,6 +20726,8 @@ service: docs: >- Get a full breakdown of a payment made to Deel. Breakdown will include individual invoices and Deel fee as line items. + source: + openapi: ../openapi.yml path-parameters: payment_id: string display-name: Retrieve a payment breakdown @@ -20816,6 +20841,9 @@ docs: End-points to retrieve paid invoices and reciepts. "docs": "Successful operation.", "type": "root.OutputToCreateFileRefContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20853,6 +20881,8 @@ service: docs: >- Upload file to Deel storage to use the file attachment feature for other endpoints. + source: + openapi: ../openapi.yml display-name: Upload file to Deel request: name: InputToCreateFileRef @@ -20940,6 +20970,9 @@ service: "docs": "Successful operation.", "type": "root.PeopleMeContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPeopleList": { "audiences": [ @@ -21042,6 +21075,9 @@ service: "docs": "Successful operation.", "type": "root.PeopleContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21059,6 +21095,8 @@ service: path: /people method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get people list request: name: GetPeopleListRequest @@ -21134,6 +21172,8 @@ service: path: /people/me method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get my current profile response: docs: Successful operation. @@ -21253,6 +21293,9 @@ service: "docs": "Successful operation.", "type": "root.PremiumResultAddedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "amendContractDetails": { "audiences": [ @@ -21311,6 +21354,9 @@ service: "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContract": { "audiences": [ @@ -21478,6 +21524,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractFixedRate": { "auth": true, @@ -21642,6 +21691,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerOngoingTimeBased", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractMilestoneBased": { "auth": true, @@ -21804,6 +21856,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPaygMilestones", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractTaskBased": { "auth": true, @@ -21966,6 +22021,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPaygTasks", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractTimeBased": { "auth": true, @@ -22130,6 +22188,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPayAsYouGoTimeBased", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractPreview": { "audiences": [ @@ -22172,6 +22233,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "removePremiumFromContract": { "audiences": [ @@ -22225,6 +22289,9 @@ service: "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "terminateContract": { "audiences": [ @@ -22284,6 +22351,9 @@ service: "docs": "Successful operation.", "type": "root.ContractTerminationResultContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -22301,6 +22371,8 @@ service: path: /contracts/time-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (time-based) request: name: ContractToCreateContainerPayAsYouGoTimeBased @@ -22426,6 +22498,8 @@ service: path: /contracts/task-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (task-based) request: name: ContractToCreateContainerPaygTasks @@ -22549,6 +22623,8 @@ service: path: /contracts/milestone-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (milestone-based) request: name: ContractToCreateContainerPaygMilestones @@ -22672,6 +22748,8 @@ service: path: /contracts/fixed-rate method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (fixed-rate) request: name: ContractToCreateContainerOngoingTimeBased @@ -22798,6 +22876,8 @@ service: method: POST auth: true docs: Create a new Deel contract. + source: + openapi: ../openapi.yml display-name: Create a new contract request: name: ContractToCreateContainer @@ -22929,6 +23009,8 @@ service: Retrieve an IC contract agreement content in HTML. If no template is specified, the default or currently assigned template will be used. This endpoint does not support EOR and Global Payroll contract types. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -22958,6 +23040,8 @@ service: method: POST auth: true docs: Amend payment details of a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -22996,6 +23080,8 @@ service: method: POST auth: true docs: Terminate an active contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -23037,6 +23123,8 @@ service: docs: >- Add additional protection against misclassification by upgrading to Deel Premium. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -23084,6 +23172,8 @@ service: method: DELETE auth: true docs: Remove Deel Premium from an existing contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -23190,6 +23280,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractDocumentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "archiveContract": { "audiences": [ @@ -23232,6 +23325,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachExternalId": { "audiences": [ @@ -23292,6 +23388,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "calculateFinalPayment": { "auth": true, @@ -23361,6 +23460,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.FinalPaymentCalculatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editContractDocument": { "audiences": [ @@ -23419,6 +23521,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractDocumentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAlternateEmailsByContractId": { "audiences": [ @@ -23462,6 +23567,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.AlternateEmailList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractById": { "audiences": [ @@ -23599,6 +23707,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractList": { "audiences": [ @@ -23714,6 +23825,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractTemplates": { "auth": true, @@ -23748,6 +23862,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractTemplateListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "inviteToSignContract": { "audiences": [ @@ -23809,6 +23926,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postContractEstimate": { "audiences": [ @@ -23875,6 +23995,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ResponseEstimateFirstPaymentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "signContract": { "audiences": [ @@ -23935,6 +24058,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "uninviteToSignContract": { "audiences": [ @@ -23979,6 +24105,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24010,6 +24139,8 @@ service: method: GET auth: true docs: Retrieve a list of contracts. + source: + openapi: ../openapi.yml display-name: List of contracts request: name: GetContractListRequest @@ -24104,6 +24235,8 @@ service: method: GET auth: true docs: Retrieve a single contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24214,6 +24347,8 @@ service: Add an external Id to a Deel contract. You can use this to add a Deel contract's refernece Id in your platform. External Id can be passed as a query parameter in List contract endpoint to find this conract later. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24255,6 +24390,8 @@ service: docs: >- Attach document to a contract. You can only add one document at a time. If you need to attach more documents please attach a Zip file. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24294,6 +24431,8 @@ service: method: PUT auth: true docs: Overwrite the file currently attached to contract document. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24333,6 +24472,8 @@ service: method: GET auth: true docs: Returns an array of alternate email objects + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24361,6 +24502,8 @@ service: method: POST auth: true docs: Sign a contract as a client. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24400,6 +24543,8 @@ service: method: PATCH auth: true docs: Archive a terminated, cancelled or completed contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24428,6 +24573,8 @@ service: method: POST auth: true docs: Invite a worker to sign the contract. Worker will be notified via email. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24468,6 +24615,8 @@ service: method: DELETE auth: true docs: Remove invite in order to re-invite a worker to sign the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24500,6 +24649,8 @@ service: docs: >- Calculate the final payment due to the contractor when ending the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -24551,6 +24702,8 @@ service: docs: >- First payment is calculated from the number of working/calendar days between their start date and the start of the payment cycle. + source: + openapi: ../openapi.yml display-name: Calculate first payment amount request: name: EstimateFirstPaymentContainer @@ -24595,6 +24748,8 @@ service: method: GET auth: true docs: Retrieve a list of contract templates in your organization. + source: + openapi: ../openapi.yml display-name: Get contract templates response: docs: Successful operation. @@ -24725,6 +24880,9 @@ types: "docs": "Successful operation.", "type": "root.EorContractCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorCountryValidations": { "audiences": [ @@ -24817,6 +24975,9 @@ types: "docs": "Successful operation.", "type": "root.EorCountryValidationsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24837,6 +24998,8 @@ service: docs: >- Retrieve the hiring guide data for a country. This data can be used to create Employee of Record (EOR) contract quotes. + source: + openapi: ../openapi.yml path-parameters: country_code: type: root.CountryCode @@ -24906,6 +25069,8 @@ service: Create an Employee of Record (EOR) contract quote. The endpoints creates a contract quote request. Deel will process the information and get back with a quote for this contract. + source: + openapi: ../openapi.yml display-name: Create an EOR contract request: name: EorContractToCreateContainer @@ -25083,6 +25248,9 @@ docs: Employee of Record (EOR). "docs": "Hris direct employee object that was created or edited", "type": "root.HrisDirectEmployeeContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -25100,6 +25268,8 @@ service: path: /hris/direct-employees method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new Hris direct employee request: body: root.HrisDirectEmployee @@ -25243,6 +25413,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createInvoiceAdjustmentReview": { "audiences": [ @@ -25303,6 +25476,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createInvoiceAdjustmentReviews": { "audiences": [ @@ -25357,6 +25533,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteInvoiceAdjustmentById": { "audiences": [ @@ -25410,6 +25589,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceAdjustments": { "audiences": [ @@ -25540,6 +25722,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceAdjustmentsByContractId": { "audiences": [ @@ -25675,6 +25860,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateInvoiceAdjustmentById": { "audiences": [ @@ -25735,6 +25923,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -25753,6 +25944,8 @@ service: method: GET auth: true docs: Retrieve a list of invoice details for the given contract id. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -25868,6 +26061,8 @@ service: docs: >- Retrieve a list of invoice details. You can filter the list by providing additional paramters e.g. contract_id, contract_type etc. + source: + openapi: ../openapi.yml display-name: List of invoice details request: name: GetInvoiceAdjustmentsRequest @@ -25980,6 +26175,8 @@ service: docs: >- Create an invoice adjustment using this endpoint. For example, you can add a bonus, commission, VAT %, deduction etc. to an invoice. + source: + openapi: ../openapi.yml display-name: Create an invoice adjustment request: name: InvoiceAdjustmentToCreateContainer @@ -26020,6 +26217,8 @@ service: method: DELETE auth: true docs: Update an existing invoice adjustment. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -26059,6 +26258,8 @@ service: Update an existing invoice adjustment. It is not possible to update VAT adjustments, we recommend you to delete the existing VAT adjust and create a new one. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -26098,6 +26299,8 @@ service: method: POST auth: true docs: Review an invoice adjustment to approve or decline it. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -26137,6 +26340,8 @@ service: method: POST auth: true docs: Review multiple invoice adjustments to approve or decline a batch. + source: + openapi: ../openapi.yml display-name: Bulk review invoice adjustments request: name: InvoiceAdjustmentReviewsToCreateContainer @@ -26233,6 +26438,9 @@ docs: >- "docs": "Successful operation.", "type": "root.CountryListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getCurrencies": { "audiences": [ @@ -26271,6 +26479,9 @@ docs: >- "docs": "Successful operation.", "type": "root.CurrencyListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getJobTitleList": { "audiences": [ @@ -26325,6 +26536,9 @@ docs: >- "docs": "Successful operation.", "type": "root.JobTitleListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSeniorityList": { "audiences": [ @@ -26373,6 +26587,9 @@ docs: >- "docs": "Successful operation.", "type": "root.SeniorityListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimeoffTypeList": { "audiences": [ @@ -26410,6 +26627,9 @@ docs: >- "docs": "Successful operation.", "type": "root.TimeoffTypeListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26428,6 +26648,8 @@ service: method: GET auth: true docs: Retrieve a list of countries supported by Deel. + source: + openapi: ../openapi.yml display-name: Country list response: docs: Successful operation. @@ -26459,6 +26681,8 @@ service: method: GET auth: true docs: Retrieve the list of currencies used by Deel. + source: + openapi: ../openapi.yml display-name: Currency list response: docs: Successful operation. @@ -26484,6 +26708,8 @@ service: method: GET auth: true docs: Retrieve a list of pre-defined job titles in Deel platform. + source: + openapi: ../openapi.yml display-name: Job titles list request: name: GetJobTitleListRequest @@ -26524,6 +26750,8 @@ service: docs: >- Retrieve a list of pre-defined seniority level for roles in Deel platform. + source: + openapi: ../openapi.yml display-name: Seniority levels request: name: GetSeniorityListRequest @@ -26560,6 +26788,8 @@ service: docs: >- Retrieve a list of pre-defined time off types to register in Deel platform. + source: + openapi: ../openapi.yml display-name: Time-off types response: docs: Successful operation. @@ -26660,6 +26890,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createMilestoneReview": { "audiences": [ @@ -26725,6 +26958,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createMilestoneReviews": { "audiences": [ @@ -26788,6 +27024,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteMilestoneById": { "audiences": [ @@ -26837,6 +27076,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMilestonesByContract": { "audiences": [ @@ -26897,6 +27139,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.MilestoneListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMilestonesByContractAndId": { "audiences": [ @@ -26960,6 +27205,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.MilestoneContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26978,6 +27226,8 @@ service: method: GET auth: true docs: Retrieve a list of milestones found for a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27020,6 +27270,8 @@ service: method: POST auth: true docs: Add a new milestone to contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27061,6 +27313,8 @@ service: method: GET auth: true docs: Retrieve a single milestone. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27107,6 +27361,8 @@ service: method: DELETE auth: true docs: Delete a single milestone from a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27141,6 +27397,8 @@ service: method: POST auth: true docs: Review a milestone to approve or decline submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27184,6 +27442,8 @@ service: method: POST auth: true docs: Review a batch of milestones to approve or reject submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27298,6 +27558,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOffCyclePaymentByContractAndId": { "audiences": [ @@ -27364,6 +27627,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.OffCyclePaymentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOffCyclePaymentsByContract": { "audiences": [ @@ -27427,6 +27693,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.OffCyclePaymentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -27445,6 +27714,8 @@ service: method: GET auth: true docs: Retrieve a list of off-cycle payments for the given contract id. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27492,6 +27763,8 @@ service: docs: >- Add a new invoice line-item for the purpose of off-cycle payment for a given contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27532,6 +27805,8 @@ service: method: GET auth: true docs: Retrieve a single off-cycle payment. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -27663,6 +27938,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.AgreementListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getLegalEntityList": { "audiences": [ @@ -27703,6 +27981,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.LegalEntityListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOrganizations": { "audiences": [ @@ -27741,6 +28022,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.OrganizationListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTeams": { "audiences": [ @@ -27779,6 +28063,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.TeamListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -27797,6 +28084,8 @@ service: method: GET auth: true docs: Retrieve a list of legal entities in your account. + source: + openapi: ../openapi.yml display-name: List of legal entities response: docs: Successful operation. @@ -27826,6 +28115,8 @@ service: docs: >- Retrieve the current organization details. Organization is automatically detected from the auth token. + source: + openapi: ../openapi.yml display-name: Get current organization response: docs: Successful operation. @@ -27851,6 +28142,8 @@ service: method: GET auth: true docs: Retrieve a list of teams in your organization. + source: + openapi: ../openapi.yml display-name: Get team list response: docs: Successful operation. @@ -27876,6 +28169,8 @@ service: method: GET auth: true docs: This end-point returns a list of your agreements with Deel. + source: + openapi: ../openapi.yml display-name: Get agreements with Deel. request: name: GetAgreementsRequest @@ -27997,6 +28292,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTaskManyReview": { "audiences": [ @@ -28071,6 +28369,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTaskReviewById": { "audiences": [ @@ -28146,6 +28447,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteContractPgoTak": { "audiences": [ @@ -28204,6 +28508,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTasksByContract": { "audiences": [ @@ -28258,6 +28565,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28276,6 +28586,8 @@ service: method: GET auth: true docs: Retrieve a list of tasks for a given contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -28313,6 +28625,8 @@ service: method: POST auth: true docs: Create a new task for the contractor. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -28353,6 +28667,8 @@ service: method: POST auth: true docs: Review multiple tasks to approve or decline the submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -28402,6 +28718,8 @@ service: method: POST auth: true docs: Review a single task to approve or decline the submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -28452,6 +28770,8 @@ service: method: DELETE auth: true docs: Delete task from the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -28634,6 +28954,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsItemContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteEorTimeOffs": { "audiences": [ @@ -28680,6 +29003,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editEorTimeOffs": { "audiences": [ @@ -28815,6 +29141,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsItemContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorClientTimeOffs": { "audiences": [ @@ -28910,6 +29239,9 @@ docs: End-points to manage tasks for a given contract "docs": "successful operation", "type": "root.EorClientTimeoffsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorEntitlements": { "audiences": [ @@ -28970,6 +29302,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorEntitlementsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorTimeOffs": { "audiences": [ @@ -29066,6 +29401,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "reviewTimeoff": { "audiences": [ @@ -29126,6 +29464,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29144,6 +29485,8 @@ service: method: GET auth: true docs: Retrieve the list of time off requests by an employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -29217,6 +29560,8 @@ service: method: POST auth: true docs: Add a time off request for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -29320,6 +29665,8 @@ service: method: PUT auth: true docs: Edit a time off request for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -29427,6 +29774,8 @@ service: method: DELETE auth: true docs: Cancel a time off request for an employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -29458,6 +29807,8 @@ service: method: GET auth: true docs: Retrieve a list of time off entitlements for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -29501,6 +29852,8 @@ service: method: GET auth: false docs: List of time offs for all employees in your organization. + source: + openapi: ../openapi.yml display-name: List of time offs response: docs: successful operation @@ -29564,6 +29917,8 @@ service: method: PATCH auth: true docs: Approve or decline an employee's time off request. + source: + openapi: ../openapi.yml path-parameters: timeoff_id: type: string @@ -29673,6 +30028,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTimesheetReview": { "audiences": [ @@ -29733,6 +30091,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTimesheetReviews": { "audiences": [ @@ -29787,6 +30148,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTimesheetById": { "audiences": [ @@ -29840,6 +30204,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheetById": { "audiences": [ @@ -29931,6 +30298,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheets": { "audiences": [ @@ -30046,6 +30416,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheetsByContract": { "audiences": [ @@ -30166,6 +30539,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTimesheetById": { "audiences": [ @@ -30227,6 +30603,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -30245,6 +30624,8 @@ service: method: GET auth: true docs: Retrieve a list of timesheets found for a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -30345,6 +30726,8 @@ service: Retrieve a list of timesheets in your Deel account. You can filter the list by providing additional paramters e.g. contract_id, contract_type etc. + source: + openapi: ../openapi.yml display-name: List of timesheets request: name: GetTimesheetsRequest @@ -30439,6 +30822,8 @@ service: method: POST auth: true docs: Submit work for a contractor. + source: + openapi: ../openapi.yml display-name: Create a timesheet entry request: name: TimesheetToCreateContainer @@ -30479,6 +30864,8 @@ service: method: GET auth: true docs: Retrieve a single timesheet entry by Id. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -30547,6 +30934,8 @@ service: method: DELETE auth: true docs: Delete a single timesheet entry. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -30583,6 +30972,8 @@ service: method: PATCH auth: true docs: Update a single timesheet entry. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -30623,6 +31014,8 @@ service: method: POST auth: true docs: Review a timesheet to approve or decline submitted work. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -30662,6 +31055,8 @@ service: method: POST auth: true docs: Review a batch of timesheets to approve or reject submitted work. + source: + openapi: ../openapi.yml display-name: Review multiple timesheets request: name: TimesheetReviewsToCreateContainer @@ -30739,6 +31134,9 @@ docs: >- "path-parameters": { "id": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, "WebhookController_editById": { "audiences": [ @@ -30833,6 +31231,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "WebhookController_getById": { "audiences": [ @@ -30886,6 +31287,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createWebhook": { "audiences": [ @@ -30979,6 +31383,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllWebhooks": { "audiences": [ @@ -31028,6 +31435,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -31068,6 +31478,8 @@ service: method: GET auth: true docs: Retrieve a list of webhook subscriptions. + source: + openapi: ../openapi.yml display-name: List of webhooks response: docs: successful operation @@ -31103,6 +31515,8 @@ service: method: POST auth: true docs: Create a new webhooks subscription. + source: + openapi: ../openapi.yml display-name: Create a webhook request: name: CreateWebhookRequest @@ -31170,6 +31584,8 @@ service: method: GET auth: true docs: Retrieve a single webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retrieve a single webhook @@ -31209,6 +31625,8 @@ service: method: DELETE auth: true docs: Delete a webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete a webhook @@ -31230,6 +31648,8 @@ service: method: PATCH auth: true docs: Edit a webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Edit a webhook diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/default-content.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/default-content.json index cb3cc05f1c7..1954cba0fbe 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/default-content.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/default-content.json @@ -60,6 +60,9 @@ "docs": "Successful operation", "type": "root.GenerateContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -77,6 +80,8 @@ service: path: /generateContent method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: model: string response: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/devrev.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/devrev.json index c0adcfba89b..1120e3ffe14 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/devrev.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/devrev.json @@ -10359,6 +10359,9 @@ types: "docs": "Success.", "type": "root.ArtifactsLocateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "prepare": { "auth": true, @@ -10412,6 +10415,9 @@ types: "docs": "Success.", "type": "root.ArtifactsPrepareResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10430,6 +10436,8 @@ service: method: GET auth: true docs: Gets the download URL for the artifact. + source: + openapi: ../openapi.yml request: name: ArtifactsLocateRequest query-parameters: @@ -10460,6 +10468,8 @@ service: auth: true docs: | Creates an artifact and generates an upload URL for its data. + source: + openapi: ../openapi.yml request: name: ArtifactsPrepareRequest body: @@ -10556,6 +10566,9 @@ enterprise connections can be created by an organization. "docs": "Success.", "type": "root.DevOrgAuthConnectionsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-delete": { "auth": true, @@ -10596,6 +10609,9 @@ connections can not be deleted using this method. "name": "DevOrgAuthConnectionsDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-get": { "auth": true, @@ -10645,6 +10661,9 @@ connections can not be deleted using this method. "docs": "Success.", "type": "root.DevOrgAuthConnectionsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-list": { "auth": true, @@ -10687,6 +10706,9 @@ created by the user. "docs": "Success.", "type": "root.DevOrgAuthConnectionsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-toggle": { "auth": true, @@ -10732,6 +10754,9 @@ disabled. "name": "DevOrgAuthConnectionsToggleRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-update": { "auth": true, @@ -10779,6 +10804,9 @@ disabled. "docs": "Success.", "type": "root.DevOrgAuthConnectionsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10803,6 +10831,8 @@ service: enable this. Keep in mind that at a time, only one authentication connection can be enabled for a Dev organization. At present, only 5 enterprise connections can be created by an organization. + source: + openapi: ../openapi.yml request: body: type: root.DevOrgAuthConnectionsCreateRequest @@ -10838,6 +10868,8 @@ service: Deletes an authentication connection. Only enterprise connections which are explicitly set up for a Dev organization can be deleted. Default connections can not be deleted using this method. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsDeleteRequest body: @@ -10862,6 +10894,8 @@ service: method: GET auth: true docs: Retrieves the details for an authentication connection. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsGetRequest query-parameters: @@ -10901,6 +10935,8 @@ service: organization. This list will include both social and enterprise connections which are either available by default or are explicitly created by the user. + source: + openapi: ../openapi.yml response: docs: Success. type: root.DevOrgAuthConnectionsListResponse @@ -10932,6 +10968,8 @@ service: When a new authentication connection is enabled, the connection which is currently enabled for the Dev organization is automatically disabled. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsToggleRequest body: @@ -10958,6 +10996,8 @@ service: method: POST auth: true docs: Updates an authentication connection. + source: + openapi: ../openapi.yml request: body: type: root.DevOrgAuthConnectionsUpdateRequest @@ -11096,6 +11136,9 @@ requesting an application access token (AAT). "docs": "Success.", "type": "root.AuthTokensCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -11136,6 +11179,9 @@ JTI claim of the token in the authorization header. "name": "AuthTokensDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -11219,6 +11265,9 @@ given Dev organization. "docs": "Success.", "type": "root.AuthTokensGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -11299,6 +11348,9 @@ subject. "docs": "Success.", "type": "root.AuthTokensListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "selfDelete": { "auth": true, @@ -11335,6 +11387,9 @@ authenticated user. "name": "AuthTokensSelfDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -11428,6 +11483,9 @@ organization. "docs": "Success.", "type": "root.AuthTokensUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11448,6 +11506,8 @@ service: docs: | Creates a JWT corresponding to the requested token type for the authenticated user. + source: + openapi: ../openapi.yml request: name: AuthTokensCreateRequest body: @@ -11522,6 +11582,8 @@ service: docs: | Revokes the token that matches the given token ID issued under the given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensDeleteRequest body: @@ -11554,6 +11616,8 @@ service: docs: | Gets the token metadata corresponding to the given token ID under the given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensGetRequest query-parameters: @@ -11618,6 +11682,8 @@ service: docs: | Gets the token metadata for all the tokens corresponding to the given token type issued for a given subject. + source: + openapi: ../openapi.yml request: name: AuthTokensListRequest query-parameters: @@ -11678,6 +11744,8 @@ service: docs: | Revokes all the tokens that matches the given token type created by the authenticated user. + source: + openapi: ../openapi.yml request: name: AuthTokensSelfDeleteRequest body: @@ -11702,6 +11770,8 @@ service: docs: | Updates token metadata of a token issued under a given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensUpdateRequest body: @@ -11881,6 +11951,9 @@ used. "docs": "Success.", "type": "root.DevUsersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "self": { "auth": true, @@ -11954,6 +12027,9 @@ used. "docs": "Success.", "type": "root.DevUsersSelfResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11972,6 +12048,8 @@ service: method: GET auth: true docs: Lists users within your organization. + source: + openapi: ../openapi.yml request: name: DevUsersListRequest query-parameters: @@ -12045,6 +12123,8 @@ service: method: GET auth: true docs: Gets the authenticated user's information. + source: + openapi: ../openapi.yml response: docs: Success. type: root.DevUsersSelfResponse @@ -12206,6 +12286,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -12252,6 +12335,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -12345,6 +12431,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -12455,6 +12544,9 @@ used. "docs": "Success.", "type": "root.PartsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -12546,6 +12638,9 @@ used. "docs": "Success.", "type": "root.PartsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12564,6 +12659,8 @@ service: method: POST auth: true docs: Creates new [part](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: body: type: root.PartsCreateRequest @@ -12630,6 +12727,8 @@ service: method: POST auth: true docs: Deletes a [part](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: name: PartsDeleteRequest body: @@ -12661,6 +12760,8 @@ service: auth: true docs: | Gets a [part's](https://devrev.ai/docs/product/parts) information. + source: + openapi: ../openapi.yml request: name: PartsGetRequest query-parameters: @@ -12726,6 +12827,8 @@ service: auth: true docs: | Lists a collection of [parts](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: name: PartsListRequest query-parameters: @@ -12805,6 +12908,8 @@ service: auth: true docs: | Updates a [part's](https://devrev.ai/docs/product/parts) information. + source: + openapi: ../openapi.yml request: body: type: root.PartsUpdateRequest @@ -12982,6 +13087,9 @@ records. "docs": "Success.", "type": "root.RevOrgsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -13028,6 +13136,9 @@ records. "docs": "Success.", "type": "root.RevOrgsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -13102,6 +13213,9 @@ records. "docs": "Success.", "type": "root.RevOrgsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -13216,6 +13330,9 @@ them. "docs": "Success.", "type": "root.RevOrgsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -13321,6 +13438,9 @@ records. "docs": "Success.", "type": "root.RevOrgsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13341,6 +13461,8 @@ service: docs: | Creates a Rev organization in the authenticated user's Dev organization. + source: + openapi: ../openapi.yml request: name: RevOrgsCreateRequest body: @@ -13418,6 +13540,8 @@ service: method: POST auth: true docs: Deletes the Rev organization. + source: + openapi: ../openapi.yml request: name: RevOrgsDeleteRequest body: @@ -13448,6 +13572,8 @@ service: method: GET auth: true docs: Retrieves the Rev organization's information. + source: + openapi: ../openapi.yml request: name: RevOrgsGetRequest query-parameters: @@ -13507,6 +13633,8 @@ service: Gets the list of Rev organizations' information belonging to the authenticated user's Dev Organization which the user is also authorized to access. + source: + openapi: ../openapi.yml request: name: RevOrgsListRequest query-parameters: @@ -13596,6 +13724,8 @@ service: method: POST auth: true docs: Updates the Rev organization's information. + source: + openapi: ../openapi.yml request: name: RevOrgsUpdateRequest body: @@ -13781,6 +13911,9 @@ permitted. "docs": "Success.", "type": "root.TagsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -13827,6 +13960,9 @@ permitted. "docs": "Success.", "type": "root.TagsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -13902,6 +14038,9 @@ permitted. "docs": "Success.", "type": "root.TagsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -13973,6 +14112,9 @@ used. "docs": "Success.", "type": "root.TagsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -14066,6 +14208,9 @@ tags. "docs": "Success.", "type": "root.TagsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14086,6 +14231,8 @@ service: docs: | Creates a new tag, which is used to create associations between objects and a logical concept denoted by the tag's name. + source: + openapi: ../openapi.yml request: name: TagsCreateRequest body: @@ -14152,6 +14299,8 @@ service: method: POST auth: true docs: Deletes a tag. + source: + openapi: ../openapi.yml request: name: TagsDeleteRequest body: @@ -14182,6 +14331,8 @@ service: method: GET auth: true docs: Gets a tag's information. + source: + openapi: ../openapi.yml request: name: TagsGetRequest query-parameters: @@ -14238,6 +14389,8 @@ service: method: GET auth: true docs: Lists the available tags. + source: + openapi: ../openapi.yml request: name: TagsListRequest query-parameters: @@ -14291,6 +14444,8 @@ service: method: POST auth: true docs: Updates a tag's information. + source: + openapi: ../openapi.yml request: name: TagsUpdateRequest body: @@ -14449,6 +14604,9 @@ docs: DevRev tag interactions. "docs": "Success.", "type": "root.TimelineEntriesCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -14530,6 +14688,9 @@ docs: DevRev tag interactions. "docs": "Success.", "type": "root.TimelineEntriesGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -14617,6 +14778,9 @@ used. "docs": "Success.", "type": "root.TimelineEntriesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -14695,6 +14859,9 @@ used. "docs": "Success.", "type": "root.TimelineEntriesUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14713,6 +14880,8 @@ service: method: POST auth: true docs: Creates a new entry on an object's timeline. + source: + openapi: ../openapi.yml request: body: type: root.TimelineEntriesCreateRequest @@ -14770,6 +14939,8 @@ service: method: GET auth: true docs: Gets an entry on an object's timeline. + source: + openapi: ../openapi.yml request: name: TimelineEntriesGetRequest query-parameters: @@ -14829,6 +15000,8 @@ service: method: GET auth: true docs: Lists the timeline entries for an object. + source: + openapi: ../openapi.yml request: name: TimelineEntriesListRequest query-parameters: @@ -14893,6 +15066,8 @@ service: method: POST auth: true docs: Updates an entry on an object's timeline. + source: + openapi: ../openapi.yml request: body: type: root.TimelineEntriesUpdateRequest @@ -15060,6 +15235,9 @@ response. "docs": "Success.", "type": "root.WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -15106,6 +15284,9 @@ response. "docs": "Success.", "type": "root.WebhooksDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -15182,6 +15363,9 @@ response. "docs": "Success.", "type": "root.WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -15231,6 +15415,9 @@ response. "docs": "Success.", "type": "root.WebhooksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -15340,6 +15527,9 @@ won't receive any object events until successfully verified. "docs": "Success.", "type": "root.WebhooksUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15358,6 +15548,8 @@ service: method: POST auth: true docs: Creates a new webhook target. + source: + openapi: ../openapi.yml request: name: WebhooksCreateRequest body: @@ -15432,6 +15624,8 @@ service: method: POST auth: true docs: Deletes the requested webhook. + source: + openapi: ../openapi.yml request: name: WebhooksDeleteRequest body: @@ -15462,6 +15656,8 @@ service: method: GET auth: true docs: Gets the requested webhook's information. + source: + openapi: ../openapi.yml request: name: WebhooksGetRequest query-parameters: @@ -15519,6 +15715,8 @@ service: method: GET auth: true docs: Lists the webhooks. + source: + openapi: ../openapi.yml response: docs: Success. type: root.WebhooksListResponse @@ -15553,6 +15751,8 @@ service: method: POST auth: true docs: Updates the requested webhook. + source: + openapi: ../openapi.yml request: name: WebhooksUpdateRequest body: @@ -15782,6 +15982,9 @@ docs: Webhook event APIs. "docs": "Success.", "type": "root.WorksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -15828,6 +16031,9 @@ docs: Webhook event APIs. "docs": "Success.", "type": "root.WorksDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "export": { "auth": true, @@ -15975,6 +16181,9 @@ organizations. "docs": "Success.", "type": "root.WorksExportResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -16094,6 +16303,9 @@ organizations. "docs": "Success.", "type": "root.WorksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -16254,6 +16466,9 @@ organizations. "docs": "Success.", "type": "root.WorksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -16372,6 +16587,9 @@ organizations. "docs": "Success.", "type": "root.WorksUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16392,6 +16610,8 @@ service: docs: | Creates new work ([issue](https://devrev.ai/docs/product/build), [ticket](https://devrev.ai/docs/product/support)) item. + source: + openapi: ../openapi.yml request: body: type: root.WorksCreateRequest @@ -16480,6 +16700,8 @@ service: method: POST auth: true docs: Deletes a work item. + source: + openapi: ../openapi.yml request: name: WorksDeleteRequest body: @@ -16510,6 +16732,8 @@ service: method: GET auth: true docs: Exports a collection of work items. + source: + openapi: ../openapi.yml request: name: WorksExportRequest query-parameters: @@ -16618,6 +16842,8 @@ service: method: GET auth: true docs: Gets a work item's information. + source: + openapi: ../openapi.yml request: name: WorksGetRequest query-parameters: @@ -16702,6 +16928,8 @@ service: method: GET auth: true docs: Lists a collection of work items. + source: + openapi: ../openapi.yml request: name: WorksListRequest query-parameters: @@ -16821,6 +17049,8 @@ service: method: POST auth: true docs: Updates a work item's information. + source: + openapi: ../openapi.yml request: body: type: root.WorksUpdateRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/discriminated-union-value-title.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/discriminated-union-value-title.json index a66d553c792..3444dc5d076 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/discriminated-union-value-title.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/discriminated-union-value-title.json @@ -44,6 +44,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/enum-casing.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/enum-casing.json index acd371d425b..c41e060c95c 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/enum-casing.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/enum-casing.json @@ -33,6 +33,9 @@ "docs": "Successful response", "type": "ExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -85,6 +88,8 @@ path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/file-upload.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/file-upload.json index df028245cfe..5129ba9cb5f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/file-upload.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/file-upload.json @@ -42,6 +42,9 @@ "name": "UploadFileRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57,6 +60,8 @@ path: /upload-with-content-type method: POST auth: false + source: + openapi: ../openapi.yml display-name: Upload a file request: name: UploadFileRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flagright.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flagright.json index 226fe9a9650..8dfa180604f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flagright.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flagright.json @@ -479,6 +479,9 @@ Calling `GET /business/user/{userId}` will return the entire User payload and ru "docs": "OK", "type": "Business", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-consumer-transaction": { "auth": true, @@ -631,6 +634,9 @@ Calling `GET /transactions/{transactionId}` will return the entire transaction p "docs": "OK", "type": "TransactionWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-consumer-user": { "auth": true, @@ -786,6 +792,9 @@ Calling `GET /consumer/user/{userId}` will return the entire user payload and ru "docs": "OK", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-business-user": { "auth": true, @@ -862,6 +871,9 @@ Each consumer Business entity needs three mandatory fields: "docs": "Created", "type": "PostBusinessUserResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-business-user-event": { "auth": true, @@ -1294,6 +1306,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "BusinessWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-consumer-transaction": { "auth": true, @@ -1457,6 +1472,9 @@ Here are some of the most used payload fields explained (you can find the full p "docs": "Created", "type": "PostConsumerTransactionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-consumer-user": { "auth": true, @@ -1593,6 +1611,9 @@ Each consumer User entity needs three mandatory fields: "docs": "Created", "type": "PostConsumerUserResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-transaction-event": { "auth": true, @@ -1818,6 +1839,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "TransactionEventMonitoringResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-user-event": { "auth": true, @@ -2056,6 +2080,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "UserWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7590,6 +7617,8 @@ service: destination (ex: `CARD`, `IBAN`, `WALLET` etc). You can click on the dropdown next to the field in the schema below to view all supported payment types. + source: + openapi: ../openapi.yml display-name: Verify a Transaction request: body: Transaction @@ -7711,6 +7740,8 @@ service: Calling `GET /transactions/{transactionId}` will return the entire transaction payload and rule execution results for the transaction with the corresponding `transactionId` + source: + openapi: ../openapi.yml path-parameters: transactionId: type: string @@ -7866,6 +7897,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Transaction Event request: name: TransactionEvent @@ -8040,6 +8073,8 @@ service: * `createdTimestamp` - UNIX timestamp in *milliseconds* for when the User is created in your system + source: + openapi: ../openapi.yml display-name: Create a Consumer User request: body: @@ -8136,6 +8171,8 @@ service: Calling `GET /consumer/user/{userId}` will return the entire user payload and rule execution results for the user with the corresponding `userId` + source: + openapi: ../openapi.yml path-parameters: userId: type: string @@ -8266,6 +8303,8 @@ service: * `createdTimestamp` - UNIX timestamp in *milliseconds* for when the User is created in your system + source: + openapi: ../openapi.yml display-name: Create a Business User request: body: Business @@ -8324,6 +8363,8 @@ service: Calling `GET /business/user/{userId}` will return the entire User payload and rule execution results for the User with the corresponding `userId` + source: + openapi: ../openapi.yml path-parameters: userId: type: string @@ -8582,6 +8623,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Consumer User Event request: name: ConsumerUserEvent @@ -8768,6 +8811,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Business User Event request: name: BusinessUserEvent diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flexport.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flexport.json index b9232882200..fdfe5cc1cce 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flexport.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/flexport.json @@ -10550,6 +10550,9 @@ errors: "docs": "collection of bookings", "type": "BookingsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": false, @@ -11022,6 +11025,9 @@ errors: "docs": "The created booking", "type": "BookingCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -11325,6 +11331,9 @@ errors: "docs": "Success", "type": "BookingShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11496,6 +11505,8 @@ service: method: GET auth: false docs: Returns a list of bookings. + source: + openapi: ../openapi.yml display-name: List all bookings request: name: BookingsIndexRequest @@ -11761,6 +11772,8 @@ service: path: /bookings method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a booking request: name: CreateBooking @@ -12158,6 +12171,8 @@ service: auth: false docs: | Retrieves the details of a single booking. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -12693,6 +12708,9 @@ docs: Endpoints relating to Booking objects "docs": "The created booking amendment", "type": "BookingAmendmentCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12733,6 +12751,8 @@ service: path: /booking_amendments method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new booking amendment. request: name: CreateBookingAmendment @@ -13059,6 +13079,9 @@ docs: >- "docs": "The created booking line item", "type": "BookingLineItemCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "booking_line_item_index": { "auth": false, @@ -13146,6 +13169,9 @@ docs: >- "docs": "collection of booking line items", "type": "BookingLineItemIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "booking_line_item_show": { "auth": false, @@ -13199,6 +13225,9 @@ docs: >- "docs": "A collection of booking line items", "type": "BookingLineItemShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13317,6 +13346,8 @@ service: method: GET auth: false docs: Returns a list of booking line items linked to submitted bookings + source: + openapi: ../openapi.yml display-name: List all booking line items request: name: BookingLineItemIndexRequest @@ -13385,6 +13416,8 @@ service: method: POST auth: false docs: Creates and returns a booking line item + source: + openapi: ../openapi.yml display-name: Create a booking line item request: name: CreateBookingLineItem @@ -13437,6 +13470,8 @@ service: method: GET auth: false docs: Returns a list of booking line items + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -13611,6 +13646,9 @@ docs: >- "docs": "Success", "type": "CarbonCalculationCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13730,6 +13768,8 @@ service: method: POST auth: false docs: Rate limited to 2,000 requests per hour + source: + openapi: ../openapi.yml display-name: Calculate carbon emissions request: name: CreateCarbonCalculation @@ -14059,6 +14099,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "The created commercial invoice", "type": "CommercialInvoicesCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "index": { "auth": false, @@ -14224,6 +14267,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "Success", "type": "CommercialInvoicesIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -14370,6 +14416,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "Success", "type": "CommercialInvoicesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -14534,6 +14583,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "The updated commercial invoice", "type": "CommercialInvoicesUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14655,6 +14707,8 @@ service: method: GET auth: false docs: Returns a list of commercial invoices + source: + openapi: ../openapi.yml display-name: List commercial invoices request: name: CommercialInvoicesIndexRequest @@ -14782,6 +14836,8 @@ service: **The Commercial Invoices POST endpoint needs special permission to access. Please contact your Flexport Sales representative if you are interested in using this endpoint.** + source: + openapi: ../openapi.yml display-name: Create and return a new commercial invoice request: name: CreateCommercialInvoice @@ -14939,6 +14995,8 @@ service: **The Commercial Invoices PATCH endpoint needs special permission to access. Please contact your Flexport Sales representative if you are interested in using this endpoint.** + source: + openapi: ../openapi.yml display-name: Update an existing commercial invoice request: name: UpdateCommercialInvoice @@ -15066,6 +15124,8 @@ service: method: GET auth: false docs: Retrieves the details of a single commercial invoice. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15287,6 +15347,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "The created company", "type": "NetworkCompanyCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_index": { "auth": false, @@ -15395,6 +15458,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "collection of companies", "type": "NetworkCompanyIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_me": { "auth": false, @@ -15475,6 +15541,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "Success", "type": "NetworkCompanyMeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_show": { "auth": false, @@ -15556,6 +15625,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "Success", "type": "NetworkCompanyShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_update": { "auth": false, @@ -15664,6 +15736,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "The updated company", "type": "NetworkCompanyUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15807,6 +15882,8 @@ service: method: GET auth: false docs: Returns a list of companies in the network. + source: + openapi: ../openapi.yml display-name: List company objects request: name: NetworkCompanyIndexRequest @@ -15891,6 +15968,8 @@ service: path: /network/companies method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new company object request: name: CreateCompany @@ -15964,6 +16043,8 @@ service: method: GET auth: false docs: Retrieves the details of a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16022,6 +16103,8 @@ service: path: /network/companies/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16100,6 +16183,8 @@ service: method: GET auth: false docs: Retrieves the details of your own organization. + source: + openapi: ../openapi.yml display-name: Retrieve your company response: docs: Success @@ -16260,6 +16345,9 @@ docs: Endpoints relating to Company objects "docs": "collection of company entities", "type": "CompanyEntityIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_create": { "auth": false, @@ -16351,6 +16439,9 @@ docs: Endpoints relating to Company objects "docs": "The created company entity", "type": "NetworkCompanyEntityCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_show": { "auth": false, @@ -16413,6 +16504,9 @@ docs: Endpoints relating to Company objects "docs": "Success", "type": "NetworkCompanyEntityShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_update": { "auth": false, @@ -16499,6 +16593,9 @@ docs: Endpoints relating to Company objects "docs": "Success", "type": "NetworkCompanyEntityUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16622,6 +16719,8 @@ service: method: GET auth: false docs: Returns a list of the company entity objects in the network. + source: + openapi: ../openapi.yml display-name: List of company entity objects request: name: CompanyEntityIndexRequest @@ -16690,6 +16789,8 @@ service: path: /network/company_entities method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a new company entity request: name: CreateCompanyEntity @@ -16765,6 +16866,8 @@ service: method: GET auth: false docs: Retrieves the details of a single company entity + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16809,6 +16912,8 @@ service: path: /network/company_entities/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16960,6 +17065,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "The created contact", "type": "NetworkContactCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_index": { "auth": false, @@ -17042,6 +17150,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "collection of contacts", "type": "NetworkContactIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_show": { "auth": false, @@ -17096,6 +17207,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "Success", "type": "NetworkContactShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_update": { "auth": false, @@ -17173,6 +17287,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "The updated contact", "type": "NetworkContactUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17296,6 +17413,8 @@ service: method: GET auth: false docs: Returns a list of contacts in the network. + source: + openapi: ../openapi.yml display-name: List contact objects request: name: NetworkContactIndexRequest @@ -17357,6 +17476,8 @@ service: path: /network/contacts method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new contact object request: name: CreateContact @@ -17415,6 +17536,8 @@ service: method: GET auth: false docs: Retrieves the details of a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -17454,6 +17577,8 @@ service: path: /network/contacts/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -17649,6 +17774,9 @@ docs: Endpoints relating to Contact objects "docs": "Success", "type": "ContainerListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -17750,6 +17878,9 @@ docs: Endpoints relating to Contact objects "docs": "Success", "type": "ContainerShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17833,6 +17964,8 @@ service: docs: >- Returns a list of containers. The containers are sorted descending by creation date. + source: + openapi: ../openapi.yml display-name: List all containers. request: name: ContainerListRequest @@ -17940,6 +18073,8 @@ service: method: GET auth: false docs: Retrieves the details of a single container. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -18115,6 +18250,9 @@ docs: Endpoints relating to Container objects "docs": "Success", "type": "OceanContainerLegsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ocean_container_legs_show": { "auth": false, @@ -18171,6 +18309,9 @@ docs: Endpoints relating to Container objects "docs": "Success", "type": "OceanContainerLegsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18251,6 +18392,8 @@ service: path: /ocean/shipment_container_legs method: GET auth: false + source: + openapi: ../openapi.yml display-name: List all container legs request: name: OceanContainerLegsIndexRequest @@ -18315,6 +18458,8 @@ service: path: /ocean/shipment_container_legs/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -18433,6 +18578,9 @@ docs: Endpoints relating to ContainerLeg objects "docs": "collection of customs entries", "type": "CustomsEntryIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -18482,6 +18630,9 @@ docs: Endpoints relating to ContainerLeg objects "docs": "Success", "type": "CustomsEntriesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18563,6 +18714,8 @@ service: method: GET auth: false docs: Returns a list of customs entries. + source: + openapi: ../openapi.yml display-name: List customs entry objects request: name: CustomsEntryIndexRequest @@ -18613,6 +18766,8 @@ service: method: GET auth: false docs: Retrieves the details of a single customs entry. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -18707,6 +18862,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Created", "type": "DocumentsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_download": { "auth": false, @@ -18728,6 +18886,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Success", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_index": { "auth": false, @@ -18826,6 +18987,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "collection of documents", "type": "DocumentsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_show": { "auth": false, @@ -18882,6 +19046,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Success", "type": "DocumentsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18985,6 +19152,8 @@ service: method: GET auth: false docs: Returns a list of all documents associated with shipments. + source: + openapi: ../openapi.yml display-name: List document objects request: name: DocumentsIndexRequest @@ -19066,6 +19235,8 @@ service: method: POST auth: false docs: Create a new document for this client using the request payload + source: + openapi: ../openapi.yml display-name: Create a document request: body: root.CreateDocument @@ -19101,6 +19272,8 @@ service: method: GET auth: false docs: Retrieves the details of a single document. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19144,6 +19317,8 @@ service: docs: >- Retrieves the contents of a specified file. Returns the file as a stream of bytes. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19242,6 +19417,9 @@ docs: Endpoints relating to Document objects "docs": "Success", "type": "EventsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "events_show": { "auth": false, @@ -19363,6 +19541,9 @@ docs: Endpoints relating to Document objects "docs": "Success", "type": "EventsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19493,6 +19674,8 @@ service: docs: >- Returns a list of all events delivered to any webhook registered by this client + source: + openapi: ../openapi.yml display-name: List all webhook events request: name: EventsIndexRequest @@ -19545,6 +19728,8 @@ service: method: GET auth: false docs: Returns the webhook event with ID ":id" + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -19992,6 +20177,9 @@ This parameter is mutually exclusive with the f.shipment.id filter. "docs": "collection of invoices", "type": "InvoiceIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -20252,6 +20440,9 @@ Other details about this invoice", "docs": "Success", "type": "InvoicesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20369,6 +20560,8 @@ service: method: GET auth: false docs: Returns a list of invoices. + source: + openapi: ../openapi.yml display-name: List all invoices request: name: InvoiceIndexRequest @@ -20651,6 +20844,8 @@ service: method: GET auth: false docs: Retrieves the details of a single invoice + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -20966,6 +21161,9 @@ docs: Endpoints relating to Invoice objects "docs": "collection of locations", "type": "LocationIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_location_create": { "auth": false, @@ -21064,6 +21262,9 @@ docs: Endpoints relating to Invoice objects "docs": "The created location", "type": "NetworkLocationCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_location_show": { "auth": false, @@ -21135,6 +21336,9 @@ docs: Endpoints relating to Invoice objects "docs": "Success", "type": "NetworkLocationShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -21234,6 +21438,9 @@ docs: Endpoints relating to Invoice objects "docs": "Success", "type": "LocationUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21357,6 +21564,8 @@ service: method: GET auth: false docs: Returns a list of location objects in the network. + source: + openapi: ../openapi.yml display-name: List of location objects request: name: LocationIndexRequest @@ -21442,6 +21651,8 @@ service: path: /network/locations method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a new location request: name: CreateLocation @@ -21518,6 +21729,8 @@ service: method: GET auth: false docs: Retrieves the details of a single location + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21572,6 +21785,8 @@ service: path: /network/locations/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21783,6 +21998,9 @@ docs: Endpoints relating to Location objects "docs": "collection of ports", "type": "PortsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21864,6 +22082,8 @@ service: path: /ports method: GET auth: false + source: + openapi: ../openapi.yml display-name: List of ports request: name: PortsIndexRequest @@ -22077,6 +22297,9 @@ docs: Endpoints relating to Ports objects "docs": "Created", "type": "ProductCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "index": { "auth": false, @@ -22162,6 +22385,9 @@ docs: Endpoints relating to Ports objects "docs": "Success", "type": "ProductIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -22232,6 +22458,9 @@ docs: Endpoints relating to Ports objects "docs": "Success", "type": "ProductShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -22349,6 +22578,9 @@ docs: Endpoints relating to Ports objects "docs": "Updated", "type": "ProductUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -22470,6 +22702,8 @@ service: method: GET auth: false docs: Returns a list of all products belonging to this client + source: + openapi: ../openapi.yml display-name: List all products for a client request: name: ProductIndexRequest @@ -22536,6 +22770,8 @@ service: method: POST auth: false docs: Create a new product for this client using the request payload + source: + openapi: ../openapi.yml display-name: Create a product request: name: CreateProduct @@ -22622,6 +22858,8 @@ service: method: GET auth: false docs: Returns the client's product with this ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -22669,6 +22907,8 @@ service: method: PATCH auth: false docs: Update this product to represent the request payload + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -23054,6 +23294,9 @@ docs: Endpoints relating to Product objects "docs": "The created purchase order", "type": "root.PurchaseOrder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_index": { "auth": false, @@ -23370,6 +23613,9 @@ docs: Endpoints relating to Product objects "docs": "collection of purchase orders", "type": "PurchaseOrderIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_show": { "auth": false, @@ -23519,6 +23765,9 @@ docs: Endpoints relating to Product objects "docs": "Success", "type": "PurchaseOrderShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_update": { "auth": false, @@ -23744,6 +23993,9 @@ docs: Endpoints relating to Product objects "docs": "The update purchase order", "type": "root.PurchaseOrder", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -23894,6 +24146,8 @@ service: method: GET auth: false docs: Returns a list of purchase orders + source: + openapi: ../openapi.yml display-name: List all purchase orders request: name: PurchaseOrderIndexRequest @@ -24135,6 +24389,8 @@ service: path: /purchase_orders method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a purchase order request: body: root.CreateOrUpdatePurchaseOrder @@ -24355,6 +24611,8 @@ service: auth: false docs: | Retrieves the details of a single purchase order. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -24470,6 +24728,8 @@ service: path: /purchase_orders/{id} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -24834,6 +25094,9 @@ docs: >- "docs": "collection of purchase order line items", "type": "PurchaseOrderLineItemIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_line_item_show": { "auth": false, @@ -25020,6 +25283,9 @@ docs: >- "docs": "collection of purchase order line items", "type": "PurchaseOrderLineItemShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -25118,6 +25384,8 @@ service: method: GET auth: false docs: Returns a list of purchase order line items + source: + openapi: ../openapi.yml display-name: List all purchase order line items. request: name: PurchaseOrderLineItemIndexRequest @@ -25255,6 +25523,8 @@ service: method: GET auth: false docs: Returns the details of a purchase order line item + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -25850,6 +26120,9 @@ docs: >- "docs": "collection of shipments", "type": "ShipmentIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shipments_shareable": { "auth": false, @@ -25912,6 +26185,9 @@ docs: >- "docs": "collection of shipments shareable status url", "type": "ShipmentsShareableResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -26243,6 +26519,9 @@ docs: >- "docs": "Success", "type": "ShipmentShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -26590,6 +26869,9 @@ docs: >- "docs": "The updated shipment", "type": "ShipmentUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26785,6 +27067,8 @@ service: method: GET auth: false docs: Returns a list of shipments. + source: + openapi: ../openapi.yml display-name: List all shipments request: name: ShipmentIndexRequest @@ -27171,6 +27455,8 @@ service: auth: false docs: | Retrieves the details of a single shipment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -27429,6 +27715,8 @@ service: path: /shipments/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -27701,6 +27989,8 @@ service: method: POST auth: false docs: Returns a list of shipments status shareable url + source: + openapi: ../openapi.yml display-name: Create shareable URLs for shipments request: name: ShipmentsShareableRequest @@ -27943,6 +28233,9 @@ docs: Endpoints relating to Shipment objects "docs": "Success", "type": "ShipmentLegIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shipment_leg_show": { "auth": false, @@ -28147,6 +28440,9 @@ docs: Endpoints relating to Shipment objects "docs": "Success", "type": "ShipmentLegShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28230,6 +28526,8 @@ service: docs: >- Returns a list of shipment route legs. The legs are sorted descending by creation date. + source: + openapi: ../openapi.yml display-name: List all shipment route legs request: name: ShipmentLegIndexRequest @@ -28376,6 +28674,8 @@ service: path: /shipment_legs/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/float.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/float.json index 4a4fe392b93..7d5966c4d3b 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/float.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/float.json @@ -41,6 +41,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -69,6 +72,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hathora.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hathora.json index 97f404c7b25..3dd30c3ec71 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hathora.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hathora.json @@ -2297,6 +2297,9 @@ types: "docs": "", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, "DeleteApp": { "auth": true, @@ -2318,6 +2321,9 @@ types: "path-parameters": { "appId": "root.AppId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetAppInfo": { "auth": true, @@ -2359,6 +2365,9 @@ types: "docs": "Ok", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetApps": { "auth": true, @@ -2412,6 +2421,9 @@ types: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "UpdateApp": { "auth": true, @@ -2462,6 +2474,9 @@ types: "docs": "Ok", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2479,6 +2494,8 @@ service: path: /apps/v1/list method: GET auth: true + source: + openapi: ../openapi.json response: docs: Ok type: list @@ -2515,6 +2532,8 @@ service: path: /apps/v1/create method: POST auth: true + source: + openapi: ../openapi.json request: body: root.AppConfig content-type: application/json @@ -2545,6 +2564,8 @@ service: path: /apps/v1/update/{appId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2579,6 +2600,8 @@ service: path: /apps/v1/info/{appId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -2606,6 +2629,8 @@ service: path: /apps/v1/delete/{appId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId errors: @@ -2656,6 +2681,9 @@ service: "docs": "Ok", "type": "LoginAnonymousResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "LoginGoogle": { "auth": false, @@ -2700,6 +2728,9 @@ service: "docs": "Ok", "type": "LoginGoogleResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "LoginNickname": { "auth": false, @@ -2743,6 +2774,9 @@ service: "docs": "Ok", "type": "LoginNicknameResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2805,6 +2839,8 @@ service: path: /auth/v1/{appId}/login/anonymous method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -2822,6 +2858,8 @@ service: path: /auth/v1/{appId}/login/nickname method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2847,6 +2885,8 @@ service: path: /auth/v1/{appId}/login/google method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2927,6 +2967,9 @@ service: "docs": "", "type": "root.Build", }, + "source": { + "openapi": "../openapi.json", + }, }, "DeleteBuild": { "auth": true, @@ -2951,6 +2994,9 @@ service: "appId": "root.AppId", "buildId": "root.BuildId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetBuildInfo": { "auth": true, @@ -2996,6 +3042,9 @@ service: "docs": "Ok", "type": "root.Build", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetBuilds": { "auth": true, @@ -3041,6 +3090,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "RunBuild": { "auth": true, @@ -3071,6 +3123,9 @@ service: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3088,6 +3143,8 @@ service: path: /builds/v1/{appId}/list method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -3116,6 +3173,8 @@ service: path: /builds/v1/{appId}/info/{buildId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -3146,6 +3205,8 @@ service: path: /builds/v1/{appId}/create method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -3176,6 +3237,8 @@ service: path: /builds/v1/{appId}/run/{buildId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -3195,6 +3258,8 @@ service: path: /builds/v1/{appId}/delete/{buildId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -3284,6 +3349,9 @@ service: "docs": "", "type": "root.Deployment", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetDeploymentInfo": { "auth": true, @@ -3331,6 +3399,9 @@ service: "docs": "Ok", "type": "root.Deployment", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetDeployments": { "auth": true, @@ -3378,6 +3449,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3395,6 +3469,8 @@ service: path: /deployments/v1/{appId}/list method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -3425,6 +3501,8 @@ service: path: /deployments/v1/{appId}/info/{deploymentId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId deploymentId: root.DeploymentId @@ -3457,6 +3535,8 @@ service: path: /deployments/v1/{appId}/create/{buildId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -3535,6 +3615,9 @@ service: "docs": "Ok", "type": "root.DiscoveryResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3552,6 +3635,8 @@ service: path: /discovery/v1/ping method: GET auth: false + source: + openapi: ../openapi.json response: docs: Ok type: root.DiscoveryResponse @@ -3622,6 +3707,9 @@ service: "docs": "Ok", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePublicLobbyDeprecated": { "auth": false, @@ -3670,6 +3758,9 @@ service: "docs": "Ok", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "ListActivePublicLobbiesDeprecated": { "auth": false, @@ -3731,6 +3822,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3748,6 +3842,8 @@ service: path: /lobby/v1/{appId}/create/private method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3780,6 +3876,8 @@ service: path: /lobby/v1/{appId}/create/public method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3812,6 +3910,8 @@ service: path: /lobby/v1/{appId}/list method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3936,6 +4036,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreateLocalLobby": { "auth": false, @@ -4010,6 +4113,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePrivateLobby": { "auth": false, @@ -4084,6 +4190,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePublicLobby": { "auth": false, @@ -4158,6 +4267,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLobbyInfo": { "auth": false, @@ -4201,6 +4313,9 @@ service: "docs": "Ok", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "ListActivePublicLobbies": { "auth": false, @@ -4247,6 +4362,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "SetLobbyState": { "auth": true, @@ -4307,6 +4425,9 @@ service: "docs": "Ok", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -4336,6 +4457,8 @@ service: path: /lobby/v2/{appId}/create/private method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4387,6 +4510,8 @@ service: path: /lobby/v2/{appId}/create/public method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4438,6 +4563,8 @@ service: path: /lobby/v2/{appId}/create/local method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4489,6 +4616,8 @@ service: path: /lobby/v2/{appId}/create method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4541,6 +4670,8 @@ service: path: /lobby/v2/{appId}/list/public method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4570,6 +4701,8 @@ service: path: /lobby/v2/{appId}/info/{roomId} method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -4599,6 +4732,8 @@ service: path: /lobby/v2/{appId}/setState/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -4680,6 +4815,9 @@ types: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLogsForDeployment": { "auth": true, @@ -4705,6 +4843,9 @@ types: "docs": "Ok", "type": "text", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLogsForProcess": { "auth": true, @@ -4730,6 +4871,9 @@ types: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -4747,6 +4891,8 @@ service: path: /logs/v1/{appId}/all method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4764,6 +4910,8 @@ service: path: /logs/v1/{appId}/process/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -4781,6 +4929,8 @@ service: path: /logs/v1/{appId}/deployment/{deploymentId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId deploymentId: root.DeploymentId @@ -4874,6 +5024,9 @@ service: "docs": "Ok", "type": "root.MetricsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -4891,6 +5044,8 @@ service: path: /metrics/v1/{appId}/process/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -4986,6 +5141,9 @@ service: "docs": "Ok", "type": "root.Process", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetRunningProcesses": { "auth": true, @@ -5046,6 +5204,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetStoppedProcesses": { "auth": true, @@ -5098,6 +5259,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -5115,6 +5279,8 @@ service: path: /processes/v1/{appId}/list/running method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -5156,6 +5322,8 @@ service: path: /processes/v1/{appId}/list/stopped method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -5192,6 +5360,8 @@ service: path: /processes/v1/{appId}/info/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -5277,6 +5447,9 @@ service: "docs": "", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "DestroyRoom": { "auth": true, @@ -5300,6 +5473,9 @@ service: "appId": "root.AppId", "roomId": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetActiveRoomsForProcess": { "auth": true, @@ -5341,6 +5517,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetConnectionInfo": { "auth": false, @@ -5378,6 +5557,9 @@ service: "docs": "Ok", "type": "root.ConnectionInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetInactiveRoomsForProcess": { "auth": true, @@ -5419,6 +5601,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetRoomInfo": { "auth": true, @@ -5466,6 +5651,9 @@ service: "docs": "Ok", "type": "root.Room", }, + "source": { + "openapi": "../openapi.json", + }, }, "SuspendRoom": { "auth": true, @@ -5489,6 +5677,9 @@ service: "appId": "root.AppId", "roomId": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -5506,6 +5697,8 @@ service: path: /rooms/v1/{appId}/create method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -5531,6 +5724,8 @@ service: path: /rooms/v1/{appId}/info/{roomId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -5562,6 +5757,8 @@ service: path: /rooms/v1/{appId}/list/{processId}/active method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -5588,6 +5785,8 @@ service: path: /rooms/v1/{appId}/list/{processId}/inactive method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -5614,6 +5813,8 @@ service: path: /rooms/v1/{appId}/destroy/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -5628,6 +5829,8 @@ service: path: /rooms/v1/{appId}/suspend/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -5642,6 +5845,8 @@ service: path: /rooms/v1/{appId}/connectioninfo/{roomId} method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hookdeck.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hookdeck.json index 1db69f363c2..bca1e3e4ff8 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hookdeck.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hookdeck.json @@ -7909,6 +7909,9 @@ types: "docs": "A single attempt", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAttempts": { "auth": true, @@ -7979,6 +7982,9 @@ types: "docs": "List of attempts", "type": "root.EventAttemptPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8018,6 +8024,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get attempts request: name: GetAttemptsRequest @@ -8072,6 +8080,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single attempt @@ -8218,6 +8228,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteBookmark": { "auth": true, @@ -8248,6 +8261,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "An object with deleted bookmark's id", "type": "root.DeletedBookmarkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBookmark": { "auth": true, @@ -8294,6 +8310,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBookmarks": { "auth": true, @@ -8373,6 +8392,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "List of bookmarks", "type": "root.BookmarkPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "triggerBookmark": { "auth": true, @@ -8447,6 +8469,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "Array of created events", "type": "root.EventArray", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateBookmark": { "auth": true, @@ -8546,6 +8571,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8602,6 +8630,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get bookmarks request: name: GetBookmarksRequest @@ -8660,6 +8690,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a bookmark request: name: CreateBookmarkRequest @@ -8721,6 +8753,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single bookmark @@ -8755,6 +8789,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a bookmark @@ -8818,6 +8854,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete a bookmark @@ -8837,6 +8875,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Trigger a bookmark @@ -8949,6 +8989,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createEventBulkRetry": { "auth": true, @@ -9005,6 +9048,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateEventBulkRetryPlan": { "auth": true, @@ -9032,6 +9078,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "Events bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEventBulkRetries": { "auth": true, @@ -9104,6 +9153,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "List of events bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEventBulkRetry": { "auth": true, @@ -9150,6 +9202,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10097,6 +10152,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get events bulk retries request: name: GetEventBulkRetriesRequest @@ -10152,6 +10209,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an events bulk retry request: name: CreateEventBulkRetryRequest @@ -10194,6 +10253,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate an events bulk retry plan response: docs: Events bulk retry plan @@ -10212,6 +10273,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an events bulk retry @@ -10246,6 +10309,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel an events bulk retry @@ -10338,6 +10403,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createIgnoredEventBulkRetry": { "auth": true, @@ -10394,6 +10462,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateIgnoredEventBulkRetryPlan": { "auth": true, @@ -10421,6 +10492,9 @@ docs: '' "docs": "Ignored events bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIgnoredEventBulkRetries": { "auth": true, @@ -10493,6 +10567,9 @@ docs: '' "docs": "List of ignored events bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIgnoredEventBulkRetry": { "auth": true, @@ -10539,6 +10616,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10682,6 +10762,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get ignored events bulk retries request: name: GetIgnoredEventBulkRetriesRequest @@ -10737,6 +10819,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an ignored events bulk retry request: name: CreateIgnoredEventBulkRetryRequest @@ -10777,6 +10861,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate an ignored events bulk retry plan response: docs: Ignored events bulk retry plan @@ -10795,6 +10881,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an ignored events bulk retry @@ -10829,6 +10917,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel an ignored events bulk retry @@ -10921,6 +11011,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createRequestBulkRetry": { "auth": true, @@ -10977,6 +11070,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateRequestBulkRetryPlan": { "auth": true, @@ -11004,6 +11100,9 @@ docs: '' "docs": "Requests bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestBulkRetries": { "auth": true, @@ -11076,6 +11175,9 @@ docs: '' "docs": "List of request bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestBulkRetry": { "auth": true, @@ -11122,6 +11224,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11809,6 +11914,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get request bulk retries request: name: GetRequestBulkRetriesRequest @@ -11864,6 +11971,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a requests bulk retry request: name: CreateRequestBulkRetryRequest @@ -11906,6 +12015,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate a requests bulk retry plan response: docs: Requests bulk retry plan @@ -11924,6 +12035,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a requests bulk retry @@ -11958,6 +12071,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel a requests bulk retry @@ -12098,6 +12213,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createConnection": { "auth": true, @@ -12256,6 +12374,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConnection": { "auth": true, @@ -12350,6 +12471,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConnections": { "auth": true, @@ -12461,6 +12585,9 @@ docs: '' "docs": "List of connections", "type": "root.ConnectionPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "pauseConnection": { "auth": true, @@ -12555,6 +12682,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveConnection": { "auth": true, @@ -12649,6 +12779,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unpauseConnection": { "auth": true, @@ -12743,6 +12876,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateConnection": { "auth": true, @@ -12878,6 +13014,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertConnection": { "auth": true, @@ -13036,6 +13175,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13403,6 +13545,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get connections request: name: GetConnectionsRequest @@ -13484,6 +13628,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a connection request: name: CreateConnectionRequest @@ -13592,6 +13738,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a connection request: name: UpsertConnectionRequest @@ -13700,6 +13848,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single connection @@ -13769,6 +13919,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a connection @@ -13865,6 +14017,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a connection @@ -13934,6 +14088,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a connection @@ -14003,6 +14159,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Pause a connection @@ -14072,6 +14230,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unpause a connection @@ -14195,6 +14355,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createDestination": { "auth": true, @@ -14270,6 +14433,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDestination": { "auth": true, @@ -14310,6 +14476,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDestinations": { "auth": true, @@ -14379,6 +14548,9 @@ docs: >- "docs": "List of destinations", "type": "root.DestinationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveDestination": { "auth": true, @@ -14419,6 +14591,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateDestination": { "auth": true, @@ -14505,6 +14680,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertDestination": { "auth": true, @@ -14580,6 +14758,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14676,6 +14857,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get destinations request: name: GetDestinationsRequest @@ -14728,6 +14911,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a destination request: name: CreateDestinationRequest @@ -14780,6 +14965,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a destination request: name: UpsertDestinationRequest @@ -14832,6 +15019,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a destination @@ -14861,6 +15050,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a destination @@ -14921,6 +15112,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a destination @@ -14950,6 +15143,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a destination @@ -15046,6 +15241,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A single event", "type": "root.Event", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEvents": { "auth": true, @@ -15161,6 +15359,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "List of events", "type": "root.EventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestRawBody": { "auth": true, @@ -15191,6 +15392,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A request raw body data", "type": "root.RawBody", }, + "source": { + "openapi": "../openapi.yml", + }, }, "muteEvent": { "auth": true, @@ -15246,6 +15450,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A single event", "type": "root.Event", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retryEvent": { "auth": true, @@ -15325,6 +15532,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "Retried event with event attempt", "type": "root.RetriedEvent", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15368,6 +15578,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get events request: name: GetEventsRequest @@ -15458,6 +15670,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an event @@ -15501,6 +15715,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a event raw body data @@ -15520,6 +15736,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retry an event @@ -15585,6 +15803,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Mute an event @@ -15673,6 +15893,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "Attach operation success status", "type": "root.AttachedIntegrationToSource", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createIntegration": { "auth": true, @@ -15751,6 +15974,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteIntegration": { "auth": true, @@ -15781,6 +16007,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "An object with deleted integration id", "type": "root.DeletedIntegration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachIntegrationToSource": { "auth": true, @@ -15812,6 +16041,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "Detach operation success status", "type": "root.DetachedIntegrationFromSource", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIntegration": { "auth": true, @@ -15859,6 +16091,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIntegrations": { "auth": true, @@ -15920,6 +16155,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "List of integrations", "type": "root.IntegrationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIntegration": { "auth": true, @@ -15993,6 +16231,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16043,6 +16284,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get integrations request: name: GetIntegrationsRequest @@ -16086,6 +16329,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an integration request: name: CreateIntegrationRequest @@ -16143,6 +16388,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an integration @@ -16176,6 +16423,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update an integration @@ -16229,6 +16478,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete an integration @@ -16248,6 +16499,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string source_id: string @@ -16270,6 +16523,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string source_id: string @@ -16402,6 +16657,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteIssueTrigger": { "auth": true, @@ -16432,6 +16690,9 @@ types: "docs": "An object with deleted issue trigger's id", "type": "root.DeletedIssueTriggerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "disableIssueTrigger": { "auth": true, @@ -16478,6 +16739,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "enableIssueTrigger": { "auth": true, @@ -16524,6 +16788,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueTrigger": { "auth": true, @@ -16570,6 +16837,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueTriggers": { "auth": true, @@ -16631,6 +16901,9 @@ types: "docs": "List of issue triggers", "type": "root.IssueTriggerPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIssueTrigger": { "auth": true, @@ -16708,6 +16981,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertIssueTrigger": { "auth": true, @@ -16779,6 +17055,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16886,6 +17165,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get issue triggers request: name: GetIssueTriggersRequest @@ -16931,6 +17212,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an issue trigger request: name: CreateIssueTriggerRequest @@ -16977,6 +17260,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create or update an issue trigger request: name: UpsertIssueTriggerRequest @@ -17024,6 +17309,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single issue trigger @@ -17056,6 +17343,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update an issue trigger @@ -17107,6 +17396,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete an issue trigger @@ -17126,6 +17417,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Disable an issue trigger @@ -17158,6 +17451,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Enable an issue trigger @@ -17256,6 +17551,9 @@ docs: >- "docs": "Dismissed issue", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssue": { "auth": true, @@ -17356,6 +17654,9 @@ docs: >- "docs": "A single issue", "type": "root.IssueWithData", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueCount": { "auth": true, @@ -17413,6 +17714,9 @@ docs: >- "docs": "Issue count", "type": "root.IssueCount", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssues": { "auth": true, @@ -17523,6 +17827,9 @@ docs: >- "docs": "List of issues", "type": "root.IssueWithDataPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIssue": { "auth": true, @@ -17593,6 +17900,9 @@ docs: >- "docs": "Updated issue", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17739,6 +18049,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get issues request: name: GetIssuesRequest @@ -17822,6 +18134,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get the number of issues request: name: GetIssueCountRequest @@ -17864,6 +18178,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single issue @@ -17942,6 +18258,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update issue @@ -17991,6 +18309,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Dismiss an issue @@ -18091,6 +18411,9 @@ docs: >- "docs": "Toggle operation status response", "type": "root.ToggleWebhookNotifications", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18109,6 +18432,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Toggle webhook notifications for the workspace request: name: ToggleWebhookNotificationsRequest @@ -18205,6 +18530,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "A single request", "type": "root.Request", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestEvents": { "auth": true, @@ -18327,6 +18655,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of events", "type": "root.EventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestIgnoredEvents": { "auth": true, @@ -18392,6 +18723,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of ignored events", "type": "root.IgnoredEventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestRawBody": { "auth": true, @@ -18422,6 +18756,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "A request raw body data", "type": "root.RawBody", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequests": { "auth": true, @@ -18511,6 +18848,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of requests", "type": "root.RequestPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retryRequest": { "auth": true, @@ -18612,6 +18952,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "Retry request operation result", "type": "root.RetryRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18708,6 +19051,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get requests request: name: GetRequestsRequest @@ -18778,6 +19123,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a request @@ -18819,6 +19166,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a request raw body data @@ -18838,6 +19187,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retry a request @@ -18916,6 +19267,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get request events @@ -19011,6 +19364,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get request ignored events @@ -19112,6 +19467,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createRuleset": { "auth": true, @@ -19177,6 +19535,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRuleset": { "auth": true, @@ -19219,6 +19580,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRulesets": { "auth": true, @@ -19285,6 +19649,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "List of rulesets", "type": "root.RulesetPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveRuleset": { "auth": true, @@ -19327,6 +19694,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateRuleset": { "auth": true, @@ -19401,6 +19771,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertRuleset": { "auth": true, @@ -19466,6 +19839,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19505,6 +19881,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get rulesets request: name: GetRulesetsRequest @@ -19552,6 +19930,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a ruleset request: name: CreateRulesetRequest @@ -19594,6 +19974,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a ruleset request: name: UpsertRulesetRequest @@ -19636,6 +20018,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a ruleset @@ -19664,6 +20048,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a ruleset @@ -19713,6 +20099,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a ruleset @@ -19741,6 +20129,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a ruleset @@ -19826,6 +20216,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createSource": { "auth": true, @@ -19889,6 +20282,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSource": { "auth": true, @@ -19934,6 +20330,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSources": { "auth": true, @@ -20004,6 +20403,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "List of sources", "type": "root.SourcePaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveSource": { "auth": true, @@ -20049,6 +20451,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSource": { "auth": true, @@ -20121,6 +20526,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertSource": { "auth": true, @@ -20184,6 +20592,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20223,6 +20634,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get sources request: name: GetSourcesRequest @@ -20275,6 +20688,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a source request: name: CreateSourceRequest @@ -20317,6 +20732,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a source request: name: UpsertSourceRequest @@ -20359,6 +20776,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a source @@ -20391,6 +20810,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a source @@ -20440,6 +20861,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a source @@ -20472,6 +20895,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a source @@ -20583,6 +21008,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformation": { "auth": true, @@ -20623,6 +21051,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformationExecution": { "auth": true, @@ -20686,6 +21117,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation execution", "type": "root.TransformationExecution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformationExecutions": { "auth": true, @@ -20770,6 +21204,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "List of transformation executions", "type": "root.TransformationExecutionPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformations": { "auth": true, @@ -20829,6 +21266,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "List of transformations", "type": "root.TransformationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "testTransformation": { "auth": true, @@ -20901,6 +21341,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "Transformation run output", "type": "root.TransformationExecutorOutput", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTransformation": { "auth": true, @@ -20972,6 +21415,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertTransformation": { "auth": true, @@ -21039,6 +21485,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21272,6 +21721,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get transformations request: name: GetTransformationsRequest @@ -21315,6 +21766,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a transformation request: name: CreateTransformationRequest @@ -21362,6 +21815,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a transformation request: name: UpsertTransformationRequest @@ -21409,6 +21864,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a transformation @@ -21437,6 +21894,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a transformation @@ -21487,6 +21946,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Test a transformation code request: name: TestTransformationRequest @@ -21538,6 +21999,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get transformation executions @@ -21598,6 +22061,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string execution_id: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/humanloop.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/humanloop.json index fa83b41e7da..5f1793e25b7 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/humanloop.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/humanloop.json @@ -7071,6 +7071,9 @@ deployed to the default Environment will be used. "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -7196,6 +7199,9 @@ If `"add"` or `"remove"`, one of the `version_id` or `environment` query paramet "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -7220,6 +7226,9 @@ If `"add"` or `"remove"`, one of the `version_id` or `environment` query paramet "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -7309,6 +7318,9 @@ Set the deployed Version for the specified Environment.", "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -7404,6 +7416,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -7489,6 +7504,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.PaginatedDataDatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listdatapoints": { "auth": true, @@ -7561,6 +7579,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.PaginatedDataDatapointResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -7637,6 +7658,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.ListDatasets", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -7722,6 +7746,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7740,6 +7767,8 @@ service: method: GET auth: true docs: Get a list of Datasets. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: DatasetsListRequest @@ -7840,6 +7869,8 @@ service: that already exists, it will be ignored. + source: + openapi: ../openapi.yml display-name: Create Dataset request: name: DatasetRequest @@ -7943,6 +7974,8 @@ service: `version_id` or `environment` to target a specific version of the Dataset. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8004,6 +8037,8 @@ service: method: DELETE auth: true docs: Delete the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8019,6 +8054,8 @@ service: method: PATCH auth: true docs: Update the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8074,6 +8111,8 @@ service: method: GET auth: true docs: List all Datapoints for the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8120,6 +8159,8 @@ service: method: GET auth: true docs: Get a list of the versions for a Dataset. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8174,6 +8215,8 @@ service: method: POST auth: true docs: Commit the Dataset Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8233,6 +8276,8 @@ service: Deploy Dataset to Environment. Set the deployed Version for the specified Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8491,6 +8536,9 @@ and check its status.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -8518,6 +8566,9 @@ will not be deleted.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -8639,6 +8690,9 @@ Retrieve the Evaluation with the given ID.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getstats": { "auth": true, @@ -8704,6 +8758,9 @@ This includes the number of generated Logs for every evaluatee and Evaluator met "docs": "Successful Response", "type": "root.EvaluationStats", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -8822,6 +8879,9 @@ Retrieve a list of Evaluations that evaluate versions of the specified File.", "docs": "Successful Response", "type": "root.PaginatedDataEvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -8964,6 +9024,9 @@ Update the setup of an Evaluation by specifying the Dataset, Evaluatees, and Eva "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updatestatus": { "auth": true, @@ -9102,6 +9165,9 @@ as completed.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9125,6 +9191,8 @@ service: Retrieve a list of Evaluations that evaluate versions of the specified File. + source: + openapi: ../openapi.yml display-name: List Evaluations for File request: name: EvaluationsListRequest @@ -9222,6 +9290,8 @@ service: Evaluation and check its status. + source: + openapi: ../openapi.yml display-name: Create Evaluation request: body: @@ -9313,6 +9383,8 @@ service: Get an Evaluation. Retrieve the Evaluation with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9403,6 +9475,8 @@ service: Evaluation will not be deleted. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9423,6 +9497,8 @@ service: Update the setup of an Evaluation by specifying the Dataset, Evaluatees, and Evaluators. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9524,6 +9600,8 @@ service: uses external or human evaluators as completed. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9626,6 +9704,8 @@ service: (such as the mean and percentiles for numeric Evaluators for every evaluatee). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9780,6 +9860,9 @@ docs: >+ "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -9878,6 +9961,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "debug": { "auth": true, @@ -10137,6 +10223,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -10161,6 +10250,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -10247,6 +10339,9 @@ will be used for calls made to the Evaluator in this Environment.", "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -10329,6 +10424,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -10418,6 +10516,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.ListEvaluators", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listdefault": { "auth": true, @@ -10477,6 +10578,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -10560,6 +10664,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.ListEvaluators", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -10645,6 +10752,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10707,6 +10817,8 @@ service: method: GET auth: true docs: Get a list of Evaluators. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: EvaluatorsListRequest @@ -10786,6 +10898,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Evaluator request: name: EvaluatorRequest @@ -10856,6 +10970,8 @@ service: `version_id` or `environment` to target a specific version of the Evaluator. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10911,6 +11027,8 @@ service: method: DELETE auth: true docs: Delete the Evaluator with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10926,6 +11044,8 @@ service: method: PATCH auth: true docs: Update the Evaluator with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10984,6 +11104,8 @@ service: method: GET auth: true docs: Get a list of all the versions of an Evaluator. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -11051,6 +11173,8 @@ service: Version will be used for calls made to the Evaluator in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -11110,6 +11234,8 @@ service: method: POST auth: true docs: Commit the Evaluator Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -11166,6 +11292,8 @@ service: method: GET auth: true docs: Get a list of default evaluators for the organization. + source: + openapi: ../openapi.yml display-name: List Default Evaluators response: docs: Successful Response @@ -11206,6 +11334,8 @@ service: method: POST auth: true docs: Run a synchronous evaluator execution on a collection of datapoints. + source: + openapi: ../openapi.yml display-name: Debug request: name: RunSyncEvaluationRequest @@ -11470,6 +11600,9 @@ You can manually create Logs through the API. }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -11630,6 +11763,9 @@ You can manually create Logs through the API. "docs": "Successful Response", "type": "root.PromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLogsForFile": { "auth": true, @@ -11763,6 +11899,9 @@ You can manually create Logs through the API. "docs": "Successful Response", "type": "root.PaginatedDataPromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11781,6 +11920,8 @@ service: method: GET auth: true docs: List Logs. + source: + openapi: ../openapi.yml display-name: List request: name: ListLogsForFileLogsGetRequest @@ -11889,6 +12030,8 @@ service: method: DELETE auth: true docs: Delete Logs with the given IDs. + source: + openapi: ../openapi.yml display-name: Delete request: name: LogsDeleteRequest @@ -11904,6 +12047,8 @@ service: method: GET auth: true docs: Retrieve the Log with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -12329,6 +12474,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "PromptsCallResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "commit": { "auth": true, @@ -12441,6 +12589,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -12627,6 +12778,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -12651,6 +12805,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -12769,6 +12926,9 @@ will be used for calls made to the Prompt in this Environment.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -12883,6 +13043,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -12998,6 +13161,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.ListPrompts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -13107,6 +13273,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.ListPrompts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "log": { "auth": true, @@ -13281,6 +13450,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.CreatePromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -13398,6 +13570,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateEvaluators": { "auth": true, @@ -13503,6 +13678,9 @@ within the Prompt for monitoring purposes.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13603,6 +13781,8 @@ service: method: GET auth: true docs: Get a list of Prompts. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: PromptsListRequest @@ -13700,6 +13880,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Prompt request: name: PromptRequest @@ -13867,6 +14049,8 @@ service: `version_id` or `environment` to target a specific version of the Prompt. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13945,6 +14129,8 @@ service: method: DELETE auth: true docs: Delete the Prompt with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13960,6 +14146,8 @@ service: method: PATCH auth: true docs: Update the Prompt with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14041,6 +14229,8 @@ service: method: GET auth: true docs: Get a list of all the versions of a Prompt. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14127,6 +14317,8 @@ service: Version will be used for calls made to the Prompt in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14209,6 +14401,8 @@ service: method: POST auth: true docs: Commit the Prompt Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14308,6 +14502,8 @@ service: in the case where you are storing or deriving your Prompt details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14487,6 +14683,8 @@ service: in the case where you are storing or deriving your Prompt details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14718,6 +14916,8 @@ service: An activated Evaluator will automatically be run on all new Logs within the Prompt for monitoring purposes. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update Evaluators @@ -14952,6 +15152,9 @@ Log is in, nested within the evaluated Log. "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -15050,6 +15253,9 @@ Log is in, nested within the evaluated Log. "docs": "Successful Response", "type": "root.SessionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -15126,6 +15332,9 @@ Log is in, nested within the evaluated Log. "docs": "Successful Response", "type": "root.PaginatedDataSessionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15144,6 +15353,8 @@ service: method: GET auth: true docs: Retrieve the Session with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15214,6 +15425,8 @@ service: method: DELETE auth: true docs: Delete the Session with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15229,6 +15442,8 @@ service: method: GET auth: true docs: Get a list of Sessions. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: SessionsListRequest @@ -15402,6 +15617,9 @@ docs: >+ "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -15514,6 +15732,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -15538,6 +15759,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -15632,6 +15856,9 @@ will be used for calls made to the Tool in this Environment.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -15722,6 +15949,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -15816,6 +16046,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ListTools", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTemplates": { "auth": true, @@ -15859,6 +16092,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -15947,6 +16183,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ListTools", }, + "source": { + "openapi": "../openapi.yml", + }, }, "log": { "auth": true, @@ -16085,6 +16324,9 @@ in the case where you are storing or deriving your Tool details in code.", "docs": "Successful Response", "type": "root.CreateToolLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -16178,6 +16420,9 @@ in the case where you are storing or deriving your Tool details in code.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateEvaluators": { "auth": true, @@ -16259,6 +16504,9 @@ within the Tool for monitoring purposes.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16277,6 +16525,8 @@ service: method: GET auth: true docs: Get a list of Tools. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: ToolsListRequest @@ -16360,6 +16610,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Tool request: name: ToolRequest @@ -16444,6 +16696,8 @@ service: parameters `version_id` or `environment` to target a specific version of the Tool. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16505,6 +16759,8 @@ service: method: DELETE auth: true docs: Delete the Tool with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16520,6 +16776,8 @@ service: method: PATCH auth: true docs: Update the Tool with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16584,6 +16842,8 @@ service: method: GET auth: true docs: Get a list of all the versions of a Tool. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16655,6 +16915,8 @@ service: Version will be used for calls made to the Tool in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16720,6 +16982,8 @@ service: method: POST auth: true docs: Commit the Tool Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16801,6 +17065,8 @@ service: This is helpful in the case where you are storing or deriving your Tool details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16919,6 +17185,8 @@ service: An activated Evaluator will automatically be run on all new Logs within the Tool for monitoring purposes. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update Evaluators @@ -16974,6 +17242,8 @@ service: path: /tools/templates method: GET auth: true + source: + openapi: ../openapi.yml display-name: List Templates request: name: ListTemplatesToolsTemplatesGetRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hume.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hume.json index 4f2c9d4a182..27e80d62e42 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hume.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/hume.json @@ -57,6 +57,9 @@ "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "List Jobs": { "auth": true, @@ -130,6 +133,9 @@ "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "Start Job": { "auth": true, @@ -179,6 +185,9 @@ If you wish to supply more than 100 URLs, consider providing them as an archive "docs": "", "type": "JobId", }, + "source": { + "openapi": "../openapi.yaml", + }, }, }, "source": { @@ -1254,6 +1263,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: GET auth: true docs: Sort and filter jobs. + source: + openapi: ../openapi.yaml display-name: List Jobs request: name: ListJobsRequest @@ -1305,6 +1316,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: POST auth: true docs: Start a new batch job. + source: + openapi: ../openapi.yaml display-name: Start Job request: name: BaseRequest @@ -1349,6 +1362,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: GET auth: true docs: Get the JSON predictions of a completed job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Predictions @@ -2220,6 +2235,9 @@ types: "docs": "", "type": "root.JobRequest", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "get_job_artifacts": { "auth": true, @@ -2235,6 +2253,9 @@ types: "docs": "", "type": "file", }, + "source": { + "openapi": "../openapi.yaml", + }, }, }, "source": { @@ -2251,6 +2272,8 @@ types: method: GET auth: true docs: Get the artifacts ZIP of a completed job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Artifacts @@ -2262,6 +2285,8 @@ types: method: GET auth: true docs: Get the request details and state of a given job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Details diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/inline-schema-reference.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/inline-schema-reference.json index a394e97e22f..cd447628f4a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/inline-schema-reference.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/inline-schema-reference.json @@ -29,6 +29,9 @@ "docs": "Successful response", "type": "GetExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -130,6 +133,8 @@ service: path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/intercom.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/intercom.json index 13878ced5e3..03f72f8fd70 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/intercom.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/intercom.json @@ -13515,6 +13515,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listActivityLogs": { "auth": true, @@ -13593,6 +13596,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "root.ActivityLogList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAdmins": { "auth": true, @@ -13634,6 +13640,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "root.Admins", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveAdmin": { "auth": true, @@ -13688,6 +13697,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Admin found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setAwayAdmin": { "auth": true, @@ -13834,6 +13846,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13924,6 +13939,8 @@ service: site, and you call the `/me` endpoint to identify the logged-in user, you should not accept any sign-ins from users with unverified email addresses as it poses a potential impersonation security risk. + source: + openapi: ../openapi.yml display-name: Identify an admin response: docs: Successful response @@ -13960,6 +13977,8 @@ service: method: PUT auth: true docs: You can set an Admin as away for the Inbox. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -14064,6 +14083,8 @@ service: method: GET auth: true docs: You can get a log of activities by all admins in an app. + source: + openapi: ../openapi.yml display-name: List all activity logs request: name: ListActivityLogsRequest @@ -14125,6 +14146,8 @@ service: method: GET auth: true docs: You can fetch a list of admins for a given workspace. + source: + openapi: ../openapi.yml display-name: List all admins response: docs: Successful response @@ -14153,6 +14176,8 @@ service: method: GET auth: true docs: You can retrieve the details of a single admin. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -15365,6 +15390,9 @@ imports: "docs": "article created", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteArticle": { "auth": true, @@ -15402,6 +15430,9 @@ imports: "docs": "successful", "type": "root.DeletedArticleObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listArticles": { "auth": true, @@ -15465,6 +15496,9 @@ imports: "docs": "successful", "type": "root.Articles", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveArticle": { "auth": true, @@ -15936,6 +15970,9 @@ imports: "docs": "Article found", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchArticles": { "auth": true, @@ -16023,6 +16060,9 @@ imports: "docs": "Search successful", "type": "ArticleSearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateArticle": { "auth": true, @@ -16955,6 +16995,9 @@ imports: "docs": "successful", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17194,6 +17237,8 @@ service: > Articles will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated articles first. + source: + openapi: ../openapi.yml display-name: List all articles response: docs: successful @@ -17240,6 +17285,8 @@ service: docs: >- You can create a new article by making a POST request to `https://api.intercom.io/articles`. + source: + openapi: ../openapi.yml display-name: Create an article request: body: @@ -18082,6 +18129,8 @@ service: docs: >- You can fetch the details of a single article by making a GET request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -18504,6 +18553,8 @@ service: docs: >- You can update the details of a single article by making a PUT request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -19339,6 +19390,8 @@ service: docs: >- You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -19366,6 +19419,8 @@ service: docs: >- You can search for articles by making a GET request to `https://api.intercom.io/articles/search`. + source: + openapi: ../openapi.yml display-name: Search for articles request: name: SearchArticlesRequest @@ -19735,6 +19790,9 @@ types: "docs": "Successful", "type": "root.CompanyAttachedContacts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListAttachedSegmentsForCompanies": { "auth": true, @@ -19781,6 +19839,9 @@ types: "docs": "Successful", "type": "root.CompanyAttachedSegments", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveACompanyById": { "auth": true, @@ -19857,6 +19918,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateCompany": { "auth": true, @@ -19938,6 +20002,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachContactToACompany": { "auth": true, @@ -20144,6 +20211,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createOrUpdateCompany": { "auth": true, @@ -20231,6 +20301,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteCompany": { "auth": true, @@ -20268,6 +20341,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "root.DeletedCompanyObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachContactFromACompany": { "auth": true, @@ -20349,6 +20425,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllCompanies": { "auth": true, @@ -20455,6 +20534,9 @@ When using the Companies endpoint and the pages object to iterate through the re "docs": "Successful", "type": "root.Companies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveCompany": { "auth": true, @@ -20579,6 +20661,9 @@ You can fetch all companies and filter by `segment_id` or `tag_id` as a query pa "docs": "Successful", "type": "root.Companies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "scrollOverAllCompanies": { "auth": true, @@ -20681,6 +20766,9 @@ You can fetch all companies and filter by `segment_id` or `tag_id` as a query pa "docs": "Successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20843,6 +20931,8 @@ service: `https://api.intercom.io/companies?tag_id={tag_id}` `https://api.intercom.io/companies?segment_id={segment_id}` + source: + openapi: ../openapi.yml display-name: Retrieve companies request: name: RetrieveCompanyRequest @@ -20941,6 +21031,8 @@ service: {% admonition type="attention" name="Using `company_id`" %} You can set a unique `company_id` value when creating a company. However, it is not possible to update `company_id`. Be sure to set a unique value once upon creation of the company. {% /admonition %} + source: + openapi: ../openapi.yml display-name: Create or Update a company request: body: @@ -20997,6 +21089,8 @@ service: method: GET auth: true docs: You can fetch a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21056,6 +21150,8 @@ service: {% admonition type="attention" name="Using `company_id`" %} When updating a company it is not possible to update `company_id`. This can only be set once upon creation of the company. {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21110,6 +21206,8 @@ service: method: DELETE auth: true docs: You can delete a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21135,6 +21233,8 @@ service: method: GET auth: true docs: You can fetch a list of all contacts that belong to a company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21223,6 +21323,8 @@ service: method: GET auth: true docs: You can fetch a list of all segments that belong to a company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21273,6 +21375,8 @@ service: You can use pagination to limit the number of results returned. The default is `20` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all companies request: name: ListAllCompaniesRequest @@ -21367,6 +21471,8 @@ service: "Request failed due to an internal network error. Please restart the scroll operation." If this happens, you will need to restart your scroll query: It is not possible to continue from a specific point when using scroll. {% /admonition %} + source: + openapi: ../openapi.yml display-name: Scroll over all companies request: name: ScrollOverAllCompaniesRequest @@ -21430,6 +21536,8 @@ service: method: POST auth: true docs: You can attach a company to a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21574,6 +21682,8 @@ service: method: DELETE auth: true docs: You can detach a company from a single contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -21776,6 +21886,9 @@ types: "docs": "successful", "type": "root.ContactArchived", }, + "source": { + "openapi": "../openapi.yml", + }, }, "CreateContact": { "auth": true, @@ -21897,6 +22010,9 @@ types: "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DeleteContact": { "auth": true, @@ -21934,6 +22050,9 @@ types: "docs": "successful", "type": "root.ContactDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListContacts": { "auth": true, @@ -22039,6 +22158,9 @@ types: "docs": "successful", "type": "root.ContactList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "MergeContact": { "auth": true, @@ -22175,6 +22297,9 @@ types: "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "SearchContacts": { "auth": true, @@ -22396,6 +22521,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ShowContact": { "auth": true, @@ -22519,6 +22647,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UnarchiveContact": { "auth": true, @@ -22553,6 +22684,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactUnarchived", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateContact": { "auth": true, @@ -22734,6 +22868,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listCompaniesForAContact": { "auth": true, @@ -22806,6 +22943,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactAttachedCompanies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSegmentsForAContact": { "auth": true, @@ -22852,6 +22992,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.Segments", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSubscriptionsForAContact": { "auth": true, @@ -22938,6 +23081,9 @@ The data property will show a combined list of: "docs": "Successful", "type": "root.SubscriptionTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTagsForAContact": { "auth": true, @@ -22984,6 +23130,9 @@ The data property will show a combined list of: "docs": "successful", "type": "root.Tags", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -23212,6 +23361,8 @@ service: method: GET auth: true docs: You can fetch a list of companies that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -23266,6 +23417,8 @@ service: method: GET auth: true docs: You can fetch a list of segments that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -23309,6 +23462,8 @@ service: 1.Opt-out subscription types that the user has opted-out from. 2.Opt-in subscription types that the user has opted-in to receiving. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -23363,6 +23518,8 @@ service: docs: >- You can fetch a list of all tags that are attached to a specific contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -23393,6 +23550,8 @@ service: method: GET auth: true docs: You can fetch the details of a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -23488,6 +23647,8 @@ service: method: PUT auth: true docs: You can update an existing contact (ie. user or lead). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -23628,6 +23789,8 @@ service: method: DELETE auth: true docs: You can delete a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -23655,6 +23818,8 @@ service: docs: >- You can merge a contact with a `role` of `lead` into a contact with a `role` of `user`. + source: + openapi: ../openapi.yml display-name: Merge a lead and a user request: name: MergeContactsRequest @@ -23977,6 +24142,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search contacts request: body: @@ -24078,6 +24245,8 @@ service: You can use pagination to limit the number of results returned. The default is `50` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all contacts response: docs: successful @@ -24159,6 +24328,8 @@ service: method: POST auth: true docs: You can create a new contact (ie. user or lead). + source: + openapi: ../openapi.yml display-name: Create contact request: body: root.CreateContactRequestTwo @@ -24253,6 +24424,8 @@ service: method: POST auth: true docs: You can archive a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -24276,6 +24449,8 @@ service: method: POST auth: true docs: You can unarchive a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -24872,6 +25047,9 @@ If you add a contact via the email parameter and there is no user/lead found on "docs": "Attach a contact to a conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "autoAssignConversation": { "auth": true, @@ -25092,6 +25270,9 @@ It is not possible to use this endpoint with Workflows. "docs": "Assign a conversation using assignment rules", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "convertConversationToTicket": { "auth": true, @@ -25380,6 +25561,9 @@ It is not possible to use this endpoint with Workflows. "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createConversation": { "auth": true, @@ -25466,6 +25650,9 @@ This will return the Message model that has been created. "docs": "conversation created", "type": "messages.Message", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachContactFromConversation": { "auth": true, @@ -26208,6 +26395,9 @@ If you add a contact via the email parameter and there is no user/lead found on "docs": "Detach a contact from a group conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listConversations": { "auth": true, @@ -26274,6 +26464,9 @@ You can optionally request the result page size and the cursor to start after to "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "manageConversation": { "auth": true, @@ -28073,6 +28266,9 @@ You can optionally request the result page size and the cursor to start after to "docs": "Assign a conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "redactConversation": { "auth": true, @@ -28483,6 +28679,9 @@ If you are redacting a conversation part, it must have a `body`. If you are reda "docs": "Redact a conversation part", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "replyConversation": { "auth": true, @@ -29888,6 +30087,9 @@ If you are redacting a conversation part, it must have a `body`. If you are reda "docs": "User last conversation reply", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveConversation": { "auth": true, @@ -30106,6 +30308,9 @@ For AI agent conversation metadata, please note that you need to have the agent "docs": "conversation found", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchConversations": { "auth": true, @@ -30375,6 +30580,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ConversationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateConversation": { "auth": true, @@ -30879,6 +31087,9 @@ If you want to reply to a coveration or take an action such as assign, unassign, "docs": "conversation found", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -31154,6 +31365,8 @@ service: You can use pagination to limit the number of results returned. The default is `20` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all conversations request: name: ListConversationsRequest @@ -31215,6 +31428,8 @@ service: This will return the Message model that has been created. + source: + openapi: ../openapi.yml display-name: Creates a conversation request: name: CreateConversationRequest @@ -31288,6 +31503,8 @@ service: For AI agent conversation metadata, please note that you need to have the agent enabled in your workspace, which is a [paid feature](https://www.intercom.com/help/en/articles/8205718-fin-resolutions#h_97f8c2e671). + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -31455,6 +31672,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -32150,6 +32369,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search conversations request: body: @@ -32278,6 +32499,8 @@ service: docs: >- You can reply to a conversation with a message from an admin or on behalf of a contact, or with a note for admins. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -33358,6 +33581,8 @@ service: - Snooze a conversation to reopen on a future date - Open a conversation which is `snoozed` or `closed` - Assign a conversation to an admin and/or team. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -34728,6 +34953,8 @@ service: It is not possible to use this endpoint with Workflows. {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -34903,6 +35130,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -35205,6 +35434,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -35768,6 +35999,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml display-name: Redact a conversation part request: body: root.RedactConversationRequest @@ -36074,6 +36307,8 @@ service: method: POST auth: true docs: You can convert a conversation to a ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -36782,6 +37017,9 @@ types: "docs": "Successful", "type": "DataAttribute", }, + "source": { + "openapi": "../openapi.yml", + }, }, "lisDataAttributes": { "auth": true, @@ -37196,6 +37434,9 @@ types: "docs": "Successful response", "type": "root.DataAttributeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateDataAttribute": { "auth": true, @@ -37402,6 +37643,9 @@ You can update a data attribute. "docs": "Successful", "type": "DataAttribute", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37670,6 +37914,8 @@ service: docs: >- You can fetch a list of all data attributes belonging to a workspace for contacts, companies or conversations. + source: + openapi: ../openapi.yml display-name: List all data attributes request: name: LisDataAttributesRequest @@ -38031,6 +38277,8 @@ service: method: POST auth: true docs: You can create a data attributes for a `contact` or a `company`. + source: + openapi: ../openapi.yml display-name: Create a data attribute request: name: CreateDataAttributeRequest @@ -38240,6 +38488,8 @@ service: > It is currently a dangerous action to execute changing a data attribute's type via the API. You will need to update the type via the UI instead. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -38465,6 +38715,9 @@ Duplicated events are responded to using the normal `202 Accepted` code - an err "body": "root.CreateDataEventRequestTwo", "content-type": "application/json", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dataEventSummaries": { "auth": true, @@ -38501,6 +38754,9 @@ Duplicated events are responded to using the normal `202 Accepted` code - an err "name": "CreateDataEventSummariesRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "lisDataEvents": { "auth": true, @@ -38544,6 +38800,9 @@ You can optionally define the result page size as well with the `per_page` param "docs": "Successful response", "type": "root.DataEventSummary", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38789,6 +39048,8 @@ service: You can optionally define the result page size as well with the `per_page` parameter. + source: + openapi: ../openapi.yml display-name: List all data events request: name: LisDataEventsRequest @@ -38942,6 +39203,8 @@ service: - Server errors will return a `500` response code and may contain an error message in the body. + source: + openapi: ../openapi.yml display-name: Submit a data event request: body: root.CreateDataEventRequestTwo @@ -38957,6 +39220,8 @@ service: number of times an event has occurred, the first time it occurred and the last time it occurred. + source: + openapi: ../openapi.yml display-name: Create event summaries request: name: CreateDataEventSummariesRequest @@ -39026,6 +39291,9 @@ docs: Everything about your Data Events "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createDataExport": { "auth": true, @@ -39088,6 +39356,9 @@ The only parameters you need to provide are the range of dates that you want exp "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, "downloadDataExport": { "auth": true, @@ -39116,6 +39387,9 @@ Your exported message data will be streamed continuously back down to you in a g "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDataExport": { "auth": true, @@ -39155,6 +39429,9 @@ Your exported message data will be streamed continuously back down to you in a g "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39247,6 +39524,8 @@ Your exported message data will be streamed continuously back down to you in a g > Requesting data for 2018-06-01 until 2018-06-30 will get all data for those days including those specified - e.g. 2018-06-01 00:00:00 until 2018-06-30 23:59:99. + source: + openapi: ../openapi.yml display-name: Create content data export request: name: CreateDataExportsRequest @@ -39296,6 +39575,8 @@ Your exported message data will be streamed continuously back down to you in a g download from the provided URL) will have an expiry limit of two days from when the export ob completed. After this, the data will no longer be available. + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -39319,6 +39600,8 @@ Your exported message data will be streamed continuously back down to you in a g method: POST auth: true docs: You can cancel your job + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -39357,6 +39640,8 @@ Your exported message data will be streamed continuously back down to you in a g > You will have to specify the header Accept: `application/octet-stream` when hitting this endpoint. + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -39881,6 +40166,9 @@ types: "docs": "collection created", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteCollection": { "auth": true, @@ -39918,6 +40206,9 @@ types: "docs": "successful", "type": "root.DeletedCollectionObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllCollections": { "auth": true, @@ -39987,6 +40278,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Successful", "type": "root.Collections", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listHelpCenters": { "auth": true, @@ -40023,6 +40317,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Help Centers found", "type": "HelpCenterList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveCollection": { "auth": true, @@ -40257,6 +40554,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Collection found", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveHelpCenter": { "auth": true, @@ -40298,6 +40598,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Collection found", "type": "HelpCenter", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateCollection": { "auth": true, @@ -40773,6 +41076,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "successful", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40911,6 +41217,8 @@ service: Collections will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated collections first. + source: + openapi: ../openapi.yml display-name: List all collections response: docs: Successful @@ -40963,6 +41271,8 @@ service: docs: >- You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections.` + source: + openapi: ../openapi.yml display-name: Create a collection request: name: CreateCollectionRequest @@ -41340,6 +41650,8 @@ service: docs: >- You can fetch the details of a single collection by making a GET request to `https://api.intercom.io/help_center/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41526,6 +41838,8 @@ service: docs: >- You can update the details of a single collection by making a PUT request to `https://api.intercom.io/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41905,6 +42219,8 @@ service: docs: >- You can delete a single collection by making a DELETE request to `https://api.intercom.io/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41932,6 +42248,8 @@ service: docs: >- You can fetch the details of a single Help Center by making a GET request to `https://api.intercom.io/help_center/help_center/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41963,6 +42281,8 @@ service: docs: >- You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`. + source: + openapi: ../openapi.yml display-name: List all Help Centers response: docs: Help Centers found @@ -42352,6 +42672,9 @@ This will return the Message model that has been created. "docs": "admin message created", "type": "Message", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -42443,6 +42766,8 @@ service: > As this is a message, there will be no conversation present until the contact responds. Once they do, you will have to search for a contact's conversations with the id of the message. + source: + openapi: ../openapi.yml display-name: Create a message request: body: root.CreateMessageRequestOne @@ -42748,6 +43073,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteNewsItem": { "auth": true, @@ -42785,6 +43113,9 @@ types: "docs": "successful", "type": "root.DeletedObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLiveNewsfeedItems": { "auth": true, @@ -42839,6 +43170,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNewsItems": { "auth": true, @@ -42891,6 +43225,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNewsfeeds": { "auth": true, @@ -42943,6 +43280,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNewsItem": { "auth": true, @@ -43002,6 +43342,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNewsfeed": { "auth": true, @@ -43039,6 +43382,9 @@ types: "docs": "successful", "type": "Newsfeed", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateNewsItem": { "auth": true, @@ -43153,6 +43499,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -43292,6 +43641,8 @@ service: method: GET auth: true docs: You can fetch a list of all news items + source: + openapi: ../openapi.yml display-name: List all news items response: docs: successful @@ -43328,6 +43679,8 @@ service: method: POST auth: true docs: You can create a news item + source: + openapi: ../openapi.yml display-name: Create a news item request: body: @@ -43383,6 +43736,8 @@ service: method: GET auth: true docs: You can fetch the details of a single news item. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -43424,6 +43779,8 @@ service: path: /news/news_items/{id} method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -43505,6 +43862,8 @@ service: method: DELETE auth: true docs: You can delete a single news item. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -43530,6 +43889,8 @@ service: method: GET auth: true docs: You can fetch a list of all news items that are live on a given newsfeed + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -43569,6 +43930,8 @@ service: method: GET auth: true docs: You can fetch a list of all newsfeeds + source: + openapi: ../openapi.yml display-name: List all newsfeeds response: docs: successful @@ -43605,6 +43968,8 @@ service: method: GET auth: true docs: You can fetch the details of a single newsfeed + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -43935,6 +44300,9 @@ types: "docs": "Successful response", "type": "Note", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNotes": { "auth": true, @@ -44042,6 +44410,9 @@ types: "docs": "Successful response", "type": "root.NoteList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNote": { "auth": true, @@ -44106,6 +44477,9 @@ types: "docs": "Note found", "type": "Note", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44175,6 +44549,8 @@ service: method: GET auth: true docs: You can fetch a list of notes that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -44255,6 +44631,8 @@ service: method: POST auth: true docs: You can add a note to a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -44384,6 +44762,8 @@ service: method: GET auth: true docs: You can fetch the details of a single note. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -44534,6 +44914,9 @@ types: "docs": "Successful response", "type": "root.SegmentList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveSegment": { "auth": true, @@ -44575,6 +44958,9 @@ types: "docs": "Successful response", "type": "Segment", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44641,6 +45027,8 @@ service: method: GET auth: true docs: You can fetch a list of all segments. + source: + openapi: ../openapi.yml display-name: List all segments request: name: ListSegmentsRequest @@ -44680,6 +45068,8 @@ service: method: GET auth: true docs: You can fetch the details of a single segment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44905,6 +45295,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "SubscriptionType", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachSubscriptionTypeToContact": { "auth": true, @@ -44963,6 +45356,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "SubscriptionType", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSubscriptionTypes": { "auth": true, @@ -45011,6 +45407,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "root.SubscriptionTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45106,6 +45505,8 @@ service: This will return a subscription type model for the subscription type that was added to the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -45205,6 +45606,8 @@ service: You can remove a specific subscription from a contact. This will return a subscription type model for the subscription type that was removed from the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -45249,6 +45652,8 @@ service: docs: >- You can list all subscription types. A list of subscription type objects will be returned. + source: + openapi: ../openapi.yml display-name: List subscription types response: docs: Successful @@ -45439,6 +45844,9 @@ If custom attributes are specified, they will be added to the user or lead's cus "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45465,6 +45873,8 @@ service: If custom attributes are specified, they will be added to the user or lead's custom data attributes. + source: + openapi: ../openapi.yml display-name: Create a phone Switch request: body: @@ -45636,6 +46046,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachTagToConversation": { "auth": true, @@ -45722,6 +46135,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachTagToTicket": { "auth": true, @@ -45808,6 +46224,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTag": { "auth": true, @@ -45926,6 +46345,9 @@ Each operation will return a tag object. "docs": "Action successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTag": { "auth": true, @@ -45952,6 +46374,9 @@ Each operation will return a tag object. "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromContact": { "auth": true, @@ -45999,6 +46424,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromConversation": { "auth": true, @@ -46107,6 +46535,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromTicket": { "auth": true, @@ -46215,6 +46646,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "findTag": { "auth": true, @@ -46259,6 +46693,9 @@ This will return a tag object. "docs": "Tag found", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTags": { "auth": true, @@ -46297,6 +46734,9 @@ This will return a tag object. "docs": "successful", "type": "root.Tags", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -46368,6 +46808,8 @@ service: docs: >- You can tag a specific contact. This will return a tag object for the tag that was added to the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -46437,6 +46879,8 @@ service: docs: >- You can remove tag from a specific contact. This will return a tag object for the tag that was removed from the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -46472,6 +46916,8 @@ service: docs: >- You can tag a specific conversation. This will return a tag object for the tag that was added to the conversation. + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -46532,6 +46978,8 @@ service: docs: >- You can remove tag from a specific conversation. This will return a tag object for the tag that was removed from the conversation. + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -46607,6 +47055,8 @@ service: docs: |+ You can fetch a list of all tags for a given workspace. + source: + openapi: ../openapi.yml display-name: List all tags response: docs: successful @@ -46643,6 +47093,8 @@ service: **5. Tag Multiple Users:** You can tag a list of users. You can tag the users by passing in the tag name and the user details as specified in "Tag Users Request Payload" described below. Each operation will return a tag object. + source: + openapi: ../openapi.yml display-name: Create or update a tag, Tag or untag companies, Tag contacts request: body: CreateTagRequestBody @@ -46714,6 +47166,8 @@ service: docs: | You can fetch the details of tags that are on the workspace by their id. This will return a tag object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46745,6 +47199,8 @@ service: docs: >- You can delete the details of tags that are on the workspace by passing in the id. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46764,6 +47220,8 @@ service: docs: >- You can tag a specific ticket. This will return a tag object for the tag that was added to the ticket. + source: + openapi: ../openapi.yml path-parameters: ticket_id: type: string @@ -46824,6 +47282,8 @@ service: docs: >- You can remove tag from a specific ticket. This will return a tag object for the tag that was removed from the ticket. + source: + openapi: ../openapi.yml path-parameters: ticket_id: type: string @@ -46975,6 +47435,9 @@ types: "docs": "successful", "type": "root.TeamList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveTeam": { "auth": true, @@ -47023,6 +47486,9 @@ types: "docs": "successful", "type": "Team", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -47070,6 +47536,8 @@ service: method: GET auth: true docs: This will return a list of team objects for the App. + source: + openapi: ../openapi.yml display-name: List all teams response: docs: successful @@ -47094,6 +47562,8 @@ service: docs: >- You can fetch the details of a single team, containing an array of admins that belong to this team. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -47270,6 +47740,9 @@ types: "docs": "Ticket Type Attribute created", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicketTypeAttribute": { "auth": true, @@ -47384,6 +47857,9 @@ types: "docs": "Ticket Type Attribute updated", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -47432,6 +47908,8 @@ service: method: POST auth: true docs: You can create a new attribute for a ticket type. + source: + openapi: ../openapi.yml path-parameters: ticket_type_id: type: string @@ -47533,6 +48011,8 @@ service: method: PUT auth: true docs: You can update an existing attribute for a ticket type. + source: + openapi: ../openapi.yml path-parameters: ticket_type_id: type: string @@ -47728,6 +48208,9 @@ docs: Everything about your ticket type attributes "docs": "Ticket type created", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTicketType": { "auth": true, @@ -47795,6 +48278,9 @@ docs: Everything about your ticket type attributes "docs": "Ticket type found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTicketTypes": { "auth": true, @@ -47834,6 +48320,9 @@ docs: Everything about your ticket type attributes "docs": "successful", "type": "root.TicketTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicketType": { "auth": true, @@ -47916,6 +48405,9 @@ You can update a ticket type. "docs": "Ticket type updated", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -47935,6 +48427,8 @@ service: method: GET auth: true docs: You can get a list of all ticket types for a workspace. + source: + openapi: ../openapi.yml display-name: List all ticket types response: docs: successful @@ -47973,6 +48467,8 @@ service: > For the `icon` propery, use an emoji from [Twemoji Cheatsheet](https://twemoji-cheatsheet.vercel.app/) + source: + openapi: ../openapi.yml display-name: Create a ticket type request: body: @@ -48026,6 +48522,8 @@ service: method: GET auth: true docs: You can fetch the details of a single ticket type. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -48088,6 +48586,8 @@ service: > For the `icon` propery, use an emoji from [Twemoji Cheatsheet](https://twemoji-cheatsheet.vercel.app/) + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -48309,6 +48809,9 @@ docs: Everything about your ticket types "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTicket": { "auth": true, @@ -48428,6 +48931,9 @@ docs: Everything about your ticket types "docs": "Ticket found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "replyTicket": { "auth": true, @@ -48758,6 +49264,9 @@ docs: Everything about your ticket types "docs": "Admin quick_reply reply", "type": "root.TicketReply", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchTickets": { "auth": true, @@ -48962,6 +49471,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.TicketList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicket": { "auth": true, @@ -49735,6 +50247,9 @@ The table below shows the operators you can use to define how you want to search "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -50391,6 +50906,8 @@ service: docs: >- You can reply to a ticket with a message from an admin or on behalf of a contact, or with a note for admins. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Reply to a ticket @@ -50658,6 +51175,8 @@ service: method: POST auth: true docs: You can create a new ticket. + source: + openapi: ../openapi.yml display-name: Create a ticket request: name: CreateTicketRequest @@ -50773,6 +51292,8 @@ service: method: GET auth: true docs: You can fetch the details of a single ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -50861,6 +51382,8 @@ service: method: PUT auth: true docs: You can update a ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -51615,6 +52138,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search tickets request: body: @@ -51875,6 +52400,9 @@ docs: Everything about your tickets "docs": "successful", "type": "contacts.Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveVisitorWithUserId": { "auth": true, @@ -52002,6 +52530,9 @@ docs: Everything about your tickets "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateVisitor": { "auth": true, @@ -52231,6 +52762,9 @@ docs: Everything about your tickets "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -52250,6 +52784,8 @@ service: method: GET auth: true docs: You can fetch the details of a single visitor. + source: + openapi: ../openapi.yml display-name: Retrieve a visitor with User ID request: name: RetrieveVisitorWithUserIdRequest @@ -52358,6 +52894,8 @@ service: **Option 2.** You can update a visitor by passing in the `id` of the visitor in the Request body. + source: + openapi: ../openapi.yml display-name: Update a visitor request: body: root.UpdateVisitorRequestOne @@ -52547,6 +53085,8 @@ service: Visitor deleted and the User returned. If the User does not exist, the Visitor will be converted to a User, with the User identifiers replacing it's Visitor identifiers. + source: + openapi: ../openapi.yml display-name: Convert a visitor request: name: ConvertVisitorRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/merge.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/merge.json index 8c460f4f554..c7562dbd930 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/merge.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/merge.json @@ -9289,6 +9289,9 @@ Fetch from the `LIST TimeOffs` endpoint and filter by `ID` to show all time off "docs": "", "type": "root.AccountDetails", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9307,6 +9310,8 @@ service: method: GET auth: true docs: Get details for a linked account. + source: + openapi: ../openapi.yml response: docs: '' type: root.AccountDetails @@ -9378,6 +9383,9 @@ service: "docs": "", "type": "root.AccountToken", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9398,6 +9406,8 @@ service: docs: >- Returns the account token for the end user with the provided public token. + source: + openapi: ../openapi.yml path-parameters: public_token: string response: @@ -9486,6 +9496,9 @@ service: "docs": "", "type": "root.AvailableActions", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9504,6 +9517,8 @@ service: method: GET auth: true docs: Returns a list of models and actions available for an account. + source: + openapi: ../openapi.yml response: docs: '' type: root.AvailableActions @@ -9672,6 +9687,9 @@ service: "docs": "", "type": "root.PaginatedBankInfoList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -9745,6 +9763,9 @@ service: "docs": "", "type": "root.BankInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9804,6 +9825,8 @@ service: method: GET auth: true docs: Returns a list of `BankInfo` objects. + source: + openapi: ../openapi.yml request: name: BankInfoListRequest query-parameters: @@ -9908,6 +9931,8 @@ service: method: GET auth: true docs: Returns a `BankInfo` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10072,6 +10097,9 @@ service: "docs": "", "type": "root.PaginatedBenefitList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10138,6 +10166,9 @@ service: "docs": "", "type": "root.Benefit", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10156,6 +10187,8 @@ service: method: GET auth: true docs: Returns a list of `Benefit` objects. + source: + openapi: ../openapi.yml request: name: BenefitsListRequest query-parameters: @@ -10241,6 +10274,8 @@ service: method: GET auth: true docs: Returns a `Benefit` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10392,6 +10427,9 @@ service: "docs": "", "type": "root.PaginatedCompanyList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10454,6 +10492,9 @@ service: "docs": "", "type": "root.Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10472,6 +10513,8 @@ service: method: GET auth: true docs: Returns a list of `Company` objects. + source: + openapi: ../openapi.yml request: name: CompaniesListRequest query-parameters: @@ -10546,6 +10589,8 @@ service: method: GET auth: true docs: Returns a `Company` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10606,6 +10651,9 @@ service: "method": "POST", "pagination": undefined, "path": "/delete-account", + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10622,6 +10670,8 @@ service: method: POST auth: true docs: Delete a linked account. + source: + openapi: ../openapi.yml examples: - headers: {} source: @@ -10795,6 +10845,9 @@ service: "docs": "", "type": "root.PaginatedEmployeePayrollRunList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10960,6 +11013,9 @@ service: "docs": "", "type": "root.EmployeePayrollRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11023,6 +11079,8 @@ service: method: GET auth: true docs: Returns a list of `EmployeePayrollRun` objects. + source: + openapi: ../openapi.yml request: name: EmployeePayrollRunsListRequest query-parameters: @@ -11158,6 +11216,8 @@ service: method: GET auth: true docs: Returns an `EmployeePayrollRun` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -11408,6 +11468,9 @@ service: "docs": "", "type": "root.EmployeeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ignoreCreate": { "auth": true, @@ -11449,6 +11512,9 @@ service: "name": "IgnoreCommonModelRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -11654,6 +11720,9 @@ service: "docs": "", "type": "root.PaginatedEmployeeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaPostRetrieve": { "auth": true, @@ -11686,6 +11755,9 @@ service: "docs": "", "type": "root.MetaResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -11791,6 +11863,9 @@ service: "docs": "", "type": "root.Employee", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15191,6 +15266,8 @@ service: method: GET auth: true docs: Returns a list of `Employee` objects. + source: + openapi: ../openapi.yml request: name: EmployeesListRequest query-parameters: @@ -15373,6 +15450,8 @@ service: method: POST auth: true docs: Creates an `Employee` object with the given values. + source: + openapi: ../openapi.yml request: name: EmployeeEndpointRequest query-parameters: @@ -15467,6 +15546,8 @@ service: method: GET auth: true docs: Returns an `Employee` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -15555,6 +15636,8 @@ service: will have their properties set to null, and will not be updated in future syncs. The "reason" and "message" fields in the request body will be stored for audit purposes. + source: + openapi: ../openapi.yml path-parameters: model_id: string request: @@ -15579,6 +15662,8 @@ service: method: GET auth: true docs: Returns metadata for `Employee` POSTs. + source: + openapi: ../openapi.yml response: docs: '' type: root.MetaResponse @@ -15725,6 +15810,9 @@ service: "docs": "", "type": "root.PaginatedEmploymentList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -15802,6 +15890,9 @@ service: "docs": "", "type": "root.Employment", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16228,6 +16319,8 @@ service: method: GET auth: true docs: Returns a list of `Employment` objects. + source: + openapi: ../openapi.yml request: name: EmploymentsListRequest query-parameters: @@ -16323,6 +16416,8 @@ service: method: GET auth: true docs: Returns an `Employment` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -16418,6 +16513,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16441,6 +16539,8 @@ service: for monthly, quarterly, and highest sync frequency customers on the Core, Professional, or Enterprise plans. Doing so will consume a sync credit for the relevant linked account. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -16511,6 +16611,9 @@ service: "docs": "", "type": "root.RemoteKey", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16529,6 +16632,8 @@ service: method: POST auth: true docs: Create a remote key. + source: + openapi: ../openapi.yml request: name: GenerateRemoteKeyRequest body: @@ -16663,6 +16768,9 @@ service: "docs": "", "type": "root.PaginatedGroupList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -16729,6 +16837,9 @@ service: "docs": "", "type": "root.Group", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16747,6 +16858,8 @@ service: method: GET auth: true docs: Returns a list of `Group` objects. + source: + openapi: ../openapi.yml request: name: GroupsListRequest query-parameters: @@ -16829,6 +16942,8 @@ service: method: GET auth: true docs: Returns a `Group` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -16972,6 +17087,9 @@ service: "docs": "", "type": "root.PaginatedIssueList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -17010,6 +17128,9 @@ service: "docs": "", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17046,6 +17167,8 @@ service: method: GET auth: true docs: Gets issues. + source: + openapi: ../openapi.yml request: name: IssuesListRequest query-parameters: @@ -17123,6 +17246,8 @@ service: method: GET auth: true docs: Get a specific issue. + source: + openapi: ../openapi.yml path-parameters: id: string response: @@ -17262,6 +17387,9 @@ service: "docs": "", "type": "root.LinkToken", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17280,6 +17408,8 @@ service: method: POST auth: true docs: Creates a link token to be used when linking a new end user. + source: + openapi: ../openapi.yml request: name: EndUserDetailsRequest body: @@ -17496,6 +17626,9 @@ service: "docs": "", "type": "root.PaginatedAccountDetailsAndActionsList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17542,6 +17675,8 @@ service: method: GET auth: true docs: List linked accounts for your organization. + source: + openapi: ../openapi.yml request: name: LinkedAccountsListRequest query-parameters: @@ -17773,6 +17908,9 @@ service: "docs": "", "type": "root.PaginatedLocationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -17845,6 +17983,9 @@ service: "docs": "", "type": "root.Location", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17863,6 +18004,8 @@ service: method: GET auth: true docs: Returns a list of `Location` objects. + source: + openapi: ../openapi.yml request: name: LocationsListRequest query-parameters: @@ -17946,6 +18089,8 @@ service: method: GET auth: true docs: Returns a `Location` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18095,6 +18240,9 @@ service: "docs": "", "type": "root.RemoteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18113,6 +18261,8 @@ service: method: POST auth: true docs: Pull data from an endpoint not currently supported by Merge. + source: + openapi: ../openapi.yml request: name: DataPassthroughRequest body: @@ -18273,6 +18423,9 @@ service: "docs": "", "type": "root.PaginatedPayGroupList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -18329,6 +18482,9 @@ service: "docs": "", "type": "root.PayGroup", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18347,6 +18503,8 @@ service: method: GET auth: true docs: Returns a list of `PayGroup` objects. + source: + openapi: ../openapi.yml request: name: PayGroupsListRequest query-parameters: @@ -18416,6 +18574,8 @@ service: method: GET auth: true docs: Returns a `PayGroup` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18588,6 +18748,9 @@ service: "docs": "", "type": "root.PaginatedPayrollRunList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -18656,6 +18819,9 @@ service: "docs": "", "type": "root.PayrollRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18782,6 +18948,8 @@ service: method: GET auth: true docs: Returns a list of `PayrollRun` objects. + source: + openapi: ../openapi.yml request: name: PayrollRunsListRequest query-parameters: @@ -18898,6 +19066,8 @@ service: method: GET auth: true docs: Returns a `PayrollRun` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18997,6 +19167,9 @@ service: "docs": "", "type": "root.RemoteKey", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19015,6 +19188,8 @@ service: method: POST auth: true docs: Exchange remote keys. + source: + openapi: ../openapi.yml request: name: RemoteKeyForRegenerationRequest body: @@ -19080,6 +19255,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "configurationsUpdate": { "auth": true, @@ -19134,6 +19312,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaList": { "auth": true, @@ -19191,6 +19372,9 @@ service: "docs": "", "type": "root.PaginatedConditionSchemaList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19209,6 +19393,8 @@ service: method: GET auth: true docs: Get a linked account's selective syncs. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -19229,6 +19415,8 @@ service: method: PUT auth: true docs: Replace a linked account's selective syncs. + source: + openapi: ../openapi.yml request: name: LinkedAccountSelectiveSyncConfigurationListRequest body: @@ -19260,6 +19448,8 @@ service: method: GET auth: true docs: Get metadata for the conditions available to a linked account. + source: + openapi: ../openapi.yml request: name: SelectiveSyncMetaListRequest query-parameters: @@ -19351,6 +19541,9 @@ service: "docs": "", "type": "root.PaginatedSyncStatusList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19371,6 +19564,8 @@ service: docs: >- Get syncing status. Possible values: `DISABLED`, `DONE`, `FAILED`, `PARTIALLY_SYNCED`, `PAUSED`, `SYNCING` + source: + openapi: ../openapi.yml request: name: SyncStatusListRequest query-parameters: @@ -19507,6 +19702,9 @@ service: "docs": "", "type": "root.PaginatedTeamList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -19568,6 +19766,9 @@ service: "docs": "", "type": "root.Team", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19586,6 +19787,8 @@ service: method: GET auth: true docs: Returns a list of `Team` objects. + source: + openapi: ../openapi.yml request: name: TeamsListRequest query-parameters: @@ -19664,6 +19867,8 @@ service: method: GET auth: true docs: Returns a `Team` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -19821,6 +20026,9 @@ service: "docs": "", "type": "root.TimeOffResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -19958,6 +20166,9 @@ service: "docs": "", "type": "root.PaginatedTimeOffList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaPostRetrieve": { "auth": true, @@ -19990,6 +20201,9 @@ service: "docs": "", "type": "root.MetaResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -20066,6 +20280,9 @@ service: "docs": "", "type": "root.TimeOff", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20337,6 +20554,8 @@ service: method: GET auth: true docs: Returns a list of `TimeOff` objects. + source: + openapi: ../openapi.yml request: name: TimeOffListRequest query-parameters: @@ -20466,6 +20685,8 @@ service: method: POST auth: true docs: Creates a `TimeOff` object with the given values. + source: + openapi: ../openapi.yml request: name: TimeOffEndpointRequest query-parameters: @@ -20538,6 +20759,8 @@ service: method: GET auth: true docs: Returns a `TimeOff` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -20595,6 +20818,8 @@ service: method: GET auth: true docs: Returns metadata for `TimeOff` POSTs. + source: + openapi: ../openapi.yml response: docs: '' type: root.MetaResponse @@ -20742,6 +20967,9 @@ service: "docs": "", "type": "root.PaginatedTimeOffBalanceList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -20813,6 +21041,9 @@ service: "docs": "", "type": "root.TimeOffBalance", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20857,6 +21088,8 @@ service: method: GET auth: true docs: Returns a list of `TimeOffBalance` objects. + source: + openapi: ../openapi.yml request: name: TimeOffBalancesListRequest query-parameters: @@ -20962,6 +21195,8 @@ service: method: GET auth: true docs: Returns a `TimeOffBalance` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -21078,6 +21313,9 @@ service: "docs": "", "type": "root.WebhookReceiver", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -21103,6 +21341,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21121,6 +21362,8 @@ service: method: GET auth: true docs: Returns a list of `WebhookReceiver` objects. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -21136,6 +21379,8 @@ service: method: POST auth: true docs: Creates a `WebhookReceiver` object with the given values. + source: + openapi: ../openapi.yml request: name: WebhookReceiverRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/multi-url-generators-yml.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/multi-url-generators-yml.json index 27954d3764f..baf93b1b740 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/multi-url-generators-yml.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/multi-url-generators-yml.json @@ -61,6 +61,9 @@ "docs": "Successful response", "type": "Token", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getUserInformation": { "auth": false, @@ -95,6 +98,9 @@ "docs": "Successful response", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listUsers": { "auth": false, @@ -123,6 +129,9 @@ "docs": "Successful response", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -185,6 +194,8 @@ service: method: GET auth: false docs: List information about all users + source: + openapi: ../openapi.yml display-name: List Users response: docs: Successful response @@ -204,6 +215,8 @@ service: method: GET auth: false docs: Retrieve detailed information about a specific user + source: + openapi: ../openapi.yml path-parameters: userId: string display-name: Get user information @@ -227,6 +240,8 @@ service: method: GET auth: false docs: Retrieve an authentication token for the API + source: + openapi: ../openapi.yml display-name: Get authentication token response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/non-alphanumeric-characters.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/non-alphanumeric-characters.json index 7c1dc9590db..43fd15d72e3 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/non-alphanumeric-characters.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/non-alphanumeric-characters.json @@ -33,6 +33,9 @@ "docs": "OK", "type": "Settings", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -86,6 +89,8 @@ path: /settings method: PATCH auth: false + source: + openapi: ../openapi.yml request: body: Settings content-type: application/json diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/oauth.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/oauth.json index a72d0103b0f..b7c0177bbcc 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/oauth.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/oauth.json @@ -105,6 +105,9 @@ "docs": "Successful token response", "type": "AuthGetTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -170,6 +173,8 @@ service: method: POST auth: false docs: Exchange credentials or refresh token for an access token + source: + openapi: ../openapi.yml display-name: Request an access token request: name: AuthGetTokenRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/permit.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/permit.json index 2c78fbfa17b..dd061517f2d 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/permit.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/permit.json @@ -6247,6 +6247,9 @@ types: "docs": "Successful Response", "type": "root.TenantCreateBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_create_users": { "auth": true, @@ -6314,6 +6317,9 @@ types: "docs": "Successful Response", "type": "root.UserCreateBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_delete_tenants": { "auth": true, @@ -6368,6 +6374,9 @@ types: "docs": "Successful Response", "type": "root.TenantDeleteBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_delete_users": { "auth": true, @@ -6422,6 +6431,9 @@ types: "docs": "Successful Response", "type": "root.UserDeleteBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_replace_users": { "auth": true, @@ -6489,6 +6501,9 @@ types: "docs": "Successful Response", "type": "root.UserReplaceBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -6506,6 +6521,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6552,6 +6569,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6598,6 +6617,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6635,6 +6656,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/tenants method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6677,6 +6700,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/tenants method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6826,6 +6851,9 @@ If the permission is already granted, it is skipped.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_set_permissions": { "auth": true, @@ -6903,6 +6931,9 @@ If the permission is already granted, it is skipped.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_set_permissions": { "auth": true, @@ -6971,6 +7002,9 @@ If the permission is not granted, it is skipped.", "name": "ConditionSetRuleRemove", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -6999,6 +7033,8 @@ service: - If the `resource_set` filter is present, will only return the permissions set of that resource set. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7064,6 +7100,8 @@ service: Grant permissions to a user set *on* a resource set. If the permission is already granted, it is skipped. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7143,6 +7181,8 @@ service: Revokes permissions to a user set *on* a resource set. If the permission is not granted, it is skipped. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7434,6 +7474,9 @@ If we check the checkbox where `us_based_employees` and `private_repos->clone` a "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_condition_set": { "auth": true, @@ -7469,6 +7512,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set": { "auth": true, @@ -7581,6 +7627,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set_ancestors": { "auth": true, @@ -7708,6 +7757,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set_descendants": { "auth": true, @@ -7835,6 +7887,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_condition_sets": { "auth": true, @@ -7968,6 +8023,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "ListConditionSetsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_condition_set": { "auth": true, @@ -8131,6 +8189,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -8173,6 +8234,8 @@ service: method: GET auth: true docs: Lists all condition sets matching a filter. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8276,6 +8339,8 @@ service: docs: >- Creates a new condition set (can be either a user set or a resource set). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8408,6 +8473,8 @@ service: method: GET auth: true docs: Gets a single condition set, if such condition set exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8497,6 +8564,8 @@ service: This includes any permissions granted to said condition set (i.e: any matching condition set rules). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8528,6 +8597,8 @@ service: docs: |- Partially updates a condition set. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8645,6 +8716,8 @@ service: method: GET auth: true docs: Gets all ancestors (parent, parent of parent, and so on) + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8742,6 +8815,8 @@ service: method: GET auth: true docs: Gets all descendants (children, children of children, and so on) + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8992,6 +9067,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_environment": { "auth": true, @@ -9053,6 +9131,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_environment": { "auth": true, @@ -9082,6 +9163,9 @@ allowed.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_environment": { "auth": true, @@ -9138,6 +9222,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_environments": { "auth": true, @@ -9204,6 +9291,9 @@ allowed.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "stats_environments": { "auth": true, @@ -9329,6 +9419,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentStats", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_environment": { "auth": true, @@ -9416,6 +9509,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -9446,6 +9542,8 @@ service: path: /v2/projects/{proj_id}/envs/{env_id}/stats method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9541,6 +9639,8 @@ service: method: GET auth: true docs: Lists all the environments under a given project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9586,6 +9686,8 @@ service: method: POST auth: true docs: Creates a new environment under a given project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9631,6 +9733,8 @@ service: docs: >- Gets a single environment matching the given env_id, if such environment exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9673,6 +9777,8 @@ service: method: DELETE auth: true docs: Deletes an environment and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9696,6 +9802,8 @@ service: method: PATCH auth: true docs: Updates the environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9787,6 +9895,8 @@ service: Copying environments across projects or organizations is not allowed. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9971,6 +10081,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "root.OrganizationReadWithAPIKey", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_organization": { "auth": true, @@ -9995,6 +10108,9 @@ authenticated actor (i.e: human team member or api key).", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_active_organization": { "auth": true, @@ -10028,6 +10144,9 @@ if such org exists and can be accessed by the authenticated actor.", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_organization": { "auth": true, @@ -10070,6 +10189,9 @@ if such org exists and can be accessed by the authenticated actor.", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_organizations": { "auth": true, @@ -10118,6 +10240,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_organization": { "auth": true, @@ -10184,6 +10309,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10204,6 +10332,8 @@ service: docs: |- Lists all the organizations that can be accessed by the authenticated actor (i.e: human team member or api key). + source: + openapi: ../openapi.json display-name: List Organizations request: name: ListOrganizationsRequest @@ -10237,6 +10367,8 @@ service: docs: |- Creates a new organization that will be owned by the authenticated actor (i.e: human team member or api key). + source: + openapi: ../openapi.json display-name: Create Organization request: name: OrganizationCreate @@ -10289,6 +10421,8 @@ service: org_id, if such org exists and can be accessed by the authenticated actor. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -10319,6 +10453,8 @@ service: method: DELETE auth: true docs: Deletes an organization (Permit.io account) and all its related data. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -10336,6 +10472,8 @@ service: method: PATCH auth: true docs: Updates the organization's profile. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -10384,6 +10522,8 @@ service: org_id, if such org exists and can be accessed by the authenticated actor. + source: + openapi: ../openapi.json display-name: Get Active Organization response: docs: Successful Response @@ -10527,6 +10667,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_project": { "auth": true, @@ -10551,6 +10694,9 @@ Every project is a separate silo, and has its own unique set of environments and "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_project": { "auth": true, @@ -10595,6 +10741,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_projects": { "auth": true, @@ -10645,6 +10794,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_project": { "auth": true, @@ -10722,6 +10874,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10740,6 +10895,8 @@ service: method: GET auth: true docs: Lists all the projects under the active organization. + source: + openapi: ../openapi.json display-name: List Projects request: name: ListProjectsRequest @@ -10774,6 +10931,8 @@ service: method: POST auth: true docs: Creates a new project under the active organization. + source: + openapi: ../openapi.json display-name: Create Project request: name: ProjectCreate @@ -10838,6 +10997,8 @@ service: docs: >- Gets a single project matching the given proj_id, if such project exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10871,6 +11032,8 @@ service: method: DELETE auth: true docs: Deletes the project and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10888,6 +11051,8 @@ service: method: PATCH auth: true docs: Updates the project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11069,6 +11234,9 @@ to a role as one action. "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_action_group": { "auth": true, @@ -11109,6 +11277,9 @@ This includes any permissions granted to perform the action.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_action_group": { "auth": true, @@ -11173,6 +11344,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_action_groups": { "auth": true, @@ -11247,6 +11421,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_action_group": { "auth": true, @@ -11338,6 +11515,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -11356,6 +11536,8 @@ service: method: GET auth: true docs: Lists all the action groups defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11414,6 +11596,8 @@ service: method: POST auth: true docs: Creates a new action group that can affect the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11503,6 +11687,8 @@ service: docs: >- Gets a single action group defined on the resource, if such action exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11561,6 +11747,8 @@ service: docs: |- Deletes the action and all its related data. This includes any permissions granted to perform the action. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11599,6 +11787,8 @@ service: docs: |- Partially updates the action defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: resource_id: type: string @@ -11788,6 +11978,9 @@ Each (resource, action) pair defines a unique permission level. "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_action": { "auth": true, @@ -11828,6 +12021,9 @@ This includes any permissions granted to perform the action.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_action": { "auth": true, @@ -11889,6 +12085,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_actions": { "auth": true, @@ -11960,6 +12159,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_action": { "auth": true, @@ -12047,6 +12249,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12065,6 +12270,8 @@ service: method: GET auth: true docs: Lists all the actions defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12121,6 +12328,8 @@ service: method: POST auth: true docs: Creates a new action that can affect the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12200,6 +12409,8 @@ service: method: GET auth: true docs: Gets a single action defined on the resource, if such action exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12256,6 +12467,8 @@ service: docs: |- Deletes the action and all its related data. This includes any permissions granted to perform the action. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12294,6 +12507,8 @@ service: docs: |- Partially updates the action defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12459,6 +12674,9 @@ define a boolean `private` attributes that we can now use in our policies. "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_attribute": { "auth": true, @@ -12514,6 +12732,9 @@ attribute to evaluate as `undefined`.", }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_attribute": { "auth": true, @@ -12573,6 +12794,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_attributes": { "auth": true, @@ -12642,6 +12866,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_attribute": { "auth": true, @@ -12711,6 +12938,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12729,6 +12959,8 @@ service: method: GET auth: true docs: Lists all the attributes defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12784,6 +13016,8 @@ service: method: POST auth: true docs: Creates a new attribute as part of the resource definition. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12841,6 +13075,8 @@ service: docs: >- Gets a single attribute defined on the resource, if such attribute exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12898,6 +13134,8 @@ service: Note: If the attribute is used by policies, removing it will cause the attribute to evaluate as `undefined`. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12945,6 +13183,8 @@ service: docs: |- Partially updates the attribute defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13133,6 +13373,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_instance": { "auth": true, @@ -13167,6 +13410,9 @@ and will return the existing instance object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_instance": { "auth": true, @@ -13224,6 +13470,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_instances": { "auth": true, @@ -13291,6 +13540,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_instance": { "auth": true, @@ -13369,6 +13621,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -13387,6 +13642,8 @@ service: method: GET auth: true docs: Lists all the resource instances defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13442,6 +13699,8 @@ service: If the instance is already created: will return 200 instead of 201, and will return the existing instance object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13523,6 +13782,8 @@ service: method: GET auth: true docs: Gets a instance, if such instance exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13571,6 +13832,8 @@ service: method: DELETE auth: true docs: Deletes the instance and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13602,6 +13865,8 @@ service: docs: |- Partially updates the instance definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13773,6 +14038,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_resource_role": { "auth": true, @@ -13885,6 +14153,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_role": { "auth": true, @@ -13925,6 +14196,9 @@ This includes any permissions granted to said role.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role": { "auth": true, @@ -13991,6 +14265,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role_ancestors": { "auth": true, @@ -14061,6 +14338,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role_descendants": { "auth": true, @@ -14131,6 +14411,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_roles": { "auth": true, @@ -14207,6 +14490,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_permissions_from_resource_role": { "auth": true, @@ -14286,6 +14572,9 @@ If some of the permissions specified are already unassigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_role": { "auth": true, @@ -14389,6 +14678,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14407,6 +14699,8 @@ service: method: GET auth: true docs: Lists all the roles defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14466,6 +14760,8 @@ service: method: POST auth: true docs: Creates a new role associated with the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14562,6 +14858,8 @@ service: method: GET auth: true docs: Gets a single role defined on the resource, if such role exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14620,6 +14918,8 @@ service: docs: |- Deletes the role and all its related data. This includes any permissions granted to said role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14657,6 +14957,8 @@ service: docs: |- Partially updates the role defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14754,6 +15056,8 @@ service: If some of the permissions specified are already assigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14823,6 +15127,8 @@ service: If some of the permissions specified are already unassigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14886,6 +15192,8 @@ service: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/ancestors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14943,6 +15251,8 @@ service: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/descendants method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15198,6 +15508,9 @@ A resource may also contain: "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource": { "auth": true, @@ -15232,6 +15545,9 @@ A resource may also contain: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource": { "auth": true, @@ -15332,6 +15648,9 @@ A resource may also contain: "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resources": { "auth": true, @@ -15438,6 +15757,9 @@ A resource may also contain: "docs": "Successful Response", "type": "ListResourcesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "replace_resource": { "auth": true, @@ -15583,6 +15905,9 @@ TODO: we need to decide if we are auto-revoking, or if we are rejecting the PUT "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource": { "auth": true, @@ -15718,6 +16043,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -15760,6 +16088,8 @@ service: method: GET auth: true docs: Lists all the resources defined in your schema. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15842,6 +16172,8 @@ service: docs: >- Creates a new resource (a type of object you may protect with permissions). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15968,6 +16300,8 @@ service: method: GET auth: true docs: Gets a single resource, if such resource exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16062,6 +16396,8 @@ service: TODO: we need to decide if we are auto-revoking, or if we are rejecting the PUT completely while there are permissions that can be affected. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16176,6 +16512,8 @@ service: method: DELETE auth: true docs: Deletes the resource and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16207,6 +16545,8 @@ service: docs: |- Partially updates the resource definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16421,6 +16761,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.RoleAssignmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_assign_role": { "auth": true, @@ -16472,6 +16815,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.BulkRoleAssignmentReport", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_unassign_role": { "auth": true, @@ -16523,6 +16869,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.BulkRoleUnAssignmentReport", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_role_assignments": { "auth": true, @@ -16602,6 +16951,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_role": { "auth": true, @@ -16646,6 +16998,9 @@ If the role is not actually assigned, will return 404.", }, "content-type": "application/json", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -16675,6 +17030,8 @@ service: - If the `role` filter is present, will only return role assignments that are granting that role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16743,6 +17100,8 @@ service: The tenant defines the scope of the assignment. In other words, the role is effective only within the tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16798,6 +17157,8 @@ service: If the role is not actually assigned, will return 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16828,6 +17189,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/role_assignments/bulk method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16864,6 +17227,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/role_assignments/bulk method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17002,6 +17367,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_role": { "auth": true, @@ -17108,6 +17476,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_role": { "auth": true, @@ -17143,6 +17514,9 @@ This includes any permissions granted to said role.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role": { "auth": true, @@ -17203,6 +17577,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role_ancestors": { "auth": true, @@ -17267,6 +17644,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role_descendants": { "auth": true, @@ -17331,6 +17711,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_roles": { "auth": true, @@ -17413,6 +17796,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "ListRolesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_permissions_from_role": { "auth": true, @@ -17486,6 +17872,9 @@ If some of the permissions specified are already unassigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_role": { "auth": true, @@ -17583,6 +17972,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -17625,6 +18017,8 @@ service: method: GET auth: true docs: Lists all tenant roles. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17686,6 +18080,8 @@ service: method: POST auth: true docs: Creates a new tenant role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17775,6 +18171,8 @@ service: method: GET auth: true docs: Gets a single tenant role, if such role exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17826,6 +18224,8 @@ service: docs: |- Deletes a tenant role and all its related data. This includes any permissions granted to said role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17857,6 +18257,8 @@ service: docs: |- Partially updates a tenant role. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17946,6 +18348,8 @@ service: If some of the permissions specified are already assigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18007,6 +18411,8 @@ service: If some of the permissions specified are already unassigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18062,6 +18468,8 @@ service: path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}/ancestors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18111,6 +18519,8 @@ service: path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}/descendants method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18269,6 +18679,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_tenant": { "auth": true, @@ -18303,6 +18716,9 @@ and will return the existing tenant object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_tenant_user": { "auth": true, @@ -18342,6 +18758,9 @@ and will return the existing tenant object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_tenant": { "auth": true, @@ -18400,6 +18819,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_tenant_users": { "auth": true, @@ -18511,6 +18933,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.PaginatedResultUserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_tenants": { "auth": true, @@ -18591,6 +19016,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "ListTenantsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_tenant": { "auth": true, @@ -18673,6 +19101,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18706,6 +19137,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/tenants/{tenant_id}/users method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18786,6 +19219,8 @@ service: method: GET auth: true docs: Lists all the tenants defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18850,6 +19285,8 @@ service: If the tenant is already created: will return 200 instead of 201, and will return the existing tenant object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18903,6 +19340,8 @@ service: method: GET auth: true docs: Gets a tenant, if such tenant exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18951,6 +19390,8 @@ service: method: DELETE auth: true docs: Deletes the tenant and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18982,6 +19423,8 @@ service: docs: |- Partially updates the tenant definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19047,6 +19490,8 @@ service: method: DELETE auth: true docs: Deletes a user under a tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19198,6 +19643,9 @@ define a string `owner` attribute that we can now use in our policies. "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_user_attribute": { "auth": true, @@ -19249,6 +19697,9 @@ attribute to evaluate as `undefined`.", "resource_id": "optional", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_user_attribute": { "auth": true, @@ -19309,6 +19760,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_user_attributes": { "auth": true, @@ -19374,6 +19828,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_user_attribute": { "auth": true, @@ -19442,6 +19899,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19460,6 +19920,8 @@ service: method: GET auth: true docs: Lists all the attributes defined on the User resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19510,6 +19972,8 @@ service: method: POST auth: true docs: Creates a new attribute for the User resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19563,6 +20027,8 @@ service: docs: >- Gets a single attribute defined on the User resource, if such attribute exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19617,6 +20083,8 @@ service: Note: If the attribute is used by policies, removing it will cause the attribute to evaluate as `undefined`. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19658,6 +20126,8 @@ service: docs: |- Partially updates the attribute defined on the User resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19830,6 +20300,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.RoleAssignmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_user": { "auth": true, @@ -19933,6 +20406,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_user": { "auth": true, @@ -19967,6 +20443,9 @@ and will return the existing user object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_user": { "auth": true, @@ -20051,6 +20530,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_users": { "auth": true, @@ -20157,6 +20639,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.PaginatedResultUserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "replace_user": { "auth": true, @@ -20261,6 +20746,9 @@ and will return the existing user object in the response body.", "docs": "An existing user was replaced", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_role_from_user": { "auth": true, @@ -20321,6 +20809,9 @@ If the role is not actually assigned, will return 404.", "name": "UserRoleRemove", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, "update_user": { "auth": true, @@ -20439,6 +20930,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -20457,6 +20951,8 @@ service: method: GET auth: true docs: Lists all the users defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20536,6 +21032,8 @@ service: If the user is already created: will return 200 instead of 201, and will return the existing user object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20607,6 +21105,8 @@ service: method: GET auth: true docs: Gets a user, if such user exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20668,6 +21168,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/users/{user_id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20745,6 +21247,8 @@ service: method: DELETE auth: true docs: Deletes the user and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20776,6 +21280,8 @@ service: docs: |- Partially updates the user definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20867,6 +21373,8 @@ service: The tenant defines the scope of the assignment. In other words, the role is effective only within the tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -20938,6 +21446,8 @@ service: If the role is not actually assigned, will return 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/request-response-description.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/request-response-description.json index 45285a126a0..42a5c8e8d06 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/request-response-description.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/request-response-description.json @@ -30,6 +30,9 @@ "docs": "Successful response", "type": "Schema1", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57,6 +60,8 @@ path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rightbrain.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rightbrain.json index 5d9bb13328b..27a2298a247 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rightbrain.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rightbrain.json @@ -5353,6 +5353,9 @@ "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "whoami_whoami_get": { "auth": true, @@ -5377,6 +5380,9 @@ "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10455,6 +10461,8 @@ https://github.com/ory/kratos/blob/master/selfservice/hook/web_hook.go", method: GET auth: false docs: Root endpoint that returns a "Hello World" message. + source: + openapi: ../openapi.yml display-name: Root response: docs: Successful Response @@ -10467,6 +10475,8 @@ https://github.com/ory/kratos/blob/master/selfservice/hook/web_hook.go", path: /whoami method: GET auth: true + source: + openapi: ../openapi.yml display-name: Whoami response: docs: Successful Response @@ -16579,6 +16589,9 @@ types: "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getChat": { "auth": true, @@ -16619,6 +16632,9 @@ types: "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getChatConfig": { "auth": true, @@ -16669,6 +16685,9 @@ types: "docs": "Successful Response", "type": "root.ChatConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -16709,6 +16728,9 @@ types: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRecentChatsForUser": { "auth": true, @@ -16749,6 +16771,9 @@ types: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -16802,6 +16827,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -16860,6 +16888,9 @@ types: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -16928,6 +16959,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "queryChat": { "auth": true, @@ -16973,6 +17007,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setChatConfig": { "auth": true, @@ -17065,6 +17102,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.ChatConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateChat": { "auth": true, @@ -17119,6 +17159,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17241,6 +17284,8 @@ service: path: /chat/recent method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get Recent Chats For User request: name: GetRecentChatsForUserChatRecentGetRequest @@ -17267,6 +17312,8 @@ service: path: /chat/{chat_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Get Chat @@ -17295,6 +17342,8 @@ service: path: /chat/{chat_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Update Chat @@ -17331,6 +17380,8 @@ service: path: /chat/{chat_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Get Chat Config @@ -17361,6 +17412,8 @@ service: path: /chat/{chat_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Set Chat Config @@ -17424,6 +17477,8 @@ service: path: /chat method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create Chat request: name: ChatCreate @@ -17465,6 +17520,8 @@ service: path: /chat/{chat_id}/query method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Query Chat @@ -17494,6 +17551,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: IAM - List Chat Members @@ -17531,6 +17590,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string member: string @@ -17559,6 +17620,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string member: string @@ -17616,6 +17679,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: IAM - Test Chat Permissions @@ -17788,6 +17853,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionEdit": { "auth": true, @@ -17853,6 +17921,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionRemove": { "auth": true, @@ -17915,6 +17986,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionStats": { "auth": true, @@ -17957,6 +18031,9 @@ types: "docs": "Successful Response", "type": "root.CollectionStatsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createCollection": { "auth": true, @@ -18023,6 +18100,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getCollection": { "auth": true, @@ -18074,6 +18154,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -18118,6 +18201,9 @@ types: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -18175,6 +18261,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -18237,6 +18326,9 @@ types: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -18309,6 +18401,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listChats": { "auth": true, @@ -18370,6 +18465,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetChat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listCollections": { "auth": true, @@ -18433,6 +18531,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetCollection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "queryCollection": { "auth": true, @@ -18483,6 +18584,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSummary": { "auth": true, @@ -18522,6 +18626,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.AsyncJobResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18592,6 +18699,8 @@ service: path: /org/{org_id}/project/{project_id}/collection method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18637,6 +18746,8 @@ service: path: /org/{org_id}/project/{project_id}/collection method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18683,6 +18794,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18722,6 +18835,8 @@ service: method: POST auth: true docs: Edit collection details + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18768,6 +18883,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/stats method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18798,6 +18915,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/chat method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18844,6 +18963,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/query method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18881,6 +19002,8 @@ service: method: POST auth: true docs: Generate and update the summary for a collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18911,6 +19034,8 @@ service: method: POST auth: true docs: Add an embedding instance to the collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -18957,6 +19082,8 @@ service: method: POST auth: true docs: Remove an embedding instance from the collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19006,6 +19133,8 @@ service: docs: >- Lists all members that have been granted direct access to the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19048,6 +19177,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19081,6 +19212,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19142,6 +19275,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19294,6 +19429,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "initialise": { "auth": true, @@ -19337,6 +19475,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "sectionTalkingPoints": { "auth": true, @@ -19401,6 +19542,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "topic": { "auth": true, @@ -19453,6 +19597,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSection": { "auth": true, @@ -19521,6 +19668,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19538,6 +19688,8 @@ service: path: /org/{org_id}/project/{project_id}/compose method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19569,6 +19721,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/generate method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19610,6 +19764,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/update_section method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19656,6 +19812,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/section_talking_points method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19700,6 +19858,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/topic method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19777,6 +19937,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -19808,6 +19971,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -19871,6 +20037,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -19907,6 +20076,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -19959,6 +20131,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -19997,6 +20172,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -20049,6 +20227,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -20111,6 +20292,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -20157,6 +20341,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20175,6 +20362,8 @@ service: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20212,6 +20401,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20251,6 +20442,8 @@ service: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20276,6 +20469,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20303,6 +20498,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20349,6 +20546,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20398,6 +20597,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20427,6 +20628,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20461,6 +20664,8 @@ service: path: /datasource/box/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceBoxCallbackGetRequest @@ -20521,6 +20726,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -20552,6 +20760,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -20615,6 +20826,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -20651,6 +20865,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -20703,6 +20920,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -20741,6 +20961,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -20793,6 +21016,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -20855,6 +21081,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -20901,6 +21130,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20919,6 +21151,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20957,6 +21191,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20996,6 +21232,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21021,6 +21259,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21049,6 +21289,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21096,6 +21338,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21146,6 +21390,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21176,6 +21422,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21210,6 +21458,8 @@ service: path: /datasource/confluence/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceConfluenceCallbackGetRequest @@ -21271,6 +21521,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -21302,6 +21555,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -21365,6 +21621,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -21401,6 +21660,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -21453,6 +21715,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -21491,6 +21756,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -21543,6 +21811,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -21605,6 +21876,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -21651,6 +21925,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21669,6 +21946,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21707,6 +21986,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21746,6 +22027,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21771,6 +22054,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21799,6 +22084,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21846,6 +22133,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21896,6 +22185,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21926,6 +22217,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -21960,6 +22253,8 @@ service: path: /datasource/dropbox/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceDropboxCallbackGetRequest @@ -22021,6 +22316,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -22052,6 +22350,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -22115,6 +22416,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -22151,6 +22455,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -22203,6 +22510,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -22241,6 +22551,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -22293,6 +22606,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -22355,6 +22671,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -22401,6 +22720,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -22419,6 +22741,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22457,6 +22781,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22496,6 +22822,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22521,6 +22849,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22549,6 +22879,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22595,6 +22927,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22645,6 +22979,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22675,6 +23011,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -22709,6 +23047,8 @@ service: path: /datasource/gdrive/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceGdriveCallbackGetRequest @@ -22770,6 +23110,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -22801,6 +23144,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -22864,6 +23210,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -22900,6 +23249,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -22952,6 +23304,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -22990,6 +23345,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -23042,6 +23400,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -23104,6 +23465,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -23150,6 +23514,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -23168,6 +23535,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23206,6 +23575,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23245,6 +23616,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23270,6 +23643,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23298,6 +23673,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23344,6 +23721,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23394,6 +23773,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23424,6 +23805,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23458,6 +23841,8 @@ service: path: /datasource/notion/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceNotionCallbackGetRequest @@ -23519,6 +23904,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -23550,6 +23938,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -23613,6 +24004,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -23649,6 +24043,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -23701,6 +24098,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -23739,6 +24139,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -23791,6 +24194,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -23853,6 +24259,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -23899,6 +24308,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -23917,6 +24329,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23955,6 +24369,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -23994,6 +24410,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24019,6 +24437,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24047,6 +24467,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24094,6 +24516,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24144,6 +24568,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24174,6 +24600,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24208,6 +24636,8 @@ service: path: /datasource/onedrive/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceOnedriveCallbackGetRequest @@ -24269,6 +24699,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -24300,6 +24733,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -24363,6 +24799,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -24399,6 +24838,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -24451,6 +24893,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -24489,6 +24934,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -24541,6 +24989,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -24603,6 +25054,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -24649,6 +25103,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24667,6 +25124,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24705,6 +25164,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24744,6 +25205,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24769,6 +25232,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24797,6 +25262,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24844,6 +25311,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24894,6 +25363,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24924,6 +25395,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -24958,6 +25431,8 @@ service: path: /datasource/sharepoint/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceSharepointCallbackGetRequest @@ -25046,6 +25521,9 @@ service: "docs": "Successful Response", "type": "root.DocumentStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentDelete": { "auth": true, @@ -25082,6 +25560,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentEmbeddingGet": { "auth": false, @@ -25119,6 +25600,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocumentEmbeddingRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentEmbeddingQuery": { "auth": true, @@ -25172,6 +25656,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetChatDocumentEmbeddingRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentFetch": { "auth": true, @@ -25229,6 +25716,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentList": { "auth": true, @@ -25302,6 +25792,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentQuery": { "auth": true, @@ -25351,6 +25844,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentUpdate": { "auth": true, @@ -25425,6 +25921,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentUpload": { "auth": true, @@ -25495,6 +25994,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -25539,6 +26041,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -25596,6 +26101,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -25658,6 +26166,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -25730,6 +26241,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "taskStatus": { "auth": true, @@ -25776,6 +26290,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.DocumentStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -25907,6 +26424,8 @@ service: path: /org/{org_id}/project/{project_id}/document method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -25962,6 +26481,8 @@ service: path: /org/{org_id}/project/{project_id}/document method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26002,6 +26523,8 @@ service: path: /org/{org_id}/project/{project_id}/document/upload method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26052,6 +26575,8 @@ service: path: /org/{org_id}/project/{project_id}/document/create/status/{group_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26085,6 +26610,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id}/query method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26120,6 +26647,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26163,6 +26692,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26216,6 +26747,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26243,6 +26776,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id}/embeddings method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26286,6 +26821,8 @@ service: docs: >- Fetch an individual embedding record by its ID. Useful for examining the source submitted to an LLM + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26313,6 +26850,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26355,6 +26894,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26388,6 +26929,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26449,6 +26992,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -26562,6 +27107,9 @@ service: "docs": "Successful Response", "type": "root.OAuthClientCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookHydraTokenHook": { "auth": false, @@ -26609,6 +27157,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookKratosSignupCheck": { "auth": false, @@ -26656,6 +27207,9 @@ service: "docs": "Successful Response", "type": "root.KratosWebhookResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookKratosSignupCommit": { "auth": false, @@ -26703,6 +27257,9 @@ service: "docs": "Successful Response", "type": "root.KratosWebhookResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26720,6 +27277,8 @@ service: path: /internal/webhook/hydra/token_hook method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Hydra Token Hook request: name: HydraWebhookTokenHook @@ -26748,6 +27307,8 @@ service: path: /internal/project/{project_id}/register_oauth_client method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: project_id: string display-name: Register Oauth Client @@ -26791,6 +27352,8 @@ service: path: /internal/webhook/kratos/signup_check method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Kratos Signup Check request: body: @@ -26819,6 +27382,8 @@ service: path: /internal/webhook/kratos/signup_commit method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Kratos Signup Commit request: body: @@ -26977,6 +27542,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAvailableGuardrails": { "auth": false, @@ -27014,6 +27582,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -27034,6 +27605,8 @@ service: docs: >- All supported LLM providers and models. Not all models have the same functionality. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -27145,6 +27718,8 @@ service: path: /org/{org_id}/project/{project_id}/guardrail method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -27229,6 +27804,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainDelete": { "auth": true, @@ -27265,6 +27843,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainsList": { "auth": true, @@ -27308,6 +27889,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetOrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainsPost": { "auth": true, @@ -27356,6 +27940,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgGet": { "auth": true, @@ -27391,6 +27978,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesCreate": { "auth": true, @@ -27452,6 +28042,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationInvite", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesDelete": { "auth": true, @@ -27477,6 +28070,9 @@ service: "org_id": "string", "org_invite_id": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesList": { "auth": true, @@ -27530,6 +28126,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetOrganizationInvite", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgJoin": { "auth": true, @@ -27568,6 +28167,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgList": { "auth": true, @@ -27600,6 +28202,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgUpdate": { "auth": true, @@ -27655,6 +28260,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgUpdateAvatar": { "auth": true, @@ -27702,6 +28310,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_get_member": { "auth": true, @@ -27742,6 +28353,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_list_members": { "auth": true, @@ -27795,6 +28409,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_test_permissions": { "auth": true, @@ -27853,6 +28470,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_update_member_roles": { "auth": true, @@ -27921,6 +28541,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28026,6 +28649,8 @@ service: docs: >- Lists all members that have been granted direct access to the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: IAM - List Organization Members @@ -28063,6 +28688,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string member: string @@ -28091,6 +28718,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string member: string @@ -28148,6 +28777,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: IAM - Test Organization Permissions @@ -28184,6 +28815,8 @@ service: path: /org method: GET auth: true + source: + openapi: ../openapi.yml display-name: Org List request: name: OrgListOrgGetRequest @@ -28204,6 +28837,8 @@ service: path: /org method: POST auth: true + source: + openapi: ../openapi.yml display-name: Org Create request: name: OrgCreate @@ -28234,6 +28869,8 @@ service: path: /org/{org_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Get @@ -28257,6 +28894,8 @@ service: path: /org/{org_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Update @@ -28290,6 +28929,8 @@ service: path: /org/{org_id}/join method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Join @@ -28315,6 +28956,8 @@ service: path: /org/{org_id}/invite method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Invites List @@ -28349,6 +28992,8 @@ service: path: /org/{org_id}/invite method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Invites Create @@ -28385,6 +29030,8 @@ service: path: /org/{org_id}/invite/{org_invite_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string org_invite_id: string @@ -28404,6 +29051,8 @@ service: path: /org/{org_id}/domains method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Domains List @@ -28431,6 +29080,8 @@ service: path: /org/{org_id}/domains method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Domains Post @@ -28461,6 +29112,8 @@ service: path: /org/{org_id}/domains/{domain_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string domain_id: string @@ -28487,6 +29140,8 @@ service: path: /org/{org_id}/avatar method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Update Avatar @@ -28576,6 +29231,9 @@ service: "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -28618,6 +29276,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getProject": { "auth": true, @@ -28674,6 +29335,9 @@ service: "docs": "Successful Response", "type": "root.ProjectWithDatasources", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getProjectConfig": { "auth": false, @@ -28724,6 +29388,9 @@ service: "docs": "Successful Response", "type": "root.ProjectConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -28779,6 +29446,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -28839,6 +29509,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -28909,6 +29582,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listProject": { "auth": true, @@ -28961,6 +29637,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetProject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "projectUpdateAvatar": { "auth": true, @@ -29011,6 +29690,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setProjectConfig": { "auth": true, @@ -29104,6 +29786,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.ProjectConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateProject": { "auth": true, @@ -29156,6 +29841,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29304,6 +29992,8 @@ service: path: /org/{org_id}/project method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: List Project @@ -29338,6 +30028,8 @@ service: path: /org/{org_id}/project method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Create Project @@ -29370,6 +30062,8 @@ service: path: /org/{org_id}/project/{project_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29410,6 +30104,8 @@ service: path: /org/{org_id}/project/{project_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29445,6 +30141,8 @@ service: path: /org/{org_id}/project/{project_id}/config method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29476,6 +30174,8 @@ service: path: /org/{org_id}/project/{project_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29540,6 +30240,8 @@ service: path: /org/{org_id}/project/{project_id}/avatar method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29578,6 +30280,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29617,6 +30321,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29647,6 +30353,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29706,6 +30414,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -29896,6 +30606,9 @@ types: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "enable": { "auth": true, @@ -29928,6 +30641,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -30007,6 +30723,9 @@ types: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -30065,6 +30784,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -30082,6 +30804,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -30103,6 +30827,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/start method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -30154,6 +30880,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/run/{sync_run_id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -30192,6 +30920,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -30332,6 +31062,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllTaskForwarders": { "audiences": [ @@ -30410,6 +31143,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskForwarder": { "audiences": [ @@ -30471,6 +31207,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTaskForwarder": { "audiences": [ @@ -30559,6 +31298,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -30576,6 +31318,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -30639,6 +31383,8 @@ service: A Task Forwarder will receive the output of a Task and forward it to the specified destination. This can be used to send data to external systems, or to trigger other actions based on the output of a Task. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -30712,6 +31458,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder/{task_forwarder_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -30757,6 +31505,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder/{task_forwarder_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -30983,6 +31733,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editTask": { "audiences": [ @@ -31125,6 +31878,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllTasks": { "audiences": [ @@ -31219,6 +31975,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTask", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTask": { "audiences": [ @@ -31298,6 +32057,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskRun": { "audiences": [ @@ -31370,6 +32132,9 @@ service: "docs": "Successful Response", "type": "root.TaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskRuns": { "audiences": [ @@ -31463,6 +32228,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "runTask": { "audiences": [ @@ -31550,6 +32318,9 @@ service: "docs": "Successful Response", "type": "root.TaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_get_member": { "auth": true, @@ -31594,6 +32365,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_list_members": { "auth": true, @@ -31651,6 +32425,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_test_permissions": { "auth": true, @@ -31713,6 +32490,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_update_member_roles": { "auth": true, @@ -31785,6 +32565,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -31990,6 +32773,8 @@ service: path: /org/{org_id}/project/{project_id}/task method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32079,6 +32864,8 @@ service: docs: >- Tasks are the core of the platform and define the prompts and models used to generate responses. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32232,6 +33019,8 @@ service: path: /org/{org_id}/project/{project_id}/task/{task_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32305,6 +33094,8 @@ service: path: /org/{org_id}/project/{project_id}/task/{task_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32438,6 +33229,8 @@ service: method: GET auth: true docs: Individual Task Runs provide an audit trail for all Task executions. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32517,6 +33310,8 @@ service: Run a specified Task against provided text and/or image input. The response is controlled by the `output_format` of the Task. Note that a Task must be `enabled` to be run. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32588,6 +33383,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -32629,6 +33426,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -32661,6 +33460,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -32722,6 +33523,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -32763,6 +33566,8 @@ service: method: GET auth: true docs: Fetch an individual Task Run. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -32973,6 +33778,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "userPost": { "auth": true, @@ -33018,6 +33826,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "userUpdateAvatar": { "auth": true, @@ -33058,6 +33869,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -33076,6 +33890,8 @@ service: method: GET auth: true docs: Retrieve the profile of the current user. + source: + openapi: ../openapi.yml display-name: User Get response: docs: Successful Response @@ -33095,6 +33911,8 @@ service: method: POST auth: true docs: Update the profile of the current user. + source: + openapi: ../openapi.yml display-name: User Post request: name: UserProfileUpdate @@ -33123,6 +33941,8 @@ service: path: /user/avatar method: POST auth: true + source: + openapi: ../openapi.yml display-name: User Update Avatar request: name: Body_user_update_avatar_user_avatar_post diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rules.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rules.json index f2b57a3935e..3cafaa6db95 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rules.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/rules.json @@ -32,6 +32,9 @@ "docs": "Successful response", "type": "GetExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -191,6 +194,8 @@ service: path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Default and validation rules response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/seam.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/seam.json index f58c3f933b1..d15940babc1 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/seam.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/seam.json @@ -10040,6 +10040,9 @@ types: "property": "access_code", "type": "AccessCodesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_multiple": { "auth": true, @@ -10143,6 +10146,9 @@ types: "property": "access_codes", "type": "AccessCodesCreateMultipleResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -10210,6 +10216,9 @@ types: "docs": "OK", "type": "AccessCodesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "generate_code": { "auth": true, @@ -10285,6 +10294,9 @@ types: "property": "generated_code", "type": "AccessCodesGenerateCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -10368,6 +10380,9 @@ types: "property": "access_code", "type": "AccessCodesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -10445,6 +10460,9 @@ types: "property": "access_codes", "type": "AccessCodesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "pull_backup_access_code": { "auth": true, @@ -10520,6 +10538,9 @@ types: "property": "backup_access_code", "type": "AccessCodesPullBackupAccessCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -10616,6 +10637,9 @@ types: "docs": "OK", "type": "AccessCodesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10909,6 +10933,8 @@ service: path: /access_codes/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/create request: name: AccessCodesCreateRequest @@ -10992,6 +11018,8 @@ service: path: /access_codes/create_multiple method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/create_multiple request: name: AccessCodesCreateMultipleRequest @@ -11068,6 +11096,8 @@ service: path: /access_codes/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/delete request: name: AccessCodesDeleteRequest @@ -11107,6 +11137,8 @@ service: path: /access_codes/generate_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/generate_code request: name: AccessCodesGenerateCodeRequest @@ -11158,6 +11190,8 @@ service: path: /access_codes/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/get request: name: AccessCodesGetRequest @@ -11213,6 +11247,8 @@ service: path: /access_codes/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/list request: name: AccessCodesListRequest @@ -11265,6 +11301,8 @@ service: path: /access_codes/pull_backup_access_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/pull_backup_access_code request: name: AccessCodesPullBackupAccessCodeRequest @@ -11316,6 +11354,8 @@ service: path: /access_codes/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/update request: name: AccessCodesUpdateRequest @@ -11466,6 +11506,9 @@ service: "property": "access_code", "type": "SimulateCreateUnmanagedAccessCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -11502,6 +11545,8 @@ service: path: /access_codes/simulate/create_unmanaged_access_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/simulate/create_unmanaged_access_code request: name: SimulateCreateUnmanagedAccessCodeRequest @@ -11616,6 +11661,9 @@ service: "docs": "OK", "type": "UnmanagedConvertToManagedResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -11674,6 +11722,9 @@ service: "docs": "OK", "type": "UnmanagedDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -11748,6 +11799,9 @@ service: "property": "access_code", "type": "UnmanagedGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -11817,6 +11871,9 @@ service: "property": "access_codes", "type": "UnmanagedListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -11869,6 +11926,9 @@ service: "docs": "OK", "type": "UnmanagedUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -11965,6 +12025,8 @@ service: path: /access_codes/unmanaged/convert_to_managed method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/convert_to_managed request: name: UnmanagedConvertToManagedRequest @@ -11997,6 +12059,8 @@ service: path: /access_codes/unmanaged/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/delete request: name: UnmanagedDeleteRequest @@ -12032,6 +12096,8 @@ service: path: /access_codes/unmanaged/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/get request: name: UnmanagedGetRequest @@ -12078,6 +12144,8 @@ service: path: /access_codes/unmanaged/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/list request: name: UnmanagedListRequest @@ -12121,6 +12189,8 @@ service: path: /access_codes/unmanaged/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/update request: name: UnmanagedUpdateRequest @@ -12218,6 +12288,9 @@ service: "docs": "OK", "type": "AccessGroupsAddUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -12278,6 +12351,9 @@ service: "property": "acs_access_group", "type": "AccessGroupsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -12347,6 +12423,9 @@ service: "property": "acs_access_groups", "type": "AccessGroupsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_users": { "auth": true, @@ -12420,6 +12499,9 @@ service: "property": "acs_users", "type": "AccessGroupsListUsersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_user": { "auth": true, @@ -12477,6 +12559,9 @@ service: "docs": "OK", "type": "AccessGroupsRemoveUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12573,6 +12658,8 @@ service: path: /acs/access_groups/add_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/add_user request: name: AccessGroupsAddUserRequest @@ -12604,6 +12691,8 @@ service: path: /acs/access_groups/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/get request: name: AccessGroupsGetRequest @@ -12642,6 +12731,8 @@ service: path: /acs/access_groups/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/list request: name: AccessGroupsListRequest @@ -12683,6 +12774,8 @@ service: path: /acs/access_groups/list_users method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/list_users request: name: AccessGroupsListUsersRequest @@ -12731,6 +12824,8 @@ service: path: /acs/access_groups/remove_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/remove_user request: name: AccessGroupsRemoveUserRequest @@ -12830,6 +12925,9 @@ service: "property": "acs_credential_pools", "type": "CredentialPoolsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12866,6 +12964,8 @@ service: path: /acs/credential_pools/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credential_pools/list request: name: CredentialPoolsListRequest @@ -12994,6 +13094,9 @@ service: "property": "acs_credential_provisioning_automation", "type": "CredentialProvisioningAutomationsLaunchResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -13030,6 +13133,8 @@ service: path: /acs/credential_provisioning_automations/launch method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credential_provisioning_automations/launch request: name: CredentialProvisioningAutomationsLaunchRequest @@ -13186,6 +13291,9 @@ service: "docs": "OK", "type": "CredentialsAssignResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -13305,6 +13413,9 @@ service: "property": "acs_credential", "type": "CredentialsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -13352,6 +13463,9 @@ service: "docs": "OK", "type": "CredentialsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -13443,6 +13557,9 @@ service: "property": "acs_credential", "type": "CredentialsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -13517,6 +13634,9 @@ service: "property": "acs_credentials", "type": "CredentialsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_entrances": { "auth": true, @@ -13589,6 +13709,9 @@ service: "property": "acs_entrances", "type": "CredentialsListAccessibleEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign": { "auth": true, @@ -13689,6 +13812,9 @@ service: "docs": "OK", "type": "CredentialsUnassignResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -13781,6 +13907,9 @@ service: "docs": "OK", "type": "CredentialsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14030,6 +14159,8 @@ service: path: /acs/credentials/assign method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/assign request: name: CredentialsAssignRequest @@ -14093,6 +14224,8 @@ service: path: /acs/credentials/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/create request: name: CredentialsCreateRequest @@ -14169,6 +14302,8 @@ service: path: /acs/credentials/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/delete request: name: CredentialsDeleteRequest @@ -14195,6 +14330,8 @@ service: path: /acs/credentials/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/get request: name: CredentialsGetRequest @@ -14254,6 +14391,8 @@ service: path: /acs/credentials/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/list request: name: CredentialsListRequest @@ -14303,6 +14442,8 @@ service: path: /acs/credentials/list_accessible_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/list_accessible_entrances request: name: CredentialsListAccessibleEntrancesRequest @@ -14346,6 +14487,8 @@ service: path: /acs/credentials/unassign method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/unassign request: name: CredentialsUnassignRequest @@ -14409,6 +14552,8 @@ service: path: /acs/credentials/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/update request: name: CredentialsUpdateRequest @@ -14554,6 +14699,9 @@ service: "property": "acs_entrance", "type": "EntrancesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access": { "auth": true, @@ -14611,6 +14759,9 @@ service: "docs": "OK", "type": "EntrancesGrantAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -14690,6 +14841,9 @@ service: "property": "acs_entrances", "type": "EntrancesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_credentials_with_access": { "auth": true, @@ -14775,6 +14929,9 @@ service: "property": "acs_credentials", "type": "EntrancesListCredentialsWithAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14857,6 +15014,8 @@ service: path: /acs/entrances/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/get request: name: EntrancesGetRequest @@ -14903,6 +15062,8 @@ service: path: /acs/entrances/grant_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/grant_access request: name: EntrancesGrantAccessRequest @@ -14934,6 +15095,8 @@ service: path: /acs/entrances/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/list request: name: EntrancesListRequest @@ -14980,6 +15143,8 @@ service: path: /acs/entrances/list_credentials_with_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/list_credentials_with_access request: name: EntrancesListCredentialsWithAccessRequest @@ -15120,6 +15285,9 @@ service: "property": "acs_system", "type": "SystemsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -15197,6 +15365,9 @@ service: "property": "acs_systems", "type": "SystemsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_compatible_credential_manager_acs_systems": { "auth": true, @@ -15276,6 +15447,9 @@ service: "property": "acs_systems", "type": "SystemsListCompatibleCredentialManagerAcsSystemsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -15344,6 +15518,8 @@ service: path: /acs/systems/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/get request: name: SystemsGetRequest @@ -15394,6 +15570,8 @@ service: path: /acs/systems/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/list request: name: SystemsListRequest @@ -15443,6 +15621,8 @@ service: path: /acs/systems/list_compatible_credential_manager_acs_systems method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/list_compatible_credential_manager_acs_systems request: name: SystemsListCompatibleCredentialManagerAcsSystemsRequest @@ -15561,6 +15741,9 @@ service: "docs": "OK", "type": "UsersAddToAccessGroupResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -15668,6 +15851,9 @@ service: "property": "acs_user", "type": "UsersCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -15715,6 +15901,9 @@ service: "docs": "OK", "type": "UsersDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -15786,6 +15975,9 @@ service: "property": "acs_user", "type": "UsersGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -15868,6 +16060,9 @@ service: "property": "acs_users", "type": "UsersListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_entrances": { "auth": true, @@ -15940,6 +16135,9 @@ service: "property": "acs_entrances", "type": "UsersListAccessibleEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_from_access_group": { "auth": true, @@ -15997,6 +16195,9 @@ service: "docs": "OK", "type": "UsersRemoveFromAccessGroupResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke_access_to_all_entrances": { "auth": true, @@ -16044,6 +16245,9 @@ service: "docs": "OK", "type": "UsersRevokeAccessToAllEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "suspend": { "auth": true, @@ -16091,6 +16295,9 @@ service: "docs": "OK", "type": "UsersSuspendResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unsuspend": { "auth": true, @@ -16138,6 +16345,9 @@ service: "docs": "OK", "type": "UsersUnsuspendResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -16220,6 +16430,9 @@ service: "docs": "OK", "type": "UsersUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -16434,6 +16647,8 @@ service: path: /acs/users/add_to_access_group method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/add_to_access_group request: name: UsersAddToAccessGroupRequest @@ -16465,6 +16680,8 @@ service: path: /acs/users/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/create request: name: UsersCreateRequest @@ -16535,6 +16752,8 @@ service: path: /acs/users/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/delete request: name: UsersDeleteRequest @@ -16561,6 +16780,8 @@ service: path: /acs/users/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/get request: name: UsersGetRequest @@ -16609,6 +16830,8 @@ service: path: /acs/users/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/list request: name: UsersListRequest @@ -16662,6 +16885,8 @@ service: path: /acs/users/list_accessible_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/list_accessible_entrances request: name: UsersListAccessibleEntrancesRequest @@ -16705,6 +16930,8 @@ service: path: /acs/users/remove_from_access_group method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/remove_from_access_group request: name: UsersRemoveFromAccessGroupRequest @@ -16736,6 +16963,8 @@ service: path: /acs/users/revoke_access_to_all_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/revoke_access_to_all_entrances request: name: UsersRevokeAccessToAllEntrancesRequest @@ -16762,6 +16991,8 @@ service: path: /acs/users/suspend method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/suspend request: name: UsersSuspendRequest @@ -16788,6 +17019,8 @@ service: path: /acs/users/unsuspend method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/unsuspend request: name: UsersUnsuspendRequest @@ -16814,6 +17047,8 @@ service: path: /acs/users/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/update request: name: UsersUpdateRequest @@ -16925,6 +17160,9 @@ service: "property": "action_attempt", "type": "ActionAttemptsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -16976,6 +17214,9 @@ service: "property": "action_attempts", "type": "ActionAttemptsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -17028,6 +17269,8 @@ service: path: /action_attempts/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /action_attempts/get request: name: ActionAttemptsGetRequest @@ -17061,6 +17304,8 @@ service: path: /action_attempts/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /action_attempts/list request: name: ActionAttemptsListRequest @@ -17168,6 +17413,9 @@ service: "property": "client_session", "type": "ClientSessionsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -17215,6 +17463,9 @@ service: "docs": "OK", "type": "ClientSessionsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -17271,6 +17522,9 @@ service: "property": "client_session", "type": "ClientSessionsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_or_create": { "auth": false, @@ -17338,6 +17592,9 @@ service: "property": "client_session", "type": "ClientSessionsGetOrCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access": { "auth": true, @@ -17396,6 +17653,9 @@ service: "docs": "OK", "type": "ClientSessionsGrantAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -17457,6 +17717,9 @@ service: "property": "client_sessions", "type": "ClientSessionsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke": { "auth": true, @@ -17504,6 +17767,9 @@ service: "docs": "OK", "type": "ClientSessionsRevokeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -17632,6 +17898,8 @@ service: path: /client_sessions/create method: POST auth: false + source: + openapi: ../openapi.json display-name: /client_sessions/create request: name: ClientSessionsCreateRequest @@ -17675,6 +17943,8 @@ service: path: /client_sessions/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/delete request: name: ClientSessionsDeleteRequest @@ -17701,6 +17971,8 @@ service: path: /client_sessions/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/get request: name: ClientSessionsGetRequest @@ -17738,6 +18010,8 @@ service: path: /client_sessions/get_or_create method: POST auth: false + source: + openapi: ../openapi.json display-name: /client_sessions/get_or_create request: name: ClientSessionsGetOrCreateRequest @@ -17781,6 +18055,8 @@ service: path: /client_sessions/grant_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/grant_access request: name: ClientSessionsGrantAccessRequest @@ -17820,6 +18096,8 @@ service: path: /client_sessions/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/list request: name: ClientSessionsListRequest @@ -17860,6 +18138,8 @@ service: path: /client_sessions/revoke method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/revoke request: name: ClientSessionsRevokeRequest @@ -17973,6 +18253,9 @@ service: "property": "connect_webview", "type": "ConnectWebviewsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -18020,6 +18303,9 @@ service: "docs": "OK", "type": "ConnectWebviewsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -18095,6 +18381,9 @@ service: "property": "connect_webview", "type": "ConnectWebviewsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -18170,6 +18459,9 @@ service: "property": "connect_webviews", "type": "ConnectWebviewsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18433,6 +18725,8 @@ service: path: /connect_webviews/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/create request: name: ConnectWebviewsCreateRequest @@ -18492,6 +18786,8 @@ service: path: /connect_webviews/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/delete request: name: ConnectWebviewsDeleteRequest @@ -18518,6 +18814,8 @@ service: path: /connect_webviews/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/get request: name: ConnectWebviewsGetRequest @@ -18568,6 +18866,8 @@ service: path: /connect_webviews/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/list request: name: ConnectWebviewsListRequest @@ -18684,6 +18984,9 @@ service: "docs": "OK", "type": "ConnectedAccountsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -18740,6 +19043,9 @@ service: "property": "connected_account", "type": "ConnectedAccountsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -18799,6 +19105,9 @@ service: "property": "connected_accounts", "type": "ConnectedAccountsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -18872,6 +19181,9 @@ service: "property": "connected_account", "type": "ConnectedAccountsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19073,6 +19385,8 @@ service: path: /connected_accounts/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/delete request: name: ConnectedAccountsDeleteRequest @@ -19102,6 +19416,8 @@ service: path: /connected_accounts/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/get request: body: ConnectedAccountsGetRequest @@ -19141,6 +19457,8 @@ service: path: /connected_accounts/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/list request: name: ConnectedAccountsListRequest @@ -19182,6 +19500,8 @@ service: path: /connected_accounts/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/update request: name: ConnectedAccountsUpdateRequest @@ -19287,6 +19607,9 @@ service: "docs": "OK", "type": "DevicesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -19587,6 +19910,9 @@ service: "property": "device", "type": "DevicesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -19705,6 +20031,9 @@ service: "property": "devices", "type": "DevicesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_device_providers": { "auth": true, @@ -19753,6 +20082,9 @@ service: "property": "device_providers", "type": "DevicesListDeviceProvidersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -19807,6 +20139,9 @@ service: "docs": "OK", "type": "DevicesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -20271,6 +20606,8 @@ service: path: /devices/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/delete request: name: DevicesDeleteRequest @@ -20297,6 +20634,8 @@ service: path: /devices/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/get request: name: DevicesGetRequest @@ -20519,6 +20858,8 @@ service: path: /devices/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/list request: name: DevicesListRequest @@ -20597,6 +20938,8 @@ service: path: /devices/list_device_providers method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/list_device_providers request: name: DevicesListDeviceProvidersRequest @@ -20626,6 +20969,8 @@ service: path: /devices/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/update request: name: DevicesUpdateRequest @@ -20716,6 +21061,9 @@ service: "docs": "OK", "type": "SimulateConnectResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "disconnect": { "auth": true, @@ -20763,6 +21111,9 @@ service: "docs": "OK", "type": "SimulateDisconnectResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove": { "auth": true, @@ -20810,6 +21161,9 @@ service: "docs": "OK", "type": "SimulateRemoveResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -20872,6 +21226,8 @@ service: path: /devices/simulate/connect method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/connect request: name: SimulateConnectRequest @@ -20898,6 +21254,8 @@ service: path: /devices/simulate/disconnect method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/disconnect request: name: SimulateDisconnectRequest @@ -20924,6 +21282,8 @@ service: path: /devices/simulate/remove method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/remove request: name: SimulateRemoveRequest @@ -21057,6 +21417,9 @@ service: "property": "device", "type": "UnmanagedGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -21167,6 +21530,9 @@ service: "property": "devices", "type": "UnmanagedListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -21216,6 +21582,9 @@ service: "docs": "OK", "type": "UnmanagedUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -21584,6 +21953,8 @@ service: path: /devices/unmanaged/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/get request: name: UnmanagedGetRequest @@ -21650,6 +22021,8 @@ service: path: /devices/unmanaged/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/list request: name: UnmanagedListRequest @@ -21722,6 +22095,8 @@ service: path: /devices/unmanaged/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/update request: name: UnmanagedUpdateRequest @@ -21830,6 +22205,9 @@ service: "property": "event", "type": "EventsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -21920,6 +22298,9 @@ service: "property": "events", "type": "EventsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -22711,6 +23092,8 @@ service: path: /events/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /events/get request: name: EventsGetRequest @@ -22756,6 +23139,8 @@ service: path: /events/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /events/list request: name: EventsListRequest @@ -23374,6 +23759,9 @@ service: "property": "device", "type": "LocksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -23540,6 +23928,9 @@ service: "property": "devices", "type": "LocksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "lock_door": { "auth": true, @@ -23599,6 +23990,9 @@ service: "property": "action_attempt", "type": "LocksLockDoorResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unlock_door": { "auth": true, @@ -23658,6 +24052,9 @@ service: "property": "action_attempt", "type": "LocksUnlockDoorResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -24048,6 +24445,8 @@ service: path: /locks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/get request: name: LocksGetRequest @@ -24465,6 +24864,8 @@ service: path: /locks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/list request: name: LocksListRequest @@ -24577,6 +24978,8 @@ service: path: /locks/lock_door method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/lock_door request: name: LocksLockDoorRequest @@ -24613,6 +25016,8 @@ service: path: /locks/unlock_door method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/unlock_door request: name: LocksUnlockDoorRequest @@ -24712,6 +25117,9 @@ service: "property": "network", "type": "NetworksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -24756,6 +25164,9 @@ service: "property": "networks", "type": "NetworksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -24808,6 +25219,8 @@ service: path: /networks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /networks/get request: name: NetworksGetRequest @@ -24840,6 +25253,8 @@ service: path: /networks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /networks/list request: name: NetworksListRequest @@ -24951,6 +25366,9 @@ service: "property": "noise_threshold", "type": "NoiseThresholdsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -25019,6 +25437,9 @@ service: "docs": "OK", "type": "NoiseThresholdsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -25076,6 +25497,9 @@ service: "property": "noise_threshold", "type": "NoiseThresholdsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -25136,6 +25560,9 @@ service: "property": "noise_thresholds", "type": "NoiseThresholdsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -25209,6 +25636,9 @@ service: "docs": "OK", "type": "NoiseThresholdsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -25311,6 +25741,8 @@ service: path: /noise_sensors/noise_thresholds/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/create request: name: NoiseThresholdsCreateRequest @@ -25362,6 +25794,8 @@ service: path: /noise_sensors/noise_thresholds/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/delete request: name: NoiseThresholdsDeleteRequest @@ -25402,6 +25836,8 @@ service: path: /noise_sensors/noise_thresholds/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/get request: name: NoiseThresholdsGetRequest @@ -25437,6 +25873,8 @@ service: path: /noise_sensors/noise_thresholds/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/list request: name: NoiseThresholdsListRequest @@ -25473,6 +25911,8 @@ service: path: /noise_sensors/noise_thresholds/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/update request: name: NoiseThresholdsUpdateRequest @@ -25574,6 +26014,9 @@ service: "docs": "OK", "type": "SimulateTriggerNoiseThresholdResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -25608,6 +26051,8 @@ service: path: /noise_sensors/simulate/trigger_noise_threshold method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/simulate/trigger_noise_threshold request: name: SimulateTriggerNoiseThresholdRequest @@ -25682,6 +26127,9 @@ service: "docs": "OK", "type": "PhonesDeactivateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -25765,6 +26213,9 @@ service: "property": "phones", "type": "PhonesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -25815,6 +26266,8 @@ service: path: /phones/deactivate method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/deactivate request: name: PhonesDeactivateRequest @@ -25838,6 +26291,8 @@ service: path: /phones/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/list request: name: PhonesListRequest @@ -25999,6 +26454,9 @@ service: "property": "phone", "type": "SimulateCreateSandboxPhoneResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -26147,6 +26605,8 @@ service: path: /phones/simulate/create_sandbox_phone method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/simulate/create_sandbox_phone request: name: SimulateCreateSandboxPhoneRequest @@ -26281,6 +26741,9 @@ service: "property": "action_attempt", "type": "ThermostatsCoolResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -26581,6 +27044,9 @@ service: "property": "thermostat", "type": "ThermostatsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "heat": { "auth": true, @@ -26642,6 +27108,9 @@ service: "property": "action_attempt", "type": "ThermostatsHeatResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "heat_cool": { "auth": true, @@ -26705,6 +27174,9 @@ service: "property": "action_attempt", "type": "ThermostatsHeatCoolResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -26823,6 +27295,9 @@ service: "property": "thermostats", "type": "ThermostatsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "off": { "auth": true, @@ -26882,6 +27357,9 @@ service: "property": "action_attempt", "type": "ThermostatsOffResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "set_fan_mode": { "auth": true, @@ -26943,6 +27421,9 @@ service: "property": "action_attempt", "type": "ThermostatsSetFanModeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -26992,6 +27473,9 @@ service: "docs": "OK", "type": "ThermostatsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27517,6 +28001,8 @@ service: path: /thermostats/cool method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/cool request: name: ThermostatsCoolRequest @@ -27555,6 +28041,8 @@ service: path: /thermostats/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/get request: name: ThermostatsGetRequest @@ -27777,6 +28265,8 @@ service: path: /thermostats/heat method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/heat request: name: ThermostatsHeatRequest @@ -27815,6 +28305,8 @@ service: path: /thermostats/heat_cool method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/heat_cool request: name: ThermostatsHeatCoolRequest @@ -27855,6 +28347,8 @@ service: path: /thermostats/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/list request: name: ThermostatsListRequest @@ -27935,6 +28429,8 @@ service: path: /thermostats/off method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/off request: name: ThermostatsOffRequest @@ -27971,6 +28467,8 @@ service: path: /thermostats/set_fan_mode method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/set_fan_mode request: name: ThermostatsSetFanModeRequest @@ -28009,6 +28507,8 @@ service: path: /thermostats/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/update request: name: ThermostatsUpdateRequest @@ -28120,6 +28620,9 @@ service: "property": "climate_setting_schedule", "type": "ClimateSettingSchedulesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -28167,6 +28670,9 @@ service: "docs": "OK", "type": "ClimateSettingSchedulesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -28242,6 +28748,9 @@ service: "property": "climate_setting_schedule", "type": "ClimateSettingSchedulesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -28313,6 +28822,9 @@ service: "property": "climate_setting_schedules", "type": "ClimateSettingSchedulesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -28392,6 +28904,9 @@ service: "docs": "OK", "type": "ClimateSettingSchedulesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -28528,6 +29043,8 @@ service: path: /thermostats/climate_setting_schedules/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/create request: name: ClimateSettingSchedulesCreateRequest @@ -28584,6 +29101,8 @@ service: path: /thermostats/climate_setting_schedules/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/delete request: name: ClimateSettingSchedulesDeleteRequest @@ -28610,6 +29129,8 @@ service: path: /thermostats/climate_setting_schedules/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/get request: name: ClimateSettingSchedulesGetRequest @@ -28658,6 +29179,8 @@ service: path: /thermostats/climate_setting_schedules/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/list request: name: ClimateSettingSchedulesListRequest @@ -28704,6 +29227,8 @@ service: path: /thermostats/climate_setting_schedules/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/update request: name: ClimateSettingSchedulesUpdateRequest @@ -28826,6 +29351,9 @@ service: "docs": "OK", "type": "UserIdentitiesAddAcsUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -28901,6 +29429,9 @@ service: "property": "user_identity", "type": "UserIdentitiesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -28948,6 +29479,9 @@ service: "docs": "OK", "type": "UserIdentitiesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -28991,6 +29525,9 @@ service: "property": "user_identity", "type": "UserIdentitiesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access_to_device": { "auth": true, @@ -29048,6 +29585,9 @@ service: "docs": "OK", "type": "UserIdentitiesGrantAccessToDeviceResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -29106,6 +29646,9 @@ service: "property": "user_identities", "type": "UserIdentitiesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_devices": { "auth": true, @@ -29250,6 +29793,9 @@ service: "property": "devices", "type": "UserIdentitiesListAccessibleDevicesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_acs_systems": { "auth": true, @@ -29329,6 +29875,9 @@ service: "property": "acs_systems", "type": "UserIdentitiesListAcsSystemsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_acs_users": { "auth": true, @@ -29402,6 +29951,9 @@ service: "property": "acs_users", "type": "UserIdentitiesListAcsUsersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_acs_user": { "auth": true, @@ -29459,6 +30011,9 @@ service: "docs": "OK", "type": "UserIdentitiesRemoveAcsUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke_access_to_device": { "auth": true, @@ -29516,6 +30071,9 @@ service: "docs": "OK", "type": "UserIdentitiesRevokeAccessToDeviceResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -29591,6 +30149,9 @@ service: "docs": "OK", "type": "UserIdentitiesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -29865,6 +30426,8 @@ service: path: /user_identities/add_acs_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/add_acs_user request: name: UserIdentitiesAddAcsUserRequest @@ -29896,6 +30459,8 @@ service: path: /user_identities/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/create request: name: UserIdentitiesCreateRequest @@ -29940,6 +30505,8 @@ service: path: /user_identities/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/delete request: name: UserIdentitiesDeleteRequest @@ -29966,6 +30533,8 @@ service: path: /user_identities/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/get request: body: UserIdentitiesGetRequest @@ -29996,6 +30565,8 @@ service: path: /user_identities/grant_access_to_device method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/grant_access_to_device request: name: UserIdentitiesGrantAccessToDeviceRequest @@ -30027,6 +30598,8 @@ service: path: /user_identities/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list request: name: UserIdentitiesListRequest @@ -30062,6 +30635,8 @@ service: path: /user_identities/list_accessible_devices method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_accessible_devices request: name: UserIdentitiesListAccessibleDevicesRequest @@ -30157,6 +30732,8 @@ service: path: /user_identities/list_acs_systems method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_acs_systems request: name: UserIdentitiesListAcsSystemsRequest @@ -30207,6 +30784,8 @@ service: path: /user_identities/list_acs_users method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_acs_users request: name: UserIdentitiesListAcsUsersRequest @@ -30255,6 +30834,8 @@ service: path: /user_identities/remove_acs_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/remove_acs_user request: name: UserIdentitiesRemoveAcsUserRequest @@ -30286,6 +30867,8 @@ service: path: /user_identities/revoke_access_to_device method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/revoke_access_to_device request: name: UserIdentitiesRevokeAccessToDeviceRequest @@ -30317,6 +30900,8 @@ service: path: /user_identities/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/update request: name: UserIdentitiesUpdateRequest @@ -30412,6 +30997,9 @@ service: "docs": "OK", "type": "EnrollmentAutomationsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -30467,6 +31055,9 @@ service: "property": "enrollment_automation", "type": "EnrollmentAutomationsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "launch": { "auth": true, @@ -30552,6 +31143,9 @@ service: "property": "enrollment_automation", "type": "EnrollmentAutomationsLaunchResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -30609,6 +31203,9 @@ service: "property": "enrollment_automations", "type": "EnrollmentAutomationsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -30770,6 +31367,8 @@ service: path: /user_identities/enrollment_automations/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/delete request: name: EnrollmentAutomationsDeleteRequest @@ -30796,6 +31395,8 @@ service: path: /user_identities/enrollment_automations/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/get request: name: EnrollmentAutomationsGetRequest @@ -30829,6 +31430,8 @@ service: path: /user_identities/enrollment_automations/launch method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/launch request: name: EnrollmentAutomationsLaunchRequest @@ -30877,6 +31480,8 @@ service: path: /user_identities/enrollment_automations/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/list request: name: EnrollmentAutomationsListRequest @@ -30976,6 +31581,9 @@ service: "property": "webhook", "type": "WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -31015,6 +31623,9 @@ service: "docs": "OK", "type": "WebhooksDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -31063,6 +31674,9 @@ service: "property": "webhook", "type": "WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -31099,6 +31713,9 @@ service: "property": "webhooks", "type": "WebhooksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -31142,6 +31759,9 @@ service: "docs": "OK", "type": "WebhooksUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -31238,6 +31858,8 @@ service: path: /webhooks/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/create request: name: WebhooksCreateRequest @@ -31272,6 +31894,8 @@ service: path: /webhooks/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/delete request: name: WebhooksDeleteRequest @@ -31295,6 +31919,8 @@ service: path: /webhooks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/get request: name: WebhooksGetRequest @@ -31325,6 +31951,8 @@ service: path: /webhooks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/list response: docs: OK @@ -31347,6 +31975,8 @@ service: path: /webhooks/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/update request: name: WebhooksUpdateRequest @@ -31444,6 +32074,9 @@ service: "property": "workspace", "type": "WorkspacesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -31477,6 +32110,9 @@ service: "property": "workspace", "type": "WorkspacesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -31512,6 +32148,9 @@ service: "property": "workspaces", "type": "WorkspacesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "reset_sandbox": { "auth": true, @@ -31545,6 +32184,9 @@ service: "property": "action_attempt", "type": "WorkspacesResetSandboxResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -31644,6 +32286,8 @@ service: path: /workspaces/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/create request: name: WorkspacesCreateRequest @@ -31688,6 +32332,8 @@ service: path: /workspaces/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/get response: docs: OK @@ -31710,6 +32356,8 @@ service: path: /workspaces/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/list response: docs: OK @@ -31732,6 +32380,8 @@ service: path: /workspaces/reset_sandbox method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/reset_sandbox response: docs: OK diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/squidex.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/squidex.json index cb865803f85..7cfc2fd9025 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/squidex.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/squidex.json @@ -16072,6 +16072,9 @@ types: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteClient": { "auth": true, @@ -16135,6 +16138,9 @@ types: "docs": "Client deleted.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContributor": { "auth": true, @@ -16199,6 +16205,9 @@ types: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteImage": { "auth": true, @@ -16257,6 +16266,9 @@ types: "docs": "App image removed.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteLanguage": { "auth": true, @@ -16320,6 +16332,9 @@ types: "docs": "Language deleted.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteMyself": { "auth": true, @@ -16379,6 +16394,9 @@ types: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRole": { "auth": true, @@ -16445,6 +16463,9 @@ types: "docs": "Role deleted.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteWorkflow": { "auth": true, @@ -16513,6 +16534,9 @@ types: "docs": "Workflow deleted.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getApp": { "auth": true, @@ -16570,6 +16594,9 @@ types: "docs": "Apps returned.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getApps": { "auth": true, @@ -16619,6 +16646,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Apps returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetScripts": { "auth": true, @@ -16667,6 +16697,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Asset scripts returned.", "type": "root.AssetScriptsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getClients": { "auth": true, @@ -16724,6 +16757,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Clients returned.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContributors": { "auth": true, @@ -16782,6 +16818,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Contributors returned.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getImage": { "auth": true, @@ -16804,6 +16843,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App image found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getLanguages": { "auth": true, @@ -16861,6 +16903,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Languages returned.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getPermissions": { "auth": true, @@ -16895,6 +16940,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App permissions returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRoles": { "auth": true, @@ -16955,6 +17003,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Roles returned.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSettings": { "auth": true, @@ -17011,6 +17062,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App settings returned.", "type": "root.AppSettingsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamApps": { "auth": true, @@ -17069,6 +17123,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Apps returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getWorkflows": { "auth": true, @@ -17131,6 +17188,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Workflows returned.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postApp": { "auth": true, @@ -17208,6 +17268,9 @@ You will be assigned as owner of the new app automatically.", "docs": "App created.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postClient": { "auth": true, @@ -17290,6 +17353,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Client created.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContributor": { "auth": true, @@ -17356,6 +17422,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Contributor assigned to app.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postLanguage": { "auth": true, @@ -17437,6 +17506,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Language created.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postRole": { "auth": true, @@ -17521,6 +17593,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Role created.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postWorkflow": { "auth": true, @@ -17607,6 +17682,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Workflow created.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putApp": { "auth": true, @@ -17684,6 +17762,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App updated.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAppTeam": { "auth": true, @@ -17757,6 +17838,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App transferred.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetScripts": { "auth": true, @@ -17845,6 +17929,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Asset scripts updated.", "type": "root.AssetScriptsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putClient": { "auth": true, @@ -17945,6 +18032,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Client updated.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putLanguage": { "auth": true, @@ -18031,6 +18121,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Language updated.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRole": { "auth": true, @@ -18120,6 +18213,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Role updated.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSettings": { "auth": true, @@ -18217,6 +18313,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App updated.", "type": "root.AppSettingsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putWorkflow": { "auth": true, @@ -18323,6 +18422,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Workflow updated.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "uploadImage": { "auth": true, @@ -18393,6 +18495,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App image uploaded.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18410,6 +18515,8 @@ service: path: /api/apps/{app}/assets/scripts method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18443,6 +18550,8 @@ service: path: /api/apps/{app}/assets/scripts method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18505,6 +18614,8 @@ service: method: GET auth: true docs: Gets all configured clients for the app with the specified name. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18547,6 +18658,8 @@ service: The client secret is auto generated on the server and returned. The client does not expire, the access token is valid for 30 days. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18599,6 +18712,8 @@ service: method: PUT auth: true docs: Only the display name can be changed, create a new client if necessary. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18672,6 +18787,8 @@ service: docs: >- The application that uses this client credentials cannot access the API after it has been revoked. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18714,6 +18831,8 @@ service: path: /api/apps/{app}/contributors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18751,6 +18870,8 @@ service: path: /api/apps/{app}/contributors method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18794,6 +18915,8 @@ service: path: /api/apps/{app}/contributors/me method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18832,6 +18955,8 @@ service: path: /api/apps/{app}/contributors/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18874,6 +18999,8 @@ service: path: /api/apps/{app}/image method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18889,6 +19016,8 @@ service: path: /api/apps/{app}/image method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18937,6 +19066,8 @@ service: path: /api/apps/{app}/image method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18978,6 +19109,8 @@ service: path: /api/apps/{app}/languages method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19014,6 +19147,8 @@ service: path: /api/apps/{app}/languages method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19063,6 +19198,8 @@ service: path: /api/apps/{app}/languages/{language} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19119,6 +19256,8 @@ service: path: /api/apps/{app}/languages/{language} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19160,6 +19299,8 @@ service: path: /api/apps/{app}/roles method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19198,6 +19339,8 @@ service: path: /api/apps/{app}/roles method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19249,6 +19392,8 @@ service: path: /api/apps/{app}/roles/permissions method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19270,6 +19415,8 @@ service: path: /api/apps/{app}/roles/{roleName} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19327,6 +19474,8 @@ service: path: /api/apps/{app}/roles/{roleName} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19375,6 +19524,8 @@ service: user (OpenID implicit flow). You will retrieve all apps, where you are assigned as a contributor. + source: + openapi: ../openapi.json display-name: Get your apps. response: docs: Apps returned. @@ -19412,6 +19563,8 @@ service: implicit flow). You will be assigned as owner of the new app automatically. + source: + openapi: ../openapi.json display-name: Create a new app. request: name: CreateAppDto @@ -19468,6 +19621,8 @@ service: user (OpenID implicit flow). You will retrieve all apps, where you are assigned as a contributor. + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -19506,6 +19661,8 @@ service: path: /api/apps/{app} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19546,6 +19703,8 @@ service: path: /api/apps/{app} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19599,6 +19758,8 @@ service: path: /api/apps/{app} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19615,6 +19776,8 @@ service: path: /api/apps/{app}/team method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19665,6 +19828,8 @@ service: path: /api/apps/{app}/settings method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19700,6 +19865,8 @@ service: path: /api/apps/{app}/settings method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19760,6 +19927,8 @@ service: path: /api/apps/{app}/workflows method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19799,6 +19968,8 @@ service: path: /api/apps/{app}/workflows method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19851,6 +20022,8 @@ service: path: /api/apps/{app}/workflows/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19918,6 +20091,8 @@ service: path: /api/apps/{app}/workflows/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -20047,6 +20222,9 @@ service: "docs": "Assets created, update or delete.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteAsset": { "auth": true, @@ -20091,6 +20269,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteAssetFolder": { "auth": true, @@ -20122,6 +20303,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getAsset": { "auth": true, @@ -20197,6 +20381,9 @@ service: "docs": "Asset found.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetContent": { "auth": true, @@ -20281,6 +20468,9 @@ service: "docs": "Asset found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetContentBySlug": { "auth": true, @@ -20372,6 +20562,9 @@ service: "docs": "Asset found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetFolders": { "auth": true, @@ -20454,6 +20647,9 @@ service: "docs": "Asset folders returned.", "type": "root.AssetFoldersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssets": { "auth": true, @@ -20568,6 +20764,9 @@ service: "docs": "Assets returned.", "type": "root.AssetsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetsPost": { "auth": true, @@ -20655,6 +20854,9 @@ service: "docs": "Assets returned.", "type": "root.AssetsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTags": { "auth": true, @@ -20689,6 +20891,9 @@ service: "docs": "Assets tags returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, "postAsset": { "auth": true, @@ -20786,6 +20991,9 @@ service: "docs": "Asset created.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postAssetFolder": { "auth": true, @@ -20858,6 +21066,9 @@ service: "docs": "Asset folder created.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUpsertAsset": { "auth": true, @@ -20956,6 +21167,9 @@ service: "docs": "Asset created or updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAsset": { "auth": true, @@ -21063,6 +21277,9 @@ service: "docs": "Asset updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetContent": { "auth": true, @@ -21152,6 +21369,9 @@ service: "docs": "Asset updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetFolder": { "auth": true, @@ -21225,6 +21445,9 @@ service: "docs": "Asset folder updated.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetFolderParent": { "auth": true, @@ -21290,6 +21513,9 @@ service: "docs": "Asset folder moved.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetParent": { "auth": true, @@ -21381,6 +21607,9 @@ service: "docs": "Asset moved.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTag": { "auth": true, @@ -21444,6 +21673,9 @@ service: "docs": "Asset tag renamed and new tags returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -21461,6 +21693,8 @@ service: path: /api/assets/{app}/{idOrSlug}/{more} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21529,6 +21763,8 @@ service: path: /api/assets/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -21591,6 +21827,8 @@ service: method: GET auth: true docs: Get all asset folders for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21644,6 +21882,8 @@ service: path: /api/apps/{app}/assets/folders method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21689,6 +21929,8 @@ service: path: /api/apps/{app}/assets/folders/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21735,6 +21977,8 @@ service: path: /api/apps/{app}/assets/folders/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21755,6 +21999,8 @@ service: path: /api/apps/{app}/assets/folders/{id}/parent method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21799,6 +22045,8 @@ service: method: GET auth: true docs: Get all tags for assets. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21820,6 +22068,8 @@ service: path: /api/apps/{app}/assets/tags/{name} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21859,6 +22109,8 @@ service: method: GET auth: true docs: Get all assets for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21944,6 +22196,8 @@ service: docs: >- You can only upload one file at a time. The mime type of the file is not calculated by Squidex and is required correctly. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22016,6 +22270,8 @@ service: method: POST auth: true docs: Get all assets for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22079,6 +22335,8 @@ service: path: /api/apps/{app}/assets/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22138,6 +22396,8 @@ service: docs: >- You can only upload one file at a time. The mime type of the file is not calculated by Squidex and is required correctly. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22210,6 +22470,8 @@ service: path: /api/apps/{app}/assets/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22288,6 +22550,8 @@ service: path: /api/apps/{app}/assets/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22317,6 +22581,8 @@ service: path: /api/apps/{app}/assets/bulk method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22370,6 +22636,8 @@ service: method: PUT auth: true docs: Use multipart request to upload an asset. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22435,6 +22703,8 @@ service: path: /api/apps/{app}/assets/{id}/parent method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22541,6 +22811,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackupContent": { "auth": true, @@ -22567,6 +22840,9 @@ service: "docs": "Backup found and content returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackupContentV2": { "auth": true, @@ -22602,6 +22878,9 @@ service: "docs": "Backup found and content returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackups": { "auth": true, @@ -22658,6 +22937,9 @@ service: "docs": "Backups returned.", "type": "root.BackupJobsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRestoreJob": { "auth": true, @@ -22688,6 +22970,9 @@ service: "docs": "Status returned.", "type": "root.RestoreJobDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postBackup": { "auth": true, @@ -22714,6 +22999,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "postRestoreJob": { "auth": true, @@ -22763,6 +23051,9 @@ service: "name": "RestoreRequestDto", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -22780,6 +23071,8 @@ service: path: /api/apps/{app}/backups/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22798,6 +23091,8 @@ service: path: /api/apps/{app}/backups/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22818,6 +23113,8 @@ service: path: /api/apps/backups/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -22842,6 +23139,8 @@ service: path: /api/apps/{app}/backups method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22878,6 +23177,8 @@ service: path: /api/apps/{app}/backups method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -22894,6 +23195,8 @@ service: path: /api/apps/restore method: GET auth: true + source: + openapi: ../openapi.json display-name: Get current restore status. response: docs: Status returned. @@ -22913,6 +23216,8 @@ service: path: /api/apps/restore method: POST auth: true + source: + openapi: ../openapi.json display-name: Restore a backup. request: name: RestoreRequestDto @@ -22985,6 +23290,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getComments": { "auth": true, @@ -23054,6 +23362,9 @@ service: "docs": "Comments returned.", "type": "root.CommentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getWatchingUsers": { "auth": true, @@ -23092,6 +23403,9 @@ service: "docs": "Watching users returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postComment": { "auth": true, @@ -23143,6 +23457,9 @@ service: "docs": "Comment created.", "type": "root.CommentDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putComment": { "auth": true, @@ -23186,6 +23503,9 @@ service: "body": "root.UpsertCommentDto", "content-type": "application/json", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -23203,6 +23523,8 @@ service: path: /api/apps/{app}/watching/{resource} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -23228,6 +23550,8 @@ service: method: GET auth: true docs: When passing in a version you can retrieve all updates since then. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -23273,6 +23597,8 @@ service: path: /api/apps/{app}/comments/{commentsId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -23308,6 +23634,8 @@ service: path: /api/apps/{app}/comments/{commentsId}/{commentId} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -23337,6 +23665,8 @@ service: path: /api/apps/{app}/comments/{commentsId}/{commentId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -23468,6 +23798,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "createDraft": { "auth": true, @@ -23589,6 +23922,9 @@ service: "docs": "Content draft created.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContent": { "auth": true, @@ -23638,6 +23974,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContentStatus": { "auth": true, @@ -23759,6 +24098,9 @@ service: "docs": "Content status change cancelled.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteVersion": { "auth": true, @@ -23880,6 +24222,9 @@ service: "docs": "Content draft deleted.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContent": { "auth": true, @@ -24014,6 +24359,9 @@ service: "docs": "Content returned.", "type": "root.ContentDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentValidity": { "auth": true, @@ -24050,6 +24398,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentVersion": { "auth": true, @@ -24085,6 +24436,9 @@ service: "docs": "Content version returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContents": { "auth": true, @@ -24213,6 +24567,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentsPost": { "auth": true, @@ -24334,6 +24691,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getReferences": { "auth": true, @@ -24463,6 +24823,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getReferencing": { "auth": true, @@ -24592,6 +24955,9 @@ service: "docs": "Content returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "patchContent": { "auth": true, @@ -24722,6 +25088,9 @@ service: "docs": "Content patched.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContent": { "auth": true, @@ -24862,6 +25231,9 @@ service: "docs": "Content created.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContents": { "auth": true, @@ -24953,6 +25325,9 @@ service: "docs": "Contents created.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUpsertContent": { "auth": true, @@ -25098,6 +25473,9 @@ service: "docs": "Content created or updated.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putContent": { "auth": true, @@ -25228,6 +25606,9 @@ service: "docs": "Content updated.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putContentStatus": { "auth": true, @@ -25380,6 +25761,9 @@ service: "docs": "Content status changed.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -25400,6 +25784,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25493,6 +25879,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25595,6 +25983,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25684,6 +26074,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25785,6 +26177,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25891,6 +26285,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -25986,6 +26382,8 @@ service: docs: >- You can create an generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26022,6 +26420,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26117,6 +26517,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26144,6 +26546,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26238,6 +26642,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26332,6 +26738,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26360,6 +26768,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26424,6 +26834,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26495,6 +26907,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26602,6 +27016,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26691,6 +27107,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26780,6 +27198,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26890,6 +27310,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/diagnostics/dump", + "source": { + "openapi": "../openapi.json", + }, }, "getGCDump": { "auth": true, @@ -26905,6 +27328,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/diagnostics/gcdump", + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -26922,6 +27348,8 @@ service: path: /api/diagnostics/dump method: GET auth: true + source: + openapi: ../openapi.json display-name: Creates a dump and writes it into storage.. errors: - root.DiagnosticsGetDumpRequestInternalServerError @@ -26932,6 +27360,8 @@ service: path: /api/diagnostics/gcdump method: GET auth: true + source: + openapi: ../openapi.json display-name: Creates a gc dump and writes it into storage. errors: - root.DiagnosticsGetGcDumpRequestInternalServerError @@ -26997,6 +27427,9 @@ service: "docs": "Event consumers returned.", "type": "root.EventConsumersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "resetEventConsumer": { "auth": true, @@ -27044,6 +27477,9 @@ service: "docs": "Event consumer resetted asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "startEventConsumer": { "auth": true, @@ -27091,6 +27527,9 @@ service: "docs": "Event consumer started asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "stopEventConsumer": { "auth": true, @@ -27138,6 +27577,9 @@ service: "docs": "Event consumer stopped asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27155,6 +27597,8 @@ service: path: /api/event-consumers method: GET auth: true + source: + openapi: ../openapi.json display-name: Get event consumers. response: docs: Event consumers returned. @@ -27184,6 +27628,8 @@ service: path: /api/event-consumers/{consumerName}/start method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -27216,6 +27662,8 @@ service: path: /api/event-consumers/{consumerName}/stop method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -27248,6 +27696,8 @@ service: path: /api/event-consumers/{consumerName}/reset method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -27339,6 +27789,9 @@ service: "docs": "Events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamHistory": { "auth": true, @@ -27389,6 +27842,9 @@ service: "docs": "Events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27406,6 +27862,8 @@ service: path: /api/apps/{app}/history method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27438,6 +27896,8 @@ service: path: /api/teams/{team}/history method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -27507,6 +27967,9 @@ service: "docs": "Supported language codes returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27527,6 +27990,8 @@ service: docs: >- Provide a list of supported language codes, following the ISO2Code standard. + source: + openapi: ../openapi.json display-name: Get supported languages. response: docs: Supported language codes returned. @@ -27591,6 +28056,9 @@ service: "docs": "Latest features returned.", "type": "root.FeaturesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27608,6 +28076,8 @@ service: path: /api/news/features method: GET auth: true + source: + openapi: ../openapi.json display-name: Get features since version. request: name: NewsGetNewsRequest @@ -27671,6 +28141,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getNotifications": { "auth": true, @@ -27734,6 +28207,9 @@ service: "docs": "All comments returned.", "type": "root.CommentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27752,6 +28228,8 @@ service: method: GET auth: true docs: When passing in a version you can retrieve all updates since then. + source: + openapi: ../openapi.json path-parameters: userId: type: string @@ -27792,6 +28270,8 @@ service: path: /api/users/{userId}/notifications/{commentId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: userId: type: string @@ -27845,6 +28325,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getInfo": { "auth": true, @@ -27869,6 +28352,9 @@ service: "docs": "Infos returned.", "type": "root.ExposedValues", }, + "source": { + "openapi": "../openapi.json", + }, }, "getPing": { "auth": true, @@ -27883,6 +28369,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/ping", + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27900,6 +28389,8 @@ service: path: /api/info method: GET auth: true + source: + openapi: ../openapi.json display-name: Get API information. response: docs: Infos returned. @@ -27915,6 +28406,8 @@ service: method: GET auth: true docs: Can be used to test, if the Squidex API is alive and responding. + source: + openapi: ../openapi.json display-name: Get ping status of the API. errors: - root.PingGetPingRequestInternalServerError @@ -27925,6 +28418,8 @@ service: method: GET auth: true docs: Can be used to test, if the Squidex API is alive and responding. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28005,6 +28500,9 @@ service: "docs": "App plan information returned.", "type": "root.PlansDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamPlans": { "auth": true, @@ -28062,6 +28560,9 @@ service: "docs": "Team plan information returned.", "type": "root.PlansDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putPlan": { "auth": true, @@ -28104,6 +28605,9 @@ service: "docs": "Plan changed or redirect url returned.", "type": "root.PlanChangedDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTeamPlan": { "auth": true, @@ -28146,6 +28650,9 @@ service: "docs": "Plan changed or redirect url returned.", "type": "root.PlanChangedDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -28163,6 +28670,8 @@ service: path: /api/apps/{app}/plans method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28203,6 +28712,8 @@ service: path: /api/apps/{app}/plan method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28230,6 +28741,8 @@ service: path: /api/teams/{team}/plans method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -28270,6 +28783,8 @@ service: path: /api/teams/{team}/plan method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -28337,6 +28852,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteEvents": { "auth": true, @@ -28362,6 +28880,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRule": { "auth": true, @@ -28393,6 +28914,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRuleEvents": { "auth": true, @@ -28423,6 +28947,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRuleRun": { "auth": true, @@ -28448,6 +28975,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "disableRule": { "auth": true, @@ -28519,6 +29049,9 @@ service: "docs": "Rule disabled.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableRule": { "auth": true, @@ -28590,6 +29123,9 @@ service: "docs": "Rule enabled.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getActions": { "auth": true, @@ -28630,6 +29166,9 @@ service: "docs": "Rule actions returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEventSchema": { "auth": true, @@ -28664,6 +29203,9 @@ service: "docs": "Rule event type found.", "type": "unknown", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEventTypes": { "auth": true, @@ -28688,6 +29230,9 @@ service: "docs": "Rule events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEvents": { "auth": true, @@ -28765,6 +29310,9 @@ service: "docs": "Rule events returned.", "type": "root.RuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRules": { "auth": true, @@ -28840,6 +29388,9 @@ service: "docs": "Rules returned.", "type": "root.RulesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postRule": { "auth": true, @@ -28925,6 +29476,9 @@ service: "docs": "Rule created.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putEvent": { "auth": true, @@ -28956,6 +29510,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "putRule": { "auth": true, @@ -29054,6 +29611,9 @@ service: "docs": "Rule updated.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRuleRun": { "auth": true, @@ -29093,6 +29653,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "simulateGET": { "auth": true, @@ -29158,6 +29721,9 @@ service: "docs": "Rule simulated.", "type": "root.SimulatedRuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "simulatePOST": { "auth": true, @@ -29238,6 +29804,9 @@ service: "docs": "Rule simulated.", "type": "root.SimulatedRuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "triggerRule": { "auth": true, @@ -29269,6 +29838,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -29286,6 +29858,8 @@ service: path: /api/rules/actions method: GET auth: true + source: + openapi: ../openapi.json display-name: Get supported rule actions. response: docs: Rule actions returned. @@ -29312,6 +29886,8 @@ service: path: /api/apps/{app}/rules method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29365,6 +29941,8 @@ service: path: /api/apps/{app}/rules method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29429,6 +30007,8 @@ service: path: /api/apps/{app}/rules/run method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29444,6 +30024,8 @@ service: path: /api/apps/{app}/rules/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29515,6 +30097,8 @@ service: path: /api/apps/{app}/rules/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29535,6 +30119,8 @@ service: path: /api/apps/{app}/rules/{id}/enable method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29588,6 +30174,8 @@ service: path: /api/apps/{app}/rules/{id}/disable method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29641,6 +30229,8 @@ service: path: /api/apps/{app}/rules/{id}/trigger method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29661,6 +30251,8 @@ service: path: /api/apps/{app}/rules/{id}/run method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29686,6 +30278,8 @@ service: path: /api/apps/{app}/rules/{id}/events method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29705,6 +30299,8 @@ service: path: /api/apps/{app}/rules/simulate method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29760,6 +30356,8 @@ service: path: /api/apps/{app}/rules/{id}/simulate method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29803,6 +30401,8 @@ service: path: /api/apps/{app}/rules/events method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29855,6 +30455,8 @@ service: path: /api/apps/{app}/rules/events method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29870,6 +30472,8 @@ service: path: /api/apps/{app}/rules/events/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29890,6 +30494,8 @@ service: path: /api/apps/{app}/rules/events/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29910,6 +30516,8 @@ service: path: /api/rules/eventtypes method: GET auth: true + source: + openapi: ../openapi.json display-name: Provide a list of all event types that are used in rules. response: docs: Rule events returned. @@ -29924,6 +30532,8 @@ service: path: /api/rules/eventtypes/{type} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: type: type: string @@ -30096,6 +30706,9 @@ service: "docs": "Schema field deleted.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteNestedField": { "auth": true, @@ -30243,6 +30856,9 @@ service: "docs": "Schema field deleted.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteSchema": { "auth": true, @@ -30274,6 +30890,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "disableField": { "auth": true, @@ -30416,6 +31035,9 @@ service: "docs": "Schema field disabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "disableNestedField": { "auth": true, @@ -30563,6 +31185,9 @@ service: "docs": "Schema field disabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableField": { "auth": true, @@ -30705,6 +31330,9 @@ service: "docs": "Schema field enabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableNestedField": { "auth": true, @@ -30852,6 +31480,9 @@ service: "docs": "Schema field enabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSchema": { "auth": true, @@ -30988,6 +31619,9 @@ service: "docs": "Schema found.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSchemas": { "auth": true, @@ -31091,6 +31725,9 @@ service: "docs": "Schemas returned.", "type": "root.SchemasDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "hideField": { "auth": true, @@ -31233,6 +31870,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "hideNestedField": { "auth": true, @@ -31380,6 +32020,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockField": { "auth": true, @@ -31522,6 +32165,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockNestedField": { "auth": true, @@ -31669,6 +32315,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postField": { "auth": true, @@ -31821,6 +32470,9 @@ service: "docs": "Schema field created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postNestedField": { "auth": true, @@ -31978,6 +32630,9 @@ service: "docs": "Schema field created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postSchema": { "auth": true, @@ -32148,6 +32803,9 @@ service: "docs": "Schema created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "publishSchema": { "auth": true, @@ -32285,6 +32943,9 @@ service: "docs": "Schema published.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putCategory": { "auth": true, @@ -32437,6 +33098,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putField": { "auth": true, @@ -32592,6 +33256,9 @@ service: "docs": "Schema field updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putNestedField": { "auth": true, @@ -32752,6 +33419,9 @@ service: "docs": "Schema field updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putNestedFieldOrdering": { "auth": true, @@ -32903,6 +33573,9 @@ service: "docs": "Schema fields reordered.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putPreviewUrls": { "auth": true, @@ -33047,6 +33720,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRules": { "auth": true, @@ -33199,6 +33875,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchema": { "auth": true, @@ -33389,6 +34068,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaFieldOrdering": { "auth": true, @@ -33535,6 +34217,9 @@ service: "docs": "Schema fields reordered.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaSync": { "auth": true, @@ -33698,6 +34383,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaUIFields": { "auth": true, @@ -33854,6 +34542,9 @@ service: "docs": "Schema UI fields defined.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putScripts": { "auth": true, @@ -33996,6 +34687,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "showField": { "auth": true, @@ -34138,6 +34832,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "showNestedField": { "auth": true, @@ -34285,6 +34982,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "unpublishSchema": { "auth": true, @@ -34422,6 +35122,9 @@ service: "docs": "Schema unpublished.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -34439,6 +35142,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -34551,6 +35256,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -34667,6 +35374,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/ui method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -34779,6 +35488,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/ordering method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -34885,6 +35596,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/ordering method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -34995,6 +35708,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35109,6 +35824,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35213,6 +35930,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35331,6 +36050,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35440,6 +36161,8 @@ service: method: PUT auth: true docs: A locked field cannot be updated or deleted. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35545,6 +36268,8 @@ service: method: PUT auth: true docs: A locked field cannot be edited or deleted. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35656,6 +36381,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35763,6 +36490,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35874,6 +36603,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -35981,6 +36712,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36092,6 +36825,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36199,6 +36934,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36310,6 +37047,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36417,6 +37156,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36525,6 +37266,8 @@ service: path: /api/apps/{app}/schemas method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36595,6 +37338,8 @@ service: path: /api/apps/{app}/schemas method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36716,6 +37461,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36815,6 +37562,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36949,6 +37698,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -36969,6 +37720,8 @@ service: path: /api/apps/{app}/schemas/{schema}/sync method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37086,6 +37839,8 @@ service: path: /api/apps/{app}/schemas/{schema}/category method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37195,6 +37950,8 @@ service: path: /api/apps/{app}/schemas/{schema}/preview-urls method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37300,6 +38057,8 @@ service: path: /api/apps/{app}/schemas/{schema}/scripts method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37404,6 +38163,8 @@ service: path: /api/apps/{app}/schemas/{schema}/rules method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37513,6 +38274,8 @@ service: path: /api/apps/{app}/schemas/{schema}/publish method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37613,6 +38376,8 @@ service: path: /api/apps/{app}/schemas/{schema}/unpublish method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37775,6 +38540,9 @@ service: "docs": "Search results returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -37792,6 +38560,8 @@ service: path: /api/apps/{app}/search method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -37869,6 +38639,9 @@ service: "docs": "Storage usage returned.", "type": "root.CurrentStorageDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getLog": { "auth": true, @@ -37903,6 +38676,9 @@ service: "docs": "Usage tracking results returned.", "type": "root.LogDownloadDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getStorageSizes": { "auth": true, @@ -37951,6 +38727,9 @@ service: "docs": "Storage usage returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getStorageSizesForTeam": { "auth": true, @@ -37999,6 +38778,9 @@ service: "docs": "Storage usage returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamCurrentStorageSizeForTeam": { "auth": true, @@ -38034,6 +38816,9 @@ service: "docs": "Storage usage returned.", "type": "root.CurrentStorageDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsages": { "auth": true, @@ -38095,6 +38880,9 @@ service: "docs": "API call returned.", "type": "root.CallsUsageDtoDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsagesForTeam": { "auth": true, @@ -38156,6 +38944,9 @@ service: "docs": "API call returned.", "type": "root.CallsUsageDtoDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -38173,6 +38964,8 @@ service: path: /api/apps/{app}/usages/log method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -38194,6 +38987,8 @@ service: path: /api/apps/{app}/usages/calls/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -38236,6 +39031,8 @@ service: path: /api/teams/{team}/usages/calls/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38278,6 +39075,8 @@ service: path: /api/apps/{app}/usages/storage/today method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -38300,6 +39099,8 @@ service: path: /api/teams/{team}/usages/storage/today method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38323,6 +39124,8 @@ service: path: /api/apps/{app}/usages/storage/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -38354,6 +39157,8 @@ service: path: /api/teams/{team}/usages/storage/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38458,6 +39263,9 @@ service: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteMyself": { "auth": true, @@ -38517,6 +39325,9 @@ service: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContributors": { "auth": true, @@ -38575,6 +39386,9 @@ service: "docs": "Contributors returned.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeam": { "auth": true, @@ -38621,6 +39435,9 @@ service: "docs": "Teams returned.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeams": { "auth": true, @@ -38659,6 +39476,9 @@ You will retrieve all teams, where you are assigned as a contributor.", "docs": "Teams returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContributor": { "auth": true, @@ -38725,6 +39545,9 @@ You will retrieve all teams, where you are assigned as a contributor.", "docs": "Contributor assigned to team.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postTeam": { "auth": true, @@ -38787,6 +39610,9 @@ You will be assigned as owner of the new team automatically.", "docs": "Team created.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTeam": { "auth": true, @@ -38857,6 +39683,9 @@ You will be assigned as owner of the new team automatically.", "docs": "Team updated.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -38874,6 +39703,8 @@ service: path: /api/teams/{team}/contributors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38911,6 +39742,8 @@ service: path: /api/teams/{team}/contributors method: POST auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38954,6 +39787,8 @@ service: path: /api/teams/{team}/contributors/me method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -38992,6 +39827,8 @@ service: path: /api/teams/{team}/contributors/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -39039,6 +39876,8 @@ service: user (OpenID implicit flow). You will retrieve all teams, where you are assigned as a contributor. + source: + openapi: ../openapi.json display-name: Get your teams. response: docs: Teams returned. @@ -39067,6 +39906,8 @@ service: implicit flow). You will be assigned as owner of the new team automatically. + source: + openapi: ../openapi.json display-name: Create a new team. request: name: CreateTeamDto @@ -39105,6 +39946,8 @@ service: path: /api/teams/{team} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -39136,6 +39979,8 @@ service: path: /api/teams/{team} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -39230,6 +40075,9 @@ service: "docs": "Template returned.", "type": "root.TemplateDetailsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTemplates": { "auth": true, @@ -39274,6 +40122,9 @@ service: "docs": "Templates returned.", "type": "root.TemplatesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -39291,6 +40142,8 @@ service: path: /api/templates method: GET auth: true + source: + openapi: ../openapi.json display-name: Get all templates. response: docs: Templates returned. @@ -39318,6 +40171,8 @@ service: path: /api/templates/{name} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: name: type: string @@ -39426,6 +40281,9 @@ service: "docs": "Text translated.", "type": "root.TranslationDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -39443,6 +40301,8 @@ service: path: /api/apps/{app}/translations method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -39522,6 +40382,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getUser": { "auth": true, @@ -39569,6 +40432,9 @@ service: "docs": "User returned.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsers": { "auth": true, @@ -39634,6 +40500,9 @@ service: "docs": "Users returned.", "type": "root.UsersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockUser": { "auth": true, @@ -39683,6 +40552,9 @@ service: "docs": "User locked.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUser": { "auth": true, @@ -39773,6 +40645,9 @@ service: "docs": "User created.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putUser": { "auth": true, @@ -39866,6 +40741,9 @@ service: "docs": "User created.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "unlockUser": { "auth": true, @@ -39915,6 +40793,9 @@ service: "docs": "User unlocked.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -39932,6 +40813,8 @@ service: path: /api/user-management method: GET auth: true + source: + openapi: ../openapi.json display-name: Get users by query. request: name: UserManagementGetUsersRequest @@ -39974,6 +40857,8 @@ service: path: /api/user-management method: POST auth: true + source: + openapi: ../openapi.json display-name: Create a new user. request: name: CreateUserDto @@ -40028,6 +40913,8 @@ service: path: /api/user-management/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40059,6 +40946,8 @@ service: path: /api/user-management/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40117,6 +41006,8 @@ service: path: /api/user-management/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40134,6 +41025,8 @@ service: path: /api/user-management/{id}/lock method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40167,6 +41060,8 @@ service: path: /api/user-management/{id}/unlock method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40256,6 +41151,9 @@ service: "docs": "User found.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUserPicture": { "auth": true, @@ -40278,6 +41176,9 @@ service: "docs": "User found and image or fallback returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUserResources": { "auth": true, @@ -40308,6 +41209,9 @@ service: "docs": "User resources returned.", "type": "root.ResourcesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsers": { "auth": true, @@ -40355,6 +41259,9 @@ service: "docs": "Users returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -40372,6 +41279,8 @@ service: path: /api method: GET auth: true + source: + openapi: ../openapi.json display-name: Get the user resources. response: docs: User resources returned. @@ -40393,6 +41302,8 @@ service: docs: >- Search the user by query that contains the email address or the part of the email address. + source: + openapi: ../openapi.json display-name: Get users by query. request: name: UsersGetUsersRequest @@ -40422,6 +41333,8 @@ service: path: /api/users/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -40453,6 +41366,8 @@ service: path: /api/users/{id}/picture method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/streaming.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/streaming.json index caafda60026..3c3360ffa81 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/streaming.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/streaming.json @@ -46,6 +46,9 @@ "docs": "", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_stream": { "auth": false, @@ -87,6 +90,9 @@ "format": "json", "type": "StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v2": { "auth": false, @@ -127,6 +133,9 @@ "docs": "", "type": "User2", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v2_stream": { "auth": false, @@ -170,6 +179,9 @@ "format": "json", "type": "StreamUser2", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v3": { "auth": false, @@ -209,6 +221,9 @@ "docs": "", "type": "UserV3Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v3_stream": { "auth": false, @@ -252,6 +267,9 @@ "format": "json", "type": "UserV3StreamResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -378,6 +396,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserStreamRequest body: @@ -401,6 +421,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserRequest body: @@ -423,6 +445,8 @@ path: /v2/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV2StreamRequest body: @@ -448,6 +472,8 @@ path: /v2/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV2Request body: @@ -472,6 +498,8 @@ path: /v3/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV3StreamRequest body: @@ -497,6 +525,8 @@ path: /v3/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV3Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/suger.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/suger.json index 39020c98e03..3c5d65fd960 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/suger.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/suger.json @@ -7627,6 +7627,9 @@ types: "docs": "OK", "type": "root.SharedApiClientAccessToken", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -7645,6 +7648,8 @@ types: docs: >- Get the Bearer Access Token by giving the Suger API Client ID & Client Secret. + source: + openapi: ../swagger.json display-name: get api access token request: name: SharedGetApiClientAccessTokenParams @@ -7761,6 +7766,9 @@ types: "docs": "OK", "type": "root.SharedIdentityBuyer", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListBuyersByOrganization": { "auth": true, @@ -7808,6 +7816,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateBuyerNameDescription": { "auth": true, @@ -7898,6 +7909,9 @@ types: "docs": "OK", "type": "root.SharedIdentityBuyer", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -7916,6 +7930,8 @@ service: method: GET auth: true docs: list all buyers by the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -7948,6 +7964,8 @@ service: method: GET auth: true docs: get buyer by the given organization and buyer id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8004,6 +8022,8 @@ service: method: PATCH auth: true docs: update buyer name and description by the given organization and buyer id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8143,6 +8163,9 @@ service: "docs": "OK", "type": "root.SharedAddEntitlementCreditResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetEntitlement": { "auth": true, @@ -8232,6 +8255,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadEntitlement", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlements": { "auth": true, @@ -8318,6 +8344,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByBuyer": { "auth": true, @@ -8409,6 +8438,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByOffer": { "auth": true, @@ -8500,6 +8532,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByPartner": { "auth": true, @@ -8591,6 +8626,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByProduct": { "auth": true, @@ -8682,6 +8720,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateEntitlementName": { "auth": true, @@ -8785,6 +8826,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadEntitlement", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -8815,6 +8859,8 @@ service: method: GET auth: true docs: List all entitlements of the given buyer + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8883,6 +8929,8 @@ service: method: GET auth: true docs: List all entitlements under the organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8947,6 +8995,8 @@ service: method: GET auth: true docs: Get the entitlement by ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9018,6 +9068,8 @@ service: Add the credit amount to the given Entitlement. The credit amount is accumulated & saved in the current Entitlement Term of the gvien Entitlement. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9062,6 +9114,8 @@ service: method: PATCH auth: true docs: Update the name of the given Entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9139,6 +9193,8 @@ service: method: GET auth: true docs: List all entitlements under the given offer + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9207,6 +9263,8 @@ service: method: GET auth: true docs: List all entitlements under the given partner + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9275,6 +9333,8 @@ service: method: GET auth: true docs: List all entitlements under the given product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9453,6 +9513,9 @@ types: "docs": "OK", "type": "root.SharedWorkloadEntitlementTerm", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementTerms": { "auth": true, @@ -9544,6 +9607,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -9562,6 +9628,8 @@ service: method: GET auth: true docs: List all Entitlement Terms of the given Entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9630,6 +9698,8 @@ service: method: GET auth: true docs: Get the entitlement term by ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9837,6 +9907,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "DeleteIntegration": { "auth": true, @@ -9878,6 +9951,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetIntegration": { "auth": true, @@ -9995,6 +10071,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListIntegrationsByOrganization": { "auth": true, @@ -10037,6 +10116,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateIntegration": { "auth": true, @@ -10182,6 +10264,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "VerifyIntegration": { "auth": true, @@ -10223,6 +10308,9 @@ service: "docs": "whether it is verified or not", "type": "boolean", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -10339,6 +10427,8 @@ service: method: GET auth: true docs: List all integrations for the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10369,6 +10459,8 @@ service: docs: >- For each organization, partner & service, there should be at most one integration. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10468,6 +10560,8 @@ service: method: GET auth: true docs: Get the integration for the given organization, partner & service. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10560,6 +10654,8 @@ service: method: DELETE auth: true docs: delete the integration for the given orgId, partner and service. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10588,6 +10684,8 @@ service: method: PATCH auth: true docs: Update the given integration. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10698,6 +10796,8 @@ service: method: POST auth: true docs: Verify the given integration, check whether it works correctly. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10854,6 +10954,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordGroup", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetUsageRecordReport": { "auth": true, @@ -10946,6 +11049,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByEntitlement": { "auth": true, @@ -11021,6 +11127,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByOrganization": { "auth": true, @@ -11091,6 +11200,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByProduct": { "auth": true, @@ -11166,6 +11278,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByEntitlement": { "auth": true, @@ -11240,6 +11355,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByOrganization": { "auth": true, @@ -11305,6 +11423,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByProduct": { "auth": true, @@ -11375,6 +11496,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ReportUsageRecordGroup": { "auth": true, @@ -11458,6 +11582,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordGroup", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -11476,6 +11603,8 @@ service: method: GET auth: true docs: list UsageRecordGroups for the given organization and entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11533,6 +11662,8 @@ service: It is recommended to provide the ID in the request body CreateUsageRecordGroupParams, so the report can be deduplicated. All duplicate report will return error code 409. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11595,6 +11726,8 @@ service: docs: >- List usageRecordReports for the given organization and entitlement. Filter by entitlementTermId if it is given. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11650,6 +11783,8 @@ service: method: GET auth: true docs: list UsageRecordGroups for the given organization and product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11704,6 +11839,8 @@ service: method: GET auth: true docs: List usageRecordReports for the given organization and product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11754,6 +11891,8 @@ service: method: GET auth: true docs: list UsageRecordGroups under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11804,6 +11943,8 @@ service: method: GET auth: true docs: get UsageRecordGroup for the given organization and usageRecordGroup ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11841,6 +11982,8 @@ service: method: GET auth: true docs: List usageRecordReports under the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11889,6 +12032,8 @@ service: docs: >- get the usageRecordReport for a given organization and usageRecordReport ID. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11999,6 +12144,9 @@ service: "docs": "Empty string if cancellation is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "CreateOffer": { "auth": true, @@ -12158,6 +12306,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "CreateOrUpdateDraftOffer": { "auth": true, @@ -12317,6 +12468,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "DeleteOffer": { "auth": true, @@ -12353,6 +12507,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetOffer": { "auth": true, @@ -12511,6 +12668,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByOrganization": { "auth": true, @@ -12602,6 +12762,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByPartner": { "auth": false, @@ -12711,6 +12874,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByProduct": { "auth": true, @@ -12807,6 +12973,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -12839,6 +13008,8 @@ service: docs: >- Create a new draft offer or update the existing draft offer. When updating draft offer, the offer.ID is required. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12961,6 +13132,8 @@ service: method: GET auth: true docs: List all offers under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13027,6 +13200,8 @@ service: method: POST auth: true docs: Create a private offer under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13149,6 +13324,8 @@ service: method: GET auth: true docs: Get the offer by the given offer ID. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13272,6 +13449,8 @@ service: docs: >- Only the offer with status = "DRAFT" or "CREATE_FAILED" is allowed to be deleted. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13298,6 +13477,8 @@ service: docs: >- Only the offer with status = "PENDING_ACCEPTANCE" or "PENDING_CANCEL" is allowed to cancel. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13323,6 +13504,8 @@ service: method: GET auth: false docs: List all offers under the given organization & cloud partner. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13402,6 +13585,8 @@ service: method: GET auth: true docs: List all offers under the given organization & product. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13550,6 +13735,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -13571,6 +13759,8 @@ service: List all long running operations under the given organization, offer, entitlement, crmOpportunity or partnerOpportunity. Only provide one filter on a request. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13657,6 +13847,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetProduct": { "auth": true, @@ -13772,6 +13965,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadProduct", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductMeteringDimensions": { "auth": true, @@ -13818,6 +14014,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductsByOrganization": { "auth": true, @@ -13883,6 +14082,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductsByPartner": { "auth": true, @@ -13953,6 +14155,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateProduct": { "auth": true, @@ -14086,6 +14291,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadProduct", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -14124,6 +14332,8 @@ service: method: GET auth: true docs: list all products under the given organization and cloud partner + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14174,6 +14384,8 @@ service: method: GET auth: true docs: list all products under the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14220,6 +14432,8 @@ service: method: GET auth: true docs: get product by product id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14304,6 +14518,8 @@ service: method: DELETE auth: true docs: only the product with status = "CREATE_FAILED" is allowed to be deleted. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14328,6 +14544,8 @@ service: method: PATCH auth: true docs: currently only the Fulfillment URL is allowed to update via this API. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14424,6 +14642,8 @@ service: method: GET auth: true docs: list all metering dimensions of the given product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14568,6 +14788,9 @@ service: "docs": "OK", "type": "root.SharedRevenueReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetUsageReport": { "auth": true, @@ -14634,6 +14857,9 @@ service: "docs": "OK", "type": "root.SharedUsageReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListRevenueRecordDetails": { "auth": true, @@ -14709,6 +14935,9 @@ service: "docs": "OK", "type": "root.SharedListRevenueRecordDetailsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListRevenueRecords": { "auth": true, @@ -14805,6 +15034,9 @@ service: "docs": "OK", "type": "root.SharedListRevenueRecordsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -14881,6 +15113,8 @@ service: docs: >- list the revenue records for the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14956,6 +15190,8 @@ service: docs: >- list the raw revenue record details for the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -15012,6 +15248,8 @@ service: docs: >- Get the revenue report of the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -15095,6 +15333,8 @@ service: docs: >- get the daily usage report of the given entitlement, the default timespan is lifetime. + source: + openapi: ../swagger.json path-parameters: orgId: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/superagent.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/superagent.json index 22993239af0..9ceb37087e9 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/superagent.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/superagent.json @@ -514,6 +514,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteAgent": { "auth": true, @@ -544,6 +547,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAgent": { "auth": true, @@ -574,6 +580,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllAgents": { "auth": true, @@ -595,6 +604,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchAgent": { "auth": true, @@ -634,6 +646,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "promptAgent": { "auth": true, @@ -686,6 +701,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -702,6 +720,8 @@ types: method: GET auth: true docs: List all agents + source: + openapi: ../openapi.yml display-name: List All Agents response: docs: Successful Response @@ -715,6 +735,8 @@ types: method: POST auth: true docs: Create a new agent + source: + openapi: ../openapi.yml display-name: Create Agent request: name: Agent @@ -751,6 +773,8 @@ types: method: GET auth: true docs: Get a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Get Agent @@ -770,6 +794,8 @@ types: method: DELETE auth: true docs: Delete a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Delete Agent @@ -790,6 +816,8 @@ types: method: PATCH auth: true docs: Patch a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Patch Agent @@ -815,6 +843,8 @@ types: method: POST auth: true docs: Invoke a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Prompt Agent @@ -896,6 +926,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteApiToken": { "auth": true, @@ -926,6 +959,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getApiToken": { "auth": true, @@ -956,6 +992,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listApiTokens": { "auth": true, @@ -977,6 +1016,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -993,6 +1035,8 @@ imports: method: GET auth: true docs: List all API tokens + source: + openapi: ../openapi.yml display-name: List Api Tokens response: docs: Successful Response @@ -1006,6 +1050,8 @@ imports: method: POST auth: true docs: Create a new API token + source: + openapi: ../openapi.yml display-name: Create Api Token request: name: ApiToken @@ -1029,6 +1075,8 @@ imports: method: GET auth: true docs: Get a specific API token + source: + openapi: ../openapi.yml path-parameters: tokenId: string display-name: Get Api Token @@ -1049,6 +1097,8 @@ imports: method: DELETE auth: true docs: Delete a specific API token + source: + openapi: ../openapi.yml path-parameters: tokenId: string display-name: Delete Api Token @@ -1119,6 +1169,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "signUp": { "auth": false, @@ -1165,6 +1218,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1182,6 +1238,8 @@ service: path: /api/v1/auth/sign-in method: POST auth: false + source: + openapi: ../openapi.yml display-name: Sign In request: name: SignIn @@ -1206,6 +1264,8 @@ service: path: /api/v1/auth/sign-up method: POST auth: false + source: + openapi: ../openapi.yml display-name: Sign Up request: name: SignUp @@ -1300,6 +1360,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteDocument": { "auth": true, @@ -1330,6 +1393,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDocument": { "auth": true, @@ -1360,6 +1426,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listDocuments": { "auth": true, @@ -1381,6 +1450,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1397,6 +1469,8 @@ service: method: GET auth: true docs: List all documents + source: + openapi: ../openapi.yml display-name: List Documents response: docs: Successful Response @@ -1410,6 +1484,8 @@ service: method: POST auth: true docs: Create a new document + source: + openapi: ../openapi.yml display-name: Create Document request: name: Document @@ -1447,6 +1523,8 @@ service: method: GET auth: true docs: Get a specific document + source: + openapi: ../openapi.yml path-parameters: documentId: string display-name: Get Document @@ -1467,6 +1545,8 @@ service: method: DELETE auth: true docs: Delete a specific document + source: + openapi: ../openapi.yml path-parameters: documentId: string display-name: Delete Document @@ -1541,6 +1621,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deletePrompt": { "auth": true, @@ -1571,6 +1654,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPrompt": { "auth": true, @@ -1601,6 +1687,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPrompts": { "auth": true, @@ -1622,6 +1711,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchPrompt": { "auth": true, @@ -1661,6 +1753,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1677,6 +1772,8 @@ imports: method: GET auth: true docs: List all prompts + source: + openapi: ../openapi.yml display-name: List Prompts response: docs: Successful Response @@ -1690,6 +1787,8 @@ imports: method: POST auth: true docs: Create a new prompt + source: + openapi: ../openapi.yml display-name: Create A Prompt request: name: Prompt @@ -1718,6 +1817,8 @@ imports: method: GET auth: true docs: Get a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Get Prompt @@ -1737,6 +1838,8 @@ imports: method: DELETE auth: true docs: Delete a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Delete Prompt @@ -1757,6 +1860,8 @@ imports: method: PATCH auth: true docs: Patch a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Patch Prompt @@ -1836,6 +1941,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTool": { "auth": true, @@ -1866,6 +1974,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTool": { "auth": true, @@ -1896,6 +2007,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTools": { "auth": true, @@ -1917,6 +2031,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1933,6 +2050,8 @@ imports: method: GET auth: true docs: List all tools + source: + openapi: ../openapi.yml display-name: List Tools response: docs: Successful Response @@ -1946,6 +2065,8 @@ imports: method: POST auth: true docs: Create a new tool + source: + openapi: ../openapi.yml display-name: Create A Tool request: name: Tool @@ -1973,6 +2094,8 @@ imports: method: GET auth: true docs: Get a specific tool + source: + openapi: ../openapi.yml path-parameters: toolId: string display-name: Get Tool @@ -1992,6 +2115,8 @@ imports: method: DELETE auth: true docs: Delete a specific tool + source: + openapi: ../openapi.yml path-parameters: toolId: string display-name: Delete Tool @@ -2039,6 +2164,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2055,6 +2183,8 @@ imports: method: GET auth: true docs: List all agent traces + source: + openapi: ../openapi.yml display-name: List Agent Traces response: docs: Successful Response @@ -2106,6 +2236,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "readUserMe": { "auth": true, @@ -2127,6 +2260,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2142,6 +2278,8 @@ imports: path: /api/v1/users/me method: GET auth: true + source: + openapi: ../openapi.yml display-name: Read User Me response: docs: Successful Response @@ -2154,6 +2292,8 @@ imports: path: /api/v1/users/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string display-name: Read User diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/switchboard.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/switchboard.json index 3259569bda1..00af67e1ef3 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/switchboard.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/switchboard.json @@ -1141,6 +1141,9 @@ types: }, "name": "AuthAndRedirectRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1157,6 +1160,8 @@ types: method: GET auth: false docs: Auth and redirect sessions by ID + source: + openapi: ../openapi.yml display-name: Auth and redirect sessions request: name: AuthAndRedirectRequest @@ -1211,6 +1216,9 @@ types: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "audiences": [ @@ -1275,6 +1283,9 @@ types: "docs": "OK", "type": "root.ListExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getById": { "audiences": [ @@ -1339,6 +1350,9 @@ types: "docs": "OK", "type": "root.ExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -1406,6 +1420,9 @@ types: "docs": "Created", "type": "root.ExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1424,6 +1441,8 @@ service: method: GET auth: false docs: Get extensions, searching by name + source: + openapi: ../openapi.yml display-name: Get extensions request: name: ExtensionsGetRequest @@ -1462,6 +1481,8 @@ service: path: /extensions method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create an extension request: name: ExtensionsPostRequest @@ -1503,6 +1524,8 @@ service: method: DELETE auth: false docs: Delete an extension by ID + source: + openapi: ../openapi.yml display-name: Delete extensions matching name query request: name: ExtensionsDeleteRequest @@ -1520,6 +1543,8 @@ service: method: GET auth: false docs: Get an extension by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1601,6 +1626,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "audiences": [ @@ -1673,6 +1701,9 @@ service: "docs": "OK", "type": "root.ListProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getById": { "audiences": [ @@ -1740,6 +1771,9 @@ service: "docs": "OK", "type": "root.ProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -1820,6 +1854,9 @@ service: "docs": "Created", "type": "root.ProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1838,6 +1875,8 @@ service: method: GET auth: false docs: Get profiles, searching by name or tags + source: + openapi: ../openapi.yml display-name: Get profiles request: name: ProfilesGetRequest @@ -1884,6 +1923,8 @@ service: path: /profiles method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a profile request: name: ProfileInput @@ -1933,6 +1974,8 @@ service: method: DELETE auth: false docs: Delete profiles matching query + source: + openapi: ../openapi.yml display-name: Delete profiles matching query request: name: ProfilesDeleteRequest @@ -1956,6 +1999,8 @@ service: method: GET auth: false docs: Get a profile by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2034,6 +2079,9 @@ service: "format": "sse", "type": "SessionsEventsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getinfo": { "audiences": [ @@ -2116,6 +2164,9 @@ service: "docs": "OK", "type": "root.SessionWithConnectionInfoEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "audiences": [ @@ -2215,6 +2266,9 @@ service: "docs": "OK", "type": "root.SessionsWithPaginationEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -2298,6 +2352,9 @@ service: "docs": "Created", "type": "root.SessionWithConnectionInfoEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "terminate": { "audiences": [ @@ -2322,6 +2379,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2452,6 +2512,8 @@ service: method: GET auth: false docs: Get a list of sessions by ID + source: + openapi: ../openapi.yml display-name: Get a list of sessions request: name: SessionsListRequest @@ -2518,6 +2580,8 @@ service: path: /sessions method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a session request: name: SessionRestInputV1 @@ -2573,6 +2637,8 @@ service: method: GET auth: false docs: Get a session by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2631,6 +2697,8 @@ service: docs: >- Ends a session by ID. If a given session id does not exist within the organization, it is ignored. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2646,6 +2714,8 @@ service: method: GET auth: false docs: Get a session event stream for a given session ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2757,6 +2827,9 @@ service: "docs": "Created", "type": "root.WindowEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "prompt-content": { "audiences": [ @@ -2852,6 +2925,9 @@ service: "docs": "Created", "type": "root.ModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "scrape-content": { "audiences": [ @@ -2929,6 +3005,9 @@ service: "docs": "Created", "type": "root.ScrapeModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "summarize-content": { "audiences": [ @@ -3017,6 +3096,9 @@ service: "docs": "Created", "type": "root.ModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3034,6 +3116,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/get-window-info method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -3094,6 +3178,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/prompt-content method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -3157,6 +3243,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/scrape-content method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -3206,6 +3294,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/summarize-content method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uint.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uint.json index 49806743b7a..c5cdae9be46 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uint.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uint.json @@ -42,6 +42,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -70,6 +73,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uploadcare.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uploadcare.json index 99fe6ae99f2..d88cb97d6f4 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uploadcare.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/uploadcare.json @@ -3492,6 +3492,9 @@ processing operations. "docs": "The group was created successfully.", "type": "root.GroupInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "filesGroupInfo": { "auth": false, @@ -3681,6 +3684,9 @@ Log.d("TAG", group.toString()) "docs": "File group information was retrieved successfully.", "type": "root.GroupInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3716,6 +3722,8 @@ service: a group is to create a new one. + source: + openapi: ../openapi.json display-name: Create a file group request: name: CreateFilesGroupRequest @@ -3904,6 +3912,8 @@ service: group was created, number of the files in the group, etc). + source: + openapi: ../openapi.json display-name: Get information about a file group request: name: FilesGroupInfoRequest @@ -4237,6 +4247,9 @@ Log.d("TAG", file.toString()) "docs": "The file was uploaded successfully.", "type": "BaseUploadResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "fileUploadInfo": { "auth": false, @@ -4455,6 +4468,9 @@ Log.d("TAG", file.toString()) "docs": "File information was retrieved successfully.", "type": "root.FileUploadInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "fromURLUpload": { "auth": false, @@ -4870,6 +4886,9 @@ to the value of the `check_URL_duplicates` parameter. "docs": "Status Token or File Info of an already downloaded file.", "type": "FromUrlUploadResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "fromURLUploadStatus": { "auth": false, @@ -5465,6 +5484,9 @@ Log.d("TAG", status.toString()) ", "type": "FromUrlUploadStatusResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadComplete": { "auth": false, @@ -5716,6 +5738,9 @@ Log.d("TAG", file.toString()) "docs": "The file was uploaded successfully.", "type": "root.FileUploadInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadPart": { "auth": false, @@ -5841,6 +5866,9 @@ Log.d("TAG", file.toString()) "body": "bytes", "content-type": "application/octet-stream", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadStart": { "auth": false, @@ -6048,6 +6076,9 @@ to us as a value of the `part_size` parameter (in bytes). "docs": "Multipart upload started successfully.", "type": "MultipartFileUploadStartResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -6265,6 +6296,8 @@ service: "my_file.jpg=@my_file.jpg" "https://upload.uploadcare.com/base/" ``` + source: + openapi: ../openapi.json display-name: Direct uploads request: name: BaseUploadRequest @@ -6425,6 +6458,8 @@ service: **Note**: Multipart uploads support files larger than 10 megabytes only. + source: + openapi: ../openapi.json display-name: Start multipart upload request: name: MultipartFileUploadStartRequest @@ -6641,6 +6676,8 @@ service: **Note**: You MUST define `Content-Type` header for your data. + source: + openapi: ../openapi.json display-name: Upload individual file parts request: body: bytes @@ -6774,6 +6811,8 @@ service: upload session to assemble all the file parts into a single resulting file. + source: + openapi: ../openapi.json display-name: Complete multipart upload request: name: MultipartFileUploadCompleteRequest @@ -7039,6 +7078,8 @@ service: uploads, pass the `save_URL_duplicates` and `check_URL_duplicates` parameters described below. + source: + openapi: ../openapi.json display-name: Upload files from URLs request: name: FromUrlUploadRequest @@ -7415,6 +7456,8 @@ service: and the endpoint returns a JSON object holding information about the uploaded file * if the system fails to fetch/upload the file, the `status` field is set to `error` and the `error` field is set to the cause of the error. + source: + openapi: ../openapi.json display-name: Check the status of a task to fetch/upload a file from a URL request: name: FromUrlUploadStatusRequest @@ -7945,6 +7988,8 @@ service: docs: > Returns a JSON object with information about an uploaded file (file size, MIME type, metadata, etc). + source: + openapi: ../openapi.json display-name: Get information about an uploaded file request: name: FileUploadInfoRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/valtown.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/valtown.json index 5101fbd6ab8..33c7611f3b4 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/valtown.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/valtown.json @@ -1034,6 +1034,9 @@ API endpoints", "docs": "Default Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "val": { "auth": false, @@ -1088,6 +1091,9 @@ API endpoints", "docs": "A Val", "type": "AliasValResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1280,6 +1286,8 @@ service: method: GET auth: false docs: Get basic details about a user, given their username + source: + openapi: ../openapi.yml path-parameters: username: type: string @@ -1304,6 +1312,8 @@ service: method: GET auth: false docs: Get a val + source: + openapi: ../openapi.yml path-parameters: username: type: string @@ -1490,6 +1500,9 @@ types: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -1507,6 +1520,9 @@ types: "docs": "Binary contents of the returned file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": false, @@ -1540,6 +1556,9 @@ types: "docs": "List of blobs that you’ve stored", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store": { "auth": true, @@ -1574,6 +1593,9 @@ types: }, "content-type": "application/json", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1621,6 +1643,8 @@ service: method: GET auth: false docs: List blobs in your account + source: + openapi: ../openapi.yml request: name: BlobsListRequest query-parameters: @@ -1641,6 +1665,8 @@ service: method: GET auth: false docs: Get a blob’s contents. + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1653,6 +1679,8 @@ service: method: POST auth: true docs: Store data in blob storage + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1673,6 +1701,8 @@ service: method: DELETE auth: true docs: Delete a blob + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1768,6 +1798,9 @@ docs: Blobs "docs": "Successfully sent email", "type": "EmailsSendResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1930,6 +1963,8 @@ service: method: POST auth: true docs: Send emails + source: + openapi: ../openapi.yml request: name: EmailsSendRequest body: @@ -2063,6 +2098,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeCommentsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -2092,6 +2130,9 @@ give access to details and data from the requesting user.", "docs": "Your user information, with tier and email included", "type": "MeGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "likes": { "auth": false, @@ -2155,6 +2196,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeLikesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "references": { "auth": false, @@ -2217,6 +2261,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeReferencesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2763,6 +2810,8 @@ service: method: GET auth: false docs: Get profile information for the current user + source: + openapi: ../openapi.yml response: docs: Your user information, with tier and email included type: MeGetResponse @@ -2783,6 +2832,8 @@ service: method: GET auth: false docs: Get vals liked by the current user + source: + openapi: ../openapi.yml request: name: MeLikesRequest query-parameters: @@ -2827,6 +2878,8 @@ service: method: GET auth: false docs: Get comments related to current user, either given or received + source: + openapi: ../openapi.yml request: name: MeCommentsRequest query-parameters: @@ -2875,6 +2928,8 @@ service: method: GET auth: false docs: Get vals that depend on any of the user's vals + source: + openapi: ../openapi.yml request: name: MeReferencesRequest query-parameters: @@ -3000,6 +3055,9 @@ imports: "docs": "A paginated result set", "type": "SearchValsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3038,6 +3096,8 @@ service: method: GET auth: false docs: Search for vals across the platform + source: + openapi: ../openapi.yml request: name: SearchValsRequest query-parameters: @@ -3150,6 +3210,9 @@ docs: Search "docs": "Array of results from the statements executed", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "execute": { "auth": true, @@ -3229,6 +3292,9 @@ docs: Search "docs": "Default Response", "type": "root.ResultSet", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3400,6 +3466,8 @@ service: method: POST auth: true docs: Execute a single SQLite statement and return results + source: + openapi: ../openapi.yml request: name: SqliteExecuteRequest body: @@ -3444,6 +3512,8 @@ service: method: POST auth: true docs: Execute a batch of SQLite statements and return results for all of them + source: + openapi: ../openapi.yml request: name: SqliteBatchRequest body: @@ -3522,6 +3592,9 @@ docs: SQLite "docs": "Default Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "vals": { "auth": false, @@ -3594,6 +3667,9 @@ docs: SQLite "docs": "A paginated result set", "type": "UsersValsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3624,6 +3700,8 @@ service: method: GET auth: false docs: Get basic information about a user + source: + openapi: ../openapi.yml path-parameters: user_id: type: string @@ -3648,6 +3726,8 @@ service: method: GET auth: false docs: List a user's vals + source: + openapi: ../openapi.yml path-parameters: user_id: type: string @@ -3756,6 +3836,9 @@ let you get, create, and run vals.", "docs": "The evaluation_id was successfully searched for and the evaluation was either already done or now has been cancelled", "type": "ValsCancelResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -3852,6 +3935,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createVersion": { "auth": true, @@ -3957,6 +4043,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -3980,6 +4069,9 @@ let you get, create, and run vals.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteVersion": { "auth": true, @@ -4008,6 +4100,9 @@ let you get, create, and run vals.", "type": "integer", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "evalGet": { "auth": false, @@ -4044,6 +4139,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "evalPost": { "auth": false, @@ -4105,6 +4203,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -4154,6 +4255,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getVersion": { "auth": false, @@ -4225,6 +4329,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": false, @@ -4282,6 +4389,9 @@ let you get, create, and run vals.", "docs": "A paginated result set", "type": "ValsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "put": { "auth": true, @@ -4327,6 +4437,9 @@ let you get, create, and run vals.", "name": "ValsPutRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "runGet": { "auth": false, @@ -4357,6 +4470,9 @@ let you get, create, and run vals.", }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "runPost": { "auth": false, @@ -4394,6 +4510,9 @@ let you get, create, and run vals.", "name": "RunPostRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -4466,6 +4585,9 @@ let you get, create, and run vals.", "name": "ValsUpdateRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4751,6 +4873,8 @@ service: method: POST auth: false docs: Run JavaScript or TypeScript without saving it permanently as a val + source: + openapi: ../openapi.yml request: name: EvalPostRequest body: @@ -4793,6 +4917,8 @@ service: method: GET auth: false docs: Run JavaScript or TypeScript without saving it permanently as a val + source: + openapi: ../openapi.yml path-parameters: code: type: string @@ -4816,6 +4942,8 @@ service: method: GET auth: false docs: Run a val, specify any parameters in a querystring + source: + openapi: ../openapi.yml path-parameters: valname: type: string @@ -4837,6 +4965,8 @@ service: method: POST auth: false docs: Run a val, with arguments in the request body + source: + openapi: ../openapi.yml path-parameters: valname: type: string @@ -4859,6 +4989,8 @@ service: method: POST auth: true docs: Create a new val + source: + openapi: ../openapi.yml request: name: ValsCreateRequest body: @@ -4929,6 +5061,8 @@ service: method: PUT auth: true docs: Run an existing val or create a new one + source: + openapi: ../openapi.yml request: name: ValsPutRequest body: @@ -4955,6 +5089,8 @@ service: method: GET auth: false docs: Get a val by id + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -4991,6 +5127,8 @@ service: method: PUT auth: true docs: Update an existing val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5039,6 +5177,8 @@ service: method: DELETE auth: true docs: Delete a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5053,6 +5193,8 @@ service: method: GET auth: false docs: List versions of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5090,6 +5232,8 @@ service: method: POST auth: true docs: Create a new version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5166,6 +5310,8 @@ service: method: GET auth: false docs: Get a specific version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5218,6 +5364,8 @@ service: method: DELETE auth: true docs: Delete a specific version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5236,6 +5384,8 @@ service: method: POST auth: true docs: Cancel a running val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/vellum.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/vellum.json index 583448985f2..a321d734f1f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/vellum.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/vellum.json @@ -380,6 +380,9 @@ Executes a deployed Workflow and streams back its results.", "format": "json", "type": "WorkflowStreamEvent", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "generate": { @@ -473,6 +476,9 @@ Generate a completion using a previously defined deployment. "docs": "", "type": "GenerateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "generate-stream": { @@ -567,6 +573,9 @@ Generate a stream of completions using a previously defined deployment. "format": "json", "type": "GenerateStreamResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "search": { @@ -656,6 +665,9 @@ Perform a search against a document index. "docs": "", "type": "SearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "submit-completion-actuals": { @@ -716,6 +728,9 @@ Used to submit feedback regarding the quality of previously generated completion "name": "SubmitCompletionActualsRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, }, @@ -2661,6 +2676,8 @@ Used to submit feedback regarding the quality of previously generated completion Executes a deployed Workflow and streams back its results. + source: + openapi: ../openapi.yml request: name: ExecuteWorkflowStreamRequest body: @@ -2742,6 +2759,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: GenerateBodyRequest body: @@ -2808,6 +2827,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: GenerateStreamBodyRequest body: @@ -2877,6 +2898,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: SearchRequestBodyRequest body: @@ -2939,6 +2962,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: SubmitCompletionActualsRequest body: @@ -4479,6 +4504,9 @@ Used to retrieve a deployment given its ID or name. "docs": "", "type": "root.DeploymentRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -4504,6 +4532,8 @@ service: Used to retrieve a deployment given its ID or name. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -4719,6 +4749,9 @@ Creates a new document index.", "docs": "", "type": "root.DocumentIndexRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -4743,6 +4776,8 @@ service: Creates a new document index. + source: + openapi: ../openapi.yml request: name: DocumentIndexCreateRequest body: @@ -4944,6 +4979,9 @@ Used to list documents. Optionally filter on supported fields. "docs": "", "type": "root.PaginatedSlimDocumentList", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upload": { @@ -5019,6 +5057,9 @@ Upload a document to be indexed and used for search. "docs": "", "type": "root.UploadDocumentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Documents", }, }, @@ -5044,6 +5085,8 @@ service: Used to list documents. Optionally filter on supported fields. + source: + openapi: ../openapi.yml request: name: DocumentsListRequest query-parameters: @@ -5098,6 +5141,8 @@ service: **Note:** Uses a base url of `https://documents.vellum.ai`. + source: + openapi: ../openapi.yml request: name: UploadDocumentBodyRequest body: @@ -5209,6 +5254,9 @@ Compiles the prompt backing the model version using the provided input values.", "docs": "", "type": "root.ModelVersionCompilePromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "retrieve": { @@ -5288,6 +5336,9 @@ Used to retrieve a model version given its ID. "docs": "", "type": "root.ModelVersionRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5313,6 +5364,8 @@ service: Used to retrieve a model version given its ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5371,6 +5424,8 @@ service: Compiles the prompt backing the model version using the provided input values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5555,6 +5610,9 @@ Under the hood, this endpoint creates a new sandbox, a new model version, and a "docs": "", "type": "root.RegisterPromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5586,6 +5644,8 @@ service: Under the hood, this endpoint creates a new sandbox, a new model version, and a new deployment. + source: + openapi: ../openapi.yml request: name: RegisterPromptRequestRequest body: @@ -5718,6 +5778,9 @@ Deletes an existing scenario from a sandbox, keying off of the provided scenario "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upsert_sandbox_scenario": { @@ -5869,6 +5932,9 @@ or overwritten with default values.", "docs": "", "type": "root.SandboxScenario", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5906,6 +5972,8 @@ service: not provided will be removed or overwritten with default values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5998,6 +6066,8 @@ service: Deletes an existing scenario from a sandbox, keying off of the provided scenario id. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -6050,6 +6120,9 @@ Deletes an existing test case for a test suite, keying off of the test case id." "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upsert_test_suite_test_case": { @@ -6133,6 +6206,9 @@ or overwritten with default values.", "docs": "", "type": "root.TestSuiteTestCase", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -6170,6 +6246,8 @@ service: fields not provided will be removed or overwritten with default values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -6229,6 +6307,8 @@ service: Deletes an existing test case for a test suite, keying off of the test case id. + source: + openapi: ../openapi.yml path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/webflow.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/webflow.json index 94962f42246..c9cd0616387 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/webflow.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/webflow.json @@ -8765,6 +8765,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "AccessGroupsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8918,6 +8921,8 @@ service: docs: >- Get a list of access groups for a site

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -9068,6 +9073,9 @@ service: "docs": "Request was successful", "type": "AssetsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-folder": { "auth": true, @@ -9135,6 +9143,9 @@ service: "docs": "Request was successful", "type": "AssetsCreateFolderResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -9163,6 +9174,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -9221,6 +9235,9 @@ service: "docs": "Request was successful", "type": "AssetsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-folder": { "auth": true, @@ -9267,6 +9284,9 @@ service: "docs": "Request was successful", "type": "AssetsGetFolderResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -9328,6 +9348,9 @@ service: "docs": "Request was successful", "type": "AssetsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-folders": { "auth": true, @@ -9383,6 +9406,9 @@ service: "docs": "Request was successful", "type": "AssetsListFoldersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -9458,6 +9484,9 @@ service: "docs": "Request was successful", "type": "AssetsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10376,6 +10405,8 @@ service: method: GET auth: true docs: List assets for a given site

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -10431,6 +10462,8 @@ service: request to the `uploadUrl` with the `uploadDetails` object as your header information in the request.

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -10496,6 +10529,8 @@ service: method: GET auth: true docs: Get an Asset

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -10539,6 +10574,8 @@ service: method: DELETE auth: true docs: Delete an Asset + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -10558,6 +10595,8 @@ service: method: PATCH auth: true docs: Update an Asset

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -10613,6 +10652,8 @@ service: docs: >- List Asset Folders within a given site

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -10653,6 +10694,8 @@ service: docs: >- Create an Asset Folder within a given site

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -10703,6 +10746,8 @@ service: docs: >- Get details about a specific Asset Folder

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: asset_folder_id: type: string @@ -10826,6 +10871,9 @@ service: "docs": "Request was successful", "type": "CollectionsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -10859,6 +10907,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-collection": { "auth": true, @@ -10887,6 +10938,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -10940,6 +10994,9 @@ service: "docs": "Request was successful", "type": "CollectionsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -11002,6 +11059,9 @@ service: "docs": "Request was successful", "type": "CollectionsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11435,6 +11495,8 @@ service: docs: >- List of all Collections within a Site.

Required scope | `cms:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -11478,6 +11540,8 @@ service: method: POST auth: true docs: Create a Collection for a site.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -11536,6 +11600,8 @@ service: docs: >- Get the full details of a collection from its ID.

Required scope | `cms:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -11576,6 +11642,8 @@ service: docs: >- Delete a collection using its ID.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -11597,6 +11665,8 @@ service: docs: >- Delete a custom field in a collection. This endpoint does not currently support bulk deletion.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -11705,6 +11775,9 @@ service: "docs": "Request was successful", "type": "FieldsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -11780,6 +11853,9 @@ service: "docs": "Request was successful", "type": "FieldsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12053,6 +12129,8 @@ service: field types can be created through the API. This endpoint does not currently support bulk creation.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -12108,6 +12186,8 @@ service: docs: >- Update a custom field in a collection.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -12250,6 +12330,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-item-for-multiple-locales": { "auth": true, @@ -12327,6 +12410,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemForMultipleLocalesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-item-live": { "auth": true, @@ -12408,6 +12494,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-item": { "auth": true, @@ -12450,6 +12539,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-item-live": { "auth": true, @@ -12492,6 +12584,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-item": { "auth": true, @@ -12553,6 +12648,9 @@ service: "docs": "Request was successful", "type": "ItemsGetItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-item-live": { "auth": true, @@ -12614,6 +12712,9 @@ service: "docs": "Request was successful", "type": "ItemsGetItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-items": { "auth": true, @@ -12716,6 +12817,9 @@ service: "docs": "Request was successful", "type": "ItemsListItemsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-items-live": { "auth": true, @@ -12818,6 +12922,9 @@ service: "docs": "Request was successful", "type": "ItemsListItemsLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish-item": { "auth": true, @@ -12877,6 +12984,9 @@ service: "docs": "Request was successful", "type": "ItemsPublishItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-item": { "auth": true, @@ -12983,6 +13093,9 @@ service: "docs": "Request was successful", "type": "ItemsUpdateItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-item-live": { "auth": true, @@ -13089,6 +13202,9 @@ service: "docs": "Request was successful", "type": "ItemsUpdateItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14387,6 +14503,8 @@ service: docs: >- List of all Items within a Collection.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14472,6 +14590,8 @@ service: href="https://developers.webflow.com/data/reference/create-item-for-multiple-locales"> please use the bulk item endpoint.

Required scope | CMS:write + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14532,6 +14652,8 @@ service: docs: >- List of all live Items within a Collection.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14615,6 +14737,8 @@ service: live site.

To create items across multiple locales, please use this endpoint.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14675,6 +14799,8 @@ service: docs: >- Create single Item in a Collection with multiple corresponding locales.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14734,6 +14860,8 @@ service: docs: >- Get details of a selected Collection Item.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14784,6 +14912,8 @@ service: docs: >- Delete an Item from a Collection. This endpoint does not currently support bulk deletion.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14819,6 +14949,8 @@ service: docs: >- Update a selected Item in a Collection.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14899,6 +15031,8 @@ service: docs: >- Get details of a selected Collection live Item.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14951,6 +15085,8 @@ service: unpublish the item from the live site and set it to draft. This endpoint does not currently support bulk deletion.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -14987,6 +15123,8 @@ service: Update a selected live Item in a Collection. The updates for this Item will be published to the live site.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -15067,6 +15205,8 @@ service: docs: >- Publish an item or multiple items.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -15157,6 +15297,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "EcommerceGetSettingsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15215,6 +15358,8 @@ service: Retrieve ecommerce settings for a site. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -15320,6 +15465,9 @@ service: "docs": "Request was successful", "type": "FormsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-submission": { "auth": true, @@ -15366,6 +15514,9 @@ service: "docs": "Request was successful", "type": "FormsGetSubmissionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -15474,6 +15625,9 @@ service: "docs": "Request was successful", "type": "FormsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-submissions": { "auth": true, @@ -15553,6 +15707,9 @@ service: "docs": "Request was successful", "type": "FormsListSubmissionsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-submission": { "auth": true, @@ -15615,6 +15772,9 @@ service: "docs": "Request was successful", "type": "FormsUpdateSubmissionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16469,6 +16629,8 @@ service: method: GET auth: true docs: List forms for a given site

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -16552,6 +16714,8 @@ service: docs: >- Get information about a given form

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_id: type: string @@ -16605,6 +16769,8 @@ service: docs: >- List form submissions for a given form

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_id: type: string @@ -16664,6 +16830,8 @@ service: docs: >- Get information about a given form submission

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_submission_id: type: string @@ -16699,6 +16867,8 @@ service: docs: >- Update hidden fields on a form submission

Required scope | `forms:write` + source: + openapi: ../openapi.yml path-parameters: form_submission_id: type: string @@ -16840,6 +17010,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "InventoryListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -16914,6 +17087,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "InventoryUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17135,6 +17311,8 @@ service: List the current inventory levels for a particular SKU item. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -17176,6 +17354,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -18042,6 +18222,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "OrdersGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -18517,6 +18700,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "OrdersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "refund": { "auth": true, @@ -18805,6 +18991,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersRefundResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -19103,6 +19292,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-fulfill": { "auth": true, @@ -19390,6 +19582,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateFulfillResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-unfulfill": { "auth": true, @@ -19661,6 +19856,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateUnfulfillResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -33375,6 +33573,8 @@ service: List all orders created for a given site. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -33764,6 +33964,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -33987,6 +34189,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -34225,6 +34429,8 @@ service: Updates an order's status to fulfilled Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -34455,6 +34661,8 @@ service: Updates an order's status to unfulfilled Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -34677,6 +34885,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -35375,6 +35585,9 @@ webhooks: "docs": "Request was successful", "type": "PagesGetContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-metadata": { "auth": true, @@ -35447,6 +35660,9 @@ webhooks: "docs": "Request was successful", "type": "PagesGetMetadataResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -35562,6 +35778,9 @@ webhooks: "docs": "Request was successful", "type": "PagesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-page-settings": { "auth": true, @@ -35670,6 +35889,9 @@ webhooks: "docs": "Request was successful", "type": "UpdatePageSettingsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-static-content": { "auth": true, @@ -35749,6 +35971,9 @@ Required scope | `pages:write` "docs": "Request was successful", "type": "UpdateStaticContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36991,6 +37216,8 @@ service: method: GET auth: true docs: List of all pages for a site

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -37094,6 +37321,8 @@ service: docs: >- Get metadata information for a single page

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -37156,6 +37385,8 @@ service: docs: >- Update Page-level metadata, including SEO and Open Graph fields.

Required scope | `pages:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -37250,6 +37481,8 @@ service: Locale ID in your request, the response will return any content that can be localized from the Primary locale

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -37331,6 +37564,8 @@ service: Required scope | `pages:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -37466,6 +37701,9 @@ webhooks: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-code": { "auth": true, @@ -37515,6 +37753,9 @@ webhooks: "docs": "Request was successful", "type": "ScriptsGetCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsert-custom-code": { "auth": true, @@ -37603,6 +37844,9 @@ webhooks: "docs": "Request was successful", "type": "ScriptsUpsertCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37900,6 +38144,8 @@ service: from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -37940,6 +38186,8 @@ service: to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -38004,6 +38252,8 @@ service: from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -38187,6 +38437,9 @@ Required scope | `ecommerce:write`", "docs": "Request was successful", "type": "ProductsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-sku": { "auth": true, @@ -38280,6 +38533,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsCreateSkuResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -38412,6 +38668,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "ProductsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -38558,6 +38817,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "ProductsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -38691,6 +38953,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-sku": { "auth": true, @@ -38795,6 +39060,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsUpdateSkuResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44440,6 +44708,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44567,6 +44837,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44674,6 +44946,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44770,6 +45044,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44873,6 +45149,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44944,6 +45222,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -45096,6 +45376,9 @@ service: "docs": "Request was successful", "type": "ScriptsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register-hosted": { "auth": true, @@ -45179,6 +45462,9 @@ service: "docs": "Request was successful", "type": "ScriptsRegisterHostedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register-inline": { "auth": true, @@ -45260,6 +45546,9 @@ service: "docs": "Created", "type": "ScriptsRegisterInlineResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45536,6 +45825,8 @@ service: theme="📘">Access to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -45596,6 +45887,8 @@ service: href="https://developers.webflow.com/data/docs/getting-started-data-clients">Data Client App.

Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -45672,6 +45965,8 @@ service: theme="📘">Access to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -45826,6 +46121,9 @@ service: "docs": "Request was successful", "type": "SitesGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-domain": { "auth": true, @@ -45872,6 +46170,9 @@ service: "docs": "Request was successful", "type": "SitesGetCustomDomainResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -46028,6 +46329,9 @@ service: "docs": "Request was successful", "type": "SitesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish": { "auth": true, @@ -46091,6 +46395,9 @@ service: "docs": "Request accepted", "type": "SitesPublishResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -46894,6 +47201,8 @@ service: docs: >- List of all sites the provided access token is able to access.

Required scope | `sites:read` + source: + openapi: ../openapi.yml display-name: List Sites response: docs: Request was successful @@ -47011,6 +47320,8 @@ service: method: GET auth: true docs: Get a site by site id

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -47071,6 +47382,8 @@ service: docs: >- Get a list of all custom domains related to site.

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -47106,6 +47419,8 @@ service: class="callout-icon">📘

Endpoint-specific rate limit

This endpoint has a limit of one successful publish queue per minute.

+ source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -47247,6 +47562,9 @@ webhooks: "docs": "A list of site activity logs", "type": "ActivityLogsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -47396,6 +47714,8 @@ service: docs: >- Retrieve Activity Logs for a specific Site. Requires Site to be on an Enterprise plan.

Required scope | `site_activity:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -47486,6 +47806,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-code": { "auth": true, @@ -47543,6 +47866,9 @@ service: "docs": "Request was successful", "type": "ScriptsGetCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-custom-code-blocks": { "auth": true, @@ -47642,6 +47968,9 @@ service: "docs": "Request was successful", "type": "ScriptsListCustomCodeBlocksResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsert-custom-code": { "auth": true, @@ -47730,6 +48059,9 @@ service: "docs": "Request was successful", "type": "ScriptsUpsertCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -48221,6 +48553,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -48266,6 +48600,8 @@ service: to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -48326,6 +48662,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -48350,6 +48688,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -48453,6 +48793,9 @@ service: "docs": "Request was successful", "type": "TokenAuthorizedByResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "introspect": { "auth": true, @@ -48502,6 +48845,9 @@ service: "docs": "Request was successful", "type": "TokenIntrospectResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -48684,6 +49030,8 @@ service: docs: >- Information about the Authorized User

Required Scope | `authorized_user:read` + source: + openapi: ../openapi.yml display-name: Get Authorization User Info response: docs: Request was successful @@ -48708,6 +49056,8 @@ service: from a Data Client App. + source: + openapi: ../openapi.yml display-name: Get Authorization Info response: docs: Request was successful @@ -48783,6 +49133,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -48847,6 +49200,9 @@ service: "docs": "Request was successful", "type": "UsersGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "invite": { "auth": true, @@ -48938,6 +49294,9 @@ service: "docs": "Request was successful", "type": "UsersInviteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -49078,6 +49437,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "UsersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -49172,6 +49534,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "UsersUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -51196,6 +51561,8 @@ service: method: GET auth: true docs: Get a list of users for a site

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -51295,6 +51662,8 @@ service: method: GET auth: true docs: Get a User by ID

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -51341,6 +51710,8 @@ service: method: DELETE auth: true docs: Delete a User by ID

Required scope | `users:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -51369,6 +51740,8 @@ service: + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -51439,6 +51812,8 @@ service: Create and invite a user with an email address. The user will be sent and invite via email, which they will need to accept in order to join paid Access Groups.

Required scope | `users:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -51654,6 +52029,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -51682,6 +52060,9 @@ webhooks: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -51728,6 +52109,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -51808,6 +52192,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -52744,6 +53131,8 @@ service: docs: > List all App-created Webhooks registered for a given site

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -52806,6 +53195,8 @@ service: a bearer token from a Data Client App. Required scope | `sites:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -52900,6 +53291,8 @@ service: method: GET auth: true docs: Get a specific Webhook instance + source: + openapi: ../openapi.yml path-parameters: webhook_id: type: string @@ -52933,6 +53326,8 @@ service: method: DELETE auth: true docs: Remove a Webhook + source: + openapi: ../openapi.yml path-parameters: webhook_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-audiences.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-audiences.json index 3c9659a1159..e45c3ddb45f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-audiences.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-audiences.json @@ -38,6 +38,9 @@ "name": "PostV1UsersRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -75,6 +78,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostV1UsersRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-auth-variables.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-auth-variables.json index c74bc77e34c..2c23ca6fdaf 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-auth-variables.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-auth-variables.json @@ -34,6 +34,9 @@ "docs": "Success", "type": "UserGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_all": { "auth": false, @@ -56,6 +59,9 @@ "docs": "Success", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -124,6 +130,8 @@ service: path: /user method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: UserGetResponse @@ -135,6 +143,8 @@ service: path: /users method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: list diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-base-path.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-base-path.json index cf4fc9664b2..852bef37e6f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-base-path.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-base-path.json @@ -19,6 +19,9 @@ "method": "GET", "pagination": undefined, "path": "/v1/example", + "source": { + "openapi": "../swagger.yml", + }, }, }, "source": { @@ -34,6 +37,8 @@ path: /v1/example method: GET auth: false + source: + openapi: ../swagger.yml display-name: Example endpoint examples: - {} diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-global-headers.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-global-headers.json index 88cace414fa..df5e1639863 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-global-headers.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-global-headers.json @@ -122,6 +122,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -173,6 +176,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -190,6 +196,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -219,6 +227,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-idempotency-headers.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-idempotency-headers.json index 64fa5a1981d..0980331ce22 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-idempotency-headers.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-idempotency-headers.json @@ -45,6 +45,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60,6 +63,8 @@ path: /send method: POST auth: false + source: + openapi: ../openapi.yml request: name: SendRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-ignore.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-ignore.json index fd276c108af..f63e11f3957 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-ignore.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-ignore.json @@ -46,6 +46,9 @@ "docs": "Success", "type": "UsersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -103,6 +106,8 @@ method: GET auth: false docs: '' + source: + openapi: ../openapi.yml display-name: List request: name: ListRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-pagination.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-pagination.json index b6ad53f2092..a01b42ff886 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-pagination.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-pagination.json @@ -51,6 +51,9 @@ "docs": "Success", "type": "UsersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -113,6 +116,8 @@ step: $request.limit results: $response.users has-next-page: $response.meta.hasMore + source: + openapi: ../openapi.yml display-name: List request: name: ListRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-parameter-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-parameter-name.json index e80b015390e..16b121c7511 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-parameter-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-parameter-name.json @@ -45,6 +45,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60,6 +63,8 @@ path: /user/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-resolutions.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-resolutions.json index dcebc3d80d0..ed9839ce3ac 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-resolutions.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-resolutions.json @@ -65,6 +65,9 @@ "docs": "Success", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_all": { "auth": false, @@ -87,6 +90,9 @@ "docs": "Success", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -104,6 +110,8 @@ service: path: /user method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: root.User @@ -115,6 +123,8 @@ service: path: /users method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: list diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name-with-streaming.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name-with-streaming.json index 3a5edde50c6..ec27fb6b7f3 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name-with-streaming.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name-with-streaming.json @@ -115,6 +115,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -159,6 +162,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -176,6 +182,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -201,6 +209,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name.json index bc19740d1d7..ba79432b480 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-sdk-group-name.json @@ -70,6 +70,9 @@ "docs": "Success", "type": "user.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -88,6 +91,8 @@ service: method: GET auth: false docs: This endpoint should be in `auth/user.yml` + source: + openapi: ../openapi.yml response: docs: Success type: user.User diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-audiences.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-audiences.json index bac53aba415..8f48f3e4607 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-audiences.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-audiences.json @@ -121,6 +121,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -171,6 +174,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -188,6 +194,8 @@ service: path: /user/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -216,6 +224,8 @@ service: path: /user/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-reference.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-reference.json index 96dba16d993..ee65c3623e7 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-reference.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-reference.json @@ -84,6 +84,9 @@ "docs": "", "type": "root.Completion", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_stream": { "auth": false, @@ -123,6 +126,9 @@ "format": "json", "type": "root.CompletionChunk", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -140,6 +146,8 @@ service: path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: ChatCompletionsCreateStreamRequest body: @@ -162,6 +170,8 @@ service: path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: ChatCompletionsCreateRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-sse.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-sse.json index d61786b99c0..244017d7964 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-sse.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-sse.json @@ -69,6 +69,9 @@ "format": "sse", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -84,6 +87,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-stream-condition.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-stream-condition.json index 634b2a29dc5..02d4b166cc0 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-stream-condition.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-streaming-with-stream-condition.json @@ -53,6 +53,9 @@ "docs": "", "type": "ChatFullResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "chat_stream": { "auth": false, @@ -99,6 +102,9 @@ "format": "json", "type": "ChatStreamedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -151,6 +157,8 @@ docs: >- Create a chat while specifying the default retrieval parameters used by the prompt. + source: + openapi: ../openapi.yml display-name: Start a chat request: name: ChatStreamRequest @@ -181,6 +189,8 @@ docs: >- Create a chat while specifying the default retrieval parameters used by the prompt. + source: + openapi: ../openapi.yml display-name: Start a chat request: name: ChatRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-token-variable-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-token-variable-name.json index e0909a4cf7d..3f059d479f5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-token-variable-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-token-variable-name.json @@ -78,6 +78,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-version.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-version.json index babefb8f882..e21a557ae7e 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-version.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi-docs/x-fern-version.json @@ -78,6 +78,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ada.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ada.json index 92b9fae4a97..7992d178ee8 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ada.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/ada.json @@ -283,6 +283,9 @@ types: "docs": "OK", "type": "root.EndUser", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEndUsers": { "auth": true, @@ -327,6 +330,9 @@ types: "docs": "OK", "type": "root.EndUsers", }, + "source": { + "openapi": "../openapi.json", + }, }, "updateEndUserById": { "auth": true, @@ -357,6 +363,9 @@ types: "docs": "OK", "type": "root.EndUser", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -375,6 +384,8 @@ service: method: GET auth: true docs: Get a specific end user + source: + openapi: ../openapi.json path-parameters: end_user_id: type: string @@ -399,6 +410,8 @@ service: method: PATCH auth: true docs: Update an end user. Request data is limited to 4KB in size total. + source: + openapi: ../openapi.json path-parameters: end_user_id: type: string @@ -422,6 +435,8 @@ service: method: GET auth: true docs: Get multiple end users + source: + openapi: ../openapi.json display-name: Get multiple end users by ID request: name: GetEndUsersRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/anyOf.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/anyOf.json index e82b99bfdf6..d6d5a2b41e9 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/anyOf.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/anyOf.json @@ -44,6 +44,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -75,6 +78,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/apiture.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/apiture.json index 29d88fed784..675062662bf 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/apiture.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/apiture.json @@ -5809,6 +5809,9 @@ types: "docs": "OK.", "type": "root.AccountJointOwners", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -5829,6 +5832,8 @@ service: docs: >- Return a collection of account joint owners. The user must have the `account.manageJointOwners` permission to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -5926,6 +5931,9 @@ docs: Account Joint Owners "docs": "OK. The response is a representation of the customer's account.", "type": "root.Account", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAccountBalances": { "auth": true, @@ -5987,6 +5995,9 @@ The response may be incomplete. Given a `Retry-After` response header, the clien "docs": "OK. The response contains the balances for all the accounts in the `?accounts=` query parameter.", "type": "root.AccountBalances", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAccounts": { "auth": true, @@ -6091,6 +6102,9 @@ The response may be incomplete. Given a `Retry-After` response header, the clien "docs": "OK. A page from the full list of the customer's accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.Accounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listEligibleAchAccounts": { "auth": true, @@ -6137,6 +6151,9 @@ Optionally, an agent can access a business customer's ACH accounts when acting o "docs": "OK. A page from the full list of the customer's ACH-eligible accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.Accounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6176,6 +6193,8 @@ service: Return a paginated list of the customer's accounts, consisting of internal accounts at this financial institution and accounts at other financial institutions, if any. + source: + openapi: ../openapi.yml display-name: List Accounts request: name: AccountsListAccountsRequest @@ -6276,6 +6295,8 @@ service: method: GET auth: true docs: Return details of the customer's internal account. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -6334,6 +6355,8 @@ service: the client can retry the operation after a short delay, requesting only the accounts which are incomplete; see the 202 Accepted response for details. + source: + openapi: ../openapi.yml display-name: List Account Balances request: name: AccountsListAccountBalancesRequest @@ -6392,6 +6415,8 @@ service: Optionally, an agent can access a business customer's ACH accounts when acting on behalf of that business customer via the optional `customerId` query parameter. + source: + openapi: ../openapi.yml display-name: List Eligible ACH Accounts request: name: AccountsListEligibleAchAccountsRequest @@ -6538,6 +6563,9 @@ Cutoff times are very slowly changing data. This is a _conditional operation_ wh "docs": "OK.", "type": "root.CutoffTimes", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransferDateRestrictions": { "auth": true, @@ -6700,6 +6728,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.TransferDateRestrictions", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTransferSchedule": { "auth": true, @@ -6793,6 +6824,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.TransferSchedules", }, + "source": { + "openapi": "../openapi.yml", + }, }, "lookUpInstitutionByLocator": { "auth": true, @@ -6876,6 +6910,9 @@ This information provides hints to clients, allowing bank customers to select tr "docs": "OK.", "type": "root.InstitutionLookupResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6902,6 +6939,8 @@ service: code](https://www.swift.com/standards/data-standards/bic-business-identifier-code). Optionally, include a list of intermediary institutions that may be necessary to complete international wire transfers. + source: + openapi: ../openapi.yml display-name: Look up institution by routing number, IBAN, or SWIFT/BIC code request: name: InstitutionsLookUpInstitutionByLocatorRequest @@ -6972,6 +7011,8 @@ service: method: GET auth: true docs: Return a transfer schedule list for this institution. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -7058,6 +7099,8 @@ service: `getCutoffTimes` response and the `ETag` returned from a previous call to this operation, this operation returns a 304 Not Modified when called again if the cutoff times have not changed. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -7125,6 +7168,8 @@ service: restricted dates but the financial institution may shift the date when funds are drafted to account for holidays, closures, or to adjust based on the risk level of the funding account. + source: + openapi: ../openapi.yml path-parameters: institutionId: type: root.InstitutionId @@ -7326,6 +7371,9 @@ The authenticated user must have the `account.allows.manageJointOwners` permissi "docs": "OK.", "type": "root.JointOwnerInvitation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7352,6 +7400,8 @@ service: The authenticated user must have the `account.allows.manageJointOwners` permission to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -7447,6 +7497,9 @@ service: "docs": "OK.", "type": "root.OverdraftProtection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listEligibleOverdraftAccounts": { "auth": true, @@ -7516,6 +7569,9 @@ To obtain available balances for these accounts, use [`listAccountBalances`](#op "docs": "OK. A page from the full list of the customer's eligible overdraft accounts. This list contains only accounts that the customer is entitled to access. While the `nextPage_url` property is present in the response, the client can fetch the next page of accounts by performing a `GET` on that URL.", "type": "root.EligibleOverdraftAccounts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchOverdraftAccounts": { "auth": true, @@ -7572,6 +7628,9 @@ The user must have the `allows.manageOverdraftAccounts` permission on the accoun "docs": "OK.", "type": "root.OverdraftProtection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7603,6 +7662,8 @@ service: To obtain available balances for these accounts, use [`listAccountBalances`](#op-listAccountBalances). + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -7662,6 +7723,8 @@ service: docs: >- Return the JSON representation of this account's overdraft protection settings. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -7698,6 +7761,8 @@ service: The user must have the `allows.manageOverdraftAccounts` permission on the account to use this operation. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -7793,6 +7858,9 @@ This is a _conditional operation_ when the `If-None-Match` header is used. If th "docs": "OK.", "type": "root.TransactionCategories", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7819,6 +7887,8 @@ service: used. If the client has a `transactionCategories` response and the `ETag` returned from a previous call, this operation returns a 304 Not Modified if called again when the categories collection has not changed. + source: + openapi: ../openapi.yml display-name: Return a collection of transaction categories request: name: TransactionCategoriesListTransactionCategoriesRequest @@ -8024,6 +8094,9 @@ The default response lists only recent transactions. Normally, this is transacti "docs": "OK.", "type": "root.Transactions", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8058,6 +8131,8 @@ service: The default response lists only recent transactions. Normally, this is transactions for the most recent 30 days, although for high-volume accounts, it may be a shorter period. + source: + openapi: ../openapi.yml path-parameters: accountId: type: root.ResourceId @@ -8367,6 +8442,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "Created.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTransfer": { "auth": true, @@ -8394,6 +8472,9 @@ Note: This operation requires an identity challenge if the financial institution "type": "root.ResourceId", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransfer": { "auth": true, @@ -8458,6 +8539,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTransfers": { "auth": true, @@ -8583,6 +8667,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfers", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchTransfer": { "auth": true, @@ -8685,6 +8772,9 @@ Note: This operation requires an identity challenge if the financial institution "docs": "OK.", "type": "root.Transfer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8708,6 +8798,8 @@ service: collection of transfers. The [nextPage_url](https://dx.apiture.com/docs/api-documentation/concepts/links) in the response is a pagination link. + source: + openapi: ../openapi.yml display-name: Return a collection of transfers request: name: TransfersListTransfersRequest @@ -8847,6 +8939,8 @@ service: Note: This operation requires an identity challenge if the financial institution requires the user to proove their identity for some types of transfers. See the "Challenges API". + source: + openapi: ../openapi.yml display-name: Create a new transfer request: name: NewTransfer @@ -8927,6 +9021,8 @@ service: method: GET auth: true docs: Return the JSON representation of this transfer resource. + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId @@ -8978,6 +9074,8 @@ service: docs: >- Delete this transfer resource and any resources that are owned by it. Only transfers that have not been processed may be deleted. + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId @@ -9005,6 +9103,8 @@ service: Note: This operation requires an identity challenge if the financial institution requires the user to prove their identity for some types of transfers. See the "Challenges API". + source: + openapi: ../openapi.yml path-parameters: transferId: type: root.ResourceId diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/application-json.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/application-json.json index 4c032b3a31f..e2c70ce1468 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/application-json.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/application-json.json @@ -29,6 +29,9 @@ "docs": "Success", "type": "Data", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getVndFernUserJsonVersion1": { "auth": false, @@ -50,6 +53,9 @@ "docs": "Success", "type": "Data", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -77,6 +83,8 @@ path: /vnd.fern.user+json;version=1 method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: Data @@ -89,6 +97,8 @@ path: /application-json method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: Data diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/aries.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/aries.json index 062838d1380..ab8027fac96 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/aries.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/aries.json @@ -77,6 +77,9 @@ "docs": "", "type": "TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6906,6 +6909,8 @@ path: /transactions/{tran_id}/endorse method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -11360,6 +11365,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch_menu_by_conn_id": { "auth": true, @@ -11404,6 +11412,9 @@ types: "docs": "", "type": "root.ActionMenuFetchResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "perform_action_by_conn_id": { "auth": true, @@ -11458,6 +11469,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "request_menu_by_conn_id": { "auth": true, @@ -11488,6 +11502,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_menu_to_conn_id": { "auth": true, @@ -11539,6 +11556,9 @@ types: "docs": "", "type": "root.ActionMenuModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11556,6 +11576,8 @@ service: path: /action-menu/{conn_id}/close method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11574,6 +11596,8 @@ service: path: /action-menu/{conn_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11602,6 +11626,8 @@ service: path: /action-menu/{conn_id}/perform method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11635,6 +11661,8 @@ service: path: /action-menu/{conn_id}/request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11653,6 +11681,8 @@ service: path: /action-menu/{conn_id}/send-menu method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11742,6 +11772,9 @@ docs: Menu interaction over connection "docs": "", "type": "root.BasicMessageModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11759,6 +11792,8 @@ service: path: /connections/{conn_id}/send-message method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -11866,6 +11901,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "accept_connection_request": { "auth": true, @@ -11924,6 +11962,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_connection_invitation": { "auth": true, @@ -12032,6 +12073,9 @@ docs: Simple messaging "docs": "", "type": "root.InvitationResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_static_connection": { "auth": true, @@ -12149,6 +12193,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionStaticResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_connection_record": { "auth": true, @@ -12179,6 +12226,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_endpoint": { "auth": true, @@ -12210,6 +12260,9 @@ docs: Simple messaging "docs": "", "type": "root.EndpointsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_metadata": { "auth": true, @@ -12247,6 +12300,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionMetadata", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_connection_record": { "auth": true, @@ -12296,6 +12352,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_connections": { "auth": true, @@ -12403,6 +12462,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_connection_invitation": { "auth": true, @@ -12516,6 +12578,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_connection_metadata": { "auth": true, @@ -12561,6 +12626,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionMetadata", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_inbound_connection": { "auth": true, @@ -12596,6 +12664,9 @@ docs: Simple messaging "docs": "", "type": "root.ConnectionModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12711,6 +12782,8 @@ service: path: /connections method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query agent-to-agent connections request: name: GetMatchingConnectionsRequest @@ -12793,6 +12866,8 @@ service: path: /connections/create-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new connection invitation request: name: CreateInvitationRequest @@ -12870,6 +12945,8 @@ service: path: /connections/create-static method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new static connection request: name: ConnectionStaticRequest @@ -12954,6 +13031,8 @@ service: path: /connections/receive-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive a new connection invitation request: name: ReceiveInvitationRequest @@ -13037,6 +13116,8 @@ service: path: /connections/{conn_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13074,6 +13155,8 @@ service: path: /connections/{conn_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13092,6 +13175,8 @@ service: path: /connections/{conn_id}/accept-invitation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13141,6 +13226,8 @@ service: path: /connections/{conn_id}/accept-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13184,6 +13271,8 @@ service: path: /connections/{conn_id}/endpoints method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13203,6 +13292,8 @@ service: path: /connections/{conn_id}/establish-inbound/{ref_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13225,6 +13316,8 @@ service: path: /connections/{conn_id}/metadata method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13248,6 +13341,8 @@ service: path: /connections/{conn_id}/metadata method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -13341,6 +13436,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionsCreatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_definition": { "auth": true, @@ -13400,6 +13498,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_credential_definition": { "auth": true, @@ -13510,6 +13611,9 @@ docs: Connection management "docs": "", "type": "root.TxnOrCredentialDefinitionSendResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "write_credential_definition": { "auth": true, @@ -13569,6 +13673,9 @@ docs: Connection management "docs": "", "type": "root.CredentialDefinitionGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13586,6 +13693,8 @@ service: path: /credential-definitions method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a credential definition to the ledger request: name: CredentialDefinitionSendRequest @@ -13658,6 +13767,8 @@ service: path: /credential-definitions/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching credential definitions that agent originated request: name: GetCreatedCredDefsRequest @@ -13693,6 +13804,8 @@ service: path: /credential-definitions/{cred_def_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -13735,6 +13848,8 @@ service: path: /credential-definitions/{cred_def_id}/write_record method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -13820,6 +13935,9 @@ docs: Credential definition operations "docs": "", "type": "root.HolderModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_w3c_credential": { "auth": true, @@ -13850,6 +13968,9 @@ docs: Credential definition operations "docs": "", "type": "root.HolderModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_mime_types": { "auth": true, @@ -13882,6 +14003,9 @@ docs: Credential definition operations "docs": "", "type": "root.AttributeMimeTypesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_record": { "auth": true, @@ -13919,6 +14043,9 @@ docs: Credential definition operations "docs": "", "type": "root.IndyCredInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credentials": { "auth": true, @@ -13978,6 +14105,9 @@ docs: Credential definition operations "docs": "", "type": "root.CredInfoList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_revocation_status": { "auth": true, @@ -14021,6 +14151,9 @@ docs: Credential definition operations "docs": "", "type": "root.CredRevokedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_w3c_credential": { "auth": true, @@ -14076,6 +14209,9 @@ docs: Credential definition operations "docs": "", "type": "root.VCRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_w3c_credentials": { "auth": true, @@ -14238,6 +14374,9 @@ docs: Credential definition operations "docs": "", "type": "root.VCRecordList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14255,6 +14394,8 @@ service: path: /credential/mime-types/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14274,6 +14415,8 @@ service: path: /credential/revoked/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14301,6 +14444,8 @@ service: path: /credential/w3c/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14338,6 +14483,8 @@ service: path: /credential/w3c/{credential_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14356,6 +14503,8 @@ service: path: /credential/{credential_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14381,6 +14530,8 @@ service: path: /credential/{credential_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: credential_id: type: string @@ -14399,6 +14550,8 @@ service: path: /credentials method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch credentials from wallet request: name: GetCredentialsRequest @@ -14439,6 +14592,8 @@ service: path: /credentials/w3c method: POST auth: true + source: + openapi: ../openapi.yml display-name: Fetch W3C credentials from wallet request: name: W3CCredentialsListRequest @@ -14626,6 +14781,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "accept_didex_request": { "auth": true, @@ -14688,6 +14846,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_didex_request": { "auth": true, @@ -14760,6 +14921,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_didex_request": { "auth": true, @@ -14873,6 +15037,9 @@ docs: Holder credential management "docs": "", "type": "root.ConnRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14890,6 +15057,8 @@ service: path: /didexchange/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create and send a request against public DID's implicit invitation request: name: CreateDidexRequestRequest @@ -14944,6 +15113,8 @@ service: path: /didexchange/receive-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive request against public DID's implicit invitation request: name: DIDXRequest @@ -15028,6 +15199,8 @@ service: path: /didexchange/{conn_id}/accept-invitation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -15074,6 +15247,8 @@ service: path: /didexchange/{conn_id}/accept-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -15210,6 +15385,9 @@ docs: Connection management via DID exchange "docs": "", "type": "root.V10DiscoveryExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_v10_features_query": { "auth": true, @@ -15269,6 +15447,9 @@ docs: Connection management via DID exchange "docs": "", "type": "root.V10DiscoveryRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15286,6 +15467,8 @@ service: path: /discover-features/query method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query supported features request: name: GetV10FeaturesQueryRequest @@ -15328,6 +15511,8 @@ service: path: /discover-features/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Discover Features records request: name: GetV10FeatureRecordsRequest @@ -15466,6 +15651,9 @@ docs: Feature discovery "docs": "", "type": "root.V20DiscoveryExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_v20_features_queries": { "auth": true, @@ -15531,6 +15719,9 @@ docs: Feature discovery "docs": "", "type": "root.V20DiscoveryExchangeResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15548,6 +15739,8 @@ service: path: /discover-features-2.0/queries method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query supported features request: name: GetV20FeaturesQueriesRequest @@ -15592,6 +15785,8 @@ service: path: /discover-features-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Discover Features v2.0 records request: name: GetV20FeatureRecordsRequest @@ -15713,6 +15908,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_transaction_request": { "auth": true, @@ -15793,6 +15991,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_transaction_list": { "auth": true, @@ -15881,6 +16082,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_transaction_record": { "auth": true, @@ -15941,6 +16145,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_endorsed_transaction": { "auth": true, @@ -16001,6 +16208,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "refuse_transaction": { "auth": true, @@ -16061,6 +16271,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "resend_transaction_request": { "auth": true, @@ -16121,6 +16334,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_endorser_info_for_conn_id": { "auth": true, @@ -16168,6 +16384,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.EndorserInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_endorser_role_for_conn_id": { "auth": true, @@ -16208,6 +16427,9 @@ docs: Feature discovery v2 "docs": "", "type": "root.TransactionJobs", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16237,6 +16459,8 @@ service: path: /transaction/{tran_id}/resend method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16277,6 +16501,8 @@ service: path: /transactions method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query transactions response: docs: '' @@ -16335,6 +16561,8 @@ service: path: /transactions/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: For author to send a transaction request request: name: Date @@ -16388,6 +16616,8 @@ service: path: /transactions/{conn_id}/set-endorser-info method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16418,6 +16648,8 @@ service: path: /transactions/{conn_id}/set-endorser-role method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16443,6 +16675,8 @@ service: path: /transactions/{tran_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16483,6 +16717,8 @@ service: path: /transactions/{tran_id}/cancel method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16523,6 +16759,8 @@ service: path: /transactions/{tran_id}/refuse method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16563,6 +16801,8 @@ service: path: /transactions/{tran_id}/write method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: tran_id: type: string @@ -16670,6 +16910,9 @@ types: "docs": "", "type": "root.IntroModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16687,6 +16930,8 @@ service: path: /connections/{conn_id}/start-introduction method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -16984,6 +17229,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_free_credential_offer": { "auth": true, @@ -17195,6 +17443,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_cred_ex_record": { "auth": true, @@ -17225,6 +17476,9 @@ docs: Introduction of known parties "docs": "", "type": "root.IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_cred_ex_record": { "auth": true, @@ -17384,6 +17638,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_cred_ex_records": { "auth": true, @@ -17683,6 +17940,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchangeListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "issue_credential_to_holder": { "auth": true, @@ -17859,6 +18119,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_cred_ex_problem": { "auth": true, @@ -17903,6 +18166,9 @@ docs: Introduction of known parties "docs": "", "type": "root.IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_offer": { "auth": true, @@ -18076,6 +18342,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_request": { "auth": true, @@ -18235,6 +18504,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential": { "auth": true, @@ -18501,6 +18773,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_offer": { "auth": true, @@ -18723,6 +18998,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_proposal": { "auth": true, @@ -18989,6 +19267,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store_received_credential": { "auth": true, @@ -19164,6 +19445,9 @@ docs: Introduction of known parties "docs": "", "type": "root.V10CredentialExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19210,6 +19494,8 @@ service: path: /issue-credential/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Create a credential record without sending (generally for use with Out-Of-Band) @@ -19394,6 +19680,8 @@ service: path: /issue-credential/create-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a credential offer, independent of any proposal or connection request: name: V10CredentialConnFreeOfferRequest @@ -19551,6 +19839,8 @@ service: path: /issue-credential/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all credential exchange records request: name: GetMatchingCredExRecordsRequest @@ -19772,6 +20062,8 @@ service: path: /issue-credential/records/{cred_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -19891,6 +20183,8 @@ service: path: /issue-credential/records/{cred_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -19909,6 +20203,8 @@ service: path: /issue-credential/records/{cred_ex_id}/issue method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20038,6 +20334,8 @@ service: path: /issue-credential/records/{cred_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20064,6 +20362,8 @@ service: path: /issue-credential/records/{cred_ex_id}/send-offer method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20191,6 +20491,8 @@ service: path: /issue-credential/records/{cred_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20310,6 +20612,8 @@ service: path: /issue-credential/records/{cred_ex_id}/store method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -20438,6 +20742,8 @@ service: path: /issue-credential/send method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential, automating entire flow request: name: V10CredentialProposalRequestMand @@ -20626,6 +20932,8 @@ service: path: /issue-credential/send-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential offer, independent of any proposal request: name: V10CredentialFreeOfferRequest @@ -20789,6 +21097,8 @@ service: path: /issue-credential/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send issuer a credential proposal request: name: V10CredentialProposalRequestOpt @@ -21268,6 +21578,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_free_credential_offer": { "auth": true, @@ -21529,6 +21842,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_cred_ex_record": { "auth": true, @@ -21559,6 +21875,9 @@ types: "docs": "", "type": "root.V20IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_cred_ex_record": { "auth": true, @@ -21797,6 +22116,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_cred_ex_records-v2": { "auth": true, @@ -22254,6 +22576,9 @@ types: "docs": "", "type": "root.V20CredExRecordListResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "issue_credential_to_holder": { "auth": true, @@ -22509,6 +22834,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_cred_ex_problem": { "auth": true, @@ -22553,6 +22881,9 @@ types: "docs": "", "type": "root.V20IssueCredentialModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_offer": { "auth": true, @@ -22804,6 +23135,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_credential_request": { "auth": true, @@ -23039,6 +23373,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential": { "auth": true, @@ -23277,6 +23614,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_offer": { "auth": true, @@ -23549,6 +23889,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_proposal": { "auth": true, @@ -23787,6 +24130,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_credential_request": { "auth": true, @@ -24068,6 +24414,9 @@ types: "docs": "", "type": "root.V20CredExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store_received_credential": { "auth": true, @@ -24322,6 +24671,9 @@ types: "docs": "", "type": "root.V20CredExRecordDetail", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24395,6 +24747,8 @@ service: path: /issue-credential-2.0/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Create a credential record without sending (generally for use with Out-Of-Band) @@ -24576,6 +24930,8 @@ service: path: /issue-credential-2.0/create-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a credential offer, independent of any proposal or connection request: name: V20CredOfferConnFreeRequest @@ -24761,6 +25117,8 @@ service: path: /issue-credential-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all credential exchange records request: name: GetMatchingCredExRecordsV2Request @@ -25086,6 +25444,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25256,6 +25616,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25274,6 +25636,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/issue method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25454,6 +25818,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25480,6 +25846,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/send-offer method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25651,6 +26019,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25813,6 +26183,8 @@ service: path: /issue-credential-2.0/records/{cred_ex_id}/store method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: cred_ex_id: type: string @@ -25992,6 +26364,8 @@ service: path: /issue-credential-2.0/send method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential, automating entire flow request: body: @@ -26158,6 +26532,8 @@ service: path: /issue-credential-2.0/send-offer method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send holder a credential offer, independent of any proposal request: name: V20CredOfferRequest @@ -26349,6 +26725,8 @@ service: path: /issue-credential-2.0/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send issuer a credential proposal request: body: @@ -26515,6 +26893,8 @@ service: path: /issue-credential-2.0/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: >- Send issuer a credential request not bound to an existing thread. Indy credentials cannot start at a request @@ -26802,6 +27182,9 @@ types: "docs": "", "type": "root.SignResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify": { "auth": true, @@ -26848,6 +27231,9 @@ types: "docs": "", "type": "root.VerifyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26865,6 +27251,8 @@ service: path: /jsonld/sign method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sign a JSON-LD structure and return it request: name: SignRequest @@ -26894,6 +27282,8 @@ service: path: /jsonld/verify method: POST auth: true + source: + openapi: ../openapi.yml display-name: Verify a JSON-LD structure. request: name: VerifyRequest @@ -26980,6 +27370,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_nym_role": { "auth": true, @@ -27013,6 +27406,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetNymRoleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_verkey": { "auth": true, @@ -27046,6 +27442,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetDIDVerkeyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_multiple_ledger_config": { "auth": true, @@ -27082,6 +27481,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerConfigList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_published_did_endpoint": { "auth": true, @@ -27119,6 +27521,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.GetDIDEndpointResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_taa": { "auth": true, @@ -27158,6 +27563,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.TAAResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_write_ledger": { "auth": true, @@ -27179,6 +27587,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.WriteLedgerRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register_nym": { "auth": true, @@ -27266,6 +27677,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.TxnOrRegisterLedgerNymResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "rotate_public_did_keypair": { "auth": true, @@ -27287,6 +27701,9 @@ docs: Sign and verify json-ld data "docs": "", "type": "root.LedgerModulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -27345,6 +27762,8 @@ service: path: /ledger/did-endpoint method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the endpoint for a DID from the ledger. request: name: GetPublishedDidEndpointRequest @@ -27368,6 +27787,8 @@ service: path: /ledger/did-verkey method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the verkey for a DID from the ledger. request: name: GetDidVerkeyRequest @@ -27388,6 +27809,8 @@ service: path: /ledger/get-nym-role method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get the role from the NYM registration of a public DID. request: name: GetDidNymRoleRequest @@ -27408,6 +27831,8 @@ service: path: /ledger/multiple/config method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the multiple ledger configuration currently in use response: docs: '' @@ -27430,6 +27855,8 @@ service: path: /ledger/multiple/get-write-ledger method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current write ledger response: docs: '' @@ -27442,6 +27869,8 @@ service: path: /ledger/register-nym method: POST auth: true + source: + openapi: ../openapi.yml display-name: Send a NYM registration to the ledger. request: name: RegisterNymRequest @@ -27502,6 +27931,8 @@ service: path: /ledger/rotate-public-did-keypair method: PATCH auth: true + source: + openapi: ../openapi.yml display-name: Rotate key pair for public DID. response: docs: '' @@ -27514,6 +27945,8 @@ service: path: /ledger/taa method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current transaction author agreement, if any response: docs: '' @@ -27539,6 +27972,8 @@ service: path: /ledger/taa/accept method: POST auth: true + source: + openapi: ../openapi.yml display-name: Accept the transaction author agreement request: name: TAAAccept @@ -27618,6 +28053,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_mediation_record": { "auth": true, @@ -27666,6 +28104,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deny_mediation_request": { "auth": true, @@ -27733,6 +28174,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationDeny", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_default_mediator": { "auth": true, @@ -27772,6 +28216,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_keylists": { "auth": true, @@ -27827,6 +28274,9 @@ docs: Interaction with ledger "docs": "", "type": "root.Keylist", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_mediation_records": { "auth": true, @@ -27914,6 +28364,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_mediation_record": { "auth": true, @@ -27962,6 +28415,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "grant_mediation_request": { "auth": true, @@ -27998,6 +28454,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationGrant", }, + "source": { + "openapi": "../openapi.yml", + }, }, "request_mediation_for_connection": { "auth": true, @@ -28074,6 +28533,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_keylist_query_to_mediator": { "auth": true, @@ -28133,6 +28595,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistQuery", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_keylist_update_to_mediator": { "auth": true, @@ -28199,6 +28664,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistUpdate", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_default_mediator": { "auth": true, @@ -28247,6 +28715,9 @@ docs: Interaction with ledger "docs": "", "type": "root.MediationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_keylist_for_conn_id": { "auth": true, @@ -28311,6 +28782,9 @@ docs: Interaction with ledger "docs": "", "type": "root.KeylistUpdate", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28357,6 +28831,8 @@ service: path: /mediation/default-mediator method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get default mediator response: docs: '' @@ -28384,6 +28860,8 @@ service: path: /mediation/default-mediator method: DELETE auth: true + source: + openapi: ../openapi.yml display-name: Clear default mediator response: docs: '' @@ -28411,6 +28889,8 @@ service: path: /mediation/keylists method: GET auth: true + source: + openapi: ../openapi.yml display-name: Retrieve keylists by connection or role request: name: GetKeylistsRequest @@ -28450,6 +28930,8 @@ service: path: /mediation/keylists/{mediation_id}/send-keylist-query method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28488,6 +28970,8 @@ service: path: /mediation/keylists/{mediation_id}/send-keylist-update method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28525,6 +29009,8 @@ service: path: /mediation/request/{conn_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -28576,6 +29062,8 @@ service: path: /mediation/requests method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query mediation requests, returns list of all mediation records request: name: GetMatchingMediationRecordsRequest @@ -28637,6 +29125,8 @@ service: path: /mediation/requests/{mediation_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28670,6 +29160,8 @@ service: path: /mediation/requests/{mediation_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28703,6 +29195,8 @@ service: path: /mediation/requests/{mediation_id}/deny method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28746,6 +29240,8 @@ service: path: /mediation/requests/{mediation_id}/grant method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28769,6 +29265,8 @@ service: path: /mediation/update-keylist/{conn_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -28805,6 +29303,8 @@ service: path: /mediation/{mediation_id}/default-mediator method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: mediation_id: type: string @@ -28957,6 +29457,9 @@ types: "docs": "", "type": "root.CreateWalletResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_wallet": { "auth": true, @@ -29004,6 +29507,9 @@ types: "docs": "", "type": "root.MultitenantModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_auth_token": { "auth": true, @@ -29048,6 +29554,9 @@ types: "docs": "", "type": "root.CreateWalletTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_wallets": { "auth": true, @@ -29093,6 +29602,9 @@ types: "docs": "", "type": "root.WalletList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_wallet_record": { "auth": true, @@ -29127,6 +29639,9 @@ types: "docs": "", "type": "root.WalletRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_wallet": { "auth": true, @@ -29196,6 +29711,9 @@ types: "docs": "", "type": "root.WalletRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29300,6 +29818,8 @@ service: path: /multitenancy/wallet method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a subwallet request: name: CreateWalletRequest @@ -29372,6 +29892,8 @@ service: path: /multitenancy/wallet/{wallet_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29394,6 +29916,8 @@ service: path: /multitenancy/wallet/{wallet_id} method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29450,6 +29974,8 @@ service: path: /multitenancy/wallet/{wallet_id}/remove method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: type: string @@ -29480,6 +30006,8 @@ service: path: /multitenancy/wallet/{wallet_id}/token method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: wallet_id: string display-name: Get auth token for a subwallet @@ -29509,6 +30037,8 @@ service: path: /multitenancy/wallets method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query subwallets request: name: GetMatchingWalletsRequest @@ -29734,6 +30264,9 @@ docs: Multitenant wallet management "docs": "", "type": "root.InvitationRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "receive_oob_invitation": { "auth": true, @@ -29942,6 +30475,9 @@ docs: Multitenant wallet management "docs": "", "type": "root.OobRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29974,6 +30510,8 @@ service: path: /out-of-band/create-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new connection invitation request: name: InvitationCreateRequest @@ -30108,6 +30646,8 @@ service: path: /out-of-band/receive-invitation method: POST auth: true + source: + openapi: ../openapi.yml display-name: Receive a new connection invitation request: body: @@ -30498,6 +31038,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_pres_ex_record": { "auth": true, @@ -30528,6 +31071,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_pres_ex_records": { "auth": true, @@ -30807,6 +31353,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchangeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_credentials": { "auth": true, @@ -30877,6 +31426,9 @@ docs: Out-of-band connections "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_record": { "auth": true, @@ -31046,6 +31598,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_pres_ex_problem": { "auth": true, @@ -31090,6 +31645,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_presentation_request": { "auth": true, @@ -31327,6 +31885,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_presentation_proposal": { "auth": true, @@ -31561,6 +32122,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation": { "auth": true, @@ -31754,6 +32318,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation_request": { "auth": true, @@ -31945,6 +32512,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify_received_presentation": { "auth": true, @@ -32114,6 +32684,9 @@ docs: Out-of-band connections "docs": "", "type": "root.V10PresentationExchange", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -32158,6 +32731,8 @@ service: path: /present-proof/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a presentation request not bound to any proposal or connection request: name: V10PresentationCreateRequestRequest @@ -32306,6 +32881,8 @@ service: path: /present-proof/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all present-proof exchange records request: name: GetMatchingPresExRecordsRequest @@ -32497,6 +33074,8 @@ service: path: /present-proof/records/{pres_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32611,6 +33190,8 @@ service: path: /present-proof/records/{pres_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32629,6 +33210,8 @@ service: path: /present-proof/records/{pres_ex_id}/credentials method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32676,6 +33259,8 @@ service: path: /present-proof/records/{pres_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32702,6 +33287,8 @@ service: path: /present-proof/records/{pres_ex_id}/send-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32832,6 +33419,8 @@ service: path: /present-proof/records/{pres_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -32960,6 +33549,8 @@ service: path: /present-proof/records/{pres_ex_id}/verify-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -33074,6 +33665,8 @@ service: path: /present-proof/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a presentation proposal request: name: V10PresentationProposalRequest @@ -33233,6 +33826,8 @@ service: path: /present-proof/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a free presentation request not bound to any proposal request: name: V10PresentationSendRequestRequest @@ -33622,6 +34217,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_pres_ex_record": { "auth": true, @@ -33652,6 +34250,9 @@ types: "docs": "", "type": "root.V20PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_matching_pres_ex_records-v2": { "auth": true, @@ -33919,6 +34520,9 @@ types: "docs": "", "type": "root.V20PresExRecordList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_credentials-v2": { "auth": true, @@ -33989,6 +34593,9 @@ types: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_pres_ex_record": { "auth": true, @@ -34132,6 +34739,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "report_pres_ex_problem": { "auth": true, @@ -34176,6 +34786,9 @@ types: "docs": "", "type": "root.V20PresentProofModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_free_presentation_request": { "auth": true, @@ -34389,6 +35002,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_presentation_proposal": { "auth": true, @@ -34603,6 +35219,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation": { "auth": true, @@ -34787,6 +35406,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "send_proof_presentation_request": { "auth": true, @@ -34952,6 +35574,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "verify_received_presentation": { "auth": true, @@ -35095,6 +35720,9 @@ types: "docs": "", "type": "root.V20PresExRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -35156,6 +35784,8 @@ service: path: /present-proof-2.0/create-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a presentation request not bound to any proposal or connection request: name: V20PresCreateRequestRequest @@ -35294,6 +35924,8 @@ service: path: /present-proof-2.0/records method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch all present-proof exchange records request: name: GetMatchingPresExRecordsV2Request @@ -35485,6 +36117,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35588,6 +36222,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35606,6 +36242,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/credentials method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35653,6 +36291,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/problem-report method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35679,6 +36319,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/send-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35808,6 +36450,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/send-request method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -35925,6 +36569,8 @@ service: path: /present-proof-2.0/records/{pres_ex_id}/verify-presentation method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: pres_ex_id: type: string @@ -36028,6 +36674,8 @@ service: path: /present-proof-2.0/send-proposal method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a presentation proposal request: name: V20PresProposalRequest @@ -36175,6 +36823,8 @@ service: path: /present-proof-2.0/send-request method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a free presentation request not bound to any proposal request: name: V20PresSendRequestRequest @@ -36388,6 +37038,9 @@ types: "docs": "", "type": "root.ResolutionResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36405,6 +37058,8 @@ service: path: /resolver/resolve/{did} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: did: type: string @@ -36485,6 +37140,9 @@ docs: did resolver interface. "docs": "", "type": "root.PublishRevocations", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_revocation_registry": { "auth": true, @@ -36578,6 +37236,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete_tails_file": { "auth": true, @@ -36612,6 +37273,9 @@ docs: did resolver interface. "docs": "", "type": "root.TailsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "download_tails_file": { "auth": true, @@ -36630,6 +37294,9 @@ docs: did resolver interface. "docs": "tails file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "download_tails_file_sparse": { "auth": true, @@ -36648,6 +37315,9 @@ docs: did resolver interface. "docs": "tails file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_active_registry_for_cred_def_id": { "auth": true, @@ -36715,6 +37385,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_created_registries": { "auth": true, @@ -36752,6 +37425,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegsCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_credential_revocation_record": { "auth": true, @@ -36800,6 +37476,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevRecordResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_issued_credential_details": { "auth": true, @@ -36853,6 +37532,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevRecordDetailsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_issued_credentials_count": { "auth": true, @@ -36883,6 +37565,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegIssuedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_published_credential_details": { "auth": true, @@ -36911,6 +37596,9 @@ docs: did resolver interface. "docs": "", "type": "root.CredRevIndyRecordsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_revocation_registry": { "auth": true, @@ -36978,6 +37666,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocation_registry_definition": { "auth": true, @@ -37083,6 +37774,9 @@ docs: did resolver interface. "docs": "", "type": "root.TxnOrRevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocation_registry_entry": { "auth": true, @@ -37163,6 +37857,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_revocations": { "auth": true, @@ -37238,6 +37935,9 @@ docs: did resolver interface. "docs": "", "type": "root.TxnOrPublishRevocationsResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "revoke_issued_credential": { "auth": true, @@ -37340,6 +38040,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevocationModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_revocation_registry_state": { "auth": true, @@ -37419,6 +38122,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_revocation_entry_state": { "auth": true, @@ -37459,6 +38165,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegWalletUpdatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update_revocation_registry": { "auth": true, @@ -37543,6 +38252,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevRegResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upload_tails_file": { "auth": true, @@ -37573,6 +38285,9 @@ docs: did resolver interface. "docs": "", "type": "root.RevocationModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37626,6 +38341,8 @@ service: path: /revocation/active-registry/{cred_def_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: cred_def_id: type: string @@ -37677,6 +38394,8 @@ service: path: /revocation/clear-pending-revocations method: POST auth: true + source: + openapi: ../openapi.yml display-name: Clear pending revocations request: name: ClearPendingRevocationsRequest @@ -37708,6 +38427,8 @@ service: path: /revocation/create-registry method: POST auth: true + source: + openapi: ../openapi.yml display-name: Creates a new revocation registry request: name: RevRegCreateRequest @@ -37773,6 +38494,8 @@ service: path: /revocation/credential-record method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get credential revocation status request: name: GetCredentialRevocationRecordRequest @@ -37807,6 +38530,8 @@ service: path: /revocation/publish-revocations method: POST auth: true + source: + openapi: ../openapi.yml display-name: Publish pending revocations to ledger request: body: @@ -37856,6 +38581,8 @@ service: path: /revocation/registries/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching revocation registries that current agent created request: name: GetCreatedRegistriesRequest @@ -37881,6 +38608,8 @@ service: path: /revocation/registry/delete-tails-file method: DELETE auth: true + source: + openapi: ../openapi.yml display-name: Delete the tail files request: name: DeleteTailsFileRequest @@ -37902,6 +38631,8 @@ service: path: /revocation/registry/{rev_reg_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -37953,6 +38684,8 @@ service: path: /revocation/registry/{rev_reg_id} method: PATCH auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38015,6 +38748,8 @@ service: path: /revocation/registry/{rev_reg_id}/definition method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38092,6 +38827,8 @@ service: path: /revocation/registry/{rev_reg_id}/entry method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38152,6 +38889,8 @@ service: path: /revocation/registry/{rev_reg_id}/fix-revocation-entry-state method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38177,6 +38916,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38195,6 +38936,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued/details method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38233,6 +38976,8 @@ service: path: /revocation/registry/{rev_reg_id}/issued/indy_recs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38250,6 +38995,8 @@ service: path: /revocation/registry/{rev_reg_id}/set-state method: PATCH auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38309,6 +39056,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file-less-deets method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38321,6 +39070,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38333,6 +39084,8 @@ service: path: /revocation/registry/{rev_reg_id}/tails-file method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: rev_reg_id: type: string @@ -38351,6 +39104,8 @@ service: path: /revocation/revoke method: POST auth: true + source: + openapi: ../openapi.yml display-name: Revoke an issued credential request: name: RevokeRequest @@ -38509,6 +39264,9 @@ types: "docs": "", "type": "root.SchemasCreatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_schema": { "auth": true, @@ -38549,6 +39307,9 @@ types: "docs": "", "type": "root.SchemaGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish_schema": { "auth": true, @@ -38661,6 +39422,9 @@ types: "docs": "", "type": "root.TxnOrSchemaSendResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "write_schema_record_to_wallet": { "auth": true, @@ -38701,6 +39465,9 @@ types: "docs": "", "type": "root.SchemaGetResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38718,6 +39485,8 @@ service: path: /schemas method: POST auth: true + source: + openapi: ../openapi.yml display-name: Sends a schema to the ledger request: name: SchemaSendRequest @@ -38793,6 +39562,8 @@ service: path: /schemas/created method: GET auth: true + source: + openapi: ../openapi.yml display-name: Search for matching schema that agent originated request: name: GetMatchingCreatedSchemasRequest @@ -38822,6 +39593,8 @@ service: path: /schemas/{schema_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: schema_id: type: string @@ -38848,6 +39621,8 @@ service: path: /schemas/{schema_id}/write_record method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: schema_id: type: string @@ -38904,6 +39679,9 @@ docs: Schema operations "docs": "", "type": "root.AdminConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_liveliness": { "auth": true, @@ -38925,6 +39703,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatusLiveliness", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_loaded_plugins": { "auth": true, @@ -38949,6 +39730,9 @@ docs: Schema operations "docs": "", "type": "root.AdminModules", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_readiness": { "auth": true, @@ -38970,6 +39754,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatusReadiness", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_status": { "auth": true, @@ -38992,6 +39779,9 @@ docs: Schema operations "docs": "", "type": "root.AdminStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, "reset_statistics": { "auth": true, @@ -39013,6 +39803,9 @@ docs: Schema operations "docs": "", "type": "root.AdminReset", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shutdown_server": { "auth": true, @@ -39034,6 +39827,9 @@ docs: Schema operations "docs": "", "type": "root.AdminShutdown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39051,6 +39847,8 @@ service: path: /plugins method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the list of loaded plugins response: docs: '' @@ -39065,6 +39863,8 @@ service: path: /shutdown method: GET auth: true + source: + openapi: ../openapi.yml display-name: Shut down server response: docs: '' @@ -39077,6 +39877,8 @@ service: path: /status method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the server status response: docs: '' @@ -39090,6 +39892,8 @@ service: path: /status/config method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the server configuration response: docs: '' @@ -39101,6 +39905,8 @@ service: path: /status/live method: GET auth: true + source: + openapi: ../openapi.yml display-name: Liveliness check response: docs: '' @@ -39113,6 +39919,8 @@ service: path: /status/ready method: GET auth: true + source: + openapi: ../openapi.yml display-name: Readiness check response: docs: '' @@ -39125,6 +39933,8 @@ service: path: /status/reset method: POST auth: true + source: + openapi: ../openapi.yml display-name: Reset statistics response: docs: '' @@ -39195,6 +40005,9 @@ service: "docs": "", "type": "root.PingRequestResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39212,6 +40025,8 @@ service: path: /connections/{conn_id}/send-ping method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: conn_id: type: string @@ -39305,6 +40120,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_did_endpoint": { "auth": true, @@ -39339,6 +40157,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDEndpoint", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_dids": { "auth": true, @@ -39400,6 +40221,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_public_did": { "auth": true, @@ -39427,6 +40251,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "rotate_keypair": { "auth": true, @@ -39460,6 +40287,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.WalletModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_did_endpoint": { "auth": true, @@ -39529,6 +40359,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.WalletModuleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "set_public_did": { "auth": true, @@ -39580,6 +40413,9 @@ docs: Trust-ping over connection "docs": "", "type": "root.DIDResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39668,6 +40504,8 @@ service: path: /wallet/did method: GET auth: true + source: + openapi: ../openapi.yml display-name: List wallet DIDs request: name: GetDidsRequest @@ -39710,6 +40548,8 @@ service: path: /wallet/did/create method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a local DID request: name: DIDCreate @@ -39747,6 +40587,8 @@ service: path: /wallet/did/local/rotate-keypair method: PATCH auth: true + source: + openapi: ../openapi.yml display-name: Rotate keypair for a DID not posted to the ledger request: name: RotateKeypairRequest @@ -39767,6 +40609,8 @@ service: path: /wallet/did/public method: GET auth: true + source: + openapi: ../openapi.yml display-name: Fetch the current public DID response: docs: '' @@ -39784,6 +40628,8 @@ service: path: /wallet/did/public method: POST auth: true + source: + openapi: ../openapi.yml display-name: Assign the current public DID request: name: SetPublicDidRequest @@ -39818,6 +40664,8 @@ service: path: /wallet/get-did-endpoint method: GET auth: true + source: + openapi: ../openapi.yml display-name: Query DID endpoint in wallet request: name: GetDidEndpointRequest @@ -39839,6 +40687,8 @@ service: path: /wallet/set-did-endpoint method: POST auth: true + source: + openapi: ../openapi.yml display-name: Update endpoint in wallet and on ledger if posted to it request: name: DIDEndpointWithType diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/assembly.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/assembly.json index b2155043c9c..c7cd8e6210a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/assembly.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/assembly.json @@ -3077,6 +3077,9 @@ types: "docs": "File uploaded successfully", "type": "root.UploadedFile", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3097,6 +3100,8 @@ service: docs: >- Upload your audio or video file directly to the AssemblyAI API if it isn't accessible via a URL already. + source: + openapi: ../openapi.yml display-name: Upload an audio or video file which can be transcribed. request: body: bytes @@ -3167,6 +3172,9 @@ service: "docs": "LeMUR action items response", "type": "root.LemurActionItemsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purgeRequestData": { "auth": true, @@ -3210,6 +3218,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR request data deleted.", "type": "root.PurgeLemurRequestDataResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "questionAnswer": { "auth": true, @@ -3273,6 +3284,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR question & answer response", "type": "root.LemurQuestionAnswerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "summary": { "auth": true, @@ -3327,6 +3341,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR summary response", "type": "root.LemurSummaryResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task": { "auth": true, @@ -3381,6 +3398,9 @@ The LLM response data, as well as any context provided in the original request w "docs": "LeMUR task response", "type": "root.LemurTaskResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3403,6 +3423,8 @@ service: impactful sentences. You can give the model context to obtain more targeted results while outputting the results in a variety of formats described in human language. + source: + openapi: ../openapi.yml display-name: Generate a custom summary from one or more transcripts. request: name: LemurSummaryParameters @@ -3445,6 +3467,8 @@ service: answers you find useful, such as judging whether a caller is likely to become a customer or whether all items on a meeting's agenda were covered. + source: + openapi: ../openapi.yml display-name: Create answers to one or more questions about one or more transcripts. request: name: LemurQuestionAnswerParameters @@ -3484,6 +3508,8 @@ service: method: POST auth: true docs: Use LeMUR to generate a list of Action Items from a transcript + source: + openapi: ../openapi.yml display-name: Extract action items from one or more meeting transcripts. request: body: root.LemurActionItemsParameters @@ -3512,6 +3538,8 @@ service: method: POST auth: true docs: Use LeMUR to ask anything with Custom Task + source: + openapi: ../openapi.yml display-name: >- Ask LeMUR to use one or more transcripts with a Custom Task to handle your specialized task. @@ -3556,6 +3584,8 @@ service: The LLM response data, as well as any context provided in the original request will be removed. + source: + openapi: ../openapi.yml path-parameters: request_id: type: string @@ -3653,6 +3683,9 @@ docs: LeMUR related operations "docs": "Temporary authentication token generated.", "type": "root.RealtimeTemporaryTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3671,6 +3704,8 @@ service: method: POST auth: true docs: Create a temporary authentication token for real-time transcription + source: + openapi: ../openapi.yml display-name: Create a temporary authentication token for real-time transcription request: name: CreateRealtimeTemporaryTokenParameters @@ -3935,6 +3970,9 @@ docs: Real-time transcription "docs": "Transcript created and queued for processing.", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -4143,6 +4181,9 @@ docs: Real-time transcription "docs": "The deleted transcript response.", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -4351,6 +4392,9 @@ docs: Real-time transcription "docs": "The transcript resource", "type": "root.Transcript", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getParagraphs": { "auth": true, @@ -4408,6 +4452,9 @@ docs: Real-time transcription "docs": "Exported paragraphs", "type": "root.ParagraphsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRedactedAudio": { "auth": true, @@ -4448,6 +4495,9 @@ docs: Real-time transcription "docs": "The redacted audio object containing the status and URL to the redacted audio.", "type": "root.RedactedAudioResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSentences": { "auth": true, @@ -4505,6 +4555,9 @@ docs: Real-time transcription "docs": "Exported sentences", "type": "root.SentencesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSubtitles": { "auth": true, @@ -4545,6 +4598,9 @@ docs: Real-time transcription "docs": "The exported captions as text", "type": "text", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -4620,6 +4676,9 @@ docs: Real-time transcription "docs": "A list of transcripts filtered by `limit` and `status`", "type": "root.TranscriptList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "wordSearch": { "auth": true, @@ -4657,6 +4716,9 @@ docs: Real-time transcription "docs": "Word search response", "type": "root.WordSearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4717,6 +4779,8 @@ service: method: GET auth: true docs: Retrieve a list of transcripts you have created. + source: + openapi: ../openapi.yml display-name: List transcripts request: name: TranscriptListRequest @@ -4773,6 +4837,8 @@ service: docs: >- Create a transcript from an audio or video file that is accessible via a URL. + source: + openapi: ../openapi.yml display-name: Create a transcript from an audio file request: name: CreateTranscriptParameters @@ -4929,6 +4995,8 @@ service: docs: >- Get the transcript resource. The transcript is ready when the "status" is "completed". + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5077,6 +5145,8 @@ service: method: DELETE auth: true docs: Delete the transcript + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5227,6 +5297,8 @@ service: docs: >- Export your transcript in SRT or VTT format, to be plugged into a video player for subtitles and closed captions. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5260,6 +5332,8 @@ service: Get the transcript split by sentences. The API will attempt to semantically segment the transcript into sentences to create more reader-friendly transcripts. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5302,6 +5376,8 @@ service: Get the transcript split by paragraphs. The API will attempt to semantically segment your transcript into paragraphs to create more reader-friendly transcripts. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5344,6 +5420,8 @@ service: Search through the transcript for a specific set of keywords. You can search for individual words, numbers, or phrases containing up to five words or numbers. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string @@ -5374,6 +5452,8 @@ service: docs: >- Retrieves the redacted audio object containing the status and URL to the redacted audio. + source: + openapi: ../openapi.yml path-parameters: transcript_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/availability.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/availability.json index f1f10309cf8..66577281dc5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/availability.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/availability.json @@ -94,6 +94,9 @@ "docs": "OK", "type": "WholeDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlineBetaBody": { "auth": false, @@ -127,6 +130,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlineObjectDeprecation": { "auth": false, @@ -160,6 +166,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessInlinePropertyDeprecation": { "auth": false, @@ -196,6 +205,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postSuccessRef": { "auth": false, @@ -232,6 +244,9 @@ "docs": "OK", "type": "NotDeprecatedSettings", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -270,6 +285,8 @@ /collection/{id}/{active_id}/{deprecated_ref_id}/{x-fern-availability_path_param} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -333,6 +350,8 @@ path: /success-ref method: POST auth: false + source: + openapi: ../openapi.yml request: name: Settings body: @@ -354,6 +373,8 @@ path: /success-inline-property-deprecation method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlinePropertyDeprecationRequest body: @@ -375,6 +396,8 @@ path: /success-inline-object-deprecation method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlineObjectDeprecationRequest body: @@ -394,6 +417,8 @@ path: /success-inline-beta-body method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostSuccessInlineBetaBodyRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/axle.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/axle.json index 3de1f09c7dc..5ee10880330 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/axle.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/axle.json @@ -439,6 +439,9 @@ "docs": "", "type": "GetAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -608,6 +611,8 @@ service: high-level account information (e.g., name) and any children objects (e.g., Policies) associated with the Account. Please note that this method will NOT refresh the Account object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -705,6 +710,9 @@ service: "docs": "", "type": "GetCarrierResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "GetCarriers": { "auth": false, @@ -738,6 +746,9 @@ service: "docs": "", "type": "GetCarriersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -793,6 +804,8 @@ service: docs: >- The Get Carrier method returns a Carrier object that include additional details about an Axle-supported insurance carrier. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -829,6 +842,8 @@ service: method: GET auth: false docs: The Get Carriers method returns an array of Carrier objects. + source: + openapi: ../openapi.yml display-name: Get Carriers response: docs: '' @@ -912,6 +927,9 @@ service: "docs": "", "type": "StartIgnitionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -981,6 +999,8 @@ service: docs: >- Start an Ignition session. Returns the ignitionUri to direct the user to authenticate. + source: + openapi: ../openapi.yml display-name: Start Ignition request: name: StartIgnitionRequest @@ -1137,6 +1157,9 @@ service: "docs": "", "type": "GetPolicyResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1179,6 +1202,8 @@ service: policy information (e.g., policy number) and any children objects (e.g., Coverages) associated with the Policy. Please note that this method will NOT refresh the Policy object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1316,6 +1341,9 @@ Auth codes are ephemeral and expire after 10 minutes, while accessTokens do not "docs": "", "type": "ExchangeTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1402,6 +1430,8 @@ service: Auth codes are ephemeral and expire after 10 minutes, while accessTokens do not expire. + source: + openapi: ../openapi.yml display-name: Exchange Token request: name: ExchangeTokenRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/belvo.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/belvo.json index 3b5d9d147b3..1e6fd44cbe2 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/belvo.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/belvo.json @@ -21236,6 +21236,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailAccount": { "auth": true, @@ -22199,6 +22202,9 @@ client.connect() "docs": "Ok", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListAccounts": { "auth": true, @@ -22555,6 +22561,9 @@ client.connect() "docs": "Ok", "type": "root.AccountsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchAccounts": { "auth": true, @@ -23577,6 +23586,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list>", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveAccounts": { "auth": true, @@ -24554,6 +24566,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list>", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24574,6 +24589,8 @@ service: docs: >- Get a paginated list of all existing accounts in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all accounts request: name: ListAccountsRequest @@ -24951,6 +24968,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml display-name: Retrieve accounts for a link request: body: root.StandardRequest @@ -25752,6 +25771,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml display-name: Complete an accounts request request: body: root.PatchBody @@ -26597,6 +26618,8 @@ service: > - `limit_date`: replaced by the `payment_day ` field. > - `no_interest_payment` > - `payment_due_day` + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -27366,6 +27389,8 @@ service: docs: >- Delete a specific account and all associated transactions, as well as owners, from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -27779,6 +27804,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailBalance": { "auth": true, @@ -27992,6 +28020,9 @@ client.connect() "docs": "Ok", "type": "root.Balance", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListBalances": { "auth": true, @@ -28291,6 +28322,9 @@ client.connect() "docs": "Ok", "type": "root.BalancesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchBalances": { "auth": true, @@ -28492,6 +28526,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveBalances": { "auth": true, @@ -28753,6 +28790,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28773,6 +28813,8 @@ service: docs: >- Get a paginated list of all existing balances in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all balances request: name: ListBalancesRequest @@ -29057,6 +29099,8 @@ service: docs: >- Retrieve balances from one or more accounts for a specific link within a specified date range. + source: + openapi: ../openapi.yml display-name: Retrieve balances for a link request: name: BalancesRequest @@ -29280,6 +29324,8 @@ service: docs: >- Used to resume a Balance retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a balances request request: body: root.PatchBody @@ -29452,6 +29498,8 @@ service: method: GET auth: true docs: Get the details of a specific balance. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -29630,6 +29678,8 @@ service: method: DELETE auth: true docs: Delete a specific balance from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -30138,6 +30188,9 @@ docs: >- "docs": "OK (Created)", "type": "CreateBankAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailBankAccount": { "auth": true, @@ -30246,6 +30299,9 @@ docs: >- "docs": "OK", "type": "DetailBankAccountResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListBankAccount": { "auth": true, @@ -30475,6 +30531,9 @@ docs: >- "docs": "OK", "type": "root.BankAccountPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -30539,6 +30598,8 @@ service: method: GET auth: true docs: List all bank accounts associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all bank accounts request: name: ListBankAccountRequest @@ -30721,6 +30782,8 @@ service: method: POST auth: true docs: Create a new bank account from which to send or request funds. + source: + openapi: ../openapi.yml display-name: Create a new bank account request: body: CreateBankAccountRequest @@ -30924,6 +30987,8 @@ service: method: GET auth: true docs: Get the details about a specific bank account + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -31158,6 +31223,9 @@ types: "docs": "Ok", "type": "root.Categorization", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -31188,6 +31256,8 @@ service: transactions per request. + source: + openapi: ../openapi.yml display-name: Categorize transactions request: name: CategorizationRequest @@ -31478,6 +31548,9 @@ docs: >- "docs": "OK (Created)", "type": "CreateCustomerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailCustomer": { "auth": true, @@ -31565,6 +31638,9 @@ docs: >- "docs": "OK", "type": "DetailCustomerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListCustomers": { "auth": true, @@ -31783,6 +31859,9 @@ docs: >- "docs": "OK", "type": "root.CustomerPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -31851,6 +31930,8 @@ service: method: GET auth: true docs: List all customers associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all customers request: name: ListCustomersRequest @@ -32038,6 +32119,8 @@ service: method: POST auth: true docs: Create a new customer to send or request funds. + source: + openapi: ../openapi.yml display-name: Create a new customer request: body: CreateCustomerRequest @@ -32183,6 +32266,8 @@ service: method: GET auth: true docs: Get the details about a specific customer + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -32323,6 +32408,9 @@ At the moment, the employment records resource is available for: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailEmploymentRecord": { "auth": true, @@ -32426,6 +32514,9 @@ At the moment, the employment records resource is available for: "docs": "Ok", "type": "root.EmploymentRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListEmploymentRecords": { "auth": true, @@ -32511,6 +32602,9 @@ At the moment, the employment records resource is available for: "docs": "Ok", "type": "root.EmploymentRecordsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveEmploymentRecordDetails": { "auth": true, @@ -32632,6 +32726,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -32652,6 +32749,8 @@ service: docs: >- Get a paginated list of all existing employment records in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all employment records request: name: ListEmploymentRecordsRequest @@ -32725,6 +32824,8 @@ service: auth: true docs: | Retrieve employment record details for an individual. + source: + openapi: ../openapi.yml display-name: Retrieve employment record details request: name: EmploymentRecordRequest @@ -32823,6 +32924,8 @@ service: method: GET auth: true docs: Get the details of a specific employment record. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -32906,6 +33009,8 @@ service: method: DELETE auth: true docs: Delete a specific employment record from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -33093,6 +33198,9 @@ docs: "# Employment Records\n\nOur employment records\_resource lets you get a c "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -33123,6 +33231,8 @@ service: transactions per request. + source: + openapi: ../openapi.yml display-name: Verify incomes request: name: EyodIncomeVerificationRequest @@ -33432,6 +33542,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailIncome": { "auth": true, @@ -33577,6 +33690,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListIncomes": { "auth": true, @@ -33758,6 +33874,9 @@ client.connect() "docs": "Ok", "type": "root.IncomesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchIncomes": { "auth": true, @@ -33920,6 +34039,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveIncome": { "auth": true, @@ -34147,6 +34269,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.Income", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -34167,6 +34292,8 @@ service: docs: >- Get a paginated list of all incomes in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all incomes request: name: ListIncomesRequest @@ -34336,6 +34463,8 @@ service: specific link. You can receive insights for a period of up to 365 days, depending on the transaction history available for each [bank](https://developers.belvo.com/docs/institution). + source: + openapi: ../openapi.yml display-name: Retrieve incomes for a link request: name: IncomesRequest @@ -34540,6 +34669,8 @@ service: docs: >- Used to resume an Income retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an incomes request request: body: root.PatchBody @@ -34681,6 +34812,8 @@ service: method: GET auth: true docs: Get the details of a specific income. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -34803,6 +34936,8 @@ service: method: DELETE auth: true docs: Delete a specific income from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -35174,6 +35309,9 @@ client.connect() "docs": "Ok", "type": "root.Institution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListInstitutions": { "auth": true, @@ -35399,6 +35537,9 @@ client.connect() "docs": "Ok", "type": "root.InstitutionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -35419,6 +35560,8 @@ service: docs: >- Get a paginated list of all the institutions currently supported by Belvo. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all institutions request: name: ListInstitutionsRequest @@ -35624,6 +35767,8 @@ service: method: GET auth: true docs: Get the details of a specific institution. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -35932,6 +36077,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPortfolio": { "auth": true, @@ -36096,6 +36244,9 @@ client.connect() "docs": "Ok", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPortfolio": { "auth": true, @@ -36266,6 +36417,9 @@ client.connect() "docs": "Ok", "type": "root.InvestmentsPortfoliosPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchPortfolio": { "auth": true, @@ -36437,6 +36591,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrievePortfolio": { "auth": true, @@ -36601,6 +36758,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "root.InvestmentsPortfolio", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36622,6 +36782,8 @@ service: Get a paginated list of all the existing portfolios (and their instruments) in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all portfolios request: name: ListPortfolioRequest @@ -36775,6 +36937,8 @@ service: method: POST auth: true docs: Retrieve all portfolios for an existing link. + source: + openapi: ../openapi.yml display-name: Retrieve portfolios for a link request: body: root.StandardRequest @@ -36913,6 +37077,8 @@ service: docs: >- Used to resume a portfolio retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a portfolios request request: body: root.PatchBodyWithoutSaveData @@ -37056,6 +37222,8 @@ service: method: GET auth: true docs: Get the details of a specific portfolio. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -37197,6 +37365,8 @@ service: docs: >- Delete a specific investment portfolio and all associated instruments, transactions, and owners from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -37546,6 +37716,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailInvoice": { "auth": true, @@ -38518,6 +38691,9 @@ client.connect() "docs": "Ok", "type": "DetailInvoiceResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListInvoices": { "auth": true, @@ -39762,6 +39938,9 @@ client.connect() "docs": "Ok", "type": "root.InvoicesResponsePaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchInvoices": { "auth": true, @@ -39993,6 +40172,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveInvoices": { "auth": true, @@ -41110,6 +41292,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -41180,6 +41365,8 @@ service: docs: >- Get a paginated list of all existing invoices in your Belvo account. By default, we return 100 results per page. + source: + openapi: ../openapi.yml display-name: List all invoices request: name: ListInvoicesRequest @@ -42290,6 +42477,8 @@ service: margin-right: 25px"> Info: You can ask for up to **one** year (365 days) of invoices per request. If you need invoices for more than one year, just make another request. + source: + openapi: ../openapi.yml display-name: Retrieve invoices for a link request: name: InvoicesRequest @@ -43240,6 +43429,8 @@ service: docs: >- Used to resume an Invoice retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an invoices request request: body: root.PatchBody @@ -43443,6 +43634,8 @@ service: method: GET auth: true docs: Get the details of a specific invoice. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44262,6 +44455,8 @@ service: method: DELETE auth: true docs: Delete a specific invoice from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44595,6 +44790,9 @@ For single links, you have to perform POST calls to an institution **every time* "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DestroyLink": { "auth": true, @@ -44702,6 +44900,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailLink": { "auth": true, @@ -44835,6 +45036,9 @@ client.connect() "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListLinks": { "auth": true, @@ -45075,6 +45279,9 @@ client.connect() "docs": "Ok", "type": "root.PaginatedResponseLink", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchLinks": { "auth": true, @@ -45224,6 +45431,9 @@ client.connect() "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RegisterLink": { "auth": true, @@ -45518,6 +45728,9 @@ For a list of standards codes, see the table below. "docs": "Created", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateLink": { "auth": true, @@ -45746,6 +45959,9 @@ Belvo supports a base64 encoded `private_key`. If the `private_key` parameter is "docs": "Ok", "type": "root.Link", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45766,6 +45982,8 @@ service: docs: >- Get a paginated list of all the existing links in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all links request: name: ListLinksRequest @@ -46011,6 +46229,8 @@ service: status updates. + source: + openapi: ../openapi.yml display-name: Register a new link request: name: LinksRequest @@ -46352,6 +46572,8 @@ service: docs: >- Used to resume a Link register session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a links request request: body: root.PatchBodyWithoutSaveData @@ -46483,6 +46705,8 @@ service: method: GET auth: true docs: Get the details of a specific link. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46607,6 +46831,8 @@ service: href="https://developers.belvo.com/docs/connect-widget" target="_blank">Connect Widget to handle updating invalid or token_required links. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46832,6 +47058,8 @@ service: > An important technical note for performing operations in batches is to take into consideration our rate-limiting: up to 80 requests every 30 seconds. If you exceed this limit, you run the risk of Belvo blocking your IP from making further requests. > > For more information, or if your IP address has been blocked, please contact our [support team](https://support.belvo.com/hc/en-us/requests/new). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46915,6 +47143,8 @@ service: ℹ️ **Note**: When you change a link from `single`` to `recurrent`, they will only be updated the next day at the scheduled interval. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -47197,6 +47427,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailOwner": { "auth": true, @@ -47338,6 +47571,9 @@ Cancun, COL 10447", "docs": "Ok", "type": "root.Owner", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListOwners": { "auth": true, @@ -47546,6 +47782,9 @@ Cancun, COL 10447", "docs": "Ok", "type": "root.OwnersPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchOwners": { "auth": true, @@ -47706,6 +47945,9 @@ Cancun, COL 10447", "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveOwners": { "auth": true, @@ -47857,6 +48099,9 @@ Cancun, COL 10447", "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -47877,6 +48122,8 @@ service: docs: >- Get a paginated list of all existing owners in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all owners request: name: ListOwnersRequest @@ -48072,6 +48319,8 @@ service: method: POST auth: true docs: Retrieve owner information from a specific link. + source: + openapi: ../openapi.yml display-name: Retrieve owners for a link request: body: root.StandardRequest @@ -48205,6 +48454,8 @@ service: docs: >- Used to resume an Owner retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete an owners request request: body: root.PatchBody @@ -48345,6 +48596,8 @@ service: method: GET auth: true docs: Get the details of a specific owner. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -48466,6 +48719,8 @@ service: method: DELETE auth: true docs: Delete a specific owner from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -48704,6 +48959,9 @@ docs: >- "docs": "OK", "type": "root.PaymentInstitution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentInstitutions": { "auth": true, @@ -48809,6 +49067,9 @@ docs: >- "docs": "OK", "type": "root.PaymentsInstitutionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -48827,6 +49088,8 @@ service: method: GET auth: true docs: List all available payment institutions. + source: + openapi: ../openapi.yml display-name: List all payment institutions request: name: ListPaymentInstitutionsRequest @@ -48912,6 +49175,8 @@ service: method: GET auth: true docs: Get the details about a specific payment institution + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -49171,6 +49436,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK (Created)", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPaymentIntent": { "auth": true, @@ -49304,6 +49572,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentIntents": { "auth": true, @@ -49512,6 +49783,9 @@ A payment intent captures all payment information (such as the amount to be char "docs": "OK", "type": "root.PaymentIntentPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchPaymentIntent": { "auth": true, @@ -49669,6 +49943,9 @@ During the payment intent flow, you need to fill in the payment intent with requ "docs": "OK (Created)", "type": "root.PaymentIntentPse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -49712,6 +49989,8 @@ service: method: GET auth: true docs: List all payment intents associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment intents request: name: ListPaymentIntentsRequest @@ -49882,6 +50161,8 @@ service: method: POST auth: true docs: Create a payment intent. + source: + openapi: ../openapi.yml display-name: Create a new payment intent request: name: CreatePaymentIntentPse @@ -50041,6 +50322,8 @@ service: method: GET auth: true docs: Get the details about a specific payment intent. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -50158,6 +50441,8 @@ service: intent, check our PSE payment initiation guides for 🇨🇴 Colombia. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -50454,6 +50739,9 @@ types: "docs": "OK (Created)", "type": "CreatePaymentlinkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailCreatePaymentlink": { "auth": true, @@ -50576,6 +50864,9 @@ types: "docs": "OK (Created)", "type": "DetailCreatePaymentlinkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentLinks": { "auth": true, @@ -50691,6 +50982,9 @@ types: "docs": "OK", "type": "root.PaymentLinkPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -50821,6 +51115,8 @@ service: docs: >- List all payment links associated with your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all payment links request: name: ListPaymentLinksRequest @@ -50926,6 +51222,8 @@ service: method: POST auth: true docs: Create a new payment link to start a hosted-widget payment. + source: + openapi: ../openapi.yml display-name: Create a payment link request: body: CreatePaymentlinkRequest @@ -51027,6 +51325,8 @@ service: method: GET auth: true docs: Get the details about a payment link. + source: + openapi: ../openapi.yml path-parameters: access_token: type: string @@ -51189,6 +51489,9 @@ You can use the Payment Transactions resource in order to get useful information "docs": "OK", "type": "root.PaymentTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentTransactions": { "auth": true, @@ -51354,6 +51657,9 @@ You can use the Payment Transactions resource in order to get useful information "docs": "OK", "type": "root.PaymentsTransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -51372,6 +51678,8 @@ service: method: GET auth: true docs: List all payment transactions associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment transactions request: name: ListPaymentTransactionsRequest @@ -51514,6 +51822,8 @@ service: method: GET auth: true docs: Get the details about a specific payment transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -51593,6 +51903,9 @@ docs: > "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailPaymentWebhooks": { "auth": true, @@ -51635,6 +51948,9 @@ docs: > "docs": "OK", "type": "root.PaymentWebhook", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListPaymentWebhooks": { "auth": true, @@ -51674,6 +51990,9 @@ docs: > "docs": "OK", "type": "root.PaymentsWebhooksPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RegisterPaymentWebhook": { "auth": true, @@ -51746,6 +52065,9 @@ docs: > "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -51764,6 +52086,8 @@ service: method: GET auth: true docs: List all payment webhooks associated with your Belvo account. + source: + openapi: ../openapi.yml display-name: List all payment webhooks response: docs: OK @@ -51791,6 +52115,8 @@ service: auth: true docs: | Register a new payments webhook for your Belvo account. + source: + openapi: ../openapi.yml display-name: Register a new payment webhook request: name: PaymentWebhookRequest @@ -51844,6 +52170,8 @@ service: method: GET auth: true docs: Get the details about a specific payment webhook. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -51873,6 +52201,8 @@ service: method: DELETE auth: true docs: Delete a specific payment webhook from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -51937,6 +52267,9 @@ docs: >+ "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailReceivableTransaction": { "auth": true, @@ -52015,6 +52348,9 @@ docs: >+ "docs": "Ok", "type": "root.ReceivablesTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListReceivableTransactions": { "auth": true, @@ -52182,6 +52518,9 @@ docs: >+ "docs": "Ok", "type": "root.ReceivablesTransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveReceivableTransactions": { "auth": true, @@ -52308,6 +52647,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.ReceivablesTransaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -52328,6 +52670,8 @@ service: docs: >- Get a paginated list of all the existing receivable transactions in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all receivable transactions request: name: ListReceivableTransactionsRequest @@ -52500,6 +52844,8 @@ service: method: POST auth: true docs: Retrieve all receivable transactions for an existing link. + source: + openapi: ../openapi.yml display-name: Retrieve receivable transactions for a link request: name: ReceivableTransactionRequest @@ -52605,6 +52951,8 @@ service: method: GET auth: true docs: Get the details of a specific receivable transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -52668,6 +53016,8 @@ service: method: DELETE auth: true docs: Delete a specific receivable transaction from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -52839,6 +53189,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailRecurringExpense": { "auth": true, @@ -53022,6 +53375,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListRecurringExpenses": { "auth": true, @@ -53224,6 +53580,9 @@ client.connect() "docs": "Ok", "type": "root.RecurringExpensesPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchRecurringExpenses": { "auth": true, @@ -53415,6 +53774,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveRecurringExpenses": { "auth": true, @@ -53651,6 +54013,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -53671,6 +54036,8 @@ service: docs: >- Get a paginated list of all recurring expenses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all recurring expenses request: name: ListRecurringExpensesRequest @@ -53860,6 +54227,8 @@ service: accounts from a specific link. You can receive insights for a period of up to 365 days, depending on the transaction history available for each [bank](https://developers.belvo.com/docs/institution). + source: + openapi: ../openapi.yml display-name: Retrieve recurring expenses for a link request: name: RecurringExpensesRequest @@ -54065,6 +54434,8 @@ service: docs: >- Used to resume an Recurring Expenses retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a recurring expenses request request: body: root.PatchBody @@ -54229,6 +54600,8 @@ service: method: GET auth: true docs: Get the details of a specific recurring expense. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54385,6 +54758,8 @@ service: method: DELETE auth: true docs: Delete a specific recurring expense from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -54684,6 +55059,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailRiskInsights": { "auth": true, @@ -54886,6 +55264,9 @@ client.connect() "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListRiskInsights": { "auth": true, @@ -55121,6 +55502,9 @@ client.connect() "docs": "Ok", "type": "root.RiskInsightsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchRiskInsights": { "auth": true, @@ -55340,6 +55724,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveRiskInsights": { "auth": true, @@ -55552,6 +55939,9 @@ client.connect() "docs": "Ok (when save_data=false)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -55572,6 +55962,8 @@ service: docs: >- Get a paginated list of all risk insight analyses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all risk insights request: name: ListRiskInsightsRequest @@ -55792,6 +56184,8 @@ service: If you need to know the currency of the account, just do a GET Details to the accounts endpoint (using the ID you receive from the accounts response). + source: + openapi: ../openapi.yml display-name: Retrieve risk insights for a link request: body: root.StandardRequest @@ -55979,6 +56373,8 @@ service: docs: >- Used to resume an Risk insights retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a risk insights request request: body: root.PatchBody @@ -56173,6 +56569,8 @@ service: method: GET auth: true docs: Get the details of a specific risk insight. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -56348,6 +56746,8 @@ service: method: DELETE auth: true docs: Delete a specific risk insight from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -56584,6 +56984,9 @@ For example: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListSecretKeys": { "auth": true, @@ -56621,6 +57024,9 @@ For example: "docs": "OK", "type": "root.SecretKeysPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -56644,6 +57050,8 @@ service: **Note**: We only return the ID of the secret keys. + source: + openapi: ../openapi.yml display-name: List all secret keys response: docs: OK @@ -56679,6 +57087,8 @@ service: POST https://api.belvo.com/payments/secret-keys/ Authorization: Basic username:password ``` + source: + openapi: ../openapi.yml display-name: Request API keys response: docs: Ok @@ -56905,6 +57315,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxComplianceStatus": { "auth": true, @@ -57035,6 +57448,9 @@ client.connect() "docs": "Ok", "type": "root.TaxComplianceStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxComplianceStatus": { "auth": true, @@ -57223,6 +57639,9 @@ client.connect() "docs": "Ok", "type": "root.TaxComplianceStatusPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxComplianceStatus": { "auth": true, @@ -57386,6 +57805,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "root.TaxComplianceStatus", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57406,6 +57828,8 @@ service: docs: >- Get a paginated list of all existing Tax compliance statuses in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax compliance statuses request: name: ListTaxComplianceStatusRequest @@ -57588,6 +58012,8 @@ service: docs: >- Retrieve the Tax compliance status information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax compliance statuses for a link request: name: TaxComplianceStatusRequest @@ -57730,6 +58156,8 @@ service: method: GET auth: true docs: Get the details of a specific Tax compliance status. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -57842,6 +58270,8 @@ service: method: DELETE auth: true docs: Delete a specific Tax compliance status from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -58135,6 +58565,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxDeclaration": { "auth": true, @@ -58331,6 +58764,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxDeclarationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxDeclarations": { "auth": true, @@ -58617,6 +59053,9 @@ client.connect() "docs": "Ok", "type": "ListTaxDeclarationsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxDeclarations": { "auth": true, @@ -58860,6 +59299,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -58952,6 +59394,8 @@ service: docs: >- Get a paginated list of all existing tax declarations in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax declarations request: name: ListTaxDeclarationsRequest @@ -59213,6 +59657,8 @@ service: method: POST auth: true docs: Retrieve tax declaration information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax declarations for a link request: name: TaxDeclarationsRequest @@ -59434,6 +59880,8 @@ service: method: GET auth: true docs: Get the details of a specific Tax declaration. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -59602,6 +60050,8 @@ service: method: DELETE auth: true docs: Delete a specific Tax declaration from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -59787,6 +60237,9 @@ client.tax_retentions.list(params: { "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxRetentions": { "auth": true, @@ -59865,6 +60318,9 @@ client.tax_retentions.list(params: { "docs": "Ok", "type": "root.TaxRetentions", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxRetentions": { "auth": true, @@ -59990,6 +60446,9 @@ client.tax_retentions.list(params: { "docs": "Ok", "type": "root.TaxRetentionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxRetentions": { "auth": true, @@ -60123,6 +60582,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60143,6 +60605,8 @@ service: docs: >- Get a paginated list of all existing tax retentions in your Belvo account. We return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax retentions request: name: ListTaxRetentionsRequest @@ -60267,6 +60731,8 @@ service: docs: >- Retrieve tax retention information from a specific link. The maximum number of tax retentions that can be returned for a period is 500. + source: + openapi: ../openapi.yml display-name: Retrieve tax retentions for a link request: name: TaxRetentionsRequest @@ -60380,6 +60846,8 @@ service: method: GET auth: true docs: Get the details of a specific tax retention. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -60446,6 +60914,8 @@ service: method: DELETE auth: true docs: Delete a specific tax retention from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -60735,6 +61205,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxReturn": { "auth": true, @@ -62151,6 +62624,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxReturnResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxReturns": { "auth": true, @@ -63414,6 +63890,9 @@ client.connect() "docs": "Ok", "type": "ListTaxReturnsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxReturns": { "auth": true, @@ -65183,6 +65662,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -65323,6 +65805,8 @@ service: Get a paginated list of all existing tax returns in your Belvo account. By default, we return up to 100 results per page. The results will include a mix of both monthly and yearly tax returns. + source: + openapi: ../openapi.yml display-name: List all tax returns request: name: ListTaxReturnsRequest @@ -66385,6 +66869,8 @@ service: method: POST auth: true docs: Retrieve tax return information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax returns for a link request: body: RetrieveTaxReturnsRequestBody @@ -67846,6 +68332,8 @@ service: method: GET auth: true docs: Get the details of a specific tax return. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -68937,6 +69425,8 @@ service: method: DELETE auth: true docs: Delete a specific tax return from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -69274,6 +69764,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTaxStatus": { "auth": true, @@ -69627,6 +70120,9 @@ client.connect() "docs": "Ok", "type": "DetailTaxStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTaxStatus": { "auth": true, @@ -70037,6 +70533,9 @@ client.connect() "docs": "Ok", "type": "root.TaxStatusPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTaxStatus": { "auth": true, @@ -70433,6 +70932,9 @@ When set to `false`, the data won't be persisted and we return a 200 OK response "docs": "Ok (when `save_data=false`)", "type": "RetrieveTaxStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -70487,6 +70989,8 @@ service: docs: >- Get a paginated list of all existing tax status in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all tax statuses request: name: ListTaxStatusRequest @@ -70848,6 +71352,8 @@ service: method: POST auth: true docs: Retrieve tax status information for a specific fiscal link. + source: + openapi: ../openapi.yml display-name: Retrieve tax statuses for a link request: name: TaxStatusRequest @@ -71186,6 +71692,8 @@ service: method: GET auth: true docs: Get the details of a specific tax status. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -71482,6 +71990,8 @@ service: method: DELETE auth: true docs: Delete a specific tax status from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -71830,6 +72340,9 @@ client.connect() "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "DetailTransaction": { "auth": true, @@ -72461,6 +72974,9 @@ client.connect() "docs": "Ok", "type": "root.Transaction", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListTransactions": { "auth": true, @@ -73341,6 +73857,9 @@ client.connect() "docs": "Ok", "type": "root.TransactionsPaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "PatchTransactions": { "auth": true, @@ -73938,6 +74457,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTransactions": { "auth": true, @@ -74553,6 +75075,9 @@ client.connect() "docs": "Ok (when `save_data=false`)", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveTransactions_async": { "auth": true, @@ -74711,6 +75236,9 @@ client.connect() "docs": "Accepted (when `X-Belvo-Request-Mode` is `async`)", "type": "root.AsynchronousAccepted202", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -74731,6 +75259,8 @@ service: docs: >- Get a paginated list of all existing transactions in your Belvo account. By default, we return up to 100 results per page. + source: + openapi: ../openapi.yml display-name: List all transactions request: name: ListTransactionsRequest @@ -75593,6 +76123,8 @@ service: you request transactions for the last year and we can only access the last six months, we will return the information corresponding to these six months of data. + source: + openapi: ../openapi.yml display-name: Retrieve transactions for a link request: body: root.TransactionsRequest @@ -76127,6 +76659,8 @@ service: you request transactions for the last year and we can only access the last six months, we will return the information corresponding to these six months of data. + source: + openapi: ../openapi.yml display-name: Retrieve transactions for a link request: body: root.TransactionsRequest @@ -76263,6 +76797,8 @@ service: docs: >- Used to resume a Transaction retrieve session that was paused because an MFA token was required by the institution. + source: + openapi: ../openapi.yml display-name: Complete a transactions request request: body: root.PatchBody @@ -76769,6 +77305,8 @@ service: method: GET auth: true docs: Get the details of a specific transaction. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -77295,6 +77833,8 @@ service: method: DELETE auth: true docs: Delete a specific transaction from your Belvo account. + source: + openapi: ../openapi.yml path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/buzzshot.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/buzzshot.json index 4400e7a5ee9..52ae34cb367 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/buzzshot.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/buzzshot.json @@ -632,6 +632,9 @@ "docs": "", "type": "ListAccountsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listGames": { "auth": false, @@ -706,6 +709,9 @@ "docs": "", "type": "ListGamesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listGroups": { "auth": false, @@ -789,6 +795,9 @@ "docs": "", "type": "ListGroupsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLocations": { "auth": false, @@ -827,6 +836,9 @@ "docs": "", "type": "ListLocationsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPhotos": { "auth": false, @@ -870,6 +882,9 @@ "docs": "", "type": "ListPhotosResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPlayers": { "auth": false, @@ -919,6 +934,9 @@ "docs": "", "type": "ListPlayersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveAccount": { "auth": false, @@ -950,6 +968,9 @@ "docs": "", "type": "root.Room", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveGame": { "auth": false, @@ -1033,6 +1054,9 @@ "docs": "", "type": "root.Game", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveGroup": { "auth": false, @@ -1130,6 +1154,9 @@ "docs": "", "type": "root.Group", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveLocation": { "auth": false, @@ -1161,6 +1188,9 @@ "docs": "", "type": "root.Room", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrievePhoto": { "auth": false, @@ -1202,6 +1232,9 @@ "docs": "", "type": "root.Photo", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrievePlayer": { "auth": false, @@ -1248,6 +1281,9 @@ "docs": "", "type": "root.Player", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1519,6 +1555,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listAccountsRequest query-parameters: @@ -1543,6 +1581,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1563,6 +1603,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listGamesRequest query-parameters: @@ -1612,6 +1654,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1670,6 +1714,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listGroupsRequest query-parameters: @@ -1721,6 +1767,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1787,6 +1835,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listPlayersRequest query-parameters: @@ -1819,6 +1869,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1850,6 +1902,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listLocationsRequest query-parameters: @@ -1874,6 +1928,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1894,6 +1950,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml request: name: listPhotosRequest query-parameters: @@ -1920,6 +1978,8 @@ service: method: GET auth: false docs: '' + source: + openapi: ../openapi.yml path-parameters: photo_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/deel.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/deel.json index 823cb078144..6c5d3cd9e35 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/deel.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/deel.json @@ -10635,6 +10635,9 @@ errors: "docs": "Successful operation.", "type": "root.PaymentBreakDownContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBillingInvoiceDownloadLink": { "audiences": [ @@ -10681,6 +10684,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceDownloadContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceDownloadLink": { "audiences": [ @@ -10727,6 +10733,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceDownloadContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceList": { "audiences": [ @@ -10799,6 +10808,9 @@ errors: "docs": "Successful operation.", "type": "root.InvoiceListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPaymentList": { "audiences": [ @@ -10879,6 +10891,9 @@ errors: "docs": "Successful operation.", "type": "root.PaymentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10897,6 +10912,8 @@ service: method: GET auth: true docs: Retrieve a list of paid invoices for your workforce. + source: + openapi: ../openapi.yml display-name: Retrieve invoices request: name: GetInvoiceListRequest @@ -10948,6 +10965,8 @@ service: method: GET auth: true docs: Get link to download the invoice PDF. + source: + openapi: ../openapi.yml path-parameters: invoice_id: type: long @@ -10980,6 +10999,8 @@ service: method: GET auth: true docs: Get a link to download the Deel billing invoice PDF. + source: + openapi: ../openapi.yml path-parameters: invoice_id: type: long @@ -11012,6 +11033,8 @@ service: method: GET auth: true docs: Retrieve a list of payments made to Deel. + source: + openapi: ../openapi.yml display-name: Retrieve payment reciepts request: name: GetPaymentListRequest @@ -11073,6 +11096,8 @@ service: docs: >- Get a full breakdown of a payment made to Deel. Breakdown will include individual invoices and Deel fee as line items. + source: + openapi: ../openapi.yml path-parameters: payment_id: string display-name: Retrieve a payment breakdown @@ -11186,6 +11211,9 @@ docs: End-points to retrieve paid invoices and reciepts. "docs": "Successful operation.", "type": "root.OutputToCreateFileRefContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11223,6 +11251,8 @@ service: docs: >- Upload file to Deel storage to use the file attachment feature for other endpoints. + source: + openapi: ../openapi.yml display-name: Upload file to Deel request: name: InputToCreateFileRef @@ -11310,6 +11340,9 @@ service: "docs": "Successful operation.", "type": "root.PeopleMeContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPeopleList": { "audiences": [ @@ -11412,6 +11445,9 @@ service: "docs": "Successful operation.", "type": "root.PeopleContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11429,6 +11465,8 @@ service: path: /people method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get people list request: name: GetPeopleListRequest @@ -11504,6 +11542,8 @@ service: path: /people/me method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get my current profile response: docs: Successful operation. @@ -11623,6 +11663,9 @@ service: "docs": "Successful operation.", "type": "root.PremiumResultAddedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "amendContractDetails": { "audiences": [ @@ -11681,6 +11724,9 @@ service: "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContract": { "audiences": [ @@ -11848,6 +11894,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractFixedRate": { "auth": true, @@ -12012,6 +12061,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerOngoingTimeBased", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractMilestoneBased": { "auth": true, @@ -12174,6 +12226,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPaygMilestones", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractTaskBased": { "auth": true, @@ -12336,6 +12391,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPaygTasks", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createContractTimeBased": { "auth": true, @@ -12500,6 +12558,9 @@ service: "docs": "Successful operation.", "type": "root.ContractContainerPayAsYouGoTimeBased", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractPreview": { "audiences": [ @@ -12542,6 +12603,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "removePremiumFromContract": { "audiences": [ @@ -12595,6 +12659,9 @@ service: "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "terminateContract": { "audiences": [ @@ -12654,6 +12721,9 @@ service: "docs": "Successful operation.", "type": "root.ContractTerminationResultContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12671,6 +12741,8 @@ service: path: /contracts/time-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (time-based) request: name: ContractToCreateContainerPayAsYouGoTimeBased @@ -12796,6 +12868,8 @@ service: path: /contracts/task-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (task-based) request: name: ContractToCreateContainerPaygTasks @@ -12919,6 +12993,8 @@ service: path: /contracts/milestone-based method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (milestone-based) request: name: ContractToCreateContainerPaygMilestones @@ -13042,6 +13118,8 @@ service: path: /contracts/fixed-rate method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create a new contract (fixed-rate) request: name: ContractToCreateContainerOngoingTimeBased @@ -13168,6 +13246,8 @@ service: method: POST auth: true docs: Create a new Deel contract. + source: + openapi: ../openapi.yml display-name: Create a new contract request: name: ContractToCreateContainer @@ -13299,6 +13379,8 @@ service: Retrieve an IC contract agreement content in HTML. If no template is specified, the default or currently assigned template will be used. This endpoint does not support EOR and Global Payroll contract types. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -13328,6 +13410,8 @@ service: method: POST auth: true docs: Amend payment details of a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -13366,6 +13450,8 @@ service: method: POST auth: true docs: Terminate an active contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -13407,6 +13493,8 @@ service: docs: >- Add additional protection against misclassification by upgrading to Deel Premium. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -13454,6 +13542,8 @@ service: method: DELETE auth: true docs: Remove Deel Premium from an existing contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -13560,6 +13650,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractDocumentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "archiveContract": { "audiences": [ @@ -13602,6 +13695,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachExternalId": { "audiences": [ @@ -13662,6 +13758,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "calculateFinalPayment": { "auth": true, @@ -13731,6 +13830,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.FinalPaymentCalculatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editContractDocument": { "audiences": [ @@ -13789,6 +13891,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractDocumentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAlternateEmailsByContractId": { "audiences": [ @@ -13832,6 +13937,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.AlternateEmailList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractById": { "audiences": [ @@ -13969,6 +14077,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractList": { "audiences": [ @@ -14084,6 +14195,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getContractTemplates": { "auth": true, @@ -14118,6 +14232,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ContractTemplateListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "inviteToSignContract": { "audiences": [ @@ -14179,6 +14296,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "postContractEstimate": { "audiences": [ @@ -14245,6 +14365,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.ResponseEstimateFirstPaymentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "signContract": { "audiences": [ @@ -14305,6 +14428,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "uninviteToSignContract": { "audiences": [ @@ -14349,6 +14475,9 @@ docs: The Contracts resource lets you create, amend and, retrieve Deel contracts "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14380,6 +14509,8 @@ service: method: GET auth: true docs: Retrieve a list of contracts. + source: + openapi: ../openapi.yml display-name: List of contracts request: name: GetContractListRequest @@ -14474,6 +14605,8 @@ service: method: GET auth: true docs: Retrieve a single contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14584,6 +14717,8 @@ service: Add an external Id to a Deel contract. You can use this to add a Deel contract's refernece Id in your platform. External Id can be passed as a query parameter in List contract endpoint to find this conract later. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14625,6 +14760,8 @@ service: docs: >- Attach document to a contract. You can only add one document at a time. If you need to attach more documents please attach a Zip file. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14664,6 +14801,8 @@ service: method: PUT auth: true docs: Overwrite the file currently attached to contract document. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14703,6 +14842,8 @@ service: method: GET auth: true docs: Returns an array of alternate email objects + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14731,6 +14872,8 @@ service: method: POST auth: true docs: Sign a contract as a client. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14770,6 +14913,8 @@ service: method: PATCH auth: true docs: Archive a terminated, cancelled or completed contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14798,6 +14943,8 @@ service: method: POST auth: true docs: Invite a worker to sign the contract. Worker will be notified via email. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14838,6 +14985,8 @@ service: method: DELETE auth: true docs: Remove invite in order to re-invite a worker to sign the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14870,6 +15019,8 @@ service: docs: >- Calculate the final payment due to the contractor when ending the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -14921,6 +15072,8 @@ service: docs: >- First payment is calculated from the number of working/calendar days between their start date and the start of the payment cycle. + source: + openapi: ../openapi.yml display-name: Calculate first payment amount request: name: EstimateFirstPaymentContainer @@ -14965,6 +15118,8 @@ service: method: GET auth: true docs: Retrieve a list of contract templates in your organization. + source: + openapi: ../openapi.yml display-name: Get contract templates response: docs: Successful operation. @@ -15095,6 +15250,9 @@ types: "docs": "Successful operation.", "type": "root.EorContractCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorCountryValidations": { "audiences": [ @@ -15187,6 +15345,9 @@ types: "docs": "Successful operation.", "type": "root.EorCountryValidationsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15207,6 +15368,8 @@ service: docs: >- Retrieve the hiring guide data for a country. This data can be used to create Employee of Record (EOR) contract quotes. + source: + openapi: ../openapi.yml path-parameters: country_code: type: root.CountryCode @@ -15276,6 +15439,8 @@ service: Create an Employee of Record (EOR) contract quote. The endpoints creates a contract quote request. Deel will process the information and get back with a quote for this contract. + source: + openapi: ../openapi.yml display-name: Create an EOR contract request: name: EorContractToCreateContainer @@ -15453,6 +15618,9 @@ docs: Employee of Record (EOR). "docs": "Hris direct employee object that was created or edited", "type": "root.HrisDirectEmployeeContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15470,6 +15638,8 @@ service: path: /hris/direct-employees method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new Hris direct employee request: body: root.HrisDirectEmployee @@ -15613,6 +15783,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createInvoiceAdjustmentReview": { "audiences": [ @@ -15673,6 +15846,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createInvoiceAdjustmentReviews": { "audiences": [ @@ -15727,6 +15903,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteInvoiceAdjustmentById": { "audiences": [ @@ -15780,6 +15959,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceAdjustments": { "audiences": [ @@ -15910,6 +16092,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getInvoiceAdjustmentsByContractId": { "audiences": [ @@ -16045,6 +16230,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateInvoiceAdjustmentById": { "audiences": [ @@ -16105,6 +16293,9 @@ docs: API end-points related to HRIS data. "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16123,6 +16314,8 @@ service: method: GET auth: true docs: Retrieve a list of invoice details for the given contract id. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -16238,6 +16431,8 @@ service: docs: >- Retrieve a list of invoice details. You can filter the list by providing additional paramters e.g. contract_id, contract_type etc. + source: + openapi: ../openapi.yml display-name: List of invoice details request: name: GetInvoiceAdjustmentsRequest @@ -16350,6 +16545,8 @@ service: docs: >- Create an invoice adjustment using this endpoint. For example, you can add a bonus, commission, VAT %, deduction etc. to an invoice. + source: + openapi: ../openapi.yml display-name: Create an invoice adjustment request: name: InvoiceAdjustmentToCreateContainer @@ -16390,6 +16587,8 @@ service: method: DELETE auth: true docs: Update an existing invoice adjustment. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -16429,6 +16628,8 @@ service: Update an existing invoice adjustment. It is not possible to update VAT adjustments, we recommend you to delete the existing VAT adjust and create a new one. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -16468,6 +16669,8 @@ service: method: POST auth: true docs: Review an invoice adjustment to approve or decline it. + source: + openapi: ../openapi.yml path-parameters: invoice_adjustment_id: type: double @@ -16507,6 +16710,8 @@ service: method: POST auth: true docs: Review multiple invoice adjustments to approve or decline a batch. + source: + openapi: ../openapi.yml display-name: Bulk review invoice adjustments request: name: InvoiceAdjustmentReviewsToCreateContainer @@ -16603,6 +16808,9 @@ docs: >- "docs": "Successful operation.", "type": "root.CountryListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getCurrencies": { "audiences": [ @@ -16641,6 +16849,9 @@ docs: >- "docs": "Successful operation.", "type": "root.CurrencyListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getJobTitleList": { "audiences": [ @@ -16695,6 +16906,9 @@ docs: >- "docs": "Successful operation.", "type": "root.JobTitleListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSeniorityList": { "audiences": [ @@ -16743,6 +16957,9 @@ docs: >- "docs": "Successful operation.", "type": "root.SeniorityListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimeoffTypeList": { "audiences": [ @@ -16780,6 +16997,9 @@ docs: >- "docs": "Successful operation.", "type": "root.TimeoffTypeListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16798,6 +17018,8 @@ service: method: GET auth: true docs: Retrieve a list of countries supported by Deel. + source: + openapi: ../openapi.yml display-name: Country list response: docs: Successful operation. @@ -16829,6 +17051,8 @@ service: method: GET auth: true docs: Retrieve the list of currencies used by Deel. + source: + openapi: ../openapi.yml display-name: Currency list response: docs: Successful operation. @@ -16854,6 +17078,8 @@ service: method: GET auth: true docs: Retrieve a list of pre-defined job titles in Deel platform. + source: + openapi: ../openapi.yml display-name: Job titles list request: name: GetJobTitleListRequest @@ -16894,6 +17120,8 @@ service: docs: >- Retrieve a list of pre-defined seniority level for roles in Deel platform. + source: + openapi: ../openapi.yml display-name: Seniority levels request: name: GetSeniorityListRequest @@ -16930,6 +17158,8 @@ service: docs: >- Retrieve a list of pre-defined time off types to register in Deel platform. + source: + openapi: ../openapi.yml display-name: Time-off types response: docs: Successful operation. @@ -17030,6 +17260,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createMilestoneReview": { "audiences": [ @@ -17095,6 +17328,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createMilestoneReviews": { "audiences": [ @@ -17158,6 +17394,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteMilestoneById": { "audiences": [ @@ -17207,6 +17446,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMilestonesByContract": { "audiences": [ @@ -17267,6 +17509,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.MilestoneListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMilestonesByContractAndId": { "audiences": [ @@ -17330,6 +17575,9 @@ docs: Helper end-points for choosing options for other operations "docs": "Successful operation.", "type": "root.MilestoneContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17348,6 +17596,8 @@ service: method: GET auth: true docs: Retrieve a list of milestones found for a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17390,6 +17640,8 @@ service: method: POST auth: true docs: Add a new milestone to contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17431,6 +17683,8 @@ service: method: GET auth: true docs: Retrieve a single milestone. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17477,6 +17731,8 @@ service: method: DELETE auth: true docs: Delete a single milestone from a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17511,6 +17767,8 @@ service: method: POST auth: true docs: Review a milestone to approve or decline submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17554,6 +17812,8 @@ service: method: POST auth: true docs: Review a batch of milestones to approve or reject submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17668,6 +17928,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOffCyclePaymentByContractAndId": { "audiences": [ @@ -17734,6 +17997,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.OffCyclePaymentContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOffCyclePaymentsByContract": { "audiences": [ @@ -17797,6 +18063,9 @@ docs: Helper end-points for managing milestones of Deel contracts "docs": "Successful operation.", "type": "root.OffCyclePaymentListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17815,6 +18084,8 @@ service: method: GET auth: true docs: Retrieve a list of off-cycle payments for the given contract id. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17862,6 +18133,8 @@ service: docs: >- Add a new invoice line-item for the purpose of off-cycle payment for a given contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -17902,6 +18175,8 @@ service: method: GET auth: true docs: Retrieve a single off-cycle payment. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -18033,6 +18308,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.AgreementListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getLegalEntityList": { "audiences": [ @@ -18073,6 +18351,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.LegalEntityListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getOrganizations": { "audiences": [ @@ -18111,6 +18392,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.OrganizationListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTeams": { "audiences": [ @@ -18149,6 +18433,9 @@ docs: End-points to manage off-cycle payments for a given contract "docs": "Successful operation.", "type": "root.TeamListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18167,6 +18454,8 @@ service: method: GET auth: true docs: Retrieve a list of legal entities in your account. + source: + openapi: ../openapi.yml display-name: List of legal entities response: docs: Successful operation. @@ -18196,6 +18485,8 @@ service: docs: >- Retrieve the current organization details. Organization is automatically detected from the auth token. + source: + openapi: ../openapi.yml display-name: Get current organization response: docs: Successful operation. @@ -18221,6 +18512,8 @@ service: method: GET auth: true docs: Retrieve a list of teams in your organization. + source: + openapi: ../openapi.yml display-name: Get team list response: docs: Successful operation. @@ -18246,6 +18539,8 @@ service: method: GET auth: true docs: This end-point returns a list of your agreements with Deel. + source: + openapi: ../openapi.yml display-name: Get agreements with Deel. request: name: GetAgreementsRequest @@ -18367,6 +18662,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTaskManyReview": { "audiences": [ @@ -18441,6 +18739,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTaskReviewById": { "audiences": [ @@ -18516,6 +18817,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteContractPgoTak": { "audiences": [ @@ -18574,6 +18878,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTasksByContract": { "audiences": [ @@ -18628,6 +18935,9 @@ docs: Helper end-points for additional information about your organizations "docs": "Successful operation.", "type": "root.TaskListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18646,6 +18956,8 @@ service: method: GET auth: true docs: Retrieve a list of tasks for a given contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -18683,6 +18995,8 @@ service: method: POST auth: true docs: Create a new task for the contractor. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -18723,6 +19037,8 @@ service: method: POST auth: true docs: Review multiple tasks to approve or decline the submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -18772,6 +19088,8 @@ service: method: POST auth: true docs: Review a single task to approve or decline the submitted work. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -18822,6 +19140,8 @@ service: method: DELETE auth: true docs: Delete task from the contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19004,6 +19324,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsItemContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteEorTimeOffs": { "audiences": [ @@ -19050,6 +19373,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editEorTimeOffs": { "audiences": [ @@ -19185,6 +19511,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsItemContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorClientTimeOffs": { "audiences": [ @@ -19280,6 +19609,9 @@ docs: End-points to manage tasks for a given contract "docs": "successful operation", "type": "root.EorClientTimeoffsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorEntitlements": { "audiences": [ @@ -19340,6 +19672,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorEntitlementsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEorTimeOffs": { "audiences": [ @@ -19436,6 +19771,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.EorTimeoffsContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "reviewTimeoff": { "audiences": [ @@ -19496,6 +19834,9 @@ docs: End-points to manage tasks for a given contract "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19514,6 +19855,8 @@ service: method: GET auth: true docs: Retrieve the list of time off requests by an employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19587,6 +19930,8 @@ service: method: POST auth: true docs: Add a time off request for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19690,6 +20035,8 @@ service: method: PUT auth: true docs: Edit a time off request for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19797,6 +20144,8 @@ service: method: DELETE auth: true docs: Cancel a time off request for an employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19828,6 +20177,8 @@ service: method: GET auth: true docs: Retrieve a list of time off entitlements for a full-time employee. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -19871,6 +20222,8 @@ service: method: GET auth: false docs: List of time offs for all employees in your organization. + source: + openapi: ../openapi.yml display-name: List of time offs response: docs: successful operation @@ -19934,6 +20287,8 @@ service: method: PATCH auth: true docs: Approve or decline an employee's time off request. + source: + openapi: ../openapi.yml path-parameters: timeoff_id: type: string @@ -20043,6 +20398,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.InvoiceAdjustmentCreatedContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTimesheetReview": { "audiences": [ @@ -20103,6 +20461,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTimesheetReviews": { "audiences": [ @@ -20157,6 +20518,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultCreated", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTimesheetById": { "audiences": [ @@ -20210,6 +20574,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheetById": { "audiences": [ @@ -20301,6 +20668,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheets": { "audiences": [ @@ -20416,6 +20786,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTimesheetsByContract": { "audiences": [ @@ -20536,6 +20909,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.TimesheetListContainer", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTimesheetById": { "audiences": [ @@ -20597,6 +20973,9 @@ docs: Manage time off requests. "docs": "Successful operation.", "type": "root.GenericResultUpdated", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20615,6 +20994,8 @@ service: method: GET auth: true docs: Retrieve a list of timesheets found for a contract. + source: + openapi: ../openapi.yml path-parameters: contract_id: type: string @@ -20715,6 +21096,8 @@ service: Retrieve a list of timesheets in your Deel account. You can filter the list by providing additional paramters e.g. contract_id, contract_type etc. + source: + openapi: ../openapi.yml display-name: List of timesheets request: name: GetTimesheetsRequest @@ -20809,6 +21192,8 @@ service: method: POST auth: true docs: Submit work for a contractor. + source: + openapi: ../openapi.yml display-name: Create a timesheet entry request: name: TimesheetToCreateContainer @@ -20849,6 +21234,8 @@ service: method: GET auth: true docs: Retrieve a single timesheet entry by Id. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -20917,6 +21304,8 @@ service: method: DELETE auth: true docs: Delete a single timesheet entry. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -20953,6 +21342,8 @@ service: method: PATCH auth: true docs: Update a single timesheet entry. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -20993,6 +21384,8 @@ service: method: POST auth: true docs: Review a timesheet to approve or decline submitted work. + source: + openapi: ../openapi.yml path-parameters: timesheet_id: type: long @@ -21032,6 +21425,8 @@ service: method: POST auth: true docs: Review a batch of timesheets to approve or reject submitted work. + source: + openapi: ../openapi.yml display-name: Review multiple timesheets request: name: TimesheetReviewsToCreateContainer @@ -21109,6 +21504,9 @@ docs: >- "path-parameters": { "id": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, "WebhookController_editById": { "audiences": [ @@ -21203,6 +21601,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "WebhookController_getById": { "audiences": [ @@ -21256,6 +21657,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createWebhook": { "audiences": [ @@ -21349,6 +21753,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllWebhooks": { "audiences": [ @@ -21398,6 +21805,9 @@ docs: >- "docs": "successful operation", "type": "root.WebhookListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21438,6 +21848,8 @@ service: method: GET auth: true docs: Retrieve a list of webhook subscriptions. + source: + openapi: ../openapi.yml display-name: List of webhooks response: docs: successful operation @@ -21473,6 +21885,8 @@ service: method: POST auth: true docs: Create a new webhooks subscription. + source: + openapi: ../openapi.yml display-name: Create a webhook request: name: CreateWebhookRequest @@ -21540,6 +21954,8 @@ service: method: GET auth: true docs: Retrieve a single webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retrieve a single webhook @@ -21579,6 +21995,8 @@ service: method: DELETE auth: true docs: Delete a webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete a webhook @@ -21600,6 +22018,8 @@ service: method: PATCH auth: true docs: Edit a webhook subscription. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Edit a webhook diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/default-content.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/default-content.json index cb3cc05f1c7..1954cba0fbe 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/default-content.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/default-content.json @@ -60,6 +60,9 @@ "docs": "Successful operation", "type": "root.GenerateContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -77,6 +80,8 @@ service: path: /generateContent method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: model: string response: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/devrev.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/devrev.json index 0ec7284ece8..0b2db96ebf5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/devrev.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/devrev.json @@ -5013,6 +5013,9 @@ types: "docs": "Success.", "type": "root.ArtifactsLocateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "prepare": { "auth": true, @@ -5066,6 +5069,9 @@ types: "docs": "Success.", "type": "root.ArtifactsPrepareResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -5084,6 +5090,8 @@ service: method: GET auth: true docs: Gets the download URL for the artifact. + source: + openapi: ../openapi.yml request: name: ArtifactsLocateRequest query-parameters: @@ -5114,6 +5122,8 @@ service: auth: true docs: | Creates an artifact and generates an upload URL for its data. + source: + openapi: ../openapi.yml request: name: ArtifactsPrepareRequest body: @@ -5210,6 +5220,9 @@ enterprise connections can be created by an organization. "docs": "Success.", "type": "root.DevOrgAuthConnectionsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-delete": { "auth": true, @@ -5250,6 +5263,9 @@ connections can not be deleted using this method. "name": "DevOrgAuthConnectionsDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-get": { "auth": true, @@ -5299,6 +5315,9 @@ connections can not be deleted using this method. "docs": "Success.", "type": "root.DevOrgAuthConnectionsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-list": { "auth": true, @@ -5341,6 +5360,9 @@ created by the user. "docs": "Success.", "type": "root.DevOrgAuthConnectionsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-toggle": { "auth": true, @@ -5386,6 +5408,9 @@ disabled. "name": "DevOrgAuthConnectionsToggleRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "dev-org-auth-connections-update": { "auth": true, @@ -5433,6 +5458,9 @@ disabled. "docs": "Success.", "type": "root.DevOrgAuthConnectionsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -5457,6 +5485,8 @@ service: enable this. Keep in mind that at a time, only one authentication connection can be enabled for a Dev organization. At present, only 5 enterprise connections can be created by an organization. + source: + openapi: ../openapi.yml request: body: type: root.DevOrgAuthConnectionsCreateRequest @@ -5492,6 +5522,8 @@ service: Deletes an authentication connection. Only enterprise connections which are explicitly set up for a Dev organization can be deleted. Default connections can not be deleted using this method. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsDeleteRequest body: @@ -5516,6 +5548,8 @@ service: method: GET auth: true docs: Retrieves the details for an authentication connection. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsGetRequest query-parameters: @@ -5555,6 +5589,8 @@ service: organization. This list will include both social and enterprise connections which are either available by default or are explicitly created by the user. + source: + openapi: ../openapi.yml response: docs: Success. type: root.DevOrgAuthConnectionsListResponse @@ -5586,6 +5622,8 @@ service: When a new authentication connection is enabled, the connection which is currently enabled for the Dev organization is automatically disabled. + source: + openapi: ../openapi.yml request: name: DevOrgAuthConnectionsToggleRequest body: @@ -5612,6 +5650,8 @@ service: method: POST auth: true docs: Updates an authentication connection. + source: + openapi: ../openapi.yml request: body: type: root.DevOrgAuthConnectionsUpdateRequest @@ -5750,6 +5790,9 @@ requesting an application access token (AAT). "docs": "Success.", "type": "root.AuthTokensCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -5790,6 +5833,9 @@ JTI claim of the token in the authorization header. "name": "AuthTokensDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -5873,6 +5919,9 @@ given Dev organization. "docs": "Success.", "type": "root.AuthTokensGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -5953,6 +6002,9 @@ subject. "docs": "Success.", "type": "root.AuthTokensListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "selfDelete": { "auth": true, @@ -5989,6 +6041,9 @@ authenticated user. "name": "AuthTokensSelfDeleteRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -6082,6 +6137,9 @@ organization. "docs": "Success.", "type": "root.AuthTokensUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6102,6 +6160,8 @@ service: docs: | Creates a JWT corresponding to the requested token type for the authenticated user. + source: + openapi: ../openapi.yml request: name: AuthTokensCreateRequest body: @@ -6176,6 +6236,8 @@ service: docs: | Revokes the token that matches the given token ID issued under the given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensDeleteRequest body: @@ -6208,6 +6270,8 @@ service: docs: | Gets the token metadata corresponding to the given token ID under the given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensGetRequest query-parameters: @@ -6272,6 +6336,8 @@ service: docs: | Gets the token metadata for all the tokens corresponding to the given token type issued for a given subject. + source: + openapi: ../openapi.yml request: name: AuthTokensListRequest query-parameters: @@ -6332,6 +6398,8 @@ service: docs: | Revokes all the tokens that matches the given token type created by the authenticated user. + source: + openapi: ../openapi.yml request: name: AuthTokensSelfDeleteRequest body: @@ -6356,6 +6424,8 @@ service: docs: | Updates token metadata of a token issued under a given Dev organization. + source: + openapi: ../openapi.yml request: name: AuthTokensUpdateRequest body: @@ -6535,6 +6605,9 @@ used. "docs": "Success.", "type": "root.DevUsersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "self": { "auth": true, @@ -6608,6 +6681,9 @@ used. "docs": "Success.", "type": "root.DevUsersSelfResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6626,6 +6702,8 @@ service: method: GET auth: true docs: Lists users within your organization. + source: + openapi: ../openapi.yml request: name: DevUsersListRequest query-parameters: @@ -6699,6 +6777,8 @@ service: method: GET auth: true docs: Gets the authenticated user's information. + source: + openapi: ../openapi.yml response: docs: Success. type: root.DevUsersSelfResponse @@ -6860,6 +6940,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -6906,6 +6989,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -6999,6 +7085,9 @@ docs: Dev user interactions. "docs": "Success.", "type": "root.PartsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -7109,6 +7198,9 @@ used. "docs": "Success.", "type": "root.PartsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -7200,6 +7292,9 @@ used. "docs": "Success.", "type": "root.PartsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7218,6 +7313,8 @@ service: method: POST auth: true docs: Creates new [part](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: body: type: root.PartsCreateRequest @@ -7284,6 +7381,8 @@ service: method: POST auth: true docs: Deletes a [part](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: name: PartsDeleteRequest body: @@ -7315,6 +7414,8 @@ service: auth: true docs: | Gets a [part's](https://devrev.ai/docs/product/parts) information. + source: + openapi: ../openapi.yml request: name: PartsGetRequest query-parameters: @@ -7380,6 +7481,8 @@ service: auth: true docs: | Lists a collection of [parts](https://devrev.ai/docs/product/parts). + source: + openapi: ../openapi.yml request: name: PartsListRequest query-parameters: @@ -7459,6 +7562,8 @@ service: auth: true docs: | Updates a [part's](https://devrev.ai/docs/product/parts) information. + source: + openapi: ../openapi.yml request: body: type: root.PartsUpdateRequest @@ -7636,6 +7741,9 @@ records. "docs": "Success.", "type": "root.RevOrgsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -7682,6 +7790,9 @@ records. "docs": "Success.", "type": "root.RevOrgsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -7756,6 +7867,9 @@ records. "docs": "Success.", "type": "root.RevOrgsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -7870,6 +7984,9 @@ them. "docs": "Success.", "type": "root.RevOrgsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -7975,6 +8092,9 @@ records. "docs": "Success.", "type": "root.RevOrgsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7995,6 +8115,8 @@ service: docs: | Creates a Rev organization in the authenticated user's Dev organization. + source: + openapi: ../openapi.yml request: name: RevOrgsCreateRequest body: @@ -8072,6 +8194,8 @@ service: method: POST auth: true docs: Deletes the Rev organization. + source: + openapi: ../openapi.yml request: name: RevOrgsDeleteRequest body: @@ -8102,6 +8226,8 @@ service: method: GET auth: true docs: Retrieves the Rev organization's information. + source: + openapi: ../openapi.yml request: name: RevOrgsGetRequest query-parameters: @@ -8161,6 +8287,8 @@ service: Gets the list of Rev organizations' information belonging to the authenticated user's Dev Organization which the user is also authorized to access. + source: + openapi: ../openapi.yml request: name: RevOrgsListRequest query-parameters: @@ -8250,6 +8378,8 @@ service: method: POST auth: true docs: Updates the Rev organization's information. + source: + openapi: ../openapi.yml request: name: RevOrgsUpdateRequest body: @@ -8435,6 +8565,9 @@ permitted. "docs": "Success.", "type": "root.TagsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -8481,6 +8614,9 @@ permitted. "docs": "Success.", "type": "root.TagsDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -8556,6 +8692,9 @@ permitted. "docs": "Success.", "type": "root.TagsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -8627,6 +8766,9 @@ used. "docs": "Success.", "type": "root.TagsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -8720,6 +8862,9 @@ tags. "docs": "Success.", "type": "root.TagsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8740,6 +8885,8 @@ service: docs: | Creates a new tag, which is used to create associations between objects and a logical concept denoted by the tag's name. + source: + openapi: ../openapi.yml request: name: TagsCreateRequest body: @@ -8806,6 +8953,8 @@ service: method: POST auth: true docs: Deletes a tag. + source: + openapi: ../openapi.yml request: name: TagsDeleteRequest body: @@ -8836,6 +8985,8 @@ service: method: GET auth: true docs: Gets a tag's information. + source: + openapi: ../openapi.yml request: name: TagsGetRequest query-parameters: @@ -8892,6 +9043,8 @@ service: method: GET auth: true docs: Lists the available tags. + source: + openapi: ../openapi.yml request: name: TagsListRequest query-parameters: @@ -8945,6 +9098,8 @@ service: method: POST auth: true docs: Updates a tag's information. + source: + openapi: ../openapi.yml request: name: TagsUpdateRequest body: @@ -9103,6 +9258,9 @@ docs: DevRev tag interactions. "docs": "Success.", "type": "root.TimelineEntriesCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -9184,6 +9342,9 @@ docs: DevRev tag interactions. "docs": "Success.", "type": "root.TimelineEntriesGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -9271,6 +9432,9 @@ used. "docs": "Success.", "type": "root.TimelineEntriesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -9349,6 +9513,9 @@ used. "docs": "Success.", "type": "root.TimelineEntriesUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9367,6 +9534,8 @@ service: method: POST auth: true docs: Creates a new entry on an object's timeline. + source: + openapi: ../openapi.yml request: body: type: root.TimelineEntriesCreateRequest @@ -9424,6 +9593,8 @@ service: method: GET auth: true docs: Gets an entry on an object's timeline. + source: + openapi: ../openapi.yml request: name: TimelineEntriesGetRequest query-parameters: @@ -9483,6 +9654,8 @@ service: method: GET auth: true docs: Lists the timeline entries for an object. + source: + openapi: ../openapi.yml request: name: TimelineEntriesListRequest query-parameters: @@ -9547,6 +9720,8 @@ service: method: POST auth: true docs: Updates an entry on an object's timeline. + source: + openapi: ../openapi.yml request: body: type: root.TimelineEntriesUpdateRequest @@ -9714,6 +9889,9 @@ response. "docs": "Success.", "type": "root.WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -9760,6 +9938,9 @@ response. "docs": "Success.", "type": "root.WebhooksDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -9836,6 +10017,9 @@ response. "docs": "Success.", "type": "root.WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -9885,6 +10069,9 @@ response. "docs": "Success.", "type": "root.WebhooksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -9994,6 +10181,9 @@ won't receive any object events until successfully verified. "docs": "Success.", "type": "root.WebhooksUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10012,6 +10202,8 @@ service: method: POST auth: true docs: Creates a new webhook target. + source: + openapi: ../openapi.yml request: name: WebhooksCreateRequest body: @@ -10086,6 +10278,8 @@ service: method: POST auth: true docs: Deletes the requested webhook. + source: + openapi: ../openapi.yml request: name: WebhooksDeleteRequest body: @@ -10116,6 +10310,8 @@ service: method: GET auth: true docs: Gets the requested webhook's information. + source: + openapi: ../openapi.yml request: name: WebhooksGetRequest query-parameters: @@ -10173,6 +10369,8 @@ service: method: GET auth: true docs: Lists the webhooks. + source: + openapi: ../openapi.yml response: docs: Success. type: root.WebhooksListResponse @@ -10207,6 +10405,8 @@ service: method: POST auth: true docs: Updates the requested webhook. + source: + openapi: ../openapi.yml request: name: WebhooksUpdateRequest body: @@ -10436,6 +10636,9 @@ docs: Webhook event APIs. "docs": "Success.", "type": "root.WorksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -10482,6 +10685,9 @@ docs: Webhook event APIs. "docs": "Success.", "type": "root.WorksDeleteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "export": { "auth": true, @@ -10629,6 +10835,9 @@ organizations. "docs": "Success.", "type": "root.WorksExportResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -10748,6 +10957,9 @@ organizations. "docs": "Success.", "type": "root.WorksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -10908,6 +11120,9 @@ organizations. "docs": "Success.", "type": "root.WorksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -11026,6 +11241,9 @@ organizations. "docs": "Success.", "type": "root.WorksUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11046,6 +11264,8 @@ service: docs: | Creates new work ([issue](https://devrev.ai/docs/product/build), [ticket](https://devrev.ai/docs/product/support)) item. + source: + openapi: ../openapi.yml request: body: type: root.WorksCreateRequest @@ -11134,6 +11354,8 @@ service: method: POST auth: true docs: Deletes a work item. + source: + openapi: ../openapi.yml request: name: WorksDeleteRequest body: @@ -11164,6 +11386,8 @@ service: method: GET auth: true docs: Exports a collection of work items. + source: + openapi: ../openapi.yml request: name: WorksExportRequest query-parameters: @@ -11272,6 +11496,8 @@ service: method: GET auth: true docs: Gets a work item's information. + source: + openapi: ../openapi.yml request: name: WorksGetRequest query-parameters: @@ -11356,6 +11582,8 @@ service: method: GET auth: true docs: Lists a collection of work items. + source: + openapi: ../openapi.yml request: name: WorksListRequest query-parameters: @@ -11475,6 +11703,8 @@ service: method: POST auth: true docs: Updates a work item's information. + source: + openapi: ../openapi.yml request: body: type: root.WorksUpdateRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/discriminated-union-value-title.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/discriminated-union-value-title.json index a66d553c792..3444dc5d076 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/discriminated-union-value-title.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/discriminated-union-value-title.json @@ -44,6 +44,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/enum-casing.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/enum-casing.json index acd371d425b..c41e060c95c 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/enum-casing.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/enum-casing.json @@ -33,6 +33,9 @@ "docs": "Successful response", "type": "ExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -85,6 +88,8 @@ path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/file-upload.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/file-upload.json index df028245cfe..5129ba9cb5f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/file-upload.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/file-upload.json @@ -42,6 +42,9 @@ "name": "UploadFileRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57,6 +60,8 @@ path: /upload-with-content-type method: POST auth: false + source: + openapi: ../openapi.yml display-name: Upload a file request: name: UploadFileRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flagright.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flagright.json index 6b004e21de9..4a3911dda60 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flagright.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flagright.json @@ -374,6 +374,9 @@ Calling `GET /business/user/{userId}` will return the entire User payload and ru "docs": "OK", "type": "Business", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-consumer-transaction": { "auth": true, @@ -526,6 +529,9 @@ Calling `GET /transactions/{transactionId}` will return the entire transaction p "docs": "OK", "type": "TransactionWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-consumer-user": { "auth": true, @@ -681,6 +687,9 @@ Calling `GET /consumer/user/{userId}` will return the entire user payload and ru "docs": "OK", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-business-user": { "auth": true, @@ -757,6 +766,9 @@ Each consumer Business entity needs three mandatory fields: "docs": "Created", "type": "PostBusinessUserResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-business-user-event": { "auth": true, @@ -1189,6 +1201,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "BusinessWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-consumer-transaction": { "auth": true, @@ -1352,6 +1367,9 @@ Here are some of the most used payload fields explained (you can find the full p "docs": "Created", "type": "PostConsumerTransactionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-consumer-user": { "auth": true, @@ -1488,6 +1506,9 @@ Each consumer User entity needs three mandatory fields: "docs": "Created", "type": "PostConsumerUserResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-transaction-event": { "auth": true, @@ -1713,6 +1734,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "TransactionEventMonitoringResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post-user-event": { "auth": true, @@ -1951,6 +1975,9 @@ In order to make individual events retrievable, you also need to pass in a uniqu "docs": "Created", "type": "UserWithRulesResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7401,6 +7428,8 @@ service: destination (ex: `CARD`, `IBAN`, `WALLET` etc). You can click on the dropdown next to the field in the schema below to view all supported payment types. + source: + openapi: ../openapi.yml display-name: Verify a Transaction request: body: Transaction @@ -7522,6 +7551,8 @@ service: Calling `GET /transactions/{transactionId}` will return the entire transaction payload and rule execution results for the transaction with the corresponding `transactionId` + source: + openapi: ../openapi.yml path-parameters: transactionId: type: string @@ -7677,6 +7708,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Transaction Event request: name: TransactionEvent @@ -7851,6 +7884,8 @@ service: * `createdTimestamp` - UNIX timestamp in *milliseconds* for when the User is created in your system + source: + openapi: ../openapi.yml display-name: Create a Consumer User request: body: @@ -7947,6 +7982,8 @@ service: Calling `GET /consumer/user/{userId}` will return the entire user payload and rule execution results for the user with the corresponding `userId` + source: + openapi: ../openapi.yml path-parameters: userId: type: string @@ -8077,6 +8114,8 @@ service: * `createdTimestamp` - UNIX timestamp in *milliseconds* for when the User is created in your system + source: + openapi: ../openapi.yml display-name: Create a Business User request: body: Business @@ -8135,6 +8174,8 @@ service: Calling `GET /business/user/{userId}` will return the entire User payload and rule execution results for the User with the corresponding `userId` + source: + openapi: ../openapi.yml path-parameters: userId: type: string @@ -8393,6 +8434,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Consumer User Event request: name: ConsumerUserEvent @@ -8579,6 +8622,8 @@ service: In order to make individual events retrievable, you also need to pass in a unique `eventId` to the request body. + source: + openapi: ../openapi.yml display-name: Create a Business User Event request: name: BusinessUserEvent diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flexport.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flexport.json index f4b675604b0..756100d712b 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flexport.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/flexport.json @@ -8404,6 +8404,9 @@ errors: "docs": "collection of bookings", "type": "BookingsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": false, @@ -8876,6 +8879,9 @@ errors: "docs": "The created booking", "type": "BookingCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -9179,6 +9185,9 @@ errors: "docs": "Success", "type": "BookingShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9350,6 +9359,8 @@ service: method: GET auth: false docs: Returns a list of bookings. + source: + openapi: ../openapi.yml display-name: List all bookings request: name: BookingsIndexRequest @@ -9615,6 +9626,8 @@ service: path: /bookings method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a booking request: name: CreateBooking @@ -10012,6 +10025,8 @@ service: auth: false docs: | Retrieves the details of a single booking. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -10547,6 +10562,9 @@ docs: Endpoints relating to Booking objects "docs": "The created booking amendment", "type": "BookingAmendmentCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10587,6 +10605,8 @@ service: path: /booking_amendments method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new booking amendment. request: name: CreateBookingAmendment @@ -10913,6 +10933,9 @@ docs: >- "docs": "The created booking line item", "type": "BookingLineItemCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "booking_line_item_index": { "auth": false, @@ -11000,6 +11023,9 @@ docs: >- "docs": "collection of booking line items", "type": "BookingLineItemIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "booking_line_item_show": { "auth": false, @@ -11053,6 +11079,9 @@ docs: >- "docs": "A collection of booking line items", "type": "BookingLineItemShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11171,6 +11200,8 @@ service: method: GET auth: false docs: Returns a list of booking line items linked to submitted bookings + source: + openapi: ../openapi.yml display-name: List all booking line items request: name: BookingLineItemIndexRequest @@ -11239,6 +11270,8 @@ service: method: POST auth: false docs: Creates and returns a booking line item + source: + openapi: ../openapi.yml display-name: Create a booking line item request: name: CreateBookingLineItem @@ -11291,6 +11324,8 @@ service: method: GET auth: false docs: Returns a list of booking line items + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -11465,6 +11500,9 @@ docs: >- "docs": "Success", "type": "CarbonCalculationCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11584,6 +11622,8 @@ service: method: POST auth: false docs: Rate limited to 2,000 requests per hour + source: + openapi: ../openapi.yml display-name: Calculate carbon emissions request: name: CreateCarbonCalculation @@ -11913,6 +11953,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "The created commercial invoice", "type": "CommercialInvoicesCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "index": { "auth": false, @@ -12078,6 +12121,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "Success", "type": "CommercialInvoicesIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -12224,6 +12270,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "Success", "type": "CommercialInvoicesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -12388,6 +12437,9 @@ docs: Endpoints relating to Carbon Calculations "docs": "The updated commercial invoice", "type": "CommercialInvoicesUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12509,6 +12561,8 @@ service: method: GET auth: false docs: Returns a list of commercial invoices + source: + openapi: ../openapi.yml display-name: List commercial invoices request: name: CommercialInvoicesIndexRequest @@ -12636,6 +12690,8 @@ service: **The Commercial Invoices POST endpoint needs special permission to access. Please contact your Flexport Sales representative if you are interested in using this endpoint.** + source: + openapi: ../openapi.yml display-name: Create and return a new commercial invoice request: name: CreateCommercialInvoice @@ -12793,6 +12849,8 @@ service: **The Commercial Invoices PATCH endpoint needs special permission to access. Please contact your Flexport Sales representative if you are interested in using this endpoint.** + source: + openapi: ../openapi.yml display-name: Update an existing commercial invoice request: name: UpdateCommercialInvoice @@ -12920,6 +12978,8 @@ service: method: GET auth: false docs: Retrieves the details of a single commercial invoice. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13141,6 +13201,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "The created company", "type": "NetworkCompanyCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_index": { "auth": false, @@ -13249,6 +13312,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "collection of companies", "type": "NetworkCompanyIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_me": { "auth": false, @@ -13329,6 +13395,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "Success", "type": "NetworkCompanyMeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_show": { "auth": false, @@ -13410,6 +13479,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "Success", "type": "NetworkCompanyShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_update": { "auth": false, @@ -13518,6 +13590,9 @@ docs: Endpoints relating to Commercial Invoice objects "docs": "The updated company", "type": "NetworkCompanyUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13661,6 +13736,8 @@ service: method: GET auth: false docs: Returns a list of companies in the network. + source: + openapi: ../openapi.yml display-name: List company objects request: name: NetworkCompanyIndexRequest @@ -13745,6 +13822,8 @@ service: path: /network/companies method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new company object request: name: CreateCompany @@ -13818,6 +13897,8 @@ service: method: GET auth: false docs: Retrieves the details of a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13876,6 +13957,8 @@ service: path: /network/companies/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13954,6 +14037,8 @@ service: method: GET auth: false docs: Retrieves the details of your own organization. + source: + openapi: ../openapi.yml display-name: Retrieve your company response: docs: Success @@ -14114,6 +14199,9 @@ docs: Endpoints relating to Company objects "docs": "collection of company entities", "type": "CompanyEntityIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_create": { "auth": false, @@ -14205,6 +14293,9 @@ docs: Endpoints relating to Company objects "docs": "The created company entity", "type": "NetworkCompanyEntityCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_show": { "auth": false, @@ -14267,6 +14358,9 @@ docs: Endpoints relating to Company objects "docs": "Success", "type": "NetworkCompanyEntityShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_company_entity_update": { "auth": false, @@ -14353,6 +14447,9 @@ docs: Endpoints relating to Company objects "docs": "Success", "type": "NetworkCompanyEntityUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14476,6 +14573,8 @@ service: method: GET auth: false docs: Returns a list of the company entity objects in the network. + source: + openapi: ../openapi.yml display-name: List of company entity objects request: name: CompanyEntityIndexRequest @@ -14544,6 +14643,8 @@ service: path: /network/company_entities method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a new company entity request: name: CreateCompanyEntity @@ -14619,6 +14720,8 @@ service: method: GET auth: false docs: Retrieves the details of a single company entity + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14663,6 +14766,8 @@ service: path: /network/company_entities/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14814,6 +14919,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "The created contact", "type": "NetworkContactCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_index": { "auth": false, @@ -14896,6 +15004,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "collection of contacts", "type": "NetworkContactIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_show": { "auth": false, @@ -14950,6 +15061,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "Success", "type": "NetworkContactShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_contact_update": { "auth": false, @@ -15027,6 +15141,9 @@ docs: Endpoints relating to CompanyEntity objects "docs": "The updated contact", "type": "NetworkContactUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15150,6 +15267,8 @@ service: method: GET auth: false docs: Returns a list of contacts in the network. + source: + openapi: ../openapi.yml display-name: List contact objects request: name: NetworkContactIndexRequest @@ -15211,6 +15330,8 @@ service: path: /network/contacts method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a new contact object request: name: CreateContact @@ -15269,6 +15390,8 @@ service: method: GET auth: false docs: Retrieves the details of a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15308,6 +15431,8 @@ service: path: /network/contacts/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15503,6 +15628,9 @@ docs: Endpoints relating to Contact objects "docs": "Success", "type": "ContainerListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -15604,6 +15732,9 @@ docs: Endpoints relating to Contact objects "docs": "Success", "type": "ContainerShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15687,6 +15818,8 @@ service: docs: >- Returns a list of containers. The containers are sorted descending by creation date. + source: + openapi: ../openapi.yml display-name: List all containers. request: name: ContainerListRequest @@ -15794,6 +15927,8 @@ service: method: GET auth: false docs: Retrieves the details of a single container. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15969,6 +16104,9 @@ docs: Endpoints relating to Container objects "docs": "Success", "type": "OceanContainerLegsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ocean_container_legs_show": { "auth": false, @@ -16025,6 +16163,9 @@ docs: Endpoints relating to Container objects "docs": "Success", "type": "OceanContainerLegsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16105,6 +16246,8 @@ service: path: /ocean/shipment_container_legs method: GET auth: false + source: + openapi: ../openapi.yml display-name: List all container legs request: name: OceanContainerLegsIndexRequest @@ -16169,6 +16312,8 @@ service: path: /ocean/shipment_container_legs/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -16287,6 +16432,9 @@ docs: Endpoints relating to ContainerLeg objects "docs": "collection of customs entries", "type": "CustomsEntryIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -16336,6 +16484,9 @@ docs: Endpoints relating to ContainerLeg objects "docs": "Success", "type": "CustomsEntriesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16417,6 +16568,8 @@ service: method: GET auth: false docs: Returns a list of customs entries. + source: + openapi: ../openapi.yml display-name: List customs entry objects request: name: CustomsEntryIndexRequest @@ -16467,6 +16620,8 @@ service: method: GET auth: false docs: Retrieves the details of a single customs entry. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16561,6 +16716,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Created", "type": "DocumentsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_download": { "auth": false, @@ -16582,6 +16740,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Success", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_index": { "auth": false, @@ -16680,6 +16841,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "collection of documents", "type": "DocumentsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documents_show": { "auth": false, @@ -16736,6 +16900,9 @@ docs: Endpoints relating to Customs Entry objects "docs": "Success", "type": "DocumentsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16839,6 +17006,8 @@ service: method: GET auth: false docs: Returns a list of all documents associated with shipments. + source: + openapi: ../openapi.yml display-name: List document objects request: name: DocumentsIndexRequest @@ -16920,6 +17089,8 @@ service: method: POST auth: false docs: Create a new document for this client using the request payload + source: + openapi: ../openapi.yml display-name: Create a document request: body: root.CreateDocument @@ -16955,6 +17126,8 @@ service: method: GET auth: false docs: Retrieves the details of a single document. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -16998,6 +17171,8 @@ service: docs: >- Retrieves the contents of a specified file. Returns the file as a stream of bytes. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -17096,6 +17271,9 @@ docs: Endpoints relating to Document objects "docs": "Success", "type": "EventsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "events_show": { "auth": false, @@ -17217,6 +17395,9 @@ docs: Endpoints relating to Document objects "docs": "Success", "type": "EventsShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17347,6 +17528,8 @@ service: docs: >- Returns a list of all events delivered to any webhook registered by this client + source: + openapi: ../openapi.yml display-name: List all webhook events request: name: EventsIndexRequest @@ -17399,6 +17582,8 @@ service: method: GET auth: false docs: Returns the webhook event with ID ":id" + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -17846,6 +18031,9 @@ This parameter is mutually exclusive with the f.shipment.id filter. "docs": "collection of invoices", "type": "InvoiceIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -18106,6 +18294,9 @@ Other details about this invoice", "docs": "Success", "type": "InvoicesShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18223,6 +18414,8 @@ service: method: GET auth: false docs: Returns a list of invoices. + source: + openapi: ../openapi.yml display-name: List all invoices request: name: InvoiceIndexRequest @@ -18505,6 +18698,8 @@ service: method: GET auth: false docs: Retrieves the details of a single invoice + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -18820,6 +19015,9 @@ docs: Endpoints relating to Invoice objects "docs": "collection of locations", "type": "LocationIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_location_create": { "auth": false, @@ -18918,6 +19116,9 @@ docs: Endpoints relating to Invoice objects "docs": "The created location", "type": "NetworkLocationCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "network_location_show": { "auth": false, @@ -18989,6 +19190,9 @@ docs: Endpoints relating to Invoice objects "docs": "Success", "type": "NetworkLocationShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -19088,6 +19292,9 @@ docs: Endpoints relating to Invoice objects "docs": "Success", "type": "LocationUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19211,6 +19418,8 @@ service: method: GET auth: false docs: Returns a list of location objects in the network. + source: + openapi: ../openapi.yml display-name: List of location objects request: name: LocationIndexRequest @@ -19296,6 +19505,8 @@ service: path: /network/locations method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a new location request: name: CreateLocation @@ -19372,6 +19583,8 @@ service: method: GET auth: false docs: Retrieves the details of a single location + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19426,6 +19639,8 @@ service: path: /network/locations/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19637,6 +19852,9 @@ docs: Endpoints relating to Location objects "docs": "collection of ports", "type": "PortsIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19718,6 +19936,8 @@ service: path: /ports method: GET auth: false + source: + openapi: ../openapi.yml display-name: List of ports request: name: PortsIndexRequest @@ -19931,6 +20151,9 @@ docs: Endpoints relating to Ports objects "docs": "Created", "type": "ProductCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "index": { "auth": false, @@ -20016,6 +20239,9 @@ docs: Endpoints relating to Ports objects "docs": "Success", "type": "ProductIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -20086,6 +20312,9 @@ docs: Endpoints relating to Ports objects "docs": "Success", "type": "ProductShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -20203,6 +20432,9 @@ docs: Endpoints relating to Ports objects "docs": "Updated", "type": "ProductUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20324,6 +20556,8 @@ service: method: GET auth: false docs: Returns a list of all products belonging to this client + source: + openapi: ../openapi.yml display-name: List all products for a client request: name: ProductIndexRequest @@ -20390,6 +20624,8 @@ service: method: POST auth: false docs: Create a new product for this client using the request payload + source: + openapi: ../openapi.yml display-name: Create a product request: name: CreateProduct @@ -20476,6 +20712,8 @@ service: method: GET auth: false docs: Returns the client's product with this ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -20523,6 +20761,8 @@ service: method: PATCH auth: false docs: Update this product to represent the request payload + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -20908,6 +21148,9 @@ docs: Endpoints relating to Product objects "docs": "The created purchase order", "type": "root.PurchaseOrder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_index": { "auth": false, @@ -21224,6 +21467,9 @@ docs: Endpoints relating to Product objects "docs": "collection of purchase orders", "type": "PurchaseOrderIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_show": { "auth": false, @@ -21373,6 +21619,9 @@ docs: Endpoints relating to Product objects "docs": "Success", "type": "PurchaseOrderShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_update": { "auth": false, @@ -21598,6 +21847,9 @@ docs: Endpoints relating to Product objects "docs": "The update purchase order", "type": "root.PurchaseOrder", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21748,6 +22000,8 @@ service: method: GET auth: false docs: Returns a list of purchase orders + source: + openapi: ../openapi.yml display-name: List all purchase orders request: name: PurchaseOrderIndexRequest @@ -21989,6 +22243,8 @@ service: path: /purchase_orders method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create and return a purchase order request: body: root.CreateOrUpdatePurchaseOrder @@ -22209,6 +22465,8 @@ service: auth: false docs: | Retrieves the details of a single purchase order. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -22324,6 +22582,8 @@ service: path: /purchase_orders/{id} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -22688,6 +22948,9 @@ docs: >- "docs": "collection of purchase order line items", "type": "PurchaseOrderLineItemIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "purchase_order_line_item_show": { "auth": false, @@ -22874,6 +23137,9 @@ docs: >- "docs": "collection of purchase order line items", "type": "PurchaseOrderLineItemShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -22972,6 +23238,8 @@ service: method: GET auth: false docs: Returns a list of purchase order line items + source: + openapi: ../openapi.yml display-name: List all purchase order line items. request: name: PurchaseOrderLineItemIndexRequest @@ -23109,6 +23377,8 @@ service: method: GET auth: false docs: Returns the details of a purchase order line item + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -23704,6 +23974,9 @@ docs: >- "docs": "collection of shipments", "type": "ShipmentIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shipments_shareable": { "auth": false, @@ -23766,6 +24039,9 @@ docs: >- "docs": "collection of shipments shareable status url", "type": "ShipmentsShareableResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "show": { "auth": false, @@ -24097,6 +24373,9 @@ docs: >- "docs": "Success", "type": "ShipmentShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": false, @@ -24444,6 +24723,9 @@ docs: >- "docs": "The updated shipment", "type": "ShipmentUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -24639,6 +24921,8 @@ service: method: GET auth: false docs: Returns a list of shipments. + source: + openapi: ../openapi.yml display-name: List all shipments request: name: ShipmentIndexRequest @@ -25025,6 +25309,8 @@ service: auth: false docs: | Retrieves the details of a single shipment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -25283,6 +25569,8 @@ service: path: /shipments/{id} method: PATCH auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -25555,6 +25843,8 @@ service: method: POST auth: false docs: Returns a list of shipments status shareable url + source: + openapi: ../openapi.yml display-name: Create shareable URLs for shipments request: name: ShipmentsShareableRequest @@ -25797,6 +26087,9 @@ docs: Endpoints relating to Shipment objects "docs": "Success", "type": "ShipmentLegIndexResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "shipment_leg_show": { "auth": false, @@ -26001,6 +26294,9 @@ docs: Endpoints relating to Shipment objects "docs": "Success", "type": "ShipmentLegShowResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -26084,6 +26380,8 @@ service: docs: >- Returns a list of shipment route legs. The legs are sorted descending by creation date. + source: + openapi: ../openapi.yml display-name: List all shipment route legs request: name: ShipmentLegIndexRequest @@ -26230,6 +26528,8 @@ service: path: /shipment_legs/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: type: integer diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/float.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/float.json index 4a4fe392b93..7d5966c4d3b 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/float.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/float.json @@ -41,6 +41,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -69,6 +72,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hathora.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hathora.json index ea72d279839..9eb00b966a7 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hathora.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hathora.json @@ -947,6 +947,9 @@ types: "docs": "", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, "DeleteApp": { "auth": true, @@ -968,6 +971,9 @@ types: "path-parameters": { "appId": "root.AppId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetAppInfo": { "auth": true, @@ -1009,6 +1015,9 @@ types: "docs": "Ok", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetApps": { "auth": true, @@ -1062,6 +1071,9 @@ types: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "UpdateApp": { "auth": true, @@ -1112,6 +1124,9 @@ types: "docs": "Ok", "type": "root.Application", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -1129,6 +1144,8 @@ service: path: /apps/v1/list method: GET auth: true + source: + openapi: ../openapi.json response: docs: Ok type: list @@ -1165,6 +1182,8 @@ service: path: /apps/v1/create method: POST auth: true + source: + openapi: ../openapi.json request: body: root.AppConfig content-type: application/json @@ -1195,6 +1214,8 @@ service: path: /apps/v1/update/{appId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -1229,6 +1250,8 @@ service: path: /apps/v1/info/{appId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -1256,6 +1279,8 @@ service: path: /apps/v1/delete/{appId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId errors: @@ -1306,6 +1331,9 @@ service: "docs": "Ok", "type": "LoginAnonymousResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "LoginGoogle": { "auth": false, @@ -1350,6 +1378,9 @@ service: "docs": "Ok", "type": "LoginGoogleResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "LoginNickname": { "auth": false, @@ -1393,6 +1424,9 @@ service: "docs": "Ok", "type": "LoginNicknameResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -1455,6 +1489,8 @@ service: path: /auth/v1/{appId}/login/anonymous method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -1472,6 +1508,8 @@ service: path: /auth/v1/{appId}/login/nickname method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -1497,6 +1535,8 @@ service: path: /auth/v1/{appId}/login/google method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -1577,6 +1617,9 @@ service: "docs": "", "type": "root.Build", }, + "source": { + "openapi": "../openapi.json", + }, }, "DeleteBuild": { "auth": true, @@ -1601,6 +1644,9 @@ service: "appId": "root.AppId", "buildId": "root.BuildId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetBuildInfo": { "auth": true, @@ -1646,6 +1692,9 @@ service: "docs": "Ok", "type": "root.Build", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetBuilds": { "auth": true, @@ -1691,6 +1740,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "RunBuild": { "auth": true, @@ -1721,6 +1773,9 @@ service: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -1738,6 +1793,8 @@ service: path: /builds/v1/{appId}/list method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -1766,6 +1823,8 @@ service: path: /builds/v1/{appId}/info/{buildId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -1796,6 +1855,8 @@ service: path: /builds/v1/{appId}/create method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -1826,6 +1887,8 @@ service: path: /builds/v1/{appId}/run/{buildId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -1845,6 +1908,8 @@ service: path: /builds/v1/{appId}/delete/{buildId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -1934,6 +1999,9 @@ service: "docs": "", "type": "root.Deployment", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetDeploymentInfo": { "auth": true, @@ -1981,6 +2049,9 @@ service: "docs": "Ok", "type": "root.Deployment", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetDeployments": { "auth": true, @@ -2028,6 +2099,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2045,6 +2119,8 @@ service: path: /deployments/v1/{appId}/list method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId response: @@ -2075,6 +2151,8 @@ service: path: /deployments/v1/{appId}/info/{deploymentId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId deploymentId: root.DeploymentId @@ -2107,6 +2185,8 @@ service: path: /deployments/v1/{appId}/create/{buildId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId buildId: root.BuildId @@ -2185,6 +2265,9 @@ service: "docs": "Ok", "type": "root.DiscoveryResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2202,6 +2285,8 @@ service: path: /discovery/v1/ping method: GET auth: false + source: + openapi: ../openapi.json response: docs: Ok type: root.DiscoveryResponse @@ -2272,6 +2357,9 @@ service: "docs": "Ok", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePublicLobbyDeprecated": { "auth": false, @@ -2320,6 +2408,9 @@ service: "docs": "Ok", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "ListActivePublicLobbiesDeprecated": { "auth": false, @@ -2381,6 +2472,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2398,6 +2492,8 @@ service: path: /lobby/v1/{appId}/create/private method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2430,6 +2526,8 @@ service: path: /lobby/v1/{appId}/create/public method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2462,6 +2560,8 @@ service: path: /lobby/v1/{appId}/list method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -2586,6 +2686,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreateLocalLobby": { "auth": false, @@ -2660,6 +2763,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePrivateLobby": { "auth": false, @@ -2734,6 +2840,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "CreatePublicLobby": { "auth": false, @@ -2808,6 +2917,9 @@ service: "docs": "", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLobbyInfo": { "auth": false, @@ -2851,6 +2963,9 @@ service: "docs": "Ok", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, "ListActivePublicLobbies": { "auth": false, @@ -2897,6 +3012,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "SetLobbyState": { "auth": true, @@ -2957,6 +3075,9 @@ service: "docs": "Ok", "type": "root.Lobby", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2986,6 +3107,8 @@ service: path: /lobby/v2/{appId}/create/private method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3037,6 +3160,8 @@ service: path: /lobby/v2/{appId}/create/public method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3088,6 +3213,8 @@ service: path: /lobby/v2/{appId}/create/local method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3139,6 +3266,8 @@ service: path: /lobby/v2/{appId}/create method: POST auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3191,6 +3320,8 @@ service: path: /lobby/v2/{appId}/list/public method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3220,6 +3351,8 @@ service: path: /lobby/v2/{appId}/info/{roomId} method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -3249,6 +3382,8 @@ service: path: /lobby/v2/{appId}/setState/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -3330,6 +3465,9 @@ types: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLogsForDeployment": { "auth": true, @@ -3355,6 +3493,9 @@ types: "docs": "Ok", "type": "text", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetLogsForProcess": { "auth": true, @@ -3380,6 +3521,9 @@ types: "docs": "Ok", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3397,6 +3541,8 @@ service: path: /logs/v1/{appId}/all method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3414,6 +3560,8 @@ service: path: /logs/v1/{appId}/process/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -3431,6 +3579,8 @@ service: path: /logs/v1/{appId}/deployment/{deploymentId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId deploymentId: root.DeploymentId @@ -3524,6 +3674,9 @@ service: "docs": "Ok", "type": "root.MetricsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3541,6 +3694,8 @@ service: path: /metrics/v1/{appId}/process/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -3636,6 +3791,9 @@ service: "docs": "Ok", "type": "root.Process", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetRunningProcesses": { "auth": true, @@ -3696,6 +3854,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetStoppedProcesses": { "auth": true, @@ -3748,6 +3909,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -3765,6 +3929,8 @@ service: path: /processes/v1/{appId}/list/running method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3806,6 +3972,8 @@ service: path: /processes/v1/{appId}/list/stopped method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -3842,6 +4010,8 @@ service: path: /processes/v1/{appId}/info/{processId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -3927,6 +4097,9 @@ service: "docs": "", "type": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "DestroyRoom": { "auth": true, @@ -3950,6 +4123,9 @@ service: "appId": "root.AppId", "roomId": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetActiveRoomsForProcess": { "auth": true, @@ -3991,6 +4167,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetConnectionInfo": { "auth": false, @@ -4028,6 +4207,9 @@ service: "docs": "Ok", "type": "root.ConnectionInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetInactiveRoomsForProcess": { "auth": true, @@ -4069,6 +4251,9 @@ service: "docs": "Ok", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "GetRoomInfo": { "auth": true, @@ -4116,6 +4301,9 @@ service: "docs": "Ok", "type": "root.Room", }, + "source": { + "openapi": "../openapi.json", + }, }, "SuspendRoom": { "auth": true, @@ -4139,6 +4327,9 @@ service: "appId": "root.AppId", "roomId": "root.RoomId", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -4156,6 +4347,8 @@ service: path: /rooms/v1/{appId}/create method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId request: @@ -4181,6 +4374,8 @@ service: path: /rooms/v1/{appId}/info/{roomId} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -4212,6 +4407,8 @@ service: path: /rooms/v1/{appId}/list/{processId}/active method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -4238,6 +4435,8 @@ service: path: /rooms/v1/{appId}/list/{processId}/inactive method: GET auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId processId: root.ProcessId @@ -4264,6 +4463,8 @@ service: path: /rooms/v1/{appId}/destroy/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -4278,6 +4479,8 @@ service: path: /rooms/v1/{appId}/suspend/{roomId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId @@ -4292,6 +4495,8 @@ service: path: /rooms/v1/{appId}/connectioninfo/{roomId} method: GET auth: false + source: + openapi: ../openapi.json path-parameters: appId: root.AppId roomId: root.RoomId diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hookdeck.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hookdeck.json index 849c7b5834f..6255a6cf9cb 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hookdeck.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hookdeck.json @@ -4134,6 +4134,9 @@ types: "docs": "A single attempt", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAttempts": { "auth": true, @@ -4204,6 +4207,9 @@ types: "docs": "List of attempts", "type": "root.EventAttemptPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4243,6 +4249,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get attempts request: name: GetAttemptsRequest @@ -4297,6 +4305,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single attempt @@ -4443,6 +4453,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteBookmark": { "auth": true, @@ -4473,6 +4486,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "An object with deleted bookmark's id", "type": "root.DeletedBookmarkResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBookmark": { "auth": true, @@ -4519,6 +4535,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getBookmarks": { "auth": true, @@ -4598,6 +4617,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "List of bookmarks", "type": "root.BookmarkPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "triggerBookmark": { "auth": true, @@ -4672,6 +4694,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "Array of created events", "type": "root.EventArray", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateBookmark": { "auth": true, @@ -4771,6 +4796,9 @@ docs: An attempt is any request that Hookdeck makes on behalf of an event. "docs": "A single bookmark", "type": "root.Bookmark", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4827,6 +4855,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get bookmarks request: name: GetBookmarksRequest @@ -4885,6 +4915,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a bookmark request: name: CreateBookmarkRequest @@ -4946,6 +4978,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single bookmark @@ -4980,6 +5014,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a bookmark @@ -5043,6 +5079,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete a bookmark @@ -5062,6 +5100,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Trigger a bookmark @@ -5174,6 +5214,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createEventBulkRetry": { "auth": true, @@ -5230,6 +5273,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateEventBulkRetryPlan": { "auth": true, @@ -5257,6 +5303,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "Events bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEventBulkRetries": { "auth": true, @@ -5329,6 +5378,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "List of events bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEventBulkRetry": { "auth": true, @@ -5375,6 +5427,9 @@ docs: A bookmark lets you conveniently store and replay a specific request. "docs": "A single events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6322,6 +6377,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get events bulk retries request: name: GetEventBulkRetriesRequest @@ -6377,6 +6434,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an events bulk retry request: name: CreateEventBulkRetryRequest @@ -6419,6 +6478,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate an events bulk retry plan response: docs: Events bulk retry plan @@ -6437,6 +6498,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an events bulk retry @@ -6471,6 +6534,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel an events bulk retry @@ -6563,6 +6628,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createIgnoredEventBulkRetry": { "auth": true, @@ -6619,6 +6687,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateIgnoredEventBulkRetryPlan": { "auth": true, @@ -6646,6 +6717,9 @@ docs: '' "docs": "Ignored events bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIgnoredEventBulkRetries": { "auth": true, @@ -6718,6 +6792,9 @@ docs: '' "docs": "List of ignored events bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIgnoredEventBulkRetry": { "auth": true, @@ -6764,6 +6841,9 @@ docs: '' "docs": "A single ignored events bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6907,6 +6987,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get ignored events bulk retries request: name: GetIgnoredEventBulkRetriesRequest @@ -6962,6 +7044,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an ignored events bulk retry request: name: CreateIgnoredEventBulkRetryRequest @@ -7002,6 +7086,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate an ignored events bulk retry plan response: docs: Ignored events bulk retry plan @@ -7020,6 +7106,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an ignored events bulk retry @@ -7054,6 +7142,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel an ignored events bulk retry @@ -7146,6 +7236,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createRequestBulkRetry": { "auth": true, @@ -7202,6 +7295,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "generateRequestBulkRetryPlan": { "auth": true, @@ -7229,6 +7325,9 @@ docs: '' "docs": "Requests bulk retry plan", "type": "root.BatchOperationPlan", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestBulkRetries": { "auth": true, @@ -7301,6 +7400,9 @@ docs: '' "docs": "List of request bulk retries", "type": "root.BatchOperationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestBulkRetry": { "auth": true, @@ -7347,6 +7449,9 @@ docs: '' "docs": "A single requests bulk retry", "type": "root.BatchOperation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8034,6 +8139,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get request bulk retries request: name: GetRequestBulkRetriesRequest @@ -8089,6 +8196,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a requests bulk retry request: name: CreateRequestBulkRetryRequest @@ -8131,6 +8240,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Generate a requests bulk retry plan response: docs: Requests bulk retry plan @@ -8149,6 +8260,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a requests bulk retry @@ -8183,6 +8296,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Cancel a requests bulk retry @@ -8323,6 +8438,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createConnection": { "auth": true, @@ -8481,6 +8599,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConnection": { "auth": true, @@ -8575,6 +8696,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConnections": { "auth": true, @@ -8686,6 +8810,9 @@ docs: '' "docs": "List of connections", "type": "root.ConnectionPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "pauseConnection": { "auth": true, @@ -8780,6 +8907,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveConnection": { "auth": true, @@ -8874,6 +9004,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unpauseConnection": { "auth": true, @@ -8968,6 +9101,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateConnection": { "auth": true, @@ -9103,6 +9239,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertConnection": { "auth": true, @@ -9261,6 +9400,9 @@ docs: '' "docs": "A single connection", "type": "root.Connection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9628,6 +9770,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get connections request: name: GetConnectionsRequest @@ -9709,6 +9853,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a connection request: name: CreateConnectionRequest @@ -9817,6 +9963,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a connection request: name: UpsertConnectionRequest @@ -9925,6 +10073,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single connection @@ -9994,6 +10144,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a connection @@ -10090,6 +10242,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a connection @@ -10159,6 +10313,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a connection @@ -10228,6 +10384,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Pause a connection @@ -10297,6 +10455,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unpause a connection @@ -10420,6 +10580,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createDestination": { "auth": true, @@ -10495,6 +10658,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDestination": { "auth": true, @@ -10535,6 +10701,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDestinations": { "auth": true, @@ -10604,6 +10773,9 @@ docs: >- "docs": "List of destinations", "type": "root.DestinationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveDestination": { "auth": true, @@ -10644,6 +10816,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateDestination": { "auth": true, @@ -10730,6 +10905,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertDestination": { "auth": true, @@ -10805,6 +10983,9 @@ docs: >- "docs": "A single destination", "type": "root.Destination", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10901,6 +11082,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get destinations request: name: GetDestinationsRequest @@ -10953,6 +11136,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a destination request: name: CreateDestinationRequest @@ -11005,6 +11190,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a destination request: name: UpsertDestinationRequest @@ -11057,6 +11244,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a destination @@ -11086,6 +11275,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a destination @@ -11146,6 +11337,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a destination @@ -11175,6 +11368,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a destination @@ -11271,6 +11466,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A single event", "type": "root.Event", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getEvents": { "auth": true, @@ -11386,6 +11584,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "List of events", "type": "root.EventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestRawBody": { "auth": true, @@ -11416,6 +11617,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A request raw body data", "type": "root.RawBody", }, + "source": { + "openapi": "../openapi.yml", + }, }, "muteEvent": { "auth": true, @@ -11471,6 +11675,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "A single event", "type": "root.Event", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retryEvent": { "auth": true, @@ -11550,6 +11757,9 @@ docs: A destination is any endpoint to which your webhooks can be routed. "docs": "Retried event with event attempt", "type": "root.RetriedEvent", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11593,6 +11803,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get events request: name: GetEventsRequest @@ -11683,6 +11895,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an event @@ -11726,6 +11940,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a event raw body data @@ -11745,6 +11961,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retry an event @@ -11810,6 +12028,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Mute an event @@ -11898,6 +12118,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "Attach operation success status", "type": "root.AttachedIntegrationToSource", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createIntegration": { "auth": true, @@ -11976,6 +12199,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteIntegration": { "auth": true, @@ -12006,6 +12232,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "An object with deleted integration id", "type": "root.DeletedIntegration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachIntegrationToSource": { "auth": true, @@ -12037,6 +12266,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "Detach operation success status", "type": "root.DetachedIntegrationFromSource", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIntegration": { "auth": true, @@ -12084,6 +12316,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIntegrations": { "auth": true, @@ -12145,6 +12380,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "List of integrations", "type": "root.IntegrationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIntegration": { "auth": true, @@ -12218,6 +12456,9 @@ docs: An event is any request that Hookdeck receives from a source. "docs": "A single integration", "type": "root.Integration", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12268,6 +12509,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get integrations request: name: GetIntegrationsRequest @@ -12311,6 +12554,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an integration request: name: CreateIntegrationRequest @@ -12368,6 +12613,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get an integration @@ -12401,6 +12648,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update an integration @@ -12454,6 +12703,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete an integration @@ -12473,6 +12724,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string source_id: string @@ -12495,6 +12748,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string source_id: string @@ -12627,6 +12882,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteIssueTrigger": { "auth": true, @@ -12657,6 +12915,9 @@ types: "docs": "An object with deleted issue trigger's id", "type": "root.DeletedIssueTriggerResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "disableIssueTrigger": { "auth": true, @@ -12703,6 +12964,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "enableIssueTrigger": { "auth": true, @@ -12749,6 +13013,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueTrigger": { "auth": true, @@ -12795,6 +13062,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueTriggers": { "auth": true, @@ -12856,6 +13126,9 @@ types: "docs": "List of issue triggers", "type": "root.IssueTriggerPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIssueTrigger": { "auth": true, @@ -12933,6 +13206,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertIssueTrigger": { "auth": true, @@ -13004,6 +13280,9 @@ types: "docs": "A single issue trigger", "type": "root.IssueTrigger", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13111,6 +13390,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get issue triggers request: name: GetIssueTriggersRequest @@ -13156,6 +13437,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create an issue trigger request: name: CreateIssueTriggerRequest @@ -13202,6 +13485,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create or update an issue trigger request: name: UpsertIssueTriggerRequest @@ -13249,6 +13534,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single issue trigger @@ -13281,6 +13568,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update an issue trigger @@ -13332,6 +13621,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Delete an issue trigger @@ -13351,6 +13642,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Disable an issue trigger @@ -13383,6 +13676,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Enable an issue trigger @@ -13481,6 +13776,9 @@ docs: >- "docs": "Dismissed issue", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssue": { "auth": true, @@ -13581,6 +13879,9 @@ docs: >- "docs": "A single issue", "type": "root.IssueWithData", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssueCount": { "auth": true, @@ -13638,6 +13939,9 @@ docs: >- "docs": "Issue count", "type": "root.IssueCount", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getIssues": { "auth": true, @@ -13748,6 +14052,9 @@ docs: >- "docs": "List of issues", "type": "root.IssueWithDataPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateIssue": { "auth": true, @@ -13818,6 +14125,9 @@ docs: >- "docs": "Updated issue", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13964,6 +14274,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get issues request: name: GetIssuesRequest @@ -14047,6 +14359,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get the number of issues request: name: GetIssueCountRequest @@ -14089,6 +14403,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a single issue @@ -14167,6 +14483,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update issue @@ -14216,6 +14534,8 @@ service: method: DELETE auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Dismiss an issue @@ -14316,6 +14636,9 @@ docs: >- "docs": "Toggle operation status response", "type": "root.ToggleWebhookNotifications", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14334,6 +14657,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Toggle webhook notifications for the workspace request: name: ToggleWebhookNotificationsRequest @@ -14430,6 +14755,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "A single request", "type": "root.Request", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestEvents": { "auth": true, @@ -14552,6 +14880,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of events", "type": "root.EventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestIgnoredEvents": { "auth": true, @@ -14617,6 +14948,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of ignored events", "type": "root.IgnoredEventPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequestRawBody": { "auth": true, @@ -14647,6 +14981,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "A request raw body data", "type": "root.RawBody", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRequests": { "auth": true, @@ -14736,6 +15073,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "List of requests", "type": "root.RequestPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retryRequest": { "auth": true, @@ -14837,6 +15177,9 @@ docs: Notifications let your team receive alerts anytime an issue changes. "docs": "Retry request operation result", "type": "root.RetryRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14933,6 +15276,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get requests request: name: GetRequestsRequest @@ -15003,6 +15348,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a request @@ -15044,6 +15391,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a request raw body data @@ -15063,6 +15412,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Retry a request @@ -15141,6 +15492,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get request events @@ -15236,6 +15589,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get request ignored events @@ -15337,6 +15692,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createRuleset": { "auth": true, @@ -15402,6 +15760,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRuleset": { "auth": true, @@ -15444,6 +15805,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRulesets": { "auth": true, @@ -15510,6 +15874,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "List of rulesets", "type": "root.RulesetPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveRuleset": { "auth": true, @@ -15552,6 +15919,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateRuleset": { "auth": true, @@ -15626,6 +15996,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertRuleset": { "auth": true, @@ -15691,6 +16064,9 @@ docs: A request represent a webhook received by Hookdeck. "docs": "A single ruleset", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15730,6 +16106,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get rulesets request: name: GetRulesetsRequest @@ -15777,6 +16155,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a ruleset request: name: CreateRulesetRequest @@ -15819,6 +16199,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a ruleset request: name: UpsertRulesetRequest @@ -15861,6 +16243,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a ruleset @@ -15889,6 +16273,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a ruleset @@ -15938,6 +16324,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a ruleset @@ -15966,6 +16354,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a ruleset @@ -16051,6 +16441,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createSource": { "auth": true, @@ -16114,6 +16507,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSource": { "auth": true, @@ -16159,6 +16555,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getSources": { "auth": true, @@ -16229,6 +16628,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "List of sources", "type": "root.SourcePaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "unarchiveSource": { "auth": true, @@ -16274,6 +16676,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSource": { "auth": true, @@ -16346,6 +16751,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertSource": { "auth": true, @@ -16409,6 +16817,9 @@ docs: A ruleset defines a group of rules that can be used across many connection "docs": "A single source", "type": "root.Source", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16448,6 +16859,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get sources request: name: GetSourcesRequest @@ -16500,6 +16913,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a source request: name: CreateSourceRequest @@ -16542,6 +16957,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a source request: name: UpsertSourceRequest @@ -16584,6 +17001,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a source @@ -16616,6 +17035,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a source @@ -16665,6 +17086,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Archive a source @@ -16697,6 +17120,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Unarchive a source @@ -16808,6 +17233,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformation": { "auth": true, @@ -16848,6 +17276,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformationExecution": { "auth": true, @@ -16911,6 +17342,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation execution", "type": "root.TransformationExecution", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformationExecutions": { "auth": true, @@ -16995,6 +17429,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "List of transformation executions", "type": "root.TransformationExecutionPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTransformations": { "auth": true, @@ -17054,6 +17491,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "List of transformations", "type": "root.TransformationPaginatedResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, "testTransformation": { "auth": true, @@ -17126,6 +17566,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "Transformation run output", "type": "root.TransformationExecutorOutput", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTransformation": { "auth": true, @@ -17197,6 +17640,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsertTransformation": { "auth": true, @@ -17264,6 +17710,9 @@ docs: A source represents any third party that sends webhooks to Hookdeck. "docs": "A single transformation", "type": "root.Transformation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17497,6 +17946,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Get transformations request: name: GetTransformationsRequest @@ -17540,6 +17991,8 @@ service: method: POST auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Create a transformation request: name: CreateTransformationRequest @@ -17587,6 +18040,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Update or create a transformation request: name: UpsertTransformationRequest @@ -17634,6 +18089,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get a transformation @@ -17662,6 +18119,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update a transformation @@ -17712,6 +18171,8 @@ service: method: PUT auth: true docs: '' + source: + openapi: ../openapi.yml display-name: Test a transformation code request: name: TestTransformationRequest @@ -17763,6 +18224,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Get transformation executions @@ -17823,6 +18286,8 @@ service: method: GET auth: true docs: '' + source: + openapi: ../openapi.yml path-parameters: id: string execution_id: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/humanloop.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/humanloop.json index 4f43aa43e42..bf2b9b6ef97 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/humanloop.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/humanloop.json @@ -6117,6 +6117,9 @@ deployed to the default Environment will be used. "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -6242,6 +6245,9 @@ If `"add"` or `"remove"`, one of the `version_id` or `environment` query paramet "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -6266,6 +6272,9 @@ If `"add"` or `"remove"`, one of the `version_id` or `environment` query paramet "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -6355,6 +6364,9 @@ Set the deployed Version for the specified Environment.", "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -6450,6 +6462,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -6535,6 +6550,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.PaginatedDataDatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listdatapoints": { "auth": true, @@ -6607,6 +6625,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.PaginatedDataDatapointResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -6683,6 +6704,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.ListDatasets", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -6768,6 +6792,9 @@ By default the deployed version of the Dataset is returned. Use the query parame "docs": "Successful Response", "type": "root.DatasetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6786,6 +6813,8 @@ service: method: GET auth: true docs: Get a list of Datasets. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: DatasetsListRequest @@ -6886,6 +6915,8 @@ service: that already exists, it will be ignored. + source: + openapi: ../openapi.yml display-name: Create Dataset request: name: DatasetRequest @@ -6989,6 +7020,8 @@ service: `version_id` or `environment` to target a specific version of the Dataset. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7050,6 +7083,8 @@ service: method: DELETE auth: true docs: Delete the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7065,6 +7100,8 @@ service: method: PATCH auth: true docs: Update the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7120,6 +7157,8 @@ service: method: GET auth: true docs: List all Datapoints for the Dataset with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7166,6 +7205,8 @@ service: method: GET auth: true docs: Get a list of the versions for a Dataset. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7220,6 +7261,8 @@ service: method: POST auth: true docs: Commit the Dataset Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7279,6 +7322,8 @@ service: Deploy Dataset to Environment. Set the deployed Version for the specified Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -7536,6 +7581,9 @@ and check its status.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -7563,6 +7611,9 @@ will not be deleted.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -7684,6 +7735,9 @@ Retrieve the Evaluation with the given ID.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getstats": { "auth": true, @@ -7749,6 +7803,9 @@ This includes the number of generated Logs for every evaluatee and Evaluator met "docs": "Successful Response", "type": "root.EvaluationStats", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -7867,6 +7924,9 @@ Retrieve a list of Evaluations that evaluate versions of the specified File.", "docs": "Successful Response", "type": "root.PaginatedDataEvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -8009,6 +8069,9 @@ Update the setup of an Evaluation by specifying the Dataset, Evaluatees, and Eva "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updatestatus": { "auth": true, @@ -8147,6 +8210,9 @@ as completed.", "docs": "Successful Response", "type": "root.EvaluationResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8170,6 +8236,8 @@ service: Retrieve a list of Evaluations that evaluate versions of the specified File. + source: + openapi: ../openapi.yml display-name: List Evaluations for File request: name: EvaluationsListRequest @@ -8267,6 +8335,8 @@ service: Evaluation and check its status. + source: + openapi: ../openapi.yml display-name: Create Evaluation request: body: @@ -8358,6 +8428,8 @@ service: Get an Evaluation. Retrieve the Evaluation with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8448,6 +8520,8 @@ service: Evaluation will not be deleted. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8468,6 +8542,8 @@ service: Update the setup of an Evaluation by specifying the Dataset, Evaluatees, and Evaluators. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8569,6 +8645,8 @@ service: uses external or human evaluators as completed. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8671,6 +8749,8 @@ service: (such as the mean and percentiles for numeric Evaluators for every evaluatee). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -8825,6 +8905,9 @@ docs: >+ "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -8923,6 +9006,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "debug": { "auth": true, @@ -9182,6 +9268,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -9206,6 +9295,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -9292,6 +9384,9 @@ will be used for calls made to the Evaluator in this Environment.", "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -9374,6 +9469,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -9463,6 +9561,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.ListEvaluators", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listdefault": { "auth": true, @@ -9522,6 +9623,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -9605,6 +9709,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.ListEvaluators", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -9690,6 +9797,9 @@ By default the deployed version of the Evaluator is returned. Use the query para "docs": "Successful Response", "type": "root.EvaluatorResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9752,6 +9862,8 @@ service: method: GET auth: true docs: Get a list of Evaluators. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: EvaluatorsListRequest @@ -9831,6 +9943,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Evaluator request: name: EvaluatorRequest @@ -9901,6 +10015,8 @@ service: `version_id` or `environment` to target a specific version of the Evaluator. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9956,6 +10072,8 @@ service: method: DELETE auth: true docs: Delete the Evaluator with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -9971,6 +10089,8 @@ service: method: PATCH auth: true docs: Update the Evaluator with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10029,6 +10149,8 @@ service: method: GET auth: true docs: Get a list of all the versions of an Evaluator. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10096,6 +10218,8 @@ service: Version will be used for calls made to the Evaluator in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10154,6 +10278,8 @@ service: method: POST auth: true docs: Commit the Evaluator Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -10210,6 +10336,8 @@ service: method: GET auth: true docs: Get a list of default evaluators for the organization. + source: + openapi: ../openapi.yml display-name: List Default Evaluators response: docs: Successful Response @@ -10250,6 +10378,8 @@ service: method: POST auth: true docs: Run a synchronous evaluator execution on a collection of datapoints. + source: + openapi: ../openapi.yml display-name: Debug request: name: RunSyncEvaluationRequest @@ -10514,6 +10644,9 @@ You can manually create Logs through the API. }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -10674,6 +10807,9 @@ You can manually create Logs through the API. "docs": "Successful Response", "type": "root.PromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLogsForFile": { "auth": true, @@ -10807,6 +10943,9 @@ You can manually create Logs through the API. "docs": "Successful Response", "type": "root.PaginatedDataPromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10825,6 +10964,8 @@ service: method: GET auth: true docs: List Logs. + source: + openapi: ../openapi.yml display-name: List request: name: ListLogsForFileLogsGetRequest @@ -10933,6 +11074,8 @@ service: method: DELETE auth: true docs: Delete Logs with the given IDs. + source: + openapi: ../openapi.yml display-name: Delete request: name: LogsDeleteRequest @@ -10948,6 +11091,8 @@ service: method: GET auth: true docs: Retrieve the Log with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -11373,6 +11518,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "PromptsCallResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "commit": { "auth": true, @@ -11485,6 +11633,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -11671,6 +11822,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -11695,6 +11849,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -11813,6 +11970,9 @@ will be used for calls made to the Prompt in this Environment.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -11927,6 +12087,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -12042,6 +12205,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.ListPrompts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -12151,6 +12317,9 @@ By default the deployed version of the Prompt is returned. Use the query paramet "docs": "Successful Response", "type": "root.ListPrompts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "log": { "auth": true, @@ -12325,6 +12494,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.CreatePromptLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -12442,6 +12614,9 @@ in the case where you are storing or deriving your Prompt details in code.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateEvaluators": { "auth": true, @@ -12547,6 +12722,9 @@ within the Prompt for monitoring purposes.", "docs": "Successful Response", "type": "root.PromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12647,6 +12825,8 @@ service: method: GET auth: true docs: Get a list of Prompts. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: PromptsListRequest @@ -12744,6 +12924,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Prompt request: name: PromptRequest @@ -12911,6 +13093,8 @@ service: `version_id` or `environment` to target a specific version of the Prompt. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -12989,6 +13173,8 @@ service: method: DELETE auth: true docs: Delete the Prompt with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13004,6 +13190,8 @@ service: method: PATCH auth: true docs: Update the Prompt with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13085,6 +13273,8 @@ service: method: GET auth: true docs: Get a list of all the versions of a Prompt. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13171,6 +13361,8 @@ service: Version will be used for calls made to the Prompt in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13252,6 +13444,8 @@ service: method: POST auth: true docs: Commit the Prompt Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13351,6 +13545,8 @@ service: in the case where you are storing or deriving your Prompt details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13530,6 +13726,8 @@ service: in the case where you are storing or deriving your Prompt details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -13761,6 +13959,8 @@ service: An activated Evaluator will automatically be run on all new Logs within the Prompt for monitoring purposes. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update Evaluators @@ -13994,6 +14194,9 @@ Log is in, nested within the evaluated Log. "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -14092,6 +14295,9 @@ Log is in, nested within the evaluated Log. "docs": "Successful Response", "type": "root.SessionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -14168,6 +14374,9 @@ Log is in, nested within the evaluated Log. "docs": "Successful Response", "type": "root.PaginatedDataSessionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14186,6 +14395,8 @@ service: method: GET auth: true docs: Retrieve the Session with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14256,6 +14467,8 @@ service: method: DELETE auth: true docs: Delete the Session with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -14271,6 +14484,8 @@ service: method: GET auth: true docs: Get a list of Sessions. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: SessionsListRequest @@ -14444,6 +14659,9 @@ docs: >+ "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -14556,6 +14774,9 @@ an exception will be raised.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -14580,6 +14801,9 @@ an exception will be raised.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deploy": { "auth": true, @@ -14674,6 +14898,9 @@ will be used for calls made to the Tool in this Environment.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -14764,6 +14991,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -14858,6 +15088,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ListTools", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTemplates": { "auth": true, @@ -14901,6 +15134,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listversions": { "auth": true, @@ -14989,6 +15225,9 @@ By default the deployed version of the Tool is returned. Use the query parameter "docs": "Successful Response", "type": "root.ListTools", }, + "source": { + "openapi": "../openapi.yml", + }, }, "log": { "auth": true, @@ -15127,6 +15366,9 @@ in the case where you are storing or deriving your Tool details in code.", "docs": "Successful Response", "type": "root.CreateToolLogResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -15220,6 +15462,9 @@ in the case where you are storing or deriving your Tool details in code.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateEvaluators": { "auth": true, @@ -15301,6 +15546,9 @@ within the Tool for monitoring purposes.", "docs": "Successful Response", "type": "root.ToolResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15319,6 +15567,8 @@ service: method: GET auth: true docs: Get a list of Tools. + source: + openapi: ../openapi.yml display-name: 'List ' request: name: ToolsListRequest @@ -15402,6 +15652,8 @@ service: committed version, an exception will be raised. + source: + openapi: ../openapi.yml display-name: Create Tool request: name: ToolRequest @@ -15486,6 +15738,8 @@ service: parameters `version_id` or `environment` to target a specific version of the Tool. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15547,6 +15801,8 @@ service: method: DELETE auth: true docs: Delete the Tool with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15562,6 +15818,8 @@ service: method: PATCH auth: true docs: Update the Tool with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15626,6 +15884,8 @@ service: method: GET auth: true docs: Get a list of all the versions of a Tool. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15697,6 +15957,8 @@ service: Version will be used for calls made to the Tool in this Environment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15761,6 +16023,8 @@ service: method: POST auth: true docs: Commit the Tool Version with the given ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15842,6 +16106,8 @@ service: This is helpful in the case where you are storing or deriving your Tool details in code. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -15960,6 +16226,8 @@ service: An activated Evaluator will automatically be run on all new Logs within the Tool for monitoring purposes. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Update Evaluators @@ -16014,6 +16282,8 @@ service: path: /tools/templates method: GET auth: true + source: + openapi: ../openapi.yml display-name: List Templates request: name: ListTemplatesToolsTemplatesGetRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hume.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hume.json index 4f2c9d4a182..27e80d62e42 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hume.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/hume.json @@ -57,6 +57,9 @@ "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "List Jobs": { "auth": true, @@ -130,6 +133,9 @@ "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "Start Job": { "auth": true, @@ -179,6 +185,9 @@ If you wish to supply more than 100 URLs, consider providing them as an archive "docs": "", "type": "JobId", }, + "source": { + "openapi": "../openapi.yaml", + }, }, }, "source": { @@ -1254,6 +1263,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: GET auth: true docs: Sort and filter jobs. + source: + openapi: ../openapi.yaml display-name: List Jobs request: name: ListJobsRequest @@ -1305,6 +1316,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: POST auth: true docs: Start a new batch job. + source: + openapi: ../openapi.yaml display-name: Start Job request: name: BaseRequest @@ -1349,6 +1362,8 @@ If you wish to supply more than 100 URLs, consider providing them as an archive method: GET auth: true docs: Get the JSON predictions of a completed job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Predictions @@ -2220,6 +2235,9 @@ types: "docs": "", "type": "root.JobRequest", }, + "source": { + "openapi": "../openapi.yaml", + }, }, "get_job_artifacts": { "auth": true, @@ -2235,6 +2253,9 @@ types: "docs": "", "type": "file", }, + "source": { + "openapi": "../openapi.yaml", + }, }, }, "source": { @@ -2251,6 +2272,8 @@ types: method: GET auth: true docs: Get the artifacts ZIP of a completed job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Artifacts @@ -2262,6 +2285,8 @@ types: method: GET auth: true docs: Get the request details and state of a given job. + source: + openapi: ../openapi.yaml path-parameters: id: string display-name: Get Job Details diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/inline-schema-reference.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/inline-schema-reference.json index a394e97e22f..cd447628f4a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/inline-schema-reference.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/inline-schema-reference.json @@ -29,6 +29,9 @@ "docs": "Successful response", "type": "GetExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -130,6 +133,8 @@ service: path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/intercom.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/intercom.json index 16ab27da26d..fec2ed289c7 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/intercom.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/intercom.json @@ -11463,6 +11463,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listActivityLogs": { "auth": true, @@ -11541,6 +11544,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "root.ActivityLogList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAdmins": { "auth": true, @@ -11582,6 +11588,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "root.Admins", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveAdmin": { "auth": true, @@ -11636,6 +11645,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Admin found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setAwayAdmin": { "auth": true, @@ -11782,6 +11794,9 @@ You can view the currently authorised admin along with the embedded app object ( "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11872,6 +11887,8 @@ service: site, and you call the `/me` endpoint to identify the logged-in user, you should not accept any sign-ins from users with unverified email addresses as it poses a potential impersonation security risk. + source: + openapi: ../openapi.yml display-name: Identify an admin response: docs: Successful response @@ -11908,6 +11925,8 @@ service: method: PUT auth: true docs: You can set an Admin as away for the Inbox. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -12012,6 +12031,8 @@ service: method: GET auth: true docs: You can get a log of activities by all admins in an app. + source: + openapi: ../openapi.yml display-name: List all activity logs request: name: ListActivityLogsRequest @@ -12073,6 +12094,8 @@ service: method: GET auth: true docs: You can fetch a list of admins for a given workspace. + source: + openapi: ../openapi.yml display-name: List all admins response: docs: Successful response @@ -12101,6 +12124,8 @@ service: method: GET auth: true docs: You can retrieve the details of a single admin. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -13313,6 +13338,9 @@ imports: "docs": "article created", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteArticle": { "auth": true, @@ -13350,6 +13378,9 @@ imports: "docs": "successful", "type": "root.DeletedArticleObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listArticles": { "auth": true, @@ -13413,6 +13444,9 @@ imports: "docs": "successful", "type": "root.Articles", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveArticle": { "auth": true, @@ -13884,6 +13918,9 @@ imports: "docs": "Article found", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchArticles": { "auth": true, @@ -13971,6 +14008,9 @@ imports: "docs": "Search successful", "type": "ArticleSearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateArticle": { "auth": true, @@ -14903,6 +14943,9 @@ imports: "docs": "successful", "type": "Article", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15142,6 +15185,8 @@ service: > Articles will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated articles first. + source: + openapi: ../openapi.yml display-name: List all articles response: docs: successful @@ -15188,6 +15233,8 @@ service: docs: >- You can create a new article by making a POST request to `https://api.intercom.io/articles`. + source: + openapi: ../openapi.yml display-name: Create an article request: body: @@ -16030,6 +16077,8 @@ service: docs: >- You can fetch the details of a single article by making a GET request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -16452,6 +16501,8 @@ service: docs: >- You can update the details of a single article by making a PUT request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -17287,6 +17338,8 @@ service: docs: >- You can delete a single article by making a DELETE request to `https://api.intercom.io/articles/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -17314,6 +17367,8 @@ service: docs: >- You can search for articles by making a GET request to `https://api.intercom.io/articles/search`. + source: + openapi: ../openapi.yml display-name: Search for articles request: name: SearchArticlesRequest @@ -17683,6 +17738,9 @@ types: "docs": "Successful", "type": "root.CompanyAttachedContacts", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListAttachedSegmentsForCompanies": { "auth": true, @@ -17729,6 +17787,9 @@ types: "docs": "Successful", "type": "root.CompanyAttachedSegments", }, + "source": { + "openapi": "../openapi.yml", + }, }, "RetrieveACompanyById": { "auth": true, @@ -17805,6 +17866,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateCompany": { "auth": true, @@ -17886,6 +17950,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachContactToACompany": { "auth": true, @@ -18092,6 +18159,9 @@ types: "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createOrUpdateCompany": { "auth": true, @@ -18179,6 +18249,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteCompany": { "auth": true, @@ -18216,6 +18289,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "root.DeletedCompanyObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachContactFromACompany": { "auth": true, @@ -18297,6 +18373,9 @@ Companies are looked up via `company_id` in a `POST` request, if not found via ` "docs": "Successful", "type": "Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllCompanies": { "auth": true, @@ -18403,6 +18482,9 @@ When using the Companies endpoint and the pages object to iterate through the re "docs": "Successful", "type": "root.Companies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveCompany": { "auth": true, @@ -18527,6 +18609,9 @@ You can fetch all companies and filter by `segment_id` or `tag_id` as a query pa "docs": "Successful", "type": "root.Companies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "scrollOverAllCompanies": { "auth": true, @@ -18629,6 +18714,9 @@ You can fetch all companies and filter by `segment_id` or `tag_id` as a query pa "docs": "Successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18791,6 +18879,8 @@ service: `https://api.intercom.io/companies?tag_id={tag_id}` `https://api.intercom.io/companies?segment_id={segment_id}` + source: + openapi: ../openapi.yml display-name: Retrieve companies request: name: RetrieveCompanyRequest @@ -18889,6 +18979,8 @@ service: {% admonition type="attention" name="Using `company_id`" %} You can set a unique `company_id` value when creating a company. However, it is not possible to update `company_id`. Be sure to set a unique value once upon creation of the company. {% /admonition %} + source: + openapi: ../openapi.yml display-name: Create or Update a company request: body: @@ -18945,6 +19037,8 @@ service: method: GET auth: true docs: You can fetch a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19004,6 +19098,8 @@ service: {% admonition type="attention" name="Using `company_id`" %} When updating a company it is not possible to update `company_id`. This can only be set once upon creation of the company. {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19058,6 +19154,8 @@ service: method: DELETE auth: true docs: You can delete a single company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19083,6 +19181,8 @@ service: method: GET auth: true docs: You can fetch a list of all contacts that belong to a company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19171,6 +19271,8 @@ service: method: GET auth: true docs: You can fetch a list of all segments that belong to a company. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19221,6 +19323,8 @@ service: You can use pagination to limit the number of results returned. The default is `20` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all companies request: name: ListAllCompaniesRequest @@ -19315,6 +19419,8 @@ service: "Request failed due to an internal network error. Please restart the scroll operation." If this happens, you will need to restart your scroll query: It is not possible to continue from a specific point when using scroll. {% /admonition %} + source: + openapi: ../openapi.yml display-name: Scroll over all companies request: name: ScrollOverAllCompaniesRequest @@ -19378,6 +19484,8 @@ service: method: POST auth: true docs: You can attach a company to a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -19522,6 +19630,8 @@ service: method: DELETE auth: true docs: You can detach a company from a single contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -19724,6 +19834,9 @@ types: "docs": "successful", "type": "root.ContactArchived", }, + "source": { + "openapi": "../openapi.yml", + }, }, "CreateContact": { "auth": true, @@ -19845,6 +19958,9 @@ types: "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "DeleteContact": { "auth": true, @@ -19882,6 +19998,9 @@ types: "docs": "successful", "type": "root.ContactDeleted", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ListContacts": { "auth": true, @@ -19987,6 +20106,9 @@ types: "docs": "successful", "type": "root.ContactList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "MergeContact": { "auth": true, @@ -20123,6 +20245,9 @@ types: "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "SearchContacts": { "auth": true, @@ -20344,6 +20469,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ShowContact": { "auth": true, @@ -20467,6 +20595,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UnarchiveContact": { "auth": true, @@ -20501,6 +20632,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactUnarchived", }, + "source": { + "openapi": "../openapi.yml", + }, }, "UpdateContact": { "auth": true, @@ -20682,6 +20816,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listCompaniesForAContact": { "auth": true, @@ -20754,6 +20891,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ContactAttachedCompanies", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSegmentsForAContact": { "auth": true, @@ -20800,6 +20940,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.Segments", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSubscriptionsForAContact": { "auth": true, @@ -20886,6 +21029,9 @@ The data property will show a combined list of: "docs": "Successful", "type": "root.SubscriptionTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTagsForAContact": { "auth": true, @@ -20932,6 +21078,9 @@ The data property will show a combined list of: "docs": "successful", "type": "root.Tags", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21160,6 +21309,8 @@ service: method: GET auth: true docs: You can fetch a list of companies that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21214,6 +21365,8 @@ service: method: GET auth: true docs: You can fetch a list of segments that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -21257,6 +21410,8 @@ service: 1.Opt-out subscription types that the user has opted-out from. 2.Opt-in subscription types that the user has opted-in to receiving. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -21311,6 +21466,8 @@ service: docs: >- You can fetch a list of all tags that are attached to a specific contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -21341,6 +21498,8 @@ service: method: GET auth: true docs: You can fetch the details of a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21436,6 +21595,8 @@ service: method: PUT auth: true docs: You can update an existing contact (ie. user or lead). + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21576,6 +21737,8 @@ service: method: DELETE auth: true docs: You can delete a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -21603,6 +21766,8 @@ service: docs: >- You can merge a contact with a `role` of `lead` into a contact with a `role` of `user`. + source: + openapi: ../openapi.yml display-name: Merge a lead and a user request: name: MergeContactsRequest @@ -21925,6 +22090,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search contacts request: body: @@ -22026,6 +22193,8 @@ service: You can use pagination to limit the number of results returned. The default is `50` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all contacts response: docs: successful @@ -22107,6 +22276,8 @@ service: method: POST auth: true docs: You can create a new contact (ie. user or lead). + source: + openapi: ../openapi.yml display-name: Create contact request: body: root.CreateContactRequestTwo @@ -22201,6 +22372,8 @@ service: method: POST auth: true docs: You can archive a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -22224,6 +22397,8 @@ service: method: POST auth: true docs: You can unarchive a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -22820,6 +22995,9 @@ If you add a contact via the email parameter and there is no user/lead found on "docs": "Attach a contact to a conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "autoAssignConversation": { "auth": true, @@ -23040,6 +23218,9 @@ It is not possible to use this endpoint with Workflows. "docs": "Assign a conversation using assignment rules", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "convertConversationToTicket": { "auth": true, @@ -23328,6 +23509,9 @@ It is not possible to use this endpoint with Workflows. "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createConversation": { "auth": true, @@ -23414,6 +23598,9 @@ This will return the Message model that has been created. "docs": "conversation created", "type": "messages.Message", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachContactFromConversation": { "auth": true, @@ -24156,6 +24343,9 @@ If you add a contact via the email parameter and there is no user/lead found on "docs": "Detach a contact from a group conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listConversations": { "auth": true, @@ -24222,6 +24412,9 @@ You can optionally request the result page size and the cursor to start after to "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "manageConversation": { "auth": true, @@ -26021,6 +26214,9 @@ You can optionally request the result page size and the cursor to start after to "docs": "Assign a conversation", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "redactConversation": { "auth": true, @@ -26431,6 +26627,9 @@ If you are redacting a conversation part, it must have a `body`. If you are reda "docs": "Redact a conversation part", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "replyConversation": { "auth": true, @@ -27836,6 +28035,9 @@ If you are redacting a conversation part, it must have a `body`. If you are reda "docs": "User last conversation reply", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveConversation": { "auth": true, @@ -28054,6 +28256,9 @@ For AI agent conversation metadata, please note that you need to have the agent "docs": "conversation found", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchConversations": { "auth": true, @@ -28323,6 +28528,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.ConversationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateConversation": { "auth": true, @@ -28827,6 +29035,9 @@ If you want to reply to a coveration or take an action such as assign, unassign, "docs": "conversation found", "type": "Conversation", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29102,6 +29313,8 @@ service: You can use pagination to limit the number of results returned. The default is `20` results per page. See the [pagination section](https://developers.intercom.com/docs/build-an-integration/learn-more/rest-apis/pagination/#pagination-for-list-apis) for more details on how to use the `starting_after` param. {% /admonition %} + source: + openapi: ../openapi.yml display-name: List all conversations request: name: ListConversationsRequest @@ -29163,6 +29376,8 @@ service: This will return the Message model that has been created. + source: + openapi: ../openapi.yml display-name: Creates a conversation request: name: CreateConversationRequest @@ -29236,6 +29451,8 @@ service: For AI agent conversation metadata, please note that you need to have the agent enabled in your workspace, which is a [paid feature](https://www.intercom.com/help/en/articles/8205718-fin-resolutions#h_97f8c2e671). + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -29403,6 +29620,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -30098,6 +30317,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search conversations request: body: @@ -30226,6 +30447,8 @@ service: docs: >- You can reply to a conversation with a message from an admin or on behalf of a contact, or with a note for admins. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -31306,6 +31529,8 @@ service: - Snooze a conversation to reopen on a future date - Open a conversation which is `snoozed` or `closed` - Assign a conversation to an admin and/or team. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -32676,6 +32901,8 @@ service: It is not possible to use this endpoint with Workflows. {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -32851,6 +33078,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -33153,6 +33382,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -33716,6 +33947,8 @@ service: {% /admonition %} + source: + openapi: ../openapi.yml display-name: Redact a conversation part request: body: root.RedactConversationRequest @@ -34022,6 +34255,8 @@ service: method: POST auth: true docs: You can convert a conversation to a ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -34730,6 +34965,9 @@ types: "docs": "Successful", "type": "DataAttribute", }, + "source": { + "openapi": "../openapi.yml", + }, }, "lisDataAttributes": { "auth": true, @@ -35144,6 +35382,9 @@ types: "docs": "Successful response", "type": "root.DataAttributeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateDataAttribute": { "auth": true, @@ -35350,6 +35591,9 @@ You can update a data attribute. "docs": "Successful", "type": "DataAttribute", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -35618,6 +35862,8 @@ service: docs: >- You can fetch a list of all data attributes belonging to a workspace for contacts, companies or conversations. + source: + openapi: ../openapi.yml display-name: List all data attributes request: name: LisDataAttributesRequest @@ -35979,6 +36225,8 @@ service: method: POST auth: true docs: You can create a data attributes for a `contact` or a `company`. + source: + openapi: ../openapi.yml display-name: Create a data attribute request: name: CreateDataAttributeRequest @@ -36188,6 +36436,8 @@ service: > It is currently a dangerous action to execute changing a data attribute's type via the API. You will need to update the type via the UI instead. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -36413,6 +36663,9 @@ Duplicated events are responded to using the normal `202 Accepted` code - an err "body": "root.CreateDataEventRequestTwo", "content-type": "application/json", }, + "source": { + "openapi": "../openapi.yml", + }, }, "dataEventSummaries": { "auth": true, @@ -36449,6 +36702,9 @@ Duplicated events are responded to using the normal `202 Accepted` code - an err "name": "CreateDataEventSummariesRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "lisDataEvents": { "auth": true, @@ -36492,6 +36748,9 @@ You can optionally define the result page size as well with the `per_page` param "docs": "Successful response", "type": "root.DataEventSummary", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36737,6 +36996,8 @@ service: You can optionally define the result page size as well with the `per_page` parameter. + source: + openapi: ../openapi.yml display-name: List all data events request: name: LisDataEventsRequest @@ -36890,6 +37151,8 @@ service: - Server errors will return a `500` response code and may contain an error message in the body. + source: + openapi: ../openapi.yml display-name: Submit a data event request: body: root.CreateDataEventRequestTwo @@ -36905,6 +37168,8 @@ service: number of times an event has occurred, the first time it occurred and the last time it occurred. + source: + openapi: ../openapi.yml display-name: Create event summaries request: name: CreateDataEventSummariesRequest @@ -36974,6 +37239,9 @@ docs: Everything about your Data Events "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createDataExport": { "auth": true, @@ -37036,6 +37304,9 @@ The only parameters you need to provide are the range of dates that you want exp "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, "downloadDataExport": { "auth": true, @@ -37064,6 +37335,9 @@ Your exported message data will be streamed continuously back down to you in a g "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDataExport": { "auth": true, @@ -37103,6 +37377,9 @@ Your exported message data will be streamed continuously back down to you in a g "docs": "successful", "type": "DataExport", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37195,6 +37472,8 @@ Your exported message data will be streamed continuously back down to you in a g > Requesting data for 2018-06-01 until 2018-06-30 will get all data for those days including those specified - e.g. 2018-06-01 00:00:00 until 2018-06-30 23:59:99. + source: + openapi: ../openapi.yml display-name: Create content data export request: name: CreateDataExportsRequest @@ -37244,6 +37523,8 @@ Your exported message data will be streamed continuously back down to you in a g download from the provided URL) will have an expiry limit of two days from when the export ob completed. After this, the data will no longer be available. + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -37267,6 +37548,8 @@ Your exported message data will be streamed continuously back down to you in a g method: POST auth: true docs: You can cancel your job + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -37305,6 +37588,8 @@ Your exported message data will be streamed continuously back down to you in a g > You will have to specify the header Accept: `application/octet-stream` when hitting this endpoint. + source: + openapi: ../openapi.yml path-parameters: job_identifier: type: string @@ -37829,6 +38114,9 @@ types: "docs": "collection created", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteCollection": { "auth": true, @@ -37866,6 +38154,9 @@ types: "docs": "successful", "type": "root.DeletedCollectionObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllCollections": { "auth": true, @@ -37935,6 +38226,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Successful", "type": "root.Collections", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listHelpCenters": { "auth": true, @@ -37971,6 +38265,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Help Centers found", "type": "HelpCenterList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveCollection": { "auth": true, @@ -38205,6 +38502,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Collection found", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveHelpCenter": { "auth": true, @@ -38246,6 +38546,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "Collection found", "type": "HelpCenter", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateCollection": { "auth": true, @@ -38721,6 +39024,9 @@ Collections will be returned in descending order on the `updated_at` attribute. "docs": "successful", "type": "Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38859,6 +39165,8 @@ service: Collections will be returned in descending order on the `updated_at` attribute. This means if you need to iterate through results then we'll show the most recently updated collections first. + source: + openapi: ../openapi.yml display-name: List all collections response: docs: Successful @@ -38911,6 +39219,8 @@ service: docs: >- You can create a new collection by making a POST request to `https://api.intercom.io/help_center/collections.` + source: + openapi: ../openapi.yml display-name: Create a collection request: name: CreateCollectionRequest @@ -39288,6 +39598,8 @@ service: docs: >- You can fetch the details of a single collection by making a GET request to `https://api.intercom.io/help_center/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -39474,6 +39786,8 @@ service: docs: >- You can update the details of a single collection by making a PUT request to `https://api.intercom.io/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -39853,6 +40167,8 @@ service: docs: >- You can delete a single collection by making a DELETE request to `https://api.intercom.io/collections/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -39880,6 +40196,8 @@ service: docs: >- You can fetch the details of a single Help Center by making a GET request to `https://api.intercom.io/help_center/help_center/`. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -39911,6 +40229,8 @@ service: docs: >- You can list all Help Centers by making a GET request to `https://api.intercom.io/help_center/help_centers`. + source: + openapi: ../openapi.yml display-name: List all Help Centers response: docs: Help Centers found @@ -40300,6 +40620,9 @@ This will return the Message model that has been created. "docs": "admin message created", "type": "Message", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40391,6 +40714,8 @@ service: > As this is a message, there will be no conversation present until the contact responds. Once they do, you will have to search for a contact's conversations with the id of the message. + source: + openapi: ../openapi.yml display-name: Create a message request: body: root.CreateMessageRequestOne @@ -40696,6 +41021,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteNewsItem": { "auth": true, @@ -40733,6 +41061,9 @@ types: "docs": "successful", "type": "root.DeletedObject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listLiveNewsfeedItems": { "auth": true, @@ -40787,6 +41118,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNewsItems": { "auth": true, @@ -40839,6 +41173,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNewsfeeds": { "auth": true, @@ -40891,6 +41228,9 @@ types: "docs": "successful", "type": "root.PaginatedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNewsItem": { "auth": true, @@ -40950,6 +41290,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNewsfeed": { "auth": true, @@ -40987,6 +41330,9 @@ types: "docs": "successful", "type": "Newsfeed", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateNewsItem": { "auth": true, @@ -41101,6 +41447,9 @@ types: "docs": "successful", "type": "NewsItem", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -41240,6 +41589,8 @@ service: method: GET auth: true docs: You can fetch a list of all news items + source: + openapi: ../openapi.yml display-name: List all news items response: docs: successful @@ -41276,6 +41627,8 @@ service: method: POST auth: true docs: You can create a news item + source: + openapi: ../openapi.yml display-name: Create a news item request: body: @@ -41331,6 +41684,8 @@ service: method: GET auth: true docs: You can fetch the details of a single news item. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41372,6 +41727,8 @@ service: path: /news/news_items/{id} method: PUT auth: true + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41453,6 +41810,8 @@ service: method: DELETE auth: true docs: You can delete a single news item. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -41478,6 +41837,8 @@ service: method: GET auth: true docs: You can fetch a list of all news items that are live on a given newsfeed + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -41517,6 +41878,8 @@ service: method: GET auth: true docs: You can fetch a list of all newsfeeds + source: + openapi: ../openapi.yml display-name: List all newsfeeds response: docs: successful @@ -41553,6 +41916,8 @@ service: method: GET auth: true docs: You can fetch the details of a single newsfeed + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -41883,6 +42248,9 @@ types: "docs": "Successful response", "type": "Note", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listNotes": { "auth": true, @@ -41990,6 +42358,9 @@ types: "docs": "Successful response", "type": "root.NoteList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveNote": { "auth": true, @@ -42054,6 +42425,9 @@ types: "docs": "Note found", "type": "Note", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -42123,6 +42497,8 @@ service: method: GET auth: true docs: You can fetch a list of notes that are associated to a contact. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -42203,6 +42579,8 @@ service: method: POST auth: true docs: You can add a note to a single contact. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -42332,6 +42710,8 @@ service: method: GET auth: true docs: You can fetch the details of a single note. + source: + openapi: ../openapi.yml path-parameters: id: type: integer @@ -42482,6 +42862,9 @@ types: "docs": "Successful response", "type": "root.SegmentList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveSegment": { "auth": true, @@ -42523,6 +42906,9 @@ types: "docs": "Successful response", "type": "Segment", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -42589,6 +42975,8 @@ service: method: GET auth: true docs: You can fetch a list of all segments. + source: + openapi: ../openapi.yml display-name: List all segments request: name: ListSegmentsRequest @@ -42628,6 +43016,8 @@ service: method: GET auth: true docs: You can fetch the details of a single segment. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -42853,6 +43243,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "SubscriptionType", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachSubscriptionTypeToContact": { "auth": true, @@ -42911,6 +43304,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "SubscriptionType", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listSubscriptionTypes": { "auth": true, @@ -42959,6 +43355,9 @@ This will return a subscription type model for the subscription type that was ad "docs": "Successful", "type": "root.SubscriptionTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -43054,6 +43453,8 @@ service: This will return a subscription type model for the subscription type that was added to the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -43153,6 +43554,8 @@ service: You can remove a specific subscription from a contact. This will return a subscription type model for the subscription type that was removed from the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -43197,6 +43600,8 @@ service: docs: >- You can list all subscription types. A list of subscription type objects will be returned. + source: + openapi: ../openapi.yml display-name: List subscription types response: docs: Successful @@ -43387,6 +43792,9 @@ If custom attributes are specified, they will be added to the user or lead's cus "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -43413,6 +43821,8 @@ service: If custom attributes are specified, they will be added to the user or lead's custom data attributes. + source: + openapi: ../openapi.yml display-name: Create a phone Switch request: body: @@ -43584,6 +43994,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachTagToConversation": { "auth": true, @@ -43670,6 +44083,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "attachTagToTicket": { "auth": true, @@ -43756,6 +44172,9 @@ docs: Everything about Switch "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createTag": { "auth": true, @@ -43874,6 +44293,9 @@ Each operation will return a tag object. "docs": "Action successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTag": { "auth": true, @@ -43900,6 +44322,9 @@ Each operation will return a tag object. "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromContact": { "auth": true, @@ -43947,6 +44372,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromConversation": { "auth": true, @@ -44055,6 +44483,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "detachTagFromTicket": { "auth": true, @@ -44163,6 +44594,9 @@ Each operation will return a tag object. "docs": "successful", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "findTag": { "auth": true, @@ -44207,6 +44641,9 @@ This will return a tag object. "docs": "Tag found", "type": "Tag", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTags": { "auth": true, @@ -44245,6 +44682,9 @@ This will return a tag object. "docs": "successful", "type": "root.Tags", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44316,6 +44756,8 @@ service: docs: >- You can tag a specific contact. This will return a tag object for the tag that was added to the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -44385,6 +44827,8 @@ service: docs: >- You can remove tag from a specific contact. This will return a tag object for the tag that was removed from the contact. + source: + openapi: ../openapi.yml path-parameters: contact_id: type: string @@ -44420,6 +44864,8 @@ service: docs: >- You can tag a specific conversation. This will return a tag object for the tag that was added to the conversation. + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -44480,6 +44926,8 @@ service: docs: >- You can remove tag from a specific conversation. This will return a tag object for the tag that was removed from the conversation. + source: + openapi: ../openapi.yml path-parameters: conversation_id: type: string @@ -44555,6 +45003,8 @@ service: docs: |+ You can fetch a list of all tags for a given workspace. + source: + openapi: ../openapi.yml display-name: List all tags response: docs: successful @@ -44591,6 +45041,8 @@ service: **5. Tag Multiple Users:** You can tag a list of users. You can tag the users by passing in the tag name and the user details as specified in "Tag Users Request Payload" described below. Each operation will return a tag object. + source: + openapi: ../openapi.yml display-name: Create or update a tag, Tag or untag companies, Tag contacts request: body: CreateTagRequestBody @@ -44662,6 +45114,8 @@ service: docs: | You can fetch the details of tags that are on the workspace by their id. This will return a tag object. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44693,6 +45147,8 @@ service: docs: >- You can delete the details of tags that are on the workspace by passing in the id. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -44712,6 +45168,8 @@ service: docs: >- You can tag a specific ticket. This will return a tag object for the tag that was added to the ticket. + source: + openapi: ../openapi.yml path-parameters: ticket_id: type: string @@ -44772,6 +45230,8 @@ service: docs: >- You can remove tag from a specific ticket. This will return a tag object for the tag that was removed from the ticket. + source: + openapi: ../openapi.yml path-parameters: ticket_id: type: string @@ -44923,6 +45383,9 @@ types: "docs": "successful", "type": "root.TeamList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveTeam": { "auth": true, @@ -44971,6 +45434,9 @@ types: "docs": "successful", "type": "Team", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45018,6 +45484,8 @@ service: method: GET auth: true docs: This will return a list of team objects for the App. + source: + openapi: ../openapi.yml display-name: List all teams response: docs: successful @@ -45042,6 +45510,8 @@ service: docs: >- You can fetch the details of a single team, containing an array of admins that belong to this team. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -45218,6 +45688,9 @@ types: "docs": "Ticket Type Attribute created", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicketTypeAttribute": { "auth": true, @@ -45332,6 +45805,9 @@ types: "docs": "Ticket Type Attribute updated", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45380,6 +45856,8 @@ service: method: POST auth: true docs: You can create a new attribute for a ticket type. + source: + openapi: ../openapi.yml path-parameters: ticket_type_id: type: string @@ -45481,6 +45959,8 @@ service: method: PUT auth: true docs: You can update an existing attribute for a ticket type. + source: + openapi: ../openapi.yml path-parameters: ticket_type_id: type: string @@ -45676,6 +46156,9 @@ docs: Everything about your ticket type attributes "docs": "Ticket type created", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTicketType": { "auth": true, @@ -45743,6 +46226,9 @@ docs: Everything about your ticket type attributes "docs": "Ticket type found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTicketTypes": { "auth": true, @@ -45782,6 +46268,9 @@ docs: Everything about your ticket type attributes "docs": "successful", "type": "root.TicketTypeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicketType": { "auth": true, @@ -45864,6 +46353,9 @@ You can update a ticket type. "docs": "Ticket type updated", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -45883,6 +46375,8 @@ service: method: GET auth: true docs: You can get a list of all ticket types for a workspace. + source: + openapi: ../openapi.yml display-name: List all ticket types response: docs: successful @@ -45921,6 +46415,8 @@ service: > For the `icon` propery, use an emoji from [Twemoji Cheatsheet](https://twemoji-cheatsheet.vercel.app/) + source: + openapi: ../openapi.yml display-name: Create a ticket type request: body: @@ -45974,6 +46470,8 @@ service: method: GET auth: true docs: You can fetch the details of a single ticket type. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46036,6 +46534,8 @@ service: > For the `icon` propery, use an emoji from [Twemoji Cheatsheet](https://twemoji-cheatsheet.vercel.app/) + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -46257,6 +46757,9 @@ docs: Everything about your ticket types "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTicket": { "auth": true, @@ -46376,6 +46879,9 @@ docs: Everything about your ticket types "docs": "Ticket found", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "replyTicket": { "auth": true, @@ -46706,6 +47212,9 @@ docs: Everything about your ticket types "docs": "Admin quick_reply reply", "type": "root.TicketReply", }, + "source": { + "openapi": "../openapi.yml", + }, }, "searchTickets": { "auth": true, @@ -46910,6 +47419,9 @@ The table below shows the operators you can use to define how you want to search "docs": "successful", "type": "root.TicketList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTicket": { "auth": true, @@ -47683,6 +48195,9 @@ The table below shows the operators you can use to define how you want to search "docs": "Successful response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -48339,6 +48854,8 @@ service: docs: >- You can reply to a ticket with a message from an admin or on behalf of a contact, or with a note for admins. + source: + openapi: ../openapi.yml path-parameters: id: string display-name: Reply to a ticket @@ -48606,6 +49123,8 @@ service: method: POST auth: true docs: You can create a new ticket. + source: + openapi: ../openapi.yml display-name: Create a ticket request: name: CreateTicketRequest @@ -48721,6 +49240,8 @@ service: method: GET auth: true docs: You can fetch the details of a single ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -48809,6 +49330,8 @@ service: method: PUT auth: true docs: You can update a ticket. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -49563,6 +50086,8 @@ service: | $ | String | Ends With | + source: + openapi: ../openapi.yml display-name: Search tickets request: body: @@ -49823,6 +50348,9 @@ docs: Everything about your tickets "docs": "successful", "type": "contacts.Contact", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieveVisitorWithUserId": { "auth": true, @@ -49950,6 +50478,9 @@ docs: Everything about your tickets "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateVisitor": { "auth": true, @@ -50179,6 +50710,9 @@ docs: Everything about your tickets "docs": "successful", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -50198,6 +50732,8 @@ service: method: GET auth: true docs: You can fetch the details of a single visitor. + source: + openapi: ../openapi.yml display-name: Retrieve a visitor with User ID request: name: RetrieveVisitorWithUserIdRequest @@ -50306,6 +50842,8 @@ service: **Option 2.** You can update a visitor by passing in the `id` of the visitor in the Request body. + source: + openapi: ../openapi.yml display-name: Update a visitor request: body: root.UpdateVisitorRequestOne @@ -50495,6 +51033,8 @@ service: Visitor deleted and the User returned. If the User does not exist, the Visitor will be converted to a User, with the User identifiers replacing it's Visitor identifiers. + source: + openapi: ../openapi.yml display-name: Convert a visitor request: name: ConvertVisitorRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/merge.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/merge.json index 8c460f4f554..c7562dbd930 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/merge.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/merge.json @@ -9289,6 +9289,9 @@ Fetch from the `LIST TimeOffs` endpoint and filter by `ID` to show all time off "docs": "", "type": "root.AccountDetails", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9307,6 +9310,8 @@ service: method: GET auth: true docs: Get details for a linked account. + source: + openapi: ../openapi.yml response: docs: '' type: root.AccountDetails @@ -9378,6 +9383,9 @@ service: "docs": "", "type": "root.AccountToken", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9398,6 +9406,8 @@ service: docs: >- Returns the account token for the end user with the provided public token. + source: + openapi: ../openapi.yml path-parameters: public_token: string response: @@ -9486,6 +9496,9 @@ service: "docs": "", "type": "root.AvailableActions", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9504,6 +9517,8 @@ service: method: GET auth: true docs: Returns a list of models and actions available for an account. + source: + openapi: ../openapi.yml response: docs: '' type: root.AvailableActions @@ -9672,6 +9687,9 @@ service: "docs": "", "type": "root.PaginatedBankInfoList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -9745,6 +9763,9 @@ service: "docs": "", "type": "root.BankInfo", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9804,6 +9825,8 @@ service: method: GET auth: true docs: Returns a list of `BankInfo` objects. + source: + openapi: ../openapi.yml request: name: BankInfoListRequest query-parameters: @@ -9908,6 +9931,8 @@ service: method: GET auth: true docs: Returns a `BankInfo` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10072,6 +10097,9 @@ service: "docs": "", "type": "root.PaginatedBenefitList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10138,6 +10166,9 @@ service: "docs": "", "type": "root.Benefit", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10156,6 +10187,8 @@ service: method: GET auth: true docs: Returns a list of `Benefit` objects. + source: + openapi: ../openapi.yml request: name: BenefitsListRequest query-parameters: @@ -10241,6 +10274,8 @@ service: method: GET auth: true docs: Returns a `Benefit` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10392,6 +10427,9 @@ service: "docs": "", "type": "root.PaginatedCompanyList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10454,6 +10492,9 @@ service: "docs": "", "type": "root.Company", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10472,6 +10513,8 @@ service: method: GET auth: true docs: Returns a list of `Company` objects. + source: + openapi: ../openapi.yml request: name: CompaniesListRequest query-parameters: @@ -10546,6 +10589,8 @@ service: method: GET auth: true docs: Returns a `Company` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -10606,6 +10651,9 @@ service: "method": "POST", "pagination": undefined, "path": "/delete-account", + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10622,6 +10670,8 @@ service: method: POST auth: true docs: Delete a linked account. + source: + openapi: ../openapi.yml examples: - headers: {} source: @@ -10795,6 +10845,9 @@ service: "docs": "", "type": "root.PaginatedEmployeePayrollRunList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -10960,6 +11013,9 @@ service: "docs": "", "type": "root.EmployeePayrollRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11023,6 +11079,8 @@ service: method: GET auth: true docs: Returns a list of `EmployeePayrollRun` objects. + source: + openapi: ../openapi.yml request: name: EmployeePayrollRunsListRequest query-parameters: @@ -11158,6 +11216,8 @@ service: method: GET auth: true docs: Returns an `EmployeePayrollRun` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -11408,6 +11468,9 @@ service: "docs": "", "type": "root.EmployeeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "ignoreCreate": { "auth": true, @@ -11449,6 +11512,9 @@ service: "name": "IgnoreCommonModelRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -11654,6 +11720,9 @@ service: "docs": "", "type": "root.PaginatedEmployeeList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaPostRetrieve": { "auth": true, @@ -11686,6 +11755,9 @@ service: "docs": "", "type": "root.MetaResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -11791,6 +11863,9 @@ service: "docs": "", "type": "root.Employee", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15191,6 +15266,8 @@ service: method: GET auth: true docs: Returns a list of `Employee` objects. + source: + openapi: ../openapi.yml request: name: EmployeesListRequest query-parameters: @@ -15373,6 +15450,8 @@ service: method: POST auth: true docs: Creates an `Employee` object with the given values. + source: + openapi: ../openapi.yml request: name: EmployeeEndpointRequest query-parameters: @@ -15467,6 +15546,8 @@ service: method: GET auth: true docs: Returns an `Employee` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -15555,6 +15636,8 @@ service: will have their properties set to null, and will not be updated in future syncs. The "reason" and "message" fields in the request body will be stored for audit purposes. + source: + openapi: ../openapi.yml path-parameters: model_id: string request: @@ -15579,6 +15662,8 @@ service: method: GET auth: true docs: Returns metadata for `Employee` POSTs. + source: + openapi: ../openapi.yml response: docs: '' type: root.MetaResponse @@ -15725,6 +15810,9 @@ service: "docs": "", "type": "root.PaginatedEmploymentList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -15802,6 +15890,9 @@ service: "docs": "", "type": "root.Employment", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16228,6 +16319,8 @@ service: method: GET auth: true docs: Returns a list of `Employment` objects. + source: + openapi: ../openapi.yml request: name: EmploymentsListRequest query-parameters: @@ -16323,6 +16416,8 @@ service: method: GET auth: true docs: Returns an `Employment` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -16418,6 +16513,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16441,6 +16539,8 @@ service: for monthly, quarterly, and highest sync frequency customers on the Core, Professional, or Enterprise plans. Doing so will consume a sync credit for the relevant linked account. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -16511,6 +16611,9 @@ service: "docs": "", "type": "root.RemoteKey", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16529,6 +16632,8 @@ service: method: POST auth: true docs: Create a remote key. + source: + openapi: ../openapi.yml request: name: GenerateRemoteKeyRequest body: @@ -16663,6 +16768,9 @@ service: "docs": "", "type": "root.PaginatedGroupList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -16729,6 +16837,9 @@ service: "docs": "", "type": "root.Group", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16747,6 +16858,8 @@ service: method: GET auth: true docs: Returns a list of `Group` objects. + source: + openapi: ../openapi.yml request: name: GroupsListRequest query-parameters: @@ -16829,6 +16942,8 @@ service: method: GET auth: true docs: Returns a `Group` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -16972,6 +17087,9 @@ service: "docs": "", "type": "root.PaginatedIssueList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -17010,6 +17128,9 @@ service: "docs": "", "type": "root.Issue", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17046,6 +17167,8 @@ service: method: GET auth: true docs: Gets issues. + source: + openapi: ../openapi.yml request: name: IssuesListRequest query-parameters: @@ -17123,6 +17246,8 @@ service: method: GET auth: true docs: Get a specific issue. + source: + openapi: ../openapi.yml path-parameters: id: string response: @@ -17262,6 +17387,9 @@ service: "docs": "", "type": "root.LinkToken", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17280,6 +17408,8 @@ service: method: POST auth: true docs: Creates a link token to be used when linking a new end user. + source: + openapi: ../openapi.yml request: name: EndUserDetailsRequest body: @@ -17496,6 +17626,9 @@ service: "docs": "", "type": "root.PaginatedAccountDetailsAndActionsList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17542,6 +17675,8 @@ service: method: GET auth: true docs: List linked accounts for your organization. + source: + openapi: ../openapi.yml request: name: LinkedAccountsListRequest query-parameters: @@ -17773,6 +17908,9 @@ service: "docs": "", "type": "root.PaginatedLocationList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -17845,6 +17983,9 @@ service: "docs": "", "type": "root.Location", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17863,6 +18004,8 @@ service: method: GET auth: true docs: Returns a list of `Location` objects. + source: + openapi: ../openapi.yml request: name: LocationsListRequest query-parameters: @@ -17946,6 +18089,8 @@ service: method: GET auth: true docs: Returns a `Location` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18095,6 +18240,9 @@ service: "docs": "", "type": "root.RemoteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18113,6 +18261,8 @@ service: method: POST auth: true docs: Pull data from an endpoint not currently supported by Merge. + source: + openapi: ../openapi.yml request: name: DataPassthroughRequest body: @@ -18273,6 +18423,9 @@ service: "docs": "", "type": "root.PaginatedPayGroupList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -18329,6 +18482,9 @@ service: "docs": "", "type": "root.PayGroup", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18347,6 +18503,8 @@ service: method: GET auth: true docs: Returns a list of `PayGroup` objects. + source: + openapi: ../openapi.yml request: name: PayGroupsListRequest query-parameters: @@ -18416,6 +18574,8 @@ service: method: GET auth: true docs: Returns a `PayGroup` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18588,6 +18748,9 @@ service: "docs": "", "type": "root.PaginatedPayrollRunList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -18656,6 +18819,9 @@ service: "docs": "", "type": "root.PayrollRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -18782,6 +18948,8 @@ service: method: GET auth: true docs: Returns a list of `PayrollRun` objects. + source: + openapi: ../openapi.yml request: name: PayrollRunsListRequest query-parameters: @@ -18898,6 +19066,8 @@ service: method: GET auth: true docs: Returns a `PayrollRun` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -18997,6 +19167,9 @@ service: "docs": "", "type": "root.RemoteKey", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19015,6 +19188,8 @@ service: method: POST auth: true docs: Exchange remote keys. + source: + openapi: ../openapi.yml request: name: RemoteKeyForRegenerationRequest body: @@ -19080,6 +19255,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "configurationsUpdate": { "auth": true, @@ -19134,6 +19312,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaList": { "auth": true, @@ -19191,6 +19372,9 @@ service: "docs": "", "type": "root.PaginatedConditionSchemaList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19209,6 +19393,8 @@ service: method: GET auth: true docs: Get a linked account's selective syncs. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -19229,6 +19415,8 @@ service: method: PUT auth: true docs: Replace a linked account's selective syncs. + source: + openapi: ../openapi.yml request: name: LinkedAccountSelectiveSyncConfigurationListRequest body: @@ -19260,6 +19448,8 @@ service: method: GET auth: true docs: Get metadata for the conditions available to a linked account. + source: + openapi: ../openapi.yml request: name: SelectiveSyncMetaListRequest query-parameters: @@ -19351,6 +19541,9 @@ service: "docs": "", "type": "root.PaginatedSyncStatusList", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19371,6 +19564,8 @@ service: docs: >- Get syncing status. Possible values: `DISABLED`, `DONE`, `FAILED`, `PARTIALLY_SYNCED`, `PAUSED`, `SYNCING` + source: + openapi: ../openapi.yml request: name: SyncStatusListRequest query-parameters: @@ -19507,6 +19702,9 @@ service: "docs": "", "type": "root.PaginatedTeamList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -19568,6 +19766,9 @@ service: "docs": "", "type": "root.Team", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19586,6 +19787,8 @@ service: method: GET auth: true docs: Returns a list of `Team` objects. + source: + openapi: ../openapi.yml request: name: TeamsListRequest query-parameters: @@ -19664,6 +19867,8 @@ service: method: GET auth: true docs: Returns a `Team` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -19821,6 +20026,9 @@ service: "docs": "", "type": "root.TimeOffResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -19958,6 +20166,9 @@ service: "docs": "", "type": "root.PaginatedTimeOffList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "metaPostRetrieve": { "auth": true, @@ -19990,6 +20201,9 @@ service: "docs": "", "type": "root.MetaResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -20066,6 +20280,9 @@ service: "docs": "", "type": "root.TimeOff", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20337,6 +20554,8 @@ service: method: GET auth: true docs: Returns a list of `TimeOff` objects. + source: + openapi: ../openapi.yml request: name: TimeOffListRequest query-parameters: @@ -20466,6 +20685,8 @@ service: method: POST auth: true docs: Creates a `TimeOff` object with the given values. + source: + openapi: ../openapi.yml request: name: TimeOffEndpointRequest query-parameters: @@ -20538,6 +20759,8 @@ service: method: GET auth: true docs: Returns a `TimeOff` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -20595,6 +20818,8 @@ service: method: GET auth: true docs: Returns metadata for `TimeOff` POSTs. + source: + openapi: ../openapi.yml response: docs: '' type: root.MetaResponse @@ -20742,6 +20967,9 @@ service: "docs": "", "type": "root.PaginatedTimeOffBalanceList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "retrieve": { "auth": true, @@ -20813,6 +21041,9 @@ service: "docs": "", "type": "root.TimeOffBalance", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20857,6 +21088,8 @@ service: method: GET auth: true docs: Returns a list of `TimeOffBalance` objects. + source: + openapi: ../openapi.yml request: name: TimeOffBalancesListRequest query-parameters: @@ -20962,6 +21195,8 @@ service: method: GET auth: true docs: Returns a `TimeOffBalance` object with the given `id`. + source: + openapi: ../openapi.yml path-parameters: id: string request: @@ -21078,6 +21313,9 @@ service: "docs": "", "type": "root.WebhookReceiver", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -21103,6 +21341,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -21121,6 +21362,8 @@ service: method: GET auth: true docs: Returns a list of `WebhookReceiver` objects. + source: + openapi: ../openapi.yml response: docs: '' type: list @@ -21136,6 +21379,8 @@ service: method: POST auth: true docs: Creates a `WebhookReceiver` object with the given values. + source: + openapi: ../openapi.yml request: name: WebhookReceiverRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/multi-url-generators-yml.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/multi-url-generators-yml.json index e8fc18fdc72..2136dc9d29b 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/multi-url-generators-yml.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/multi-url-generators-yml.json @@ -46,6 +46,9 @@ "docs": "Successful response", "type": "Token", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getUserInformation": { "auth": false, @@ -80,6 +83,9 @@ "docs": "Successful response", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listUsers": { "auth": false, @@ -108,6 +114,9 @@ "docs": "Successful response", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -158,6 +167,8 @@ service: method: GET auth: false docs: List information about all users + source: + openapi: ../openapi.yml display-name: List Users response: docs: Successful response @@ -177,6 +188,8 @@ service: method: GET auth: false docs: Retrieve detailed information about a specific user + source: + openapi: ../openapi.yml path-parameters: userId: string display-name: Get user information @@ -200,6 +213,8 @@ service: method: GET auth: false docs: Retrieve an authentication token for the API + source: + openapi: ../openapi.yml display-name: Get authentication token response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/non-alphanumeric-characters.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/non-alphanumeric-characters.json index 7c1dc9590db..43fd15d72e3 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/non-alphanumeric-characters.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/non-alphanumeric-characters.json @@ -33,6 +33,9 @@ "docs": "OK", "type": "Settings", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -86,6 +89,8 @@ path: /settings method: PATCH auth: false + source: + openapi: ../openapi.yml request: body: Settings content-type: application/json diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/oauth.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/oauth.json index 8534b706fb1..0003523d14a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/oauth.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/oauth.json @@ -105,6 +105,9 @@ "docs": "Successful token response", "type": "AuthGetTokenResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -170,6 +173,8 @@ service: method: POST auth: false docs: Exchange credentials or refresh token for an access token + source: + openapi: ../openapi.yml display-name: Request an access token request: name: AuthGetTokenRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/permit.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/permit.json index 82a52ffcb00..696d61fadef 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/permit.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/permit.json @@ -4429,6 +4429,9 @@ types: "docs": "Successful Response", "type": "root.TenantCreateBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_create_users": { "auth": true, @@ -4496,6 +4499,9 @@ types: "docs": "Successful Response", "type": "root.UserCreateBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_delete_tenants": { "auth": true, @@ -4550,6 +4556,9 @@ types: "docs": "Successful Response", "type": "root.TenantDeleteBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_delete_users": { "auth": true, @@ -4604,6 +4613,9 @@ types: "docs": "Successful Response", "type": "root.UserDeleteBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_replace_users": { "auth": true, @@ -4671,6 +4683,9 @@ types: "docs": "Successful Response", "type": "root.UserReplaceBulkOperationResult", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -4688,6 +4703,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -4734,6 +4751,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -4780,6 +4799,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/users method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -4817,6 +4838,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/tenants method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -4859,6 +4882,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/bulk/tenants method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -5008,6 +5033,9 @@ If the permission is already granted, it is skipped.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_set_permissions": { "auth": true, @@ -5085,6 +5113,9 @@ If the permission is already granted, it is skipped.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_set_permissions": { "auth": true, @@ -5153,6 +5184,9 @@ If the permission is not granted, it is skipped.", "name": "ConditionSetRuleRemove", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -5181,6 +5215,8 @@ service: - If the `resource_set` filter is present, will only return the permissions set of that resource set. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -5246,6 +5282,8 @@ service: Grant permissions to a user set *on* a resource set. If the permission is already granted, it is skipped. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -5325,6 +5363,8 @@ service: Revokes permissions to a user set *on* a resource set. If the permission is not granted, it is skipped. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -5616,6 +5656,9 @@ If we check the checkbox where `us_based_employees` and `private_repos->clone` a "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_condition_set": { "auth": true, @@ -5651,6 +5694,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set": { "auth": true, @@ -5763,6 +5809,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set_ancestors": { "auth": true, @@ -5890,6 +5939,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_condition_set_descendants": { "auth": true, @@ -6017,6 +6069,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_condition_sets": { "auth": true, @@ -6150,6 +6205,9 @@ This includes any permissions granted to said condition set (i.e: any matching c "docs": "Successful Response", "type": "ListConditionSetsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_condition_set": { "auth": true, @@ -6313,6 +6371,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ConditionSetRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -6355,6 +6416,8 @@ service: method: GET auth: true docs: Lists all condition sets matching a filter. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6458,6 +6521,8 @@ service: docs: >- Creates a new condition set (can be either a user set or a resource set). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6590,6 +6655,8 @@ service: method: GET auth: true docs: Gets a single condition set, if such condition set exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6679,6 +6746,8 @@ service: This includes any permissions granted to said condition set (i.e: any matching condition set rules). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6710,6 +6779,8 @@ service: docs: |- Partially updates a condition set. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6827,6 +6898,8 @@ service: method: GET auth: true docs: Gets all ancestors (parent, parent of parent, and so on) + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -6924,6 +6997,8 @@ service: method: GET auth: true docs: Gets all descendants (children, children of children, and so on) + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7174,6 +7249,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_environment": { "auth": true, @@ -7235,6 +7313,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_environment": { "auth": true, @@ -7264,6 +7345,9 @@ allowed.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_environment": { "auth": true, @@ -7320,6 +7404,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_environments": { "auth": true, @@ -7386,6 +7473,9 @@ allowed.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "stats_environments": { "auth": true, @@ -7511,6 +7601,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentStats", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_environment": { "auth": true, @@ -7598,6 +7691,9 @@ allowed.", "docs": "Successful Response", "type": "root.EnvironmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -7628,6 +7724,8 @@ service: path: /v2/projects/{proj_id}/envs/{env_id}/stats method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7723,6 +7821,8 @@ service: method: GET auth: true docs: Lists all the environments under a given project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7768,6 +7868,8 @@ service: method: POST auth: true docs: Creates a new environment under a given project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7813,6 +7915,8 @@ service: docs: >- Gets a single environment matching the given env_id, if such environment exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7855,6 +7959,8 @@ service: method: DELETE auth: true docs: Deletes an environment and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7878,6 +7984,8 @@ service: method: PATCH auth: true docs: Updates the environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -7969,6 +8077,8 @@ service: Copying environments across projects or organizations is not allowed. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -8153,6 +8263,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "root.OrganizationReadWithAPIKey", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_organization": { "auth": true, @@ -8177,6 +8290,9 @@ authenticated actor (i.e: human team member or api key).", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_active_organization": { "auth": true, @@ -8210,6 +8326,9 @@ if such org exists and can be accessed by the authenticated actor.", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_organization": { "auth": true, @@ -8252,6 +8371,9 @@ if such org exists and can be accessed by the authenticated actor.", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_organizations": { "auth": true, @@ -8300,6 +8422,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_organization": { "auth": true, @@ -8366,6 +8491,9 @@ authenticated actor (i.e: human team member or api key).", "docs": "Successful Response", "type": "root.OrganizationRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -8386,6 +8514,8 @@ service: docs: |- Lists all the organizations that can be accessed by the authenticated actor (i.e: human team member or api key). + source: + openapi: ../openapi.json display-name: List Organizations request: name: ListOrganizationsRequest @@ -8419,6 +8549,8 @@ service: docs: |- Creates a new organization that will be owned by the authenticated actor (i.e: human team member or api key). + source: + openapi: ../openapi.json display-name: Create Organization request: name: OrganizationCreate @@ -8471,6 +8603,8 @@ service: org_id, if such org exists and can be accessed by the authenticated actor. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -8501,6 +8635,8 @@ service: method: DELETE auth: true docs: Deletes an organization (Permit.io account) and all its related data. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -8518,6 +8654,8 @@ service: method: PATCH auth: true docs: Updates the organization's profile. + source: + openapi: ../openapi.json path-parameters: org_id: type: string @@ -8566,6 +8704,8 @@ service: org_id, if such org exists and can be accessed by the authenticated actor. + source: + openapi: ../openapi.json display-name: Get Active Organization response: docs: Successful Response @@ -8709,6 +8849,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_project": { "auth": true, @@ -8733,6 +8876,9 @@ Every project is a separate silo, and has its own unique set of environments and "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_project": { "auth": true, @@ -8777,6 +8923,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_projects": { "auth": true, @@ -8827,6 +8976,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_project": { "auth": true, @@ -8904,6 +9056,9 @@ Every project is a separate silo, and has its own unique set of environments and "docs": "Successful Response", "type": "root.ProjectRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -8922,6 +9077,8 @@ service: method: GET auth: true docs: Lists all the projects under the active organization. + source: + openapi: ../openapi.json display-name: List Projects request: name: ListProjectsRequest @@ -8956,6 +9113,8 @@ service: method: POST auth: true docs: Creates a new project under the active organization. + source: + openapi: ../openapi.json display-name: Create Project request: name: ProjectCreate @@ -9020,6 +9179,8 @@ service: docs: >- Gets a single project matching the given proj_id, if such project exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9053,6 +9214,8 @@ service: method: DELETE auth: true docs: Deletes the project and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9070,6 +9233,8 @@ service: method: PATCH auth: true docs: Updates the project. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9251,6 +9416,9 @@ to a role as one action. "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_action_group": { "auth": true, @@ -9291,6 +9459,9 @@ This includes any permissions granted to perform the action.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_action_group": { "auth": true, @@ -9355,6 +9526,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_action_groups": { "auth": true, @@ -9429,6 +9603,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_action_group": { "auth": true, @@ -9520,6 +9697,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceActionGroupRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -9538,6 +9718,8 @@ service: method: GET auth: true docs: Lists all the action groups defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9596,6 +9778,8 @@ service: method: POST auth: true docs: Creates a new action group that can affect the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9685,6 +9869,8 @@ service: docs: >- Gets a single action group defined on the resource, if such action exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9743,6 +9929,8 @@ service: docs: |- Deletes the action and all its related data. This includes any permissions granted to perform the action. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -9781,6 +9969,8 @@ service: docs: |- Partially updates the action defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: resource_id: type: string @@ -9970,6 +10160,9 @@ Each (resource, action) pair defines a unique permission level. "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_action": { "auth": true, @@ -10010,6 +10203,9 @@ This includes any permissions granted to perform the action.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_action": { "auth": true, @@ -10071,6 +10267,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_actions": { "auth": true, @@ -10142,6 +10341,9 @@ This includes any permissions granted to perform the action.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_action": { "auth": true, @@ -10229,6 +10431,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceActionRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10247,6 +10452,8 @@ service: method: GET auth: true docs: Lists all the actions defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10303,6 +10510,8 @@ service: method: POST auth: true docs: Creates a new action that can affect the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10382,6 +10591,8 @@ service: method: GET auth: true docs: Gets a single action defined on the resource, if such action exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10438,6 +10649,8 @@ service: docs: |- Deletes the action and all its related data. This includes any permissions granted to perform the action. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10476,6 +10689,8 @@ service: docs: |- Partially updates the action defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10641,6 +10856,9 @@ define a boolean `private` attributes that we can now use in our policies. "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_attribute": { "auth": true, @@ -10696,6 +10914,9 @@ attribute to evaluate as `undefined`.", }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_attribute": { "auth": true, @@ -10755,6 +10976,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_attributes": { "auth": true, @@ -10824,6 +11048,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_attribute": { "auth": true, @@ -10893,6 +11120,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10911,6 +11141,8 @@ service: method: GET auth: true docs: Lists all the attributes defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -10966,6 +11198,8 @@ service: method: POST auth: true docs: Creates a new attribute as part of the resource definition. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11023,6 +11257,8 @@ service: docs: >- Gets a single attribute defined on the resource, if such attribute exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11080,6 +11316,8 @@ service: Note: If the attribute is used by policies, removing it will cause the attribute to evaluate as `undefined`. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11127,6 +11365,8 @@ service: docs: |- Partially updates the attribute defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11315,6 +11555,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_instance": { "auth": true, @@ -11349,6 +11592,9 @@ and will return the existing instance object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_instance": { "auth": true, @@ -11406,6 +11652,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_instances": { "auth": true, @@ -11473,6 +11722,9 @@ and will return the existing instance object in the response body.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_instance": { "auth": true, @@ -11551,6 +11803,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceInstanceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -11569,6 +11824,8 @@ service: method: GET auth: true docs: Lists all the resource instances defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11624,6 +11881,8 @@ service: If the instance is already created: will return 200 instead of 201, and will return the existing instance object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11705,6 +11964,8 @@ service: method: GET auth: true docs: Gets a instance, if such instance exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11753,6 +12014,8 @@ service: method: DELETE auth: true docs: Deletes the instance and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11784,6 +12047,8 @@ service: docs: |- Partially updates the instance definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -11955,6 +12220,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_resource_role": { "auth": true, @@ -12067,6 +12335,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource_role": { "auth": true, @@ -12107,6 +12378,9 @@ This includes any permissions granted to said role.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role": { "auth": true, @@ -12173,6 +12447,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role_ancestors": { "auth": true, @@ -12243,6 +12520,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource_role_descendants": { "auth": true, @@ -12313,6 +12593,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.ResourceRoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resource_roles": { "auth": true, @@ -12389,6 +12672,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_permissions_from_resource_role": { "auth": true, @@ -12468,6 +12754,9 @@ If some of the permissions specified are already unassigned, will skip them.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource_role": { "auth": true, @@ -12571,6 +12860,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceRoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12589,6 +12881,8 @@ service: method: GET auth: true docs: Lists all the roles defined on the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12648,6 +12942,8 @@ service: method: POST auth: true docs: Creates a new role associated with the resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12744,6 +13040,8 @@ service: method: GET auth: true docs: Gets a single role defined on the resource, if such role exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12802,6 +13100,8 @@ service: docs: |- Deletes the role and all its related data. This includes any permissions granted to said role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12839,6 +13139,8 @@ service: docs: |- Partially updates the role defined on a resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -12936,6 +13238,8 @@ service: If some of the permissions specified are already assigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13005,6 +13309,8 @@ service: If some of the permissions specified are already unassigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13068,6 +13374,8 @@ service: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/ancestors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13125,6 +13433,8 @@ service: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/descendants method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -13380,6 +13690,9 @@ A resource may also contain: "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_resource": { "auth": true, @@ -13414,6 +13727,9 @@ A resource may also contain: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_resource": { "auth": true, @@ -13514,6 +13830,9 @@ A resource may also contain: "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_resources": { "auth": true, @@ -13620,6 +13939,9 @@ A resource may also contain: "docs": "Successful Response", "type": "ListResourcesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "replace_resource": { "auth": true, @@ -13765,6 +14087,9 @@ TODO: we need to decide if we are auto-revoking, or if we are rejecting the PUT "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_resource": { "auth": true, @@ -13900,6 +14225,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -13942,6 +14270,8 @@ service: method: GET auth: true docs: Lists all the resources defined in your schema. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14024,6 +14354,8 @@ service: docs: >- Creates a new resource (a type of object you may protect with permissions). + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14150,6 +14482,8 @@ service: method: GET auth: true docs: Gets a single resource, if such resource exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14244,6 +14578,8 @@ service: TODO: we need to decide if we are auto-revoking, or if we are rejecting the PUT completely while there are permissions that can be affected. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14358,6 +14694,8 @@ service: method: DELETE auth: true docs: Deletes the resource and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14389,6 +14727,8 @@ service: docs: |- Partially updates the resource definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14603,6 +14943,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.RoleAssignmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_assign_role": { "auth": true, @@ -14654,6 +14997,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.BulkRoleAssignmentReport", }, + "source": { + "openapi": "../openapi.json", + }, }, "bulk_unassign_role": { "auth": true, @@ -14705,6 +15051,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.BulkRoleUnAssignmentReport", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_role_assignments": { "auth": true, @@ -14784,6 +15133,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_role": { "auth": true, @@ -14828,6 +15180,9 @@ If the role is not actually assigned, will return 404.", }, "content-type": "application/json", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14857,6 +15212,8 @@ service: - If the `role` filter is present, will only return role assignments that are granting that role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14925,6 +15282,8 @@ service: The tenant defines the scope of the assignment. In other words, the role is effective only within the tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -14980,6 +15339,8 @@ service: If the role is not actually assigned, will return 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15010,6 +15371,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/role_assignments/bulk method: POST auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15046,6 +15409,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/role_assignments/bulk method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15184,6 +15549,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_role": { "auth": true, @@ -15290,6 +15658,9 @@ If some of the permissions specified are already assigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_role": { "auth": true, @@ -15325,6 +15696,9 @@ This includes any permissions granted to said role.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role": { "auth": true, @@ -15385,6 +15759,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role_ancestors": { "auth": true, @@ -15449,6 +15826,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_role_descendants": { "auth": true, @@ -15513,6 +15893,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "root.RoleList", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_roles": { "auth": true, @@ -15595,6 +15978,9 @@ This includes any permissions granted to said role.", "docs": "Successful Response", "type": "ListRolesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_permissions_from_role": { "auth": true, @@ -15668,6 +16054,9 @@ If some of the permissions specified are already unassigned, will skip them.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_role": { "auth": true, @@ -15765,6 +16154,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.RoleRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -15807,6 +16199,8 @@ service: method: GET auth: true docs: Lists all tenant roles. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15868,6 +16262,8 @@ service: method: POST auth: true docs: Creates a new tenant role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -15957,6 +16353,8 @@ service: method: GET auth: true docs: Gets a single tenant role, if such role exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16008,6 +16406,8 @@ service: docs: |- Deletes a tenant role and all its related data. This includes any permissions granted to said role. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16039,6 +16439,8 @@ service: docs: |- Partially updates a tenant role. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16128,6 +16530,8 @@ service: If some of the permissions specified are already assigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16189,6 +16593,8 @@ service: If some of the permissions specified are already unassigned, will skip them. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16244,6 +16650,8 @@ service: path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}/ancestors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16293,6 +16701,8 @@ service: path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}/descendants method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16451,6 +16861,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_tenant": { "auth": true, @@ -16485,6 +16898,9 @@ and will return the existing tenant object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_tenant_user": { "auth": true, @@ -16524,6 +16940,9 @@ and will return the existing tenant object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_tenant": { "auth": true, @@ -16582,6 +17001,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_tenant_users": { "auth": true, @@ -16693,6 +17115,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "root.PaginatedResultUserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_tenants": { "auth": true, @@ -16773,6 +17198,9 @@ and will return the existing tenant object in the response body.", "docs": "Successful Response", "type": "ListTenantsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_tenant": { "auth": true, @@ -16855,6 +17283,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.TenantRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -16888,6 +17319,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/tenants/{tenant_id}/users method: GET auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -16968,6 +17401,8 @@ service: method: GET auth: true docs: Lists all the tenants defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17032,6 +17467,8 @@ service: If the tenant is already created: will return 200 instead of 201, and will return the existing tenant object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17085,6 +17522,8 @@ service: method: GET auth: true docs: Gets a tenant, if such tenant exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17133,6 +17572,8 @@ service: method: DELETE auth: true docs: Deletes the tenant and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17164,6 +17605,8 @@ service: docs: |- Partially updates the tenant definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17229,6 +17672,8 @@ service: method: DELETE auth: true docs: Deletes a user under a tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17380,6 +17825,9 @@ define a string `owner` attribute that we can now use in our policies. "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_user_attribute": { "auth": true, @@ -17431,6 +17879,9 @@ attribute to evaluate as `undefined`.", "resource_id": "optional", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_user_attribute": { "auth": true, @@ -17491,6 +17942,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_user_attributes": { "auth": true, @@ -17556,6 +18010,9 @@ attribute to evaluate as `undefined`.", "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "update_user_attribute": { "auth": true, @@ -17624,6 +18081,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.ResourceAttributeRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -17642,6 +18102,8 @@ service: method: GET auth: true docs: Lists all the attributes defined on the User resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17692,6 +18154,8 @@ service: method: POST auth: true docs: Creates a new attribute for the User resource. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17745,6 +18209,8 @@ service: docs: >- Gets a single attribute defined on the User resource, if such attribute exists. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17799,6 +18265,8 @@ service: Note: If the attribute is used by policies, removing it will cause the attribute to evaluate as `undefined`. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -17840,6 +18308,8 @@ service: docs: |- Partially updates the attribute defined on the User resource. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18012,6 +18482,9 @@ The tenant defines the scope of the assignment. In other words, the role is effe "docs": "Successful Response", "type": "root.RoleAssignmentRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_user": { "auth": true, @@ -18115,6 +18588,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete_user": { "auth": true, @@ -18149,6 +18625,9 @@ and will return the existing user object in the response body.", "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "get_user": { "auth": true, @@ -18233,6 +18712,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_users": { "auth": true, @@ -18339,6 +18821,9 @@ and will return the existing user object in the response body.", "docs": "Successful Response", "type": "root.PaginatedResultUserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "replace_user": { "auth": true, @@ -18443,6 +18928,9 @@ and will return the existing user object in the response body.", "docs": "An existing user was replaced", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign_role_from_user": { "auth": true, @@ -18503,6 +18991,9 @@ If the role is not actually assigned, will return 404.", "name": "UserRoleRemove", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, "update_user": { "auth": true, @@ -18621,6 +19112,9 @@ Fields that will be provided will be completely overwritten.", "docs": "Successful Response", "type": "root.UserRead", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18639,6 +19133,8 @@ service: method: GET auth: true docs: Lists all the users defined within an environment. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18718,6 +19214,8 @@ service: If the user is already created: will return 200 instead of 201, and will return the existing user object in the response body. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18789,6 +19287,8 @@ service: method: GET auth: true docs: Gets a user, if such user exists. Otherwise returns 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18850,6 +19350,8 @@ service: path: /v2/facts/{proj_id}/{env_id}/users/{user_id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18927,6 +19429,8 @@ service: method: DELETE auth: true docs: Deletes the user and all its related data. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -18958,6 +19462,8 @@ service: docs: |- Partially updates the user definition. Fields that will be provided will be completely overwritten. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19049,6 +19555,8 @@ service: The tenant defines the scope of the assignment. In other words, the role is effective only within the tenant. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string @@ -19120,6 +19628,8 @@ service: If the role is not actually assigned, will return 404. + source: + openapi: ../openapi.json path-parameters: proj_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/request-response-description.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/request-response-description.json index 45285a126a0..42a5c8e8d06 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/request-response-description.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/request-response-description.json @@ -30,6 +30,9 @@ "docs": "Successful response", "type": "Schema1", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -57,6 +60,8 @@ path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Get Example response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rightbrain.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rightbrain.json index f745b969895..5ea3e50d1ed 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rightbrain.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rightbrain.json @@ -92,6 +92,9 @@ "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "whoami_whoami_get": { "auth": true, @@ -116,6 +119,9 @@ "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2533,6 +2539,8 @@ https://github.com/ory/kratos/blob/master/selfservice/hook/web_hook.go", method: GET auth: false docs: Root endpoint that returns a "Hello World" message. + source: + openapi: ../openapi.yml display-name: Root response: docs: Successful Response @@ -2545,6 +2553,8 @@ https://github.com/ory/kratos/blob/master/selfservice/hook/web_hook.go", path: /whoami method: GET auth: true + source: + openapi: ../openapi.yml display-name: Whoami response: docs: Successful Response @@ -4135,6 +4145,9 @@ types: "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getChat": { "auth": true, @@ -4175,6 +4188,9 @@ types: "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getChatConfig": { "auth": true, @@ -4225,6 +4241,9 @@ types: "docs": "Successful Response", "type": "root.ChatConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -4265,6 +4284,9 @@ types: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getRecentChatsForUser": { "auth": true, @@ -4305,6 +4327,9 @@ types: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -4358,6 +4383,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -4416,6 +4444,9 @@ types: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -4484,6 +4515,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "queryChat": { "auth": true, @@ -4529,6 +4563,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setChatConfig": { "auth": true, @@ -4621,6 +4658,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.ChatConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateChat": { "auth": true, @@ -4675,6 +4715,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Chat", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4797,6 +4840,8 @@ service: path: /chat/recent method: GET auth: true + source: + openapi: ../openapi.yml display-name: Get Recent Chats For User request: name: GetRecentChatsForUserChatRecentGetRequest @@ -4823,6 +4868,8 @@ service: path: /chat/{chat_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Get Chat @@ -4851,6 +4898,8 @@ service: path: /chat/{chat_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Update Chat @@ -4887,6 +4936,8 @@ service: path: /chat/{chat_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Get Chat Config @@ -4917,6 +4968,8 @@ service: path: /chat/{chat_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Set Chat Config @@ -4980,6 +5033,8 @@ service: path: /chat method: POST auth: true + source: + openapi: ../openapi.yml display-name: Create Chat request: name: ChatCreate @@ -5021,6 +5076,8 @@ service: path: /chat/{chat_id}/query method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: Query Chat @@ -5050,6 +5107,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: IAM - List Chat Members @@ -5087,6 +5146,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string member: string @@ -5115,6 +5176,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string member: string @@ -5172,6 +5235,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the chat. + source: + openapi: ../openapi.yml path-parameters: chat_id: string display-name: IAM - Test Chat Permissions @@ -5344,6 +5409,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionEdit": { "auth": true, @@ -5409,6 +5477,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionRemove": { "auth": true, @@ -5471,6 +5542,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "collectionStats": { "auth": true, @@ -5513,6 +5587,9 @@ types: "docs": "Successful Response", "type": "root.CollectionStatsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createCollection": { "auth": true, @@ -5579,6 +5656,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getCollection": { "auth": true, @@ -5630,6 +5710,9 @@ types: "docs": "Successful Response", "type": "root.Collection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -5674,6 +5757,9 @@ types: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -5731,6 +5817,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -5793,6 +5882,9 @@ types: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -5865,6 +5957,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listChats": { "auth": true, @@ -5926,6 +6021,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetChat", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listCollections": { "auth": true, @@ -5989,6 +6087,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetCollection", }, + "source": { + "openapi": "../openapi.yml", + }, }, "queryCollection": { "auth": true, @@ -6039,6 +6140,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSummary": { "auth": true, @@ -6078,6 +6182,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.AsyncJobResult", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6148,6 +6255,8 @@ service: path: /org/{org_id}/project/{project_id}/collection method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6190,6 +6299,8 @@ service: path: /org/{org_id}/project/{project_id}/collection method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6233,6 +6344,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6269,6 +6382,8 @@ service: method: POST auth: true docs: Edit collection details + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6312,6 +6427,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/stats method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6339,6 +6456,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/chat method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6382,6 +6501,8 @@ service: path: /org/{org_id}/project/{project_id}/collection/{collection_id}/query method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6416,6 +6537,8 @@ service: method: POST auth: true docs: Generate and update the summary for a collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6443,6 +6566,8 @@ service: method: POST auth: true docs: Add an embedding instance to the collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6486,6 +6611,8 @@ service: method: POST auth: true docs: Remove an embedding instance from the collection + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6532,6 +6659,8 @@ service: docs: >- Lists all members that have been granted direct access to the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6574,6 +6703,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6607,6 +6738,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6668,6 +6801,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the collection. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -6820,6 +6955,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "initialise": { "auth": true, @@ -6863,6 +7001,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "sectionTalkingPoints": { "auth": true, @@ -6927,6 +7068,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "topic": { "auth": true, @@ -6979,6 +7123,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateSection": { "auth": true, @@ -7047,6 +7194,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7064,6 +7214,8 @@ service: path: /org/{org_id}/project/{project_id}/compose method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7092,6 +7244,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/generate method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7130,6 +7284,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/update_section method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7173,6 +7329,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/section_talking_points method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7214,6 +7372,8 @@ service: path: /org/{org_id}/project/{project_id}/compose/topic method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7288,6 +7448,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -7319,6 +7482,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -7382,6 +7548,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -7418,6 +7587,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -7470,6 +7642,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -7508,6 +7683,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -7560,6 +7738,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -7622,6 +7803,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -7668,6 +7852,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7686,6 +7873,8 @@ service: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7722,6 +7911,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7760,6 +7951,8 @@ service: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7782,6 +7975,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7806,6 +8001,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7849,6 +8046,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7895,6 +8094,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7921,6 +8122,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/box/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -7952,6 +8155,8 @@ service: path: /datasource/box/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceBoxCallbackGetRequest @@ -8012,6 +8217,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -8043,6 +8251,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -8106,6 +8317,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -8142,6 +8356,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -8194,6 +8411,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -8232,6 +8452,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -8284,6 +8507,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -8346,6 +8572,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -8392,6 +8621,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8410,6 +8642,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8447,6 +8681,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8485,6 +8721,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8507,6 +8745,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8532,6 +8772,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8576,6 +8818,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8623,6 +8867,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8650,6 +8896,8 @@ service: /org/{org_id}/project/{project_id}/datasource/confluence/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -8681,6 +8929,8 @@ service: path: /datasource/confluence/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceConfluenceCallbackGetRequest @@ -8741,6 +8991,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -8772,6 +9025,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -8835,6 +9091,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -8871,6 +9130,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -8923,6 +9185,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -8961,6 +9226,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -9013,6 +9281,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -9075,6 +9346,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -9121,6 +9395,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9139,6 +9416,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9176,6 +9455,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9214,6 +9495,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9236,6 +9519,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9261,6 +9546,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9305,6 +9592,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9352,6 +9641,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9379,6 +9670,8 @@ service: /org/{org_id}/project/{project_id}/datasource/dropbox/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9410,6 +9703,8 @@ service: path: /datasource/dropbox/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceDropboxCallbackGetRequest @@ -9470,6 +9765,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -9501,6 +9799,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -9564,6 +9865,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -9600,6 +9904,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -9652,6 +9959,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -9690,6 +10000,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -9742,6 +10055,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -9804,6 +10120,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -9850,6 +10169,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9868,6 +10190,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9905,6 +10229,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9943,6 +10269,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9965,6 +10293,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -9990,6 +10320,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10033,6 +10365,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10080,6 +10414,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10107,6 +10443,8 @@ service: /org/{org_id}/project/{project_id}/datasource/gdrive/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10138,6 +10476,8 @@ service: path: /datasource/gdrive/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceGdriveCallbackGetRequest @@ -10198,6 +10538,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -10229,6 +10572,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -10292,6 +10638,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -10328,6 +10677,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -10380,6 +10732,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -10418,6 +10773,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -10470,6 +10828,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -10532,6 +10893,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -10578,6 +10942,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -10596,6 +10963,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10633,6 +11002,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10671,6 +11042,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10693,6 +11066,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10718,6 +11093,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10761,6 +11138,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10808,6 +11187,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10835,6 +11216,8 @@ service: /org/{org_id}/project/{project_id}/datasource/notion/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -10866,6 +11249,8 @@ service: path: /datasource/notion/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceNotionCallbackGetRequest @@ -10926,6 +11311,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -10957,6 +11345,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -11020,6 +11411,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -11056,6 +11450,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -11108,6 +11505,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -11146,6 +11546,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -11198,6 +11601,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -11260,6 +11666,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -11306,6 +11715,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -11324,6 +11736,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11361,6 +11775,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11399,6 +11815,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11421,6 +11839,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11446,6 +11866,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11490,6 +11912,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11537,6 +11961,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11564,6 +11990,8 @@ service: /org/{org_id}/project/{project_id}/datasource/onedrive/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -11595,6 +12023,8 @@ service: path: /datasource/onedrive/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceOnedriveCallbackGetRequest @@ -11655,6 +12085,9 @@ service: "redirect_to": "optional", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "callback": { "auth": true, @@ -11686,6 +12119,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "checkStatus": { "auth": true, @@ -11749,6 +12185,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -11785,6 +12224,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -11837,6 +12279,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getConfiguration": { "auth": true, @@ -11875,6 +12320,9 @@ service: "docs": "Successful Response", "type": "root.DatasourceConfiguration", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listFiles": { "auth": true, @@ -11927,6 +12375,9 @@ service: "docs": "Successful Response", "type": "root.ObjectList", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -11989,6 +12440,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setConfiguration": { "auth": true, @@ -12035,6 +12489,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -12053,6 +12510,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/list-files method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12090,6 +12549,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/fetch method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12128,6 +12589,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/authorize method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12150,6 +12613,8 @@ service: path: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12175,6 +12640,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12219,6 +12686,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/run method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12266,6 +12735,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/config method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12293,6 +12764,8 @@ service: /org/{org_id}/project/{project_id}/datasource/sharepoint/{connection_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -12324,6 +12797,8 @@ service: path: /datasource/sharepoint/callback method: GET auth: true + source: + openapi: ../openapi.yml display-name: Callback request: name: CallbackDatasourceSharepointCallbackGetRequest @@ -12411,6 +12886,9 @@ service: "docs": "Successful Response", "type": "root.DocumentStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentDelete": { "auth": true, @@ -12447,6 +12925,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentEmbeddingGet": { "auth": false, @@ -12484,6 +12965,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocumentEmbeddingRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentEmbeddingQuery": { "auth": true, @@ -12537,6 +13021,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetChatDocumentEmbeddingRecord", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentFetch": { "auth": true, @@ -12594,6 +13081,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentList": { "auth": true, @@ -12667,6 +13157,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentQuery": { "auth": true, @@ -12716,6 +13209,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentUpdate": { "auth": true, @@ -12790,6 +13286,9 @@ service: "docs": "Successful Response", "type": "root.ChatDocument", }, + "source": { + "openapi": "../openapi.yml", + }, }, "documentUpload": { "auth": true, @@ -12860,6 +13359,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -12904,6 +13406,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -12961,6 +13466,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -13023,6 +13531,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -13095,6 +13606,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "taskStatus": { "auth": true, @@ -13141,6 +13655,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.DocumentStatusResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -13272,6 +13789,8 @@ service: path: /org/{org_id}/project/{project_id}/document method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13324,6 +13843,8 @@ service: path: /org/{org_id}/project/{project_id}/document method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13361,6 +13882,8 @@ service: path: /org/{org_id}/project/{project_id}/document/upload method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13408,6 +13931,8 @@ service: path: /org/{org_id}/project/{project_id}/document/create/status/{group_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13438,6 +13963,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id}/query method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13470,6 +13997,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13510,6 +14039,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13560,6 +14091,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13584,6 +14117,8 @@ service: path: /org/{org_id}/project/{project_id}/document/{document_id}/embeddings method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13624,6 +14159,8 @@ service: docs: >- Fetch an individual embedding record by its ID. Useful for examining the source submitted to an LLM + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13650,6 +14187,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13692,6 +14231,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13725,6 +14266,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13786,6 +14329,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the document. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -13899,6 +14444,9 @@ service: "docs": "Successful Response", "type": "root.OAuthClientCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookHydraTokenHook": { "auth": false, @@ -13946,6 +14494,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookKratosSignupCheck": { "auth": false, @@ -13993,6 +14544,9 @@ service: "docs": "Successful Response", "type": "root.KratosWebhookResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "webhookKratosSignupCommit": { "auth": false, @@ -14040,6 +14594,9 @@ service: "docs": "Successful Response", "type": "root.KratosWebhookResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14057,6 +14614,8 @@ service: path: /internal/webhook/hydra/token_hook method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Hydra Token Hook request: name: HydraWebhookTokenHook @@ -14084,6 +14643,8 @@ service: path: /internal/project/{project_id}/register_oauth_client method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: project_id: string display-name: Register Oauth Client @@ -14124,6 +14685,8 @@ service: path: /internal/webhook/kratos/signup_check method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Kratos Signup Check request: body: @@ -14151,6 +14714,8 @@ service: path: /internal/webhook/kratos/signup_commit method: POST auth: false + source: + openapi: ../openapi.yml display-name: Webhook Kratos Signup Commit request: body: @@ -14308,6 +14873,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAvailableGuardrails": { "auth": false, @@ -14345,6 +14913,9 @@ service: "docs": "Successful Response", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -14365,6 +14936,8 @@ service: docs: >- All supported LLM providers and models. Not all models have the same functionality. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -14476,6 +15049,8 @@ service: path: /org/{org_id}/project/{project_id}/guardrail method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -14559,6 +15134,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainDelete": { "auth": true, @@ -14595,6 +15173,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainsList": { "auth": true, @@ -14638,6 +15219,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetOrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgDomainsPost": { "auth": true, @@ -14686,6 +15270,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationDomain", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgGet": { "auth": true, @@ -14721,6 +15308,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesCreate": { "auth": true, @@ -14782,6 +15372,9 @@ service: "docs": "Successful Response", "type": "root.OrganizationInvite", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesDelete": { "auth": true, @@ -14807,6 +15400,9 @@ service: "org_id": "string", "org_invite_id": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgInvitesList": { "auth": true, @@ -14860,6 +15456,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetOrganizationInvite", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgJoin": { "auth": true, @@ -14898,6 +15497,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgList": { "auth": true, @@ -14930,6 +15532,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgUpdate": { "auth": true, @@ -14985,6 +15590,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "orgUpdateAvatar": { "auth": true, @@ -15032,6 +15640,9 @@ service: "docs": "Successful Response", "type": "root.Org", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_get_member": { "auth": true, @@ -15072,6 +15683,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_list_members": { "auth": true, @@ -15125,6 +15739,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_test_permissions": { "auth": true, @@ -15183,6 +15800,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "organization_iam_update_member_roles": { "auth": true, @@ -15251,6 +15871,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -15356,6 +15979,8 @@ service: docs: >- Lists all members that have been granted direct access to the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: IAM - List Organization Members @@ -15393,6 +16018,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string member: string @@ -15421,6 +16048,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string member: string @@ -15478,6 +16107,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the organization. + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: IAM - Test Organization Permissions @@ -15514,6 +16145,8 @@ service: path: /org method: GET auth: true + source: + openapi: ../openapi.yml display-name: Org List request: name: OrgListOrgGetRequest @@ -15534,6 +16167,8 @@ service: path: /org method: POST auth: true + source: + openapi: ../openapi.yml display-name: Org Create request: name: OrgCreate @@ -15564,6 +16199,8 @@ service: path: /org/{org_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Get @@ -15587,6 +16224,8 @@ service: path: /org/{org_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Update @@ -15620,6 +16259,8 @@ service: path: /org/{org_id}/join method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Join @@ -15645,6 +16286,8 @@ service: path: /org/{org_id}/invite method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Invites List @@ -15679,6 +16322,8 @@ service: path: /org/{org_id}/invite method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Invites Create @@ -15715,6 +16360,8 @@ service: path: /org/{org_id}/invite/{org_invite_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string org_invite_id: string @@ -15731,6 +16378,8 @@ service: path: /org/{org_id}/domains method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Domains List @@ -15758,6 +16407,8 @@ service: path: /org/{org_id}/domains method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Domains Post @@ -15788,6 +16439,8 @@ service: path: /org/{org_id}/domains/{domain_id} method: DELETE auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string domain_id: string @@ -15812,6 +16465,8 @@ service: path: /org/{org_id}/avatar method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Org Update Avatar @@ -15901,6 +16556,9 @@ service: "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getMember": { "auth": true, @@ -15943,6 +16601,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getProject": { "auth": true, @@ -15999,6 +16660,9 @@ service: "docs": "Successful Response", "type": "root.ProjectWithDatasources", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getProjectConfig": { "auth": false, @@ -16049,6 +16713,9 @@ service: "docs": "Successful Response", "type": "root.ProjectConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamListMembers": { "auth": true, @@ -16104,6 +16771,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamTestPermissions": { "auth": true, @@ -16164,6 +16834,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "iamUpdateMemberRoles": { "auth": true, @@ -16234,6 +16907,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listProject": { "auth": true, @@ -16286,6 +16962,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.PaginatedResultSetProject", }, + "source": { + "openapi": "../openapi.yml", + }, }, "projectUpdateAvatar": { "auth": true, @@ -16336,6 +17015,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, "setProjectConfig": { "auth": true, @@ -16429,6 +17111,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.ProjectConfig", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateProject": { "auth": true, @@ -16481,6 +17166,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.Project", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -16629,6 +17317,8 @@ service: path: /org/{org_id}/project method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: List Project @@ -16663,6 +17353,8 @@ service: path: /org/{org_id}/project method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string display-name: Create Project @@ -16695,6 +17387,8 @@ service: path: /org/{org_id}/project/{project_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16734,6 +17428,8 @@ service: path: /org/{org_id}/project/{project_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16768,6 +17464,8 @@ service: path: /org/{org_id}/project/{project_id}/config method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16798,6 +17496,8 @@ service: path: /org/{org_id}/project/{project_id}/config method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16859,6 +17559,8 @@ service: path: /org/{org_id}/project/{project_id}/avatar method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16894,6 +17596,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16933,6 +17637,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -16963,6 +17669,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17022,6 +17730,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the project. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17212,6 +17922,9 @@ types: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "enable": { "auth": true, @@ -17244,6 +17957,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "fetch": { "auth": true, @@ -17323,6 +18039,9 @@ types: "docs": "Successful Response", "type": "root.DatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listRuns": { "auth": true, @@ -17381,6 +18100,9 @@ types: "docs": "Successful Response", "type": "root.PaginatedResultSetDatasourceSyncRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17398,6 +18120,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17418,6 +18142,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/start method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17468,6 +18194,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/run/{sync_run_id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17505,6 +18233,8 @@ service: path: /org/{org_id}/project/{project_id}/scrape/runs method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -17644,6 +18374,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllTaskForwarders": { "audiences": [ @@ -17722,6 +18455,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskForwarder": { "audiences": [ @@ -17783,6 +18519,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, "updateTaskForwarder": { "audiences": [ @@ -17871,6 +18610,9 @@ service: "docs": "Successful Response", "type": "root.TaskForwarder", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -17888,6 +18630,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -17951,6 +18695,8 @@ service: A Task Forwarder will receive the output of a Task and forward it to the specified destination. This can be used to send data to external systems, or to trigger other actions based on the output of a Task. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -18024,6 +18770,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder/{task_forwarder_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -18069,6 +18817,8 @@ service: path: /org/{org_id}/project/{project_id}/task_forwarder/{task_forwarder_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -18295,6 +19045,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "editTask": { "audiences": [ @@ -18437,6 +19190,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAllTasks": { "audiences": [ @@ -18531,6 +19287,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTask", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTask": { "audiences": [ @@ -18610,6 +19369,9 @@ service: "docs": "Successful Response", "type": "root.Task", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskRun": { "audiences": [ @@ -18682,6 +19444,9 @@ service: "docs": "Successful Response", "type": "root.TaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTaskRuns": { "audiences": [ @@ -18775,6 +19540,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetTaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "runTask": { "audiences": [ @@ -18862,6 +19630,9 @@ service: "docs": "Successful Response", "type": "root.TaskRun", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_get_member": { "auth": true, @@ -18906,6 +19677,9 @@ service: "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_list_members": { "auth": true, @@ -18963,6 +19737,9 @@ service: "docs": "Successful Response", "type": "root.PaginatedResultSetIamMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_test_permissions": { "auth": true, @@ -19025,6 +19802,9 @@ service: "docs": "Successful Response", "type": "root.IAMPermissionTest", }, + "source": { + "openapi": "../openapi.yml", + }, }, "task_iam_update_member_roles": { "auth": true, @@ -19097,6 +19877,9 @@ This may be combined with `remove_all` to replace the member's entire role list. "docs": "Successful Response", "type": "root.IAMMember", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -19302,6 +20085,8 @@ service: path: /org/{org_id}/project/{project_id}/task method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19391,6 +20176,8 @@ service: docs: >- Tasks are the core of the platform and define the prompts and models used to generate responses. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19544,6 +20331,8 @@ service: path: /org/{org_id}/project/{project_id}/task/{task_id} method: GET auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19617,6 +20406,8 @@ service: path: /org/{org_id}/project/{project_id}/task/{task_id} method: POST auth: true + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19750,6 +20541,8 @@ service: method: GET auth: true docs: Individual Task Runs provide an audit trail for all Task executions. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19829,6 +20622,8 @@ service: Run a specified Task against provided text and/or image input. The response is controlled by the `output_format` of the Task. Note that a Task must be `enabled` to be run. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -19900,6 +20695,8 @@ service: method: GET auth: true docs: Lists all members that have been granted direct access to the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19941,6 +20738,8 @@ service: docs: >- Retrieve a specific member that has been granted direct access to the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -19973,6 +20772,8 @@ service: method: POST auth: true docs: Update the roles that a member holds on the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20034,6 +20835,8 @@ service: docs: >- Test the permissions that the caller (or another subject) holds on the task. + source: + openapi: ../openapi.yml path-parameters: org_id: string project_id: string @@ -20075,6 +20878,8 @@ service: method: GET auth: true docs: Fetch an individual Task Run. + source: + openapi: ../openapi.yml path-parameters: org_id: type: string @@ -20285,6 +21090,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "userPost": { "auth": true, @@ -20330,6 +21138,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "userUpdateAvatar": { "auth": true, @@ -20370,6 +21181,9 @@ types: "docs": "Successful Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -20388,6 +21202,8 @@ service: method: GET auth: true docs: Retrieve the profile of the current user. + source: + openapi: ../openapi.yml display-name: User Get response: docs: Successful Response @@ -20407,6 +21223,8 @@ service: method: POST auth: true docs: Update the profile of the current user. + source: + openapi: ../openapi.yml display-name: User Post request: name: UserProfileUpdate @@ -20435,6 +21253,8 @@ service: path: /user/avatar method: POST auth: true + source: + openapi: ../openapi.yml display-name: User Update Avatar request: name: Body_user_update_avatar_user_avatar_post diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rules.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rules.json index f2b57a3935e..3cafaa6db95 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rules.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/rules.json @@ -32,6 +32,9 @@ "docs": "Successful response", "type": "GetExampleResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -191,6 +194,8 @@ service: path: /example method: GET auth: false + source: + openapi: ../openapi.yml display-name: Default and validation rules response: docs: Successful response diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/seam.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/seam.json index efc031de0b7..a3cbf9f8698 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/seam.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/seam.json @@ -7772,6 +7772,9 @@ types: "property": "access_code", "type": "AccessCodesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create_multiple": { "auth": true, @@ -7875,6 +7878,9 @@ types: "property": "access_codes", "type": "AccessCodesCreateMultipleResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -7942,6 +7948,9 @@ types: "docs": "OK", "type": "AccessCodesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "generate_code": { "auth": true, @@ -8017,6 +8026,9 @@ types: "property": "generated_code", "type": "AccessCodesGenerateCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -8100,6 +8112,9 @@ types: "property": "access_code", "type": "AccessCodesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -8177,6 +8192,9 @@ types: "property": "access_codes", "type": "AccessCodesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "pull_backup_access_code": { "auth": true, @@ -8252,6 +8270,9 @@ types: "property": "backup_access_code", "type": "AccessCodesPullBackupAccessCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -8348,6 +8369,9 @@ types: "docs": "OK", "type": "AccessCodesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -8641,6 +8665,8 @@ service: path: /access_codes/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/create request: name: AccessCodesCreateRequest @@ -8724,6 +8750,8 @@ service: path: /access_codes/create_multiple method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/create_multiple request: name: AccessCodesCreateMultipleRequest @@ -8800,6 +8828,8 @@ service: path: /access_codes/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/delete request: name: AccessCodesDeleteRequest @@ -8839,6 +8869,8 @@ service: path: /access_codes/generate_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/generate_code request: name: AccessCodesGenerateCodeRequest @@ -8890,6 +8922,8 @@ service: path: /access_codes/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/get request: name: AccessCodesGetRequest @@ -8945,6 +8979,8 @@ service: path: /access_codes/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/list request: name: AccessCodesListRequest @@ -8997,6 +9033,8 @@ service: path: /access_codes/pull_backup_access_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/pull_backup_access_code request: name: AccessCodesPullBackupAccessCodeRequest @@ -9048,6 +9086,8 @@ service: path: /access_codes/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/update request: name: AccessCodesUpdateRequest @@ -9198,6 +9238,9 @@ service: "property": "access_code", "type": "SimulateCreateUnmanagedAccessCodeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -9234,6 +9277,8 @@ service: path: /access_codes/simulate/create_unmanaged_access_code method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/simulate/create_unmanaged_access_code request: name: SimulateCreateUnmanagedAccessCodeRequest @@ -9348,6 +9393,9 @@ service: "docs": "OK", "type": "UnmanagedConvertToManagedResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -9406,6 +9454,9 @@ service: "docs": "OK", "type": "UnmanagedDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -9480,6 +9531,9 @@ service: "property": "access_code", "type": "UnmanagedGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -9549,6 +9603,9 @@ service: "property": "access_codes", "type": "UnmanagedListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -9601,6 +9658,9 @@ service: "docs": "OK", "type": "UnmanagedUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -9697,6 +9757,8 @@ service: path: /access_codes/unmanaged/convert_to_managed method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/convert_to_managed request: name: UnmanagedConvertToManagedRequest @@ -9729,6 +9791,8 @@ service: path: /access_codes/unmanaged/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/delete request: name: UnmanagedDeleteRequest @@ -9764,6 +9828,8 @@ service: path: /access_codes/unmanaged/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/get request: name: UnmanagedGetRequest @@ -9810,6 +9876,8 @@ service: path: /access_codes/unmanaged/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/list request: name: UnmanagedListRequest @@ -9853,6 +9921,8 @@ service: path: /access_codes/unmanaged/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /access_codes/unmanaged/update request: name: UnmanagedUpdateRequest @@ -9950,6 +10020,9 @@ service: "docs": "OK", "type": "AccessGroupsAddUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -10010,6 +10083,9 @@ service: "property": "acs_access_group", "type": "AccessGroupsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -10079,6 +10155,9 @@ service: "property": "acs_access_groups", "type": "AccessGroupsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_users": { "auth": true, @@ -10152,6 +10231,9 @@ service: "property": "acs_users", "type": "AccessGroupsListUsersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_user": { "auth": true, @@ -10209,6 +10291,9 @@ service: "docs": "OK", "type": "AccessGroupsRemoveUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10305,6 +10390,8 @@ service: path: /acs/access_groups/add_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/add_user request: name: AccessGroupsAddUserRequest @@ -10336,6 +10423,8 @@ service: path: /acs/access_groups/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/get request: name: AccessGroupsGetRequest @@ -10374,6 +10463,8 @@ service: path: /acs/access_groups/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/list request: name: AccessGroupsListRequest @@ -10415,6 +10506,8 @@ service: path: /acs/access_groups/list_users method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/list_users request: name: AccessGroupsListUsersRequest @@ -10463,6 +10556,8 @@ service: path: /acs/access_groups/remove_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/access_groups/remove_user request: name: AccessGroupsRemoveUserRequest @@ -10562,6 +10657,9 @@ service: "property": "acs_credential_pools", "type": "CredentialPoolsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10598,6 +10696,8 @@ service: path: /acs/credential_pools/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credential_pools/list request: name: CredentialPoolsListRequest @@ -10726,6 +10826,9 @@ service: "property": "acs_credential_provisioning_automation", "type": "CredentialProvisioningAutomationsLaunchResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10762,6 +10865,8 @@ service: path: /acs/credential_provisioning_automations/launch method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credential_provisioning_automations/launch request: name: CredentialProvisioningAutomationsLaunchRequest @@ -10918,6 +11023,9 @@ service: "docs": "OK", "type": "CredentialsAssignResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -11037,6 +11145,9 @@ service: "property": "acs_credential", "type": "CredentialsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -11084,6 +11195,9 @@ service: "docs": "OK", "type": "CredentialsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -11175,6 +11289,9 @@ service: "property": "acs_credential", "type": "CredentialsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -11249,6 +11366,9 @@ service: "property": "acs_credentials", "type": "CredentialsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_entrances": { "auth": true, @@ -11321,6 +11441,9 @@ service: "property": "acs_entrances", "type": "CredentialsListAccessibleEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unassign": { "auth": true, @@ -11421,6 +11544,9 @@ service: "docs": "OK", "type": "CredentialsUnassignResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -11513,6 +11639,9 @@ service: "docs": "OK", "type": "CredentialsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -11762,6 +11891,8 @@ service: path: /acs/credentials/assign method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/assign request: name: CredentialsAssignRequest @@ -11825,6 +11956,8 @@ service: path: /acs/credentials/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/create request: name: CredentialsCreateRequest @@ -11901,6 +12034,8 @@ service: path: /acs/credentials/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/delete request: name: CredentialsDeleteRequest @@ -11927,6 +12062,8 @@ service: path: /acs/credentials/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/get request: name: CredentialsGetRequest @@ -11986,6 +12123,8 @@ service: path: /acs/credentials/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/list request: name: CredentialsListRequest @@ -12035,6 +12174,8 @@ service: path: /acs/credentials/list_accessible_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/list_accessible_entrances request: name: CredentialsListAccessibleEntrancesRequest @@ -12078,6 +12219,8 @@ service: path: /acs/credentials/unassign method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/unassign request: name: CredentialsUnassignRequest @@ -12141,6 +12284,8 @@ service: path: /acs/credentials/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/credentials/update request: name: CredentialsUpdateRequest @@ -12286,6 +12431,9 @@ service: "property": "acs_entrance", "type": "EntrancesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access": { "auth": true, @@ -12343,6 +12491,9 @@ service: "docs": "OK", "type": "EntrancesGrantAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -12422,6 +12573,9 @@ service: "property": "acs_entrances", "type": "EntrancesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_credentials_with_access": { "auth": true, @@ -12507,6 +12661,9 @@ service: "property": "acs_credentials", "type": "EntrancesListCredentialsWithAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -12589,6 +12746,8 @@ service: path: /acs/entrances/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/get request: name: EntrancesGetRequest @@ -12635,6 +12794,8 @@ service: path: /acs/entrances/grant_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/grant_access request: name: EntrancesGrantAccessRequest @@ -12666,6 +12827,8 @@ service: path: /acs/entrances/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/list request: name: EntrancesListRequest @@ -12712,6 +12875,8 @@ service: path: /acs/entrances/list_credentials_with_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/entrances/list_credentials_with_access request: name: EntrancesListCredentialsWithAccessRequest @@ -12852,6 +13017,9 @@ service: "property": "acs_system", "type": "SystemsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -12929,6 +13097,9 @@ service: "property": "acs_systems", "type": "SystemsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_compatible_credential_manager_acs_systems": { "auth": true, @@ -13008,6 +13179,9 @@ service: "property": "acs_systems", "type": "SystemsListCompatibleCredentialManagerAcsSystemsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -13076,6 +13250,8 @@ service: path: /acs/systems/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/get request: name: SystemsGetRequest @@ -13126,6 +13302,8 @@ service: path: /acs/systems/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/list request: name: SystemsListRequest @@ -13175,6 +13353,8 @@ service: path: /acs/systems/list_compatible_credential_manager_acs_systems method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/systems/list_compatible_credential_manager_acs_systems request: name: SystemsListCompatibleCredentialManagerAcsSystemsRequest @@ -13291,6 +13471,9 @@ service: "docs": "OK", "type": "UsersAddToAccessGroupResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -13398,6 +13581,9 @@ service: "property": "acs_user", "type": "UsersCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -13445,6 +13631,9 @@ service: "docs": "OK", "type": "UsersDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -13516,6 +13705,9 @@ service: "property": "acs_user", "type": "UsersGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -13598,6 +13790,9 @@ service: "property": "acs_users", "type": "UsersListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_entrances": { "auth": true, @@ -13670,6 +13865,9 @@ service: "property": "acs_entrances", "type": "UsersListAccessibleEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_from_access_group": { "auth": true, @@ -13727,6 +13925,9 @@ service: "docs": "OK", "type": "UsersRemoveFromAccessGroupResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke_access_to_all_entrances": { "auth": true, @@ -13774,6 +13975,9 @@ service: "docs": "OK", "type": "UsersRevokeAccessToAllEntrancesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "suspend": { "auth": true, @@ -13821,6 +14025,9 @@ service: "docs": "OK", "type": "UsersSuspendResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unsuspend": { "auth": true, @@ -13868,6 +14075,9 @@ service: "docs": "OK", "type": "UsersUnsuspendResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -13950,6 +14160,9 @@ service: "docs": "OK", "type": "UsersUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14164,6 +14377,8 @@ service: path: /acs/users/add_to_access_group method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/add_to_access_group request: name: UsersAddToAccessGroupRequest @@ -14195,6 +14410,8 @@ service: path: /acs/users/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/create request: name: UsersCreateRequest @@ -14265,6 +14482,8 @@ service: path: /acs/users/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/delete request: name: UsersDeleteRequest @@ -14291,6 +14510,8 @@ service: path: /acs/users/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/get request: name: UsersGetRequest @@ -14339,6 +14560,8 @@ service: path: /acs/users/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/list request: name: UsersListRequest @@ -14392,6 +14615,8 @@ service: path: /acs/users/list_accessible_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/list_accessible_entrances request: name: UsersListAccessibleEntrancesRequest @@ -14435,6 +14660,8 @@ service: path: /acs/users/remove_from_access_group method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/remove_from_access_group request: name: UsersRemoveFromAccessGroupRequest @@ -14466,6 +14693,8 @@ service: path: /acs/users/revoke_access_to_all_entrances method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/revoke_access_to_all_entrances request: name: UsersRevokeAccessToAllEntrancesRequest @@ -14492,6 +14721,8 @@ service: path: /acs/users/suspend method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/suspend request: name: UsersSuspendRequest @@ -14518,6 +14749,8 @@ service: path: /acs/users/unsuspend method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/unsuspend request: name: UsersUnsuspendRequest @@ -14544,6 +14777,8 @@ service: path: /acs/users/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /acs/users/update request: name: UsersUpdateRequest @@ -14655,6 +14890,9 @@ service: "property": "action_attempt", "type": "ActionAttemptsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -14706,6 +14944,9 @@ service: "property": "action_attempts", "type": "ActionAttemptsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14758,6 +14999,8 @@ service: path: /action_attempts/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /action_attempts/get request: name: ActionAttemptsGetRequest @@ -14791,6 +15034,8 @@ service: path: /action_attempts/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /action_attempts/list request: name: ActionAttemptsListRequest @@ -14898,6 +15143,9 @@ service: "property": "client_session", "type": "ClientSessionsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -14945,6 +15193,9 @@ service: "docs": "OK", "type": "ClientSessionsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -15001,6 +15252,9 @@ service: "property": "client_session", "type": "ClientSessionsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get_or_create": { "auth": false, @@ -15068,6 +15322,9 @@ service: "property": "client_session", "type": "ClientSessionsGetOrCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access": { "auth": true, @@ -15126,6 +15383,9 @@ service: "docs": "OK", "type": "ClientSessionsGrantAccessResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -15187,6 +15447,9 @@ service: "property": "client_sessions", "type": "ClientSessionsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke": { "auth": true, @@ -15234,6 +15497,9 @@ service: "docs": "OK", "type": "ClientSessionsRevokeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -15362,6 +15628,8 @@ service: path: /client_sessions/create method: POST auth: false + source: + openapi: ../openapi.json display-name: /client_sessions/create request: name: ClientSessionsCreateRequest @@ -15405,6 +15673,8 @@ service: path: /client_sessions/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/delete request: name: ClientSessionsDeleteRequest @@ -15431,6 +15701,8 @@ service: path: /client_sessions/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/get request: name: ClientSessionsGetRequest @@ -15468,6 +15740,8 @@ service: path: /client_sessions/get_or_create method: POST auth: false + source: + openapi: ../openapi.json display-name: /client_sessions/get_or_create request: name: ClientSessionsGetOrCreateRequest @@ -15511,6 +15785,8 @@ service: path: /client_sessions/grant_access method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/grant_access request: name: ClientSessionsGrantAccessRequest @@ -15550,6 +15826,8 @@ service: path: /client_sessions/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/list request: name: ClientSessionsListRequest @@ -15590,6 +15868,8 @@ service: path: /client_sessions/revoke method: POST auth: true + source: + openapi: ../openapi.json display-name: /client_sessions/revoke request: name: ClientSessionsRevokeRequest @@ -15703,6 +15983,9 @@ service: "property": "connect_webview", "type": "ConnectWebviewsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -15750,6 +16033,9 @@ service: "docs": "OK", "type": "ConnectWebviewsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -15825,6 +16111,9 @@ service: "property": "connect_webview", "type": "ConnectWebviewsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -15900,6 +16189,9 @@ service: "property": "connect_webviews", "type": "ConnectWebviewsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -16163,6 +16455,8 @@ service: path: /connect_webviews/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/create request: name: ConnectWebviewsCreateRequest @@ -16222,6 +16516,8 @@ service: path: /connect_webviews/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/delete request: name: ConnectWebviewsDeleteRequest @@ -16248,6 +16544,8 @@ service: path: /connect_webviews/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/get request: name: ConnectWebviewsGetRequest @@ -16298,6 +16596,8 @@ service: path: /connect_webviews/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /connect_webviews/list request: name: ConnectWebviewsListRequest @@ -16414,6 +16714,9 @@ service: "docs": "OK", "type": "ConnectedAccountsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -16470,6 +16773,9 @@ service: "property": "connected_account", "type": "ConnectedAccountsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -16529,6 +16835,9 @@ service: "property": "connected_accounts", "type": "ConnectedAccountsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -16602,6 +16911,9 @@ service: "property": "connected_account", "type": "ConnectedAccountsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -16803,6 +17115,8 @@ service: path: /connected_accounts/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/delete request: name: ConnectedAccountsDeleteRequest @@ -16832,6 +17146,8 @@ service: path: /connected_accounts/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/get request: body: ConnectedAccountsGetRequest @@ -16871,6 +17187,8 @@ service: path: /connected_accounts/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/list request: name: ConnectedAccountsListRequest @@ -16912,6 +17230,8 @@ service: path: /connected_accounts/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /connected_accounts/update request: name: ConnectedAccountsUpdateRequest @@ -17017,6 +17337,9 @@ service: "docs": "OK", "type": "DevicesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -17317,6 +17640,9 @@ service: "property": "device", "type": "DevicesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -17435,6 +17761,9 @@ service: "property": "devices", "type": "DevicesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_device_providers": { "auth": true, @@ -17483,6 +17812,9 @@ service: "property": "device_providers", "type": "DevicesListDeviceProvidersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -17537,6 +17869,9 @@ service: "docs": "OK", "type": "DevicesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18001,6 +18336,8 @@ service: path: /devices/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/delete request: name: DevicesDeleteRequest @@ -18027,6 +18364,8 @@ service: path: /devices/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/get request: name: DevicesGetRequest @@ -18249,6 +18588,8 @@ service: path: /devices/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/list request: name: DevicesListRequest @@ -18327,6 +18668,8 @@ service: path: /devices/list_device_providers method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/list_device_providers request: name: DevicesListDeviceProvidersRequest @@ -18356,6 +18699,8 @@ service: path: /devices/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/update request: name: DevicesUpdateRequest @@ -18446,6 +18791,9 @@ service: "docs": "OK", "type": "SimulateConnectResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "disconnect": { "auth": true, @@ -18493,6 +18841,9 @@ service: "docs": "OK", "type": "SimulateDisconnectResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove": { "auth": true, @@ -18540,6 +18891,9 @@ service: "docs": "OK", "type": "SimulateRemoveResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18602,6 +18956,8 @@ service: path: /devices/simulate/connect method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/connect request: name: SimulateConnectRequest @@ -18628,6 +18984,8 @@ service: path: /devices/simulate/disconnect method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/disconnect request: name: SimulateDisconnectRequest @@ -18654,6 +19012,8 @@ service: path: /devices/simulate/remove method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/simulate/remove request: name: SimulateRemoveRequest @@ -18787,6 +19147,9 @@ service: "property": "device", "type": "UnmanagedGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -18897,6 +19260,9 @@ service: "property": "devices", "type": "UnmanagedListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -18946,6 +19312,9 @@ service: "docs": "OK", "type": "UnmanagedUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19314,6 +19683,8 @@ service: path: /devices/unmanaged/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/get request: name: UnmanagedGetRequest @@ -19380,6 +19751,8 @@ service: path: /devices/unmanaged/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/list request: name: UnmanagedListRequest @@ -19452,6 +19825,8 @@ service: path: /devices/unmanaged/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /devices/unmanaged/update request: name: UnmanagedUpdateRequest @@ -19560,6 +19935,9 @@ service: "property": "event", "type": "EventsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -19650,6 +20028,9 @@ service: "property": "events", "type": "EventsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -20441,6 +20822,8 @@ service: path: /events/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /events/get request: name: EventsGetRequest @@ -20486,6 +20869,8 @@ service: path: /events/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /events/list request: name: EventsListRequest @@ -21104,6 +21489,9 @@ service: "property": "device", "type": "LocksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -21270,6 +21658,9 @@ service: "property": "devices", "type": "LocksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "lock_door": { "auth": true, @@ -21329,6 +21720,9 @@ service: "property": "action_attempt", "type": "LocksLockDoorResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "unlock_door": { "auth": true, @@ -21388,6 +21782,9 @@ service: "property": "action_attempt", "type": "LocksUnlockDoorResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -21778,6 +22175,8 @@ service: path: /locks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/get request: name: LocksGetRequest @@ -22195,6 +22594,8 @@ service: path: /locks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/list request: name: LocksListRequest @@ -22307,6 +22708,8 @@ service: path: /locks/lock_door method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/lock_door request: name: LocksLockDoorRequest @@ -22343,6 +22746,8 @@ service: path: /locks/unlock_door method: POST auth: true + source: + openapi: ../openapi.json display-name: /locks/unlock_door request: name: LocksUnlockDoorRequest @@ -22442,6 +22847,9 @@ service: "property": "network", "type": "NetworksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -22486,6 +22894,9 @@ service: "property": "networks", "type": "NetworksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -22538,6 +22949,8 @@ service: path: /networks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /networks/get request: name: NetworksGetRequest @@ -22570,6 +22983,8 @@ service: path: /networks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /networks/list request: name: NetworksListRequest @@ -22681,6 +23096,9 @@ service: "property": "noise_threshold", "type": "NoiseThresholdsCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -22749,6 +23167,9 @@ service: "docs": "OK", "type": "NoiseThresholdsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -22806,6 +23227,9 @@ service: "property": "noise_threshold", "type": "NoiseThresholdsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -22866,6 +23290,9 @@ service: "property": "noise_thresholds", "type": "NoiseThresholdsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -22939,6 +23366,9 @@ service: "docs": "OK", "type": "NoiseThresholdsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -23041,6 +23471,8 @@ service: path: /noise_sensors/noise_thresholds/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/create request: name: NoiseThresholdsCreateRequest @@ -23092,6 +23524,8 @@ service: path: /noise_sensors/noise_thresholds/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/delete request: name: NoiseThresholdsDeleteRequest @@ -23132,6 +23566,8 @@ service: path: /noise_sensors/noise_thresholds/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/get request: name: NoiseThresholdsGetRequest @@ -23167,6 +23603,8 @@ service: path: /noise_sensors/noise_thresholds/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/list request: name: NoiseThresholdsListRequest @@ -23203,6 +23641,8 @@ service: path: /noise_sensors/noise_thresholds/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/noise_thresholds/update request: name: NoiseThresholdsUpdateRequest @@ -23304,6 +23744,9 @@ service: "docs": "OK", "type": "SimulateTriggerNoiseThresholdResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -23338,6 +23781,8 @@ service: path: /noise_sensors/simulate/trigger_noise_threshold method: POST auth: true + source: + openapi: ../openapi.json display-name: /noise_sensors/simulate/trigger_noise_threshold request: name: SimulateTriggerNoiseThresholdRequest @@ -23412,6 +23857,9 @@ service: "docs": "OK", "type": "PhonesDeactivateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -23495,6 +23943,9 @@ service: "property": "phones", "type": "PhonesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -23545,6 +23996,8 @@ service: path: /phones/deactivate method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/deactivate request: name: PhonesDeactivateRequest @@ -23568,6 +24021,8 @@ service: path: /phones/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/list request: name: PhonesListRequest @@ -23729,6 +24184,9 @@ service: "property": "phone", "type": "SimulateCreateSandboxPhoneResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -23877,6 +24335,8 @@ service: path: /phones/simulate/create_sandbox_phone method: POST auth: true + source: + openapi: ../openapi.json display-name: /phones/simulate/create_sandbox_phone request: name: SimulateCreateSandboxPhoneRequest @@ -24011,6 +24471,9 @@ service: "property": "action_attempt", "type": "ThermostatsCoolResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -24311,6 +24774,9 @@ service: "property": "thermostat", "type": "ThermostatsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "heat": { "auth": true, @@ -24372,6 +24838,9 @@ service: "property": "action_attempt", "type": "ThermostatsHeatResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "heat_cool": { "auth": true, @@ -24435,6 +24904,9 @@ service: "property": "action_attempt", "type": "ThermostatsHeatCoolResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -24553,6 +25025,9 @@ service: "property": "thermostats", "type": "ThermostatsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "off": { "auth": true, @@ -24612,6 +25087,9 @@ service: "property": "action_attempt", "type": "ThermostatsOffResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "set_fan_mode": { "auth": true, @@ -24673,6 +25151,9 @@ service: "property": "action_attempt", "type": "ThermostatsSetFanModeResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -24722,6 +25203,9 @@ service: "docs": "OK", "type": "ThermostatsUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -25247,6 +25731,8 @@ service: path: /thermostats/cool method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/cool request: name: ThermostatsCoolRequest @@ -25285,6 +25771,8 @@ service: path: /thermostats/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/get request: name: ThermostatsGetRequest @@ -25507,6 +25995,8 @@ service: path: /thermostats/heat method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/heat request: name: ThermostatsHeatRequest @@ -25545,6 +26035,8 @@ service: path: /thermostats/heat_cool method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/heat_cool request: name: ThermostatsHeatCoolRequest @@ -25585,6 +26077,8 @@ service: path: /thermostats/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/list request: name: ThermostatsListRequest @@ -25665,6 +26159,8 @@ service: path: /thermostats/off method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/off request: name: ThermostatsOffRequest @@ -25701,6 +26197,8 @@ service: path: /thermostats/set_fan_mode method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/set_fan_mode request: name: ThermostatsSetFanModeRequest @@ -25739,6 +26237,8 @@ service: path: /thermostats/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/update request: name: ThermostatsUpdateRequest @@ -25850,6 +26350,9 @@ service: "property": "climate_setting_schedule", "type": "ClimateSettingSchedulesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -25897,6 +26400,9 @@ service: "docs": "OK", "type": "ClimateSettingSchedulesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -25972,6 +26478,9 @@ service: "property": "climate_setting_schedule", "type": "ClimateSettingSchedulesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -26043,6 +26552,9 @@ service: "property": "climate_setting_schedules", "type": "ClimateSettingSchedulesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -26122,6 +26634,9 @@ service: "docs": "OK", "type": "ClimateSettingSchedulesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -26258,6 +26773,8 @@ service: path: /thermostats/climate_setting_schedules/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/create request: name: ClimateSettingSchedulesCreateRequest @@ -26314,6 +26831,8 @@ service: path: /thermostats/climate_setting_schedules/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/delete request: name: ClimateSettingSchedulesDeleteRequest @@ -26340,6 +26859,8 @@ service: path: /thermostats/climate_setting_schedules/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/get request: name: ClimateSettingSchedulesGetRequest @@ -26388,6 +26909,8 @@ service: path: /thermostats/climate_setting_schedules/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/list request: name: ClimateSettingSchedulesListRequest @@ -26434,6 +26957,8 @@ service: path: /thermostats/climate_setting_schedules/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /thermostats/climate_setting_schedules/update request: name: ClimateSettingSchedulesUpdateRequest @@ -26556,6 +27081,9 @@ service: "docs": "OK", "type": "UserIdentitiesAddAcsUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "create": { "auth": true, @@ -26631,6 +27159,9 @@ service: "property": "user_identity", "type": "UserIdentitiesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -26678,6 +27209,9 @@ service: "docs": "OK", "type": "UserIdentitiesDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -26721,6 +27255,9 @@ service: "property": "user_identity", "type": "UserIdentitiesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "grant_access_to_device": { "auth": true, @@ -26778,6 +27315,9 @@ service: "docs": "OK", "type": "UserIdentitiesGrantAccessToDeviceResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -26836,6 +27376,9 @@ service: "property": "user_identities", "type": "UserIdentitiesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_accessible_devices": { "auth": true, @@ -26980,6 +27523,9 @@ service: "property": "devices", "type": "UserIdentitiesListAccessibleDevicesResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_acs_systems": { "auth": true, @@ -27059,6 +27605,9 @@ service: "property": "acs_systems", "type": "UserIdentitiesListAcsSystemsResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list_acs_users": { "auth": true, @@ -27132,6 +27681,9 @@ service: "property": "acs_users", "type": "UserIdentitiesListAcsUsersResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "remove_acs_user": { "auth": true, @@ -27189,6 +27741,9 @@ service: "docs": "OK", "type": "UserIdentitiesRemoveAcsUserResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "revoke_access_to_device": { "auth": true, @@ -27246,6 +27801,9 @@ service: "docs": "OK", "type": "UserIdentitiesRevokeAccessToDeviceResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -27321,6 +27879,9 @@ service: "docs": "OK", "type": "UserIdentitiesUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -27595,6 +28156,8 @@ service: path: /user_identities/add_acs_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/add_acs_user request: name: UserIdentitiesAddAcsUserRequest @@ -27626,6 +28189,8 @@ service: path: /user_identities/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/create request: name: UserIdentitiesCreateRequest @@ -27670,6 +28235,8 @@ service: path: /user_identities/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/delete request: name: UserIdentitiesDeleteRequest @@ -27696,6 +28263,8 @@ service: path: /user_identities/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/get request: body: UserIdentitiesGetRequest @@ -27726,6 +28295,8 @@ service: path: /user_identities/grant_access_to_device method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/grant_access_to_device request: name: UserIdentitiesGrantAccessToDeviceRequest @@ -27757,6 +28328,8 @@ service: path: /user_identities/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list request: name: UserIdentitiesListRequest @@ -27792,6 +28365,8 @@ service: path: /user_identities/list_accessible_devices method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_accessible_devices request: name: UserIdentitiesListAccessibleDevicesRequest @@ -27887,6 +28462,8 @@ service: path: /user_identities/list_acs_systems method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_acs_systems request: name: UserIdentitiesListAcsSystemsRequest @@ -27937,6 +28514,8 @@ service: path: /user_identities/list_acs_users method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/list_acs_users request: name: UserIdentitiesListAcsUsersRequest @@ -27985,6 +28564,8 @@ service: path: /user_identities/remove_acs_user method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/remove_acs_user request: name: UserIdentitiesRemoveAcsUserRequest @@ -28016,6 +28597,8 @@ service: path: /user_identities/revoke_access_to_device method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/revoke_access_to_device request: name: UserIdentitiesRevokeAccessToDeviceRequest @@ -28047,6 +28630,8 @@ service: path: /user_identities/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/update request: name: UserIdentitiesUpdateRequest @@ -28142,6 +28727,9 @@ service: "docs": "OK", "type": "EnrollmentAutomationsDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -28197,6 +28785,9 @@ service: "property": "enrollment_automation", "type": "EnrollmentAutomationsGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "launch": { "auth": true, @@ -28282,6 +28873,9 @@ service: "property": "enrollment_automation", "type": "EnrollmentAutomationsLaunchResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -28339,6 +28933,9 @@ service: "property": "enrollment_automations", "type": "EnrollmentAutomationsListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -28500,6 +29097,8 @@ service: path: /user_identities/enrollment_automations/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/delete request: name: EnrollmentAutomationsDeleteRequest @@ -28526,6 +29125,8 @@ service: path: /user_identities/enrollment_automations/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/get request: name: EnrollmentAutomationsGetRequest @@ -28559,6 +29160,8 @@ service: path: /user_identities/enrollment_automations/launch method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/launch request: name: EnrollmentAutomationsLaunchRequest @@ -28607,6 +29210,8 @@ service: path: /user_identities/enrollment_automations/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /user_identities/enrollment_automations/list request: name: EnrollmentAutomationsListRequest @@ -28706,6 +29311,9 @@ service: "property": "webhook", "type": "WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "delete": { "auth": true, @@ -28745,6 +29353,9 @@ service: "docs": "OK", "type": "WebhooksDeleteResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -28793,6 +29404,9 @@ service: "property": "webhook", "type": "WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -28829,6 +29443,9 @@ service: "property": "webhooks", "type": "WebhooksListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "update": { "auth": true, @@ -28872,6 +29489,9 @@ service: "docs": "OK", "type": "WebhooksUpdateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -28968,6 +29588,8 @@ service: path: /webhooks/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/create request: name: WebhooksCreateRequest @@ -29002,6 +29624,8 @@ service: path: /webhooks/delete method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/delete request: name: WebhooksDeleteRequest @@ -29025,6 +29649,8 @@ service: path: /webhooks/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/get request: name: WebhooksGetRequest @@ -29055,6 +29681,8 @@ service: path: /webhooks/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/list response: docs: OK @@ -29077,6 +29705,8 @@ service: path: /webhooks/update method: POST auth: true + source: + openapi: ../openapi.json display-name: /webhooks/update request: name: WebhooksUpdateRequest @@ -29174,6 +29804,9 @@ service: "property": "workspace", "type": "WorkspacesCreateResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "get": { "auth": true, @@ -29207,6 +29840,9 @@ service: "property": "workspace", "type": "WorkspacesGetResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "list": { "auth": true, @@ -29242,6 +29878,9 @@ service: "property": "workspaces", "type": "WorkspacesListResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "reset_sandbox": { "auth": true, @@ -29275,6 +29914,9 @@ service: "property": "action_attempt", "type": "WorkspacesResetSandboxResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -29374,6 +30016,8 @@ service: path: /workspaces/create method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/create request: name: WorkspacesCreateRequest @@ -29418,6 +30062,8 @@ service: path: /workspaces/get method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/get response: docs: OK @@ -29440,6 +30086,8 @@ service: path: /workspaces/list method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/list response: docs: OK @@ -29462,6 +30110,8 @@ service: path: /workspaces/reset_sandbox method: POST auth: true + source: + openapi: ../openapi.json display-name: /workspaces/reset_sandbox response: docs: OK diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/squidex.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/squidex.json index 0d49ec680a3..172b66de183 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/squidex.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/squidex.json @@ -7703,6 +7703,9 @@ types: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteClient": { "auth": true, @@ -7766,6 +7769,9 @@ types: "docs": "Client deleted.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContributor": { "auth": true, @@ -7830,6 +7836,9 @@ types: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteImage": { "auth": true, @@ -7888,6 +7897,9 @@ types: "docs": "App image removed.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteLanguage": { "auth": true, @@ -7951,6 +7963,9 @@ types: "docs": "Language deleted.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteMyself": { "auth": true, @@ -8010,6 +8025,9 @@ types: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRole": { "auth": true, @@ -8076,6 +8094,9 @@ types: "docs": "Role deleted.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteWorkflow": { "auth": true, @@ -8144,6 +8165,9 @@ types: "docs": "Workflow deleted.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getApp": { "auth": true, @@ -8201,6 +8225,9 @@ types: "docs": "Apps returned.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getApps": { "auth": true, @@ -8250,6 +8277,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Apps returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetScripts": { "auth": true, @@ -8298,6 +8328,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Asset scripts returned.", "type": "root.AssetScriptsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getClients": { "auth": true, @@ -8355,6 +8388,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Clients returned.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContributors": { "auth": true, @@ -8413,6 +8449,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Contributors returned.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getImage": { "auth": true, @@ -8435,6 +8474,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App image found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getLanguages": { "auth": true, @@ -8492,6 +8534,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Languages returned.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getPermissions": { "auth": true, @@ -8526,6 +8571,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App permissions returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRoles": { "auth": true, @@ -8586,6 +8634,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Roles returned.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSettings": { "auth": true, @@ -8642,6 +8693,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "App settings returned.", "type": "root.AppSettingsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamApps": { "auth": true, @@ -8700,6 +8754,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Apps returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getWorkflows": { "auth": true, @@ -8762,6 +8819,9 @@ You will retrieve all apps, where you are assigned as a contributor.", "docs": "Workflows returned.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postApp": { "auth": true, @@ -8839,6 +8899,9 @@ You will be assigned as owner of the new app automatically.", "docs": "App created.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postClient": { "auth": true, @@ -8921,6 +8984,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Client created.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContributor": { "auth": true, @@ -8987,6 +9053,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Contributor assigned to app.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postLanguage": { "auth": true, @@ -9068,6 +9137,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Language created.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postRole": { "auth": true, @@ -9152,6 +9224,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Role created.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postWorkflow": { "auth": true, @@ -9238,6 +9313,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Workflow created.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putApp": { "auth": true, @@ -9315,6 +9393,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App updated.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAppTeam": { "auth": true, @@ -9388,6 +9469,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App transferred.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetScripts": { "auth": true, @@ -9476,6 +9560,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Asset scripts updated.", "type": "root.AssetScriptsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putClient": { "auth": true, @@ -9576,6 +9663,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Client updated.", "type": "root.ClientsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putLanguage": { "auth": true, @@ -9662,6 +9752,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Language updated.", "type": "root.AppLanguagesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRole": { "auth": true, @@ -9751,6 +9844,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Role updated.", "type": "root.RolesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSettings": { "auth": true, @@ -9848,6 +9944,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App updated.", "type": "root.AppSettingsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putWorkflow": { "auth": true, @@ -9954,6 +10053,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "Workflow updated.", "type": "root.WorkflowsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "uploadImage": { "auth": true, @@ -10024,6 +10126,9 @@ The client secret is auto generated on the server and returned. The client does "docs": "App image uploaded.", "type": "root.AppDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -10041,6 +10146,8 @@ service: path: /api/apps/{app}/assets/scripts method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10074,6 +10181,8 @@ service: path: /api/apps/{app}/assets/scripts method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10136,6 +10245,8 @@ service: method: GET auth: true docs: Gets all configured clients for the app with the specified name. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10178,6 +10289,8 @@ service: The client secret is auto generated on the server and returned. The client does not expire, the access token is valid for 30 days. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10230,6 +10343,8 @@ service: method: PUT auth: true docs: Only the display name can be changed, create a new client if necessary. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10303,6 +10418,8 @@ service: docs: >- The application that uses this client credentials cannot access the API after it has been revoked. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10345,6 +10462,8 @@ service: path: /api/apps/{app}/contributors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10382,6 +10501,8 @@ service: path: /api/apps/{app}/contributors method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10425,6 +10546,8 @@ service: path: /api/apps/{app}/contributors/me method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10463,6 +10586,8 @@ service: path: /api/apps/{app}/contributors/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10505,6 +10630,8 @@ service: path: /api/apps/{app}/image method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10520,6 +10647,8 @@ service: path: /api/apps/{app}/image method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10568,6 +10697,8 @@ service: path: /api/apps/{app}/image method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10609,6 +10740,8 @@ service: path: /api/apps/{app}/languages method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10645,6 +10778,8 @@ service: path: /api/apps/{app}/languages method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10694,6 +10829,8 @@ service: path: /api/apps/{app}/languages/{language} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10750,6 +10887,8 @@ service: path: /api/apps/{app}/languages/{language} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10791,6 +10930,8 @@ service: path: /api/apps/{app}/roles method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10829,6 +10970,8 @@ service: path: /api/apps/{app}/roles method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10880,6 +11023,8 @@ service: path: /api/apps/{app}/roles/permissions method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10901,6 +11046,8 @@ service: path: /api/apps/{app}/roles/{roleName} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -10958,6 +11105,8 @@ service: path: /api/apps/{app}/roles/{roleName} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11006,6 +11155,8 @@ service: user (OpenID implicit flow). You will retrieve all apps, where you are assigned as a contributor. + source: + openapi: ../openapi.json display-name: Get your apps. response: docs: Apps returned. @@ -11043,6 +11194,8 @@ service: implicit flow). You will be assigned as owner of the new app automatically. + source: + openapi: ../openapi.json display-name: Create a new app. request: name: CreateAppDto @@ -11099,6 +11252,8 @@ service: user (OpenID implicit flow). You will retrieve all apps, where you are assigned as a contributor. + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -11137,6 +11292,8 @@ service: path: /api/apps/{app} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11177,6 +11334,8 @@ service: path: /api/apps/{app} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11230,6 +11389,8 @@ service: path: /api/apps/{app} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11246,6 +11407,8 @@ service: path: /api/apps/{app}/team method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11296,6 +11459,8 @@ service: path: /api/apps/{app}/settings method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11331,6 +11496,8 @@ service: path: /api/apps/{app}/settings method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11391,6 +11558,8 @@ service: path: /api/apps/{app}/workflows method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11430,6 +11599,8 @@ service: path: /api/apps/{app}/workflows method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11482,6 +11653,8 @@ service: path: /api/apps/{app}/workflows/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11549,6 +11722,8 @@ service: path: /api/apps/{app}/workflows/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -11678,6 +11853,9 @@ service: "docs": "Assets created, update or delete.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteAsset": { "auth": true, @@ -11722,6 +11900,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteAssetFolder": { "auth": true, @@ -11753,6 +11934,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getAsset": { "auth": true, @@ -11828,6 +12012,9 @@ service: "docs": "Asset found.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetContent": { "auth": true, @@ -11912,6 +12099,9 @@ service: "docs": "Asset found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetContentBySlug": { "auth": true, @@ -12003,6 +12193,9 @@ service: "docs": "Asset found and content or (resized) image returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetFolders": { "auth": true, @@ -12085,6 +12278,9 @@ service: "docs": "Asset folders returned.", "type": "root.AssetFoldersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssets": { "auth": true, @@ -12199,6 +12395,9 @@ service: "docs": "Assets returned.", "type": "root.AssetsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getAssetsPost": { "auth": true, @@ -12286,6 +12485,9 @@ service: "docs": "Assets returned.", "type": "root.AssetsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTags": { "auth": true, @@ -12320,6 +12522,9 @@ service: "docs": "Assets tags returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, "postAsset": { "auth": true, @@ -12417,6 +12622,9 @@ service: "docs": "Asset created.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postAssetFolder": { "auth": true, @@ -12489,6 +12697,9 @@ service: "docs": "Asset folder created.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUpsertAsset": { "auth": true, @@ -12587,6 +12798,9 @@ service: "docs": "Asset created or updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAsset": { "auth": true, @@ -12694,6 +12908,9 @@ service: "docs": "Asset updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetContent": { "auth": true, @@ -12783,6 +13000,9 @@ service: "docs": "Asset updated.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetFolder": { "auth": true, @@ -12856,6 +13076,9 @@ service: "docs": "Asset folder updated.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetFolderParent": { "auth": true, @@ -12921,6 +13144,9 @@ service: "docs": "Asset folder moved.", "type": "root.AssetFolderDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putAssetParent": { "auth": true, @@ -13012,6 +13238,9 @@ service: "docs": "Asset moved.", "type": "root.AssetDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTag": { "auth": true, @@ -13075,6 +13304,9 @@ service: "docs": "Asset tag renamed and new tags returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -13092,6 +13324,8 @@ service: path: /api/assets/{app}/{idOrSlug}/{more} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13160,6 +13394,8 @@ service: path: /api/assets/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -13222,6 +13458,8 @@ service: method: GET auth: true docs: Get all asset folders for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13275,6 +13513,8 @@ service: path: /api/apps/{app}/assets/folders method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13320,6 +13560,8 @@ service: path: /api/apps/{app}/assets/folders/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13366,6 +13608,8 @@ service: path: /api/apps/{app}/assets/folders/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13386,6 +13630,8 @@ service: path: /api/apps/{app}/assets/folders/{id}/parent method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13430,6 +13676,8 @@ service: method: GET auth: true docs: Get all tags for assets. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13451,6 +13699,8 @@ service: path: /api/apps/{app}/assets/tags/{name} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13490,6 +13740,8 @@ service: method: GET auth: true docs: Get all assets for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13575,6 +13827,8 @@ service: docs: >- You can only upload one file at a time. The mime type of the file is not calculated by Squidex and is required correctly. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13647,6 +13901,8 @@ service: method: POST auth: true docs: Get all assets for the app. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13710,6 +13966,8 @@ service: path: /api/apps/{app}/assets/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13769,6 +14027,8 @@ service: docs: >- You can only upload one file at a time. The mime type of the file is not calculated by Squidex and is required correctly. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13841,6 +14101,8 @@ service: path: /api/apps/{app}/assets/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13919,6 +14181,8 @@ service: path: /api/apps/{app}/assets/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -13948,6 +14212,8 @@ service: path: /api/apps/{app}/assets/bulk method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14001,6 +14267,8 @@ service: method: PUT auth: true docs: Use multipart request to upload an asset. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14066,6 +14334,8 @@ service: path: /api/apps/{app}/assets/{id}/parent method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14172,6 +14442,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackupContent": { "auth": true, @@ -14198,6 +14471,9 @@ service: "docs": "Backup found and content returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackupContentV2": { "auth": true, @@ -14233,6 +14509,9 @@ service: "docs": "Backup found and content returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getBackups": { "auth": true, @@ -14289,6 +14568,9 @@ service: "docs": "Backups returned.", "type": "root.BackupJobsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRestoreJob": { "auth": true, @@ -14319,6 +14601,9 @@ service: "docs": "Status returned.", "type": "root.RestoreJobDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postBackup": { "auth": true, @@ -14345,6 +14630,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "postRestoreJob": { "auth": true, @@ -14394,6 +14682,9 @@ service: "name": "RestoreRequestDto", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14411,6 +14702,8 @@ service: path: /api/apps/{app}/backups/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14429,6 +14722,8 @@ service: path: /api/apps/{app}/backups/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14449,6 +14744,8 @@ service: path: /api/apps/backups/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -14473,6 +14770,8 @@ service: path: /api/apps/{app}/backups method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14509,6 +14808,8 @@ service: path: /api/apps/{app}/backups method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14525,6 +14826,8 @@ service: path: /api/apps/restore method: GET auth: true + source: + openapi: ../openapi.json display-name: Get current restore status. response: docs: Status returned. @@ -14544,6 +14847,8 @@ service: path: /api/apps/restore method: POST auth: true + source: + openapi: ../openapi.json display-name: Restore a backup. request: name: RestoreRequestDto @@ -14616,6 +14921,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getComments": { "auth": true, @@ -14685,6 +14993,9 @@ service: "docs": "Comments returned.", "type": "root.CommentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getWatchingUsers": { "auth": true, @@ -14723,6 +15034,9 @@ service: "docs": "Watching users returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postComment": { "auth": true, @@ -14774,6 +15088,9 @@ service: "docs": "Comment created.", "type": "root.CommentDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putComment": { "auth": true, @@ -14817,6 +15134,9 @@ service: "body": "root.UpsertCommentDto", "content-type": "application/json", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -14834,6 +15154,8 @@ service: path: /api/apps/{app}/watching/{resource} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14859,6 +15181,8 @@ service: method: GET auth: true docs: When passing in a version you can retrieve all updates since then. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14904,6 +15228,8 @@ service: path: /api/apps/{app}/comments/{commentsId} method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14939,6 +15265,8 @@ service: path: /api/apps/{app}/comments/{commentsId}/{commentId} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -14968,6 +15296,8 @@ service: path: /api/apps/{app}/comments/{commentsId}/{commentId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -15099,6 +15429,9 @@ service: "docs": "", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "createDraft": { "auth": true, @@ -15220,6 +15553,9 @@ service: "docs": "Content draft created.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContent": { "auth": true, @@ -15269,6 +15605,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteContentStatus": { "auth": true, @@ -15390,6 +15729,9 @@ service: "docs": "Content status change cancelled.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteVersion": { "auth": true, @@ -15511,6 +15853,9 @@ service: "docs": "Content draft deleted.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContent": { "auth": true, @@ -15645,6 +15990,9 @@ service: "docs": "Content returned.", "type": "root.ContentDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentValidity": { "auth": true, @@ -15681,6 +16029,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentVersion": { "auth": true, @@ -15716,6 +16067,9 @@ service: "docs": "Content version returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContents": { "auth": true, @@ -15844,6 +16198,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContentsPost": { "auth": true, @@ -15965,6 +16322,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getReferences": { "auth": true, @@ -16094,6 +16454,9 @@ service: "docs": "Contents returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getReferencing": { "auth": true, @@ -16223,6 +16586,9 @@ service: "docs": "Content returned.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "patchContent": { "auth": true, @@ -16353,6 +16719,9 @@ service: "docs": "Content patched.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContent": { "auth": true, @@ -16493,6 +16862,9 @@ service: "docs": "Content created.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContents": { "auth": true, @@ -16584,6 +16956,9 @@ service: "docs": "Contents created.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUpsertContent": { "auth": true, @@ -16729,6 +17104,9 @@ service: "docs": "Content created or updated.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putContent": { "auth": true, @@ -16859,6 +17237,9 @@ service: "docs": "Content updated.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putContentStatus": { "auth": true, @@ -17011,6 +17392,9 @@ service: "docs": "Content status changed.", "type": "root.ContentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -17031,6 +17415,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17124,6 +17510,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17226,6 +17614,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17315,6 +17705,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17416,6 +17808,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17522,6 +17916,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17617,6 +18013,8 @@ service: docs: >- You can create an generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17653,6 +18051,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17748,6 +18148,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17775,6 +18177,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17869,6 +18273,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17963,6 +18369,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -17991,6 +18399,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18055,6 +18465,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18126,6 +18538,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18233,6 +18647,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18322,6 +18738,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18411,6 +18829,8 @@ service: docs: >- You can read the generated documentation for your app at /api/content/{appName}/docs. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -18521,6 +18941,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/diagnostics/dump", + "source": { + "openapi": "../openapi.json", + }, }, "getGCDump": { "auth": true, @@ -18536,6 +18959,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/diagnostics/gcdump", + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18553,6 +18979,8 @@ service: path: /api/diagnostics/dump method: GET auth: true + source: + openapi: ../openapi.json display-name: Creates a dump and writes it into storage.. errors: - root.InternalServerError @@ -18563,6 +18991,8 @@ service: path: /api/diagnostics/gcdump method: GET auth: true + source: + openapi: ../openapi.json display-name: Creates a gc dump and writes it into storage. errors: - root.InternalServerError @@ -18628,6 +19058,9 @@ service: "docs": "Event consumers returned.", "type": "root.EventConsumersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "resetEventConsumer": { "auth": true, @@ -18675,6 +19108,9 @@ service: "docs": "Event consumer resetted asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "startEventConsumer": { "auth": true, @@ -18722,6 +19158,9 @@ service: "docs": "Event consumer started asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "stopEventConsumer": { "auth": true, @@ -18769,6 +19208,9 @@ service: "docs": "Event consumer stopped asynchronously.", "type": "root.EventConsumerDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -18786,6 +19228,8 @@ service: path: /api/event-consumers method: GET auth: true + source: + openapi: ../openapi.json display-name: Get event consumers. response: docs: Event consumers returned. @@ -18815,6 +19259,8 @@ service: path: /api/event-consumers/{consumerName}/start method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -18847,6 +19293,8 @@ service: path: /api/event-consumers/{consumerName}/stop method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -18879,6 +19327,8 @@ service: path: /api/event-consumers/{consumerName}/reset method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: consumerName: type: string @@ -18970,6 +19420,9 @@ service: "docs": "Events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamHistory": { "auth": true, @@ -19020,6 +19473,9 @@ service: "docs": "Events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19037,6 +19493,8 @@ service: path: /api/apps/{app}/history method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19069,6 +19527,8 @@ service: path: /api/teams/{team}/history method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -19138,6 +19598,9 @@ service: "docs": "Supported language codes returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19158,6 +19621,8 @@ service: docs: >- Provide a list of supported language codes, following the ISO2Code standard. + source: + openapi: ../openapi.json display-name: Get supported languages. response: docs: Supported language codes returned. @@ -19222,6 +19687,9 @@ service: "docs": "Latest features returned.", "type": "root.FeaturesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19239,6 +19707,8 @@ service: path: /api/news/features method: GET auth: true + source: + openapi: ../openapi.json display-name: Get features since version. request: name: NewsGetNewsRequest @@ -19302,6 +19772,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getNotifications": { "auth": true, @@ -19365,6 +19838,9 @@ service: "docs": "All comments returned.", "type": "root.CommentsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19383,6 +19859,8 @@ service: method: GET auth: true docs: When passing in a version you can retrieve all updates since then. + source: + openapi: ../openapi.json path-parameters: userId: type: string @@ -19423,6 +19901,8 @@ service: path: /api/users/{userId}/notifications/{commentId} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: userId: type: string @@ -19476,6 +19956,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getInfo": { "auth": true, @@ -19500,6 +19983,9 @@ service: "docs": "Infos returned.", "type": "root.ExposedValues", }, + "source": { + "openapi": "../openapi.json", + }, }, "getPing": { "auth": true, @@ -19514,6 +20000,9 @@ service: "method": "GET", "pagination": undefined, "path": "/api/ping", + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19531,6 +20020,8 @@ service: path: /api/info method: GET auth: true + source: + openapi: ../openapi.json display-name: Get API information. response: docs: Infos returned. @@ -19546,6 +20037,8 @@ service: method: GET auth: true docs: Can be used to test, if the Squidex API is alive and responding. + source: + openapi: ../openapi.json display-name: Get ping status of the API. errors: - root.InternalServerError @@ -19556,6 +20049,8 @@ service: method: GET auth: true docs: Can be used to test, if the Squidex API is alive and responding. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19636,6 +20131,9 @@ service: "docs": "App plan information returned.", "type": "root.PlansDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamPlans": { "auth": true, @@ -19693,6 +20191,9 @@ service: "docs": "Team plan information returned.", "type": "root.PlansDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putPlan": { "auth": true, @@ -19735,6 +20236,9 @@ service: "docs": "Plan changed or redirect url returned.", "type": "root.PlanChangedDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTeamPlan": { "auth": true, @@ -19777,6 +20281,9 @@ service: "docs": "Plan changed or redirect url returned.", "type": "root.PlanChangedDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -19794,6 +20301,8 @@ service: path: /api/apps/{app}/plans method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19834,6 +20343,8 @@ service: path: /api/apps/{app}/plan method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -19861,6 +20372,8 @@ service: path: /api/teams/{team}/plans method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -19901,6 +20414,8 @@ service: path: /api/teams/{team}/plan method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -19968,6 +20483,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteEvents": { "auth": true, @@ -19993,6 +20511,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRule": { "auth": true, @@ -20024,6 +20545,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRuleEvents": { "auth": true, @@ -20054,6 +20578,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteRuleRun": { "auth": true, @@ -20079,6 +20606,9 @@ service: "variable": "$appName", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "disableRule": { "auth": true, @@ -20150,6 +20680,9 @@ service: "docs": "Rule disabled.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableRule": { "auth": true, @@ -20221,6 +20754,9 @@ service: "docs": "Rule enabled.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getActions": { "auth": true, @@ -20261,6 +20797,9 @@ service: "docs": "Rule actions returned.", "type": "map", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEventSchema": { "auth": true, @@ -20295,6 +20834,9 @@ service: "docs": "Rule event type found.", "type": "unknown", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEventTypes": { "auth": true, @@ -20319,6 +20861,9 @@ service: "docs": "Rule events returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getEvents": { "auth": true, @@ -20396,6 +20941,9 @@ service: "docs": "Rule events returned.", "type": "root.RuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getRules": { "auth": true, @@ -20471,6 +21019,9 @@ service: "docs": "Rules returned.", "type": "root.RulesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postRule": { "auth": true, @@ -20556,6 +21107,9 @@ service: "docs": "Rule created.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putEvent": { "auth": true, @@ -20587,6 +21141,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "putRule": { "auth": true, @@ -20685,6 +21242,9 @@ service: "docs": "Rule updated.", "type": "root.RuleDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRuleRun": { "auth": true, @@ -20724,6 +21284,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.json", + }, }, "simulateGET": { "auth": true, @@ -20789,6 +21352,9 @@ service: "docs": "Rule simulated.", "type": "root.SimulatedRuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "simulatePOST": { "auth": true, @@ -20869,6 +21435,9 @@ service: "docs": "Rule simulated.", "type": "root.SimulatedRuleEventsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "triggerRule": { "auth": true, @@ -20900,6 +21469,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -20917,6 +21489,8 @@ service: path: /api/rules/actions method: GET auth: true + source: + openapi: ../openapi.json display-name: Get supported rule actions. response: docs: Rule actions returned. @@ -20943,6 +21517,8 @@ service: path: /api/apps/{app}/rules method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -20996,6 +21572,8 @@ service: path: /api/apps/{app}/rules method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21060,6 +21638,8 @@ service: path: /api/apps/{app}/rules/run method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21075,6 +21655,8 @@ service: path: /api/apps/{app}/rules/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21146,6 +21728,8 @@ service: path: /api/apps/{app}/rules/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21166,6 +21750,8 @@ service: path: /api/apps/{app}/rules/{id}/enable method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21219,6 +21805,8 @@ service: path: /api/apps/{app}/rules/{id}/disable method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21272,6 +21860,8 @@ service: path: /api/apps/{app}/rules/{id}/trigger method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21292,6 +21882,8 @@ service: path: /api/apps/{app}/rules/{id}/run method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21317,6 +21909,8 @@ service: path: /api/apps/{app}/rules/{id}/events method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21336,6 +21930,8 @@ service: path: /api/apps/{app}/rules/simulate method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21391,6 +21987,8 @@ service: path: /api/apps/{app}/rules/{id}/simulate method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21434,6 +22032,8 @@ service: path: /api/apps/{app}/rules/events method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21486,6 +22086,8 @@ service: path: /api/apps/{app}/rules/events method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21501,6 +22103,8 @@ service: path: /api/apps/{app}/rules/events/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21521,6 +22125,8 @@ service: path: /api/apps/{app}/rules/events/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -21541,6 +22147,8 @@ service: path: /api/rules/eventtypes method: GET auth: true + source: + openapi: ../openapi.json display-name: Provide a list of all event types that are used in rules. response: docs: Rule events returned. @@ -21555,6 +22163,8 @@ service: path: /api/rules/eventtypes/{type} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: type: type: string @@ -21727,6 +22337,9 @@ service: "docs": "Schema field deleted.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteNestedField": { "auth": true, @@ -21874,6 +22487,9 @@ service: "docs": "Schema field deleted.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteSchema": { "auth": true, @@ -21905,6 +22521,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "disableField": { "auth": true, @@ -22047,6 +22666,9 @@ service: "docs": "Schema field disabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "disableNestedField": { "auth": true, @@ -22194,6 +22816,9 @@ service: "docs": "Schema field disabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableField": { "auth": true, @@ -22336,6 +22961,9 @@ service: "docs": "Schema field enabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "enableNestedField": { "auth": true, @@ -22483,6 +23111,9 @@ service: "docs": "Schema field enabled.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSchema": { "auth": true, @@ -22619,6 +23250,9 @@ service: "docs": "Schema found.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getSchemas": { "auth": true, @@ -22722,6 +23356,9 @@ service: "docs": "Schemas returned.", "type": "root.SchemasDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "hideField": { "auth": true, @@ -22864,6 +23501,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "hideNestedField": { "auth": true, @@ -23011,6 +23651,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockField": { "auth": true, @@ -23153,6 +23796,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockNestedField": { "auth": true, @@ -23300,6 +23946,9 @@ service: "docs": "Schema field hidden.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postField": { "auth": true, @@ -23452,6 +24101,9 @@ service: "docs": "Schema field created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postNestedField": { "auth": true, @@ -23609,6 +24261,9 @@ service: "docs": "Schema field created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postSchema": { "auth": true, @@ -23779,6 +24434,9 @@ service: "docs": "Schema created.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "publishSchema": { "auth": true, @@ -23916,6 +24574,9 @@ service: "docs": "Schema published.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putCategory": { "auth": true, @@ -24068,6 +24729,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putField": { "auth": true, @@ -24223,6 +24887,9 @@ service: "docs": "Schema field updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putNestedField": { "auth": true, @@ -24383,6 +25050,9 @@ service: "docs": "Schema field updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putNestedFieldOrdering": { "auth": true, @@ -24534,6 +25204,9 @@ service: "docs": "Schema fields reordered.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putPreviewUrls": { "auth": true, @@ -24678,6 +25351,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putRules": { "auth": true, @@ -24830,6 +25506,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchema": { "auth": true, @@ -25020,6 +25699,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaFieldOrdering": { "auth": true, @@ -25166,6 +25848,9 @@ service: "docs": "Schema fields reordered.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaSync": { "auth": true, @@ -25329,6 +26014,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putSchemaUIFields": { "auth": true, @@ -25485,6 +26173,9 @@ service: "docs": "Schema UI fields defined.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putScripts": { "auth": true, @@ -25627,6 +26318,9 @@ service: "docs": "Schema updated.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "showField": { "auth": true, @@ -25769,6 +26463,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "showNestedField": { "auth": true, @@ -25916,6 +26613,9 @@ service: "docs": "Schema field shown.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "unpublishSchema": { "auth": true, @@ -26053,6 +26753,9 @@ service: "docs": "Schema unpublished.", "type": "root.SchemaDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -26070,6 +26773,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26182,6 +26887,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26298,6 +27005,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/ui method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26410,6 +27119,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/ordering method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26516,6 +27227,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/ordering method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26626,6 +27339,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26740,6 +27455,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26844,6 +27561,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -26962,6 +27681,8 @@ service: path: /api/apps/{app}/schemas/{schema}/fields/{parentId}/nested/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27071,6 +27792,8 @@ service: method: PUT auth: true docs: A locked field cannot be updated or deleted. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27176,6 +27899,8 @@ service: method: PUT auth: true docs: A locked field cannot be edited or deleted. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27287,6 +28012,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27394,6 +28121,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27505,6 +28234,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27612,6 +28343,8 @@ service: docs: >- A hidden field is not part of the API response, but can still be edited in the portal. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27723,6 +28456,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27830,6 +28565,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -27941,6 +28678,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28048,6 +28787,8 @@ service: docs: >- A disabled field cannot not be edited in the squidex portal anymore, but will be part of the API response. + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28156,6 +28897,8 @@ service: path: /api/apps/{app}/schemas method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28226,6 +28969,8 @@ service: path: /api/apps/{app}/schemas method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28347,6 +29092,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28446,6 +29193,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28580,6 +29329,8 @@ service: path: /api/apps/{app}/schemas/{schema} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28600,6 +29351,8 @@ service: path: /api/apps/{app}/schemas/{schema}/sync method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28717,6 +29470,8 @@ service: path: /api/apps/{app}/schemas/{schema}/category method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28826,6 +29581,8 @@ service: path: /api/apps/{app}/schemas/{schema}/preview-urls method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -28931,6 +29688,8 @@ service: path: /api/apps/{app}/schemas/{schema}/scripts method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29035,6 +29794,8 @@ service: path: /api/apps/{app}/schemas/{schema}/rules method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29144,6 +29905,8 @@ service: path: /api/apps/{app}/schemas/{schema}/publish method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29244,6 +30007,8 @@ service: path: /api/apps/{app}/schemas/{schema}/unpublish method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29406,6 +30171,9 @@ service: "docs": "Search results returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -29423,6 +30191,8 @@ service: path: /api/apps/{app}/search method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29500,6 +30270,9 @@ service: "docs": "Storage usage returned.", "type": "root.CurrentStorageDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getLog": { "auth": true, @@ -29534,6 +30307,9 @@ service: "docs": "Usage tracking results returned.", "type": "root.LogDownloadDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getStorageSizes": { "auth": true, @@ -29582,6 +30358,9 @@ service: "docs": "Storage usage returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getStorageSizesForTeam": { "auth": true, @@ -29630,6 +30409,9 @@ service: "docs": "Storage usage returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeamCurrentStorageSizeForTeam": { "auth": true, @@ -29665,6 +30447,9 @@ service: "docs": "Storage usage returned.", "type": "root.CurrentStorageDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsages": { "auth": true, @@ -29726,6 +30511,9 @@ service: "docs": "API call returned.", "type": "root.CallsUsageDtoDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsagesForTeam": { "auth": true, @@ -29787,6 +30575,9 @@ service: "docs": "API call returned.", "type": "root.CallsUsageDtoDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -29804,6 +30595,8 @@ service: path: /api/apps/{app}/usages/log method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29825,6 +30618,8 @@ service: path: /api/apps/{app}/usages/calls/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29867,6 +30662,8 @@ service: path: /api/teams/{team}/usages/calls/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -29909,6 +30706,8 @@ service: path: /api/apps/{app}/usages/storage/today method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29931,6 +30730,8 @@ service: path: /api/teams/{team}/usages/storage/today method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -29953,6 +30754,8 @@ service: path: /api/apps/{app}/usages/storage/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -29984,6 +30787,8 @@ service: path: /api/teams/{team}/usages/storage/{fromDate}/{toDate} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30088,6 +30893,9 @@ service: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "deleteMyself": { "auth": true, @@ -30147,6 +30955,9 @@ service: "docs": "Contributor removed.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getContributors": { "auth": true, @@ -30205,6 +31016,9 @@ service: "docs": "Contributors returned.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeam": { "auth": true, @@ -30251,6 +31065,9 @@ service: "docs": "Teams returned.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTeams": { "auth": true, @@ -30289,6 +31106,9 @@ You will retrieve all teams, where you are assigned as a contributor.", "docs": "Teams returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, "postContributor": { "auth": true, @@ -30355,6 +31175,9 @@ You will retrieve all teams, where you are assigned as a contributor.", "docs": "Contributor assigned to team.", "type": "root.ContributorsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postTeam": { "auth": true, @@ -30417,6 +31240,9 @@ You will be assigned as owner of the new team automatically.", "docs": "Team created.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putTeam": { "auth": true, @@ -30487,6 +31313,9 @@ You will be assigned as owner of the new team automatically.", "docs": "Team updated.", "type": "root.TeamDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -30504,6 +31333,8 @@ service: path: /api/teams/{team}/contributors method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30541,6 +31372,8 @@ service: path: /api/teams/{team}/contributors method: POST auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30584,6 +31417,8 @@ service: path: /api/teams/{team}/contributors/me method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30622,6 +31457,8 @@ service: path: /api/teams/{team}/contributors/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30669,6 +31506,8 @@ service: user (OpenID implicit flow). You will retrieve all teams, where you are assigned as a contributor. + source: + openapi: ../openapi.json display-name: Get your teams. response: docs: Teams returned. @@ -30697,6 +31536,8 @@ service: implicit flow). You will be assigned as owner of the new team automatically. + source: + openapi: ../openapi.json display-name: Create a new team. request: name: CreateTeamDto @@ -30735,6 +31576,8 @@ service: path: /api/teams/{team} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30766,6 +31609,8 @@ service: path: /api/teams/{team} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: team: type: string @@ -30860,6 +31705,9 @@ service: "docs": "Template returned.", "type": "root.TemplateDetailsDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getTemplates": { "auth": true, @@ -30904,6 +31752,9 @@ service: "docs": "Templates returned.", "type": "root.TemplatesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -30921,6 +31772,8 @@ service: path: /api/templates method: GET auth: true + source: + openapi: ../openapi.json display-name: Get all templates. response: docs: Templates returned. @@ -30948,6 +31801,8 @@ service: path: /api/templates/{name} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: name: type: string @@ -31056,6 +31911,9 @@ service: "docs": "Text translated.", "type": "root.TranslationDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -31073,6 +31931,8 @@ service: path: /api/apps/{app}/translations method: POST auth: true + source: + openapi: ../openapi.json path-parameters: app: variable: $appName @@ -31152,6 +32012,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.json", + }, }, "getUser": { "auth": true, @@ -31199,6 +32062,9 @@ service: "docs": "User returned.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsers": { "auth": true, @@ -31264,6 +32130,9 @@ service: "docs": "Users returned.", "type": "root.UsersDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "lockUser": { "auth": true, @@ -31313,6 +32182,9 @@ service: "docs": "User locked.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "postUser": { "auth": true, @@ -31403,6 +32275,9 @@ service: "docs": "User created.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "putUser": { "auth": true, @@ -31496,6 +32371,9 @@ service: "docs": "User created.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "unlockUser": { "auth": true, @@ -31545,6 +32423,9 @@ service: "docs": "User unlocked.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -31562,6 +32443,8 @@ service: path: /api/user-management method: GET auth: true + source: + openapi: ../openapi.json display-name: Get users by query. request: name: UserManagementGetUsersRequest @@ -31604,6 +32487,8 @@ service: path: /api/user-management method: POST auth: true + source: + openapi: ../openapi.json display-name: Create a new user. request: name: CreateUserDto @@ -31658,6 +32543,8 @@ service: path: /api/user-management/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -31689,6 +32576,8 @@ service: path: /api/user-management/{id} method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -31747,6 +32636,8 @@ service: path: /api/user-management/{id} method: DELETE auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -31764,6 +32655,8 @@ service: path: /api/user-management/{id}/lock method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -31797,6 +32690,8 @@ service: path: /api/user-management/{id}/unlock method: PUT auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -31886,6 +32781,9 @@ service: "docs": "User found.", "type": "root.UserDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUserPicture": { "auth": true, @@ -31908,6 +32806,9 @@ service: "docs": "User found and image or fallback returned.", "type": "file", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUserResources": { "auth": true, @@ -31938,6 +32839,9 @@ service: "docs": "User resources returned.", "type": "root.ResourcesDto", }, + "source": { + "openapi": "../openapi.json", + }, }, "getUsers": { "auth": true, @@ -31985,6 +32889,9 @@ service: "docs": "Users returned.", "type": "list", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -32002,6 +32909,8 @@ service: path: /api method: GET auth: true + source: + openapi: ../openapi.json display-name: Get the user resources. response: docs: User resources returned. @@ -32023,6 +32932,8 @@ service: docs: >- Search the user by query that contains the email address or the part of the email address. + source: + openapi: ../openapi.json display-name: Get users by query. request: name: UsersGetUsersRequest @@ -32052,6 +32963,8 @@ service: path: /api/users/{id} method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string @@ -32083,6 +32996,8 @@ service: path: /api/users/{id}/picture method: GET auth: true + source: + openapi: ../openapi.json path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/streaming.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/streaming.json index caafda60026..3c3360ffa81 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/streaming.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/streaming.json @@ -46,6 +46,9 @@ "docs": "", "type": "User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_stream": { "auth": false, @@ -87,6 +90,9 @@ "format": "json", "type": "StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v2": { "auth": false, @@ -127,6 +133,9 @@ "docs": "", "type": "User2", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v2_stream": { "auth": false, @@ -170,6 +179,9 @@ "format": "json", "type": "StreamUser2", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v3": { "auth": false, @@ -209,6 +221,9 @@ "docs": "", "type": "UserV3Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, "user_v3_stream": { "auth": false, @@ -252,6 +267,9 @@ "format": "json", "type": "UserV3StreamResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -378,6 +396,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserStreamRequest body: @@ -401,6 +421,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserRequest body: @@ -423,6 +445,8 @@ path: /v2/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV2StreamRequest body: @@ -448,6 +472,8 @@ path: /v2/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV2Request body: @@ -472,6 +498,8 @@ path: /v3/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV3StreamRequest body: @@ -497,6 +525,8 @@ path: /v3/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: UserV3Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/suger.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/suger.json index 0ac5abbbb6b..b20b430d69c 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/suger.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/suger.json @@ -6934,6 +6934,9 @@ types: "docs": "OK", "type": "root.SharedApiClientAccessToken", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -6952,6 +6955,8 @@ types: docs: >- Get the Bearer Access Token by giving the Suger API Client ID & Client Secret. + source: + openapi: ../swagger.json display-name: get api access token request: name: SharedGetApiClientAccessTokenParams @@ -7068,6 +7073,9 @@ types: "docs": "OK", "type": "root.SharedIdentityBuyer", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListBuyersByOrganization": { "auth": true, @@ -7115,6 +7123,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateBuyerNameDescription": { "auth": true, @@ -7205,6 +7216,9 @@ types: "docs": "OK", "type": "root.SharedIdentityBuyer", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -7223,6 +7237,8 @@ service: method: GET auth: true docs: list all buyers by the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -7255,6 +7271,8 @@ service: method: GET auth: true docs: get buyer by the given organization and buyer id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -7311,6 +7329,8 @@ service: method: PATCH auth: true docs: update buyer name and description by the given organization and buyer id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -7450,6 +7470,9 @@ service: "docs": "OK", "type": "root.SharedAddEntitlementCreditResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetEntitlement": { "auth": true, @@ -7539,6 +7562,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadEntitlement", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlements": { "auth": true, @@ -7625,6 +7651,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByBuyer": { "auth": true, @@ -7716,6 +7745,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByOffer": { "auth": true, @@ -7807,6 +7839,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByPartner": { "auth": true, @@ -7898,6 +7933,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementsByProduct": { "auth": true, @@ -7989,6 +8027,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateEntitlementName": { "auth": true, @@ -8092,6 +8133,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadEntitlement", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -8122,6 +8166,8 @@ service: method: GET auth: true docs: List all entitlements of the given buyer + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8190,6 +8236,8 @@ service: method: GET auth: true docs: List all entitlements under the organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8254,6 +8302,8 @@ service: method: GET auth: true docs: Get the entitlement by ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8325,6 +8375,8 @@ service: Add the credit amount to the given Entitlement. The credit amount is accumulated & saved in the current Entitlement Term of the gvien Entitlement. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8369,6 +8421,8 @@ service: method: PATCH auth: true docs: Update the name of the given Entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8446,6 +8500,8 @@ service: method: GET auth: true docs: List all entitlements under the given offer + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8514,6 +8570,8 @@ service: method: GET auth: true docs: List all entitlements under the given partner + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8582,6 +8640,8 @@ service: method: GET auth: true docs: List all entitlements under the given product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8760,6 +8820,9 @@ types: "docs": "OK", "type": "root.SharedWorkloadEntitlementTerm", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListEntitlementTerms": { "auth": true, @@ -8851,6 +8914,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -8869,6 +8935,8 @@ service: method: GET auth: true docs: List all Entitlement Terms of the given Entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -8937,6 +9005,8 @@ service: method: GET auth: true docs: Get the entitlement term by ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9144,6 +9214,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "DeleteIntegration": { "auth": true, @@ -9185,6 +9258,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetIntegration": { "auth": true, @@ -9302,6 +9378,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListIntegrationsByOrganization": { "auth": true, @@ -9344,6 +9423,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateIntegration": { "auth": true, @@ -9489,6 +9571,9 @@ service: "docs": "OK", "type": "root.SharedIdentityIntegration", }, + "source": { + "openapi": "../swagger.json", + }, }, "VerifyIntegration": { "auth": true, @@ -9530,6 +9615,9 @@ service: "docs": "whether it is verified or not", "type": "boolean", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -9646,6 +9734,8 @@ service: method: GET auth: true docs: List all integrations for the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9676,6 +9766,8 @@ service: docs: >- For each organization, partner & service, there should be at most one integration. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9775,6 +9867,8 @@ service: method: GET auth: true docs: Get the integration for the given organization, partner & service. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9867,6 +9961,8 @@ service: method: DELETE auth: true docs: delete the integration for the given orgId, partner and service. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -9895,6 +9991,8 @@ service: method: PATCH auth: true docs: Update the given integration. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10005,6 +10103,8 @@ service: method: POST auth: true docs: Verify the given integration, check whether it works correctly. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10161,6 +10261,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordGroup", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetUsageRecordReport": { "auth": true, @@ -10253,6 +10356,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByEntitlement": { "auth": true, @@ -10328,6 +10434,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByOrganization": { "auth": true, @@ -10398,6 +10507,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordGroupsByProduct": { "auth": true, @@ -10473,6 +10585,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordGroupsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByEntitlement": { "auth": true, @@ -10547,6 +10662,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByOrganization": { "auth": true, @@ -10612,6 +10730,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListUsageRecordReportsByProduct": { "auth": true, @@ -10682,6 +10803,9 @@ types: "docs": "OK", "type": "root.SharedListUsageRecordReportsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ReportUsageRecordGroup": { "auth": true, @@ -10765,6 +10889,9 @@ types: "docs": "OK", "type": "root.SharedMeteringUsageRecordGroup", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -10783,6 +10910,8 @@ service: method: GET auth: true docs: list UsageRecordGroups for the given organization and entitlement + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10840,6 +10969,8 @@ service: It is recommended to provide the ID in the request body CreateUsageRecordGroupParams, so the report can be deduplicated. All duplicate report will return error code 409. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10902,6 +11033,8 @@ service: docs: >- List usageRecordReports for the given organization and entitlement. Filter by entitlementTermId if it is given. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -10957,6 +11090,8 @@ service: method: GET auth: true docs: list UsageRecordGroups for the given organization and product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11011,6 +11146,8 @@ service: method: GET auth: true docs: List usageRecordReports for the given organization and product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11061,6 +11198,8 @@ service: method: GET auth: true docs: list UsageRecordGroups under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11111,6 +11250,8 @@ service: method: GET auth: true docs: get UsageRecordGroup for the given organization and usageRecordGroup ID + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11148,6 +11289,8 @@ service: method: GET auth: true docs: List usageRecordReports under the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11196,6 +11339,8 @@ service: docs: >- get the usageRecordReport for a given organization and usageRecordReport ID. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -11306,6 +11451,9 @@ service: "docs": "Empty string if cancellation is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "CreateOffer": { "auth": true, @@ -11465,6 +11613,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "CreateOrUpdateDraftOffer": { "auth": true, @@ -11624,6 +11775,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "DeleteOffer": { "auth": true, @@ -11660,6 +11814,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetOffer": { "auth": true, @@ -11818,6 +11975,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadOffer", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByOrganization": { "auth": true, @@ -11909,6 +12069,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByPartner": { "auth": false, @@ -12018,6 +12181,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListOffersByProduct": { "auth": true, @@ -12114,6 +12280,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -12146,6 +12315,8 @@ service: docs: >- Create a new draft offer or update the existing draft offer. When updating draft offer, the offer.ID is required. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12268,6 +12439,8 @@ service: method: GET auth: true docs: List all offers under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12334,6 +12507,8 @@ service: method: POST auth: true docs: Create a private offer under the given organization. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12456,6 +12631,8 @@ service: method: GET auth: true docs: Get the offer by the given offer ID. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12579,6 +12756,8 @@ service: docs: >- Only the offer with status = "DRAFT" or "CREATE_FAILED" is allowed to be deleted. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12605,6 +12784,8 @@ service: docs: >- Only the offer with status = "PENDING_ACCEPTANCE" or "PENDING_CANCEL" is allowed to cancel. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12630,6 +12811,8 @@ service: method: GET auth: false docs: List all offers under the given organization & cloud partner. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12709,6 +12892,8 @@ service: method: GET auth: true docs: List all offers under the given organization & product. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12857,6 +13042,9 @@ types: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -12878,6 +13066,8 @@ service: List all long running operations under the given organization, offer, entitlement, crmOpportunity or partnerOpportunity. Only provide one filter on a request. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -12964,6 +13154,9 @@ service: "docs": "Empty string if deletion is successful", "type": "string", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetProduct": { "auth": true, @@ -13079,6 +13272,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadProduct", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductMeteringDimensions": { "auth": true, @@ -13125,6 +13321,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductsByOrganization": { "auth": true, @@ -13190,6 +13389,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListProductsByPartner": { "auth": true, @@ -13260,6 +13462,9 @@ service: "docs": "OK", "type": "list", }, + "source": { + "openapi": "../swagger.json", + }, }, "UpdateProduct": { "auth": true, @@ -13393,6 +13598,9 @@ service: "docs": "OK", "type": "root.SharedWorkloadProduct", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -13431,6 +13639,8 @@ service: method: GET auth: true docs: list all products under the given organization and cloud partner + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13481,6 +13691,8 @@ service: method: GET auth: true docs: list all products under the given organization + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13527,6 +13739,8 @@ service: method: GET auth: true docs: get product by product id + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13611,6 +13825,8 @@ service: method: DELETE auth: true docs: only the product with status = "CREATE_FAILED" is allowed to be deleted. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13635,6 +13851,8 @@ service: method: PATCH auth: true docs: currently only the Fulfillment URL is allowed to update via this API. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13731,6 +13949,8 @@ service: method: GET auth: true docs: list all metering dimensions of the given product + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -13875,6 +14095,9 @@ service: "docs": "OK", "type": "root.SharedRevenueReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "GetUsageReport": { "auth": true, @@ -13941,6 +14164,9 @@ service: "docs": "OK", "type": "root.SharedUsageReport", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListRevenueRecordDetails": { "auth": true, @@ -14016,6 +14242,9 @@ service: "docs": "OK", "type": "root.SharedListRevenueRecordDetailsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, "ListRevenueRecords": { "auth": true, @@ -14112,6 +14341,9 @@ service: "docs": "OK", "type": "root.SharedListRevenueRecordsResponse", }, + "source": { + "openapi": "../swagger.json", + }, }, }, "source": { @@ -14188,6 +14420,8 @@ service: docs: >- list the revenue records for the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14263,6 +14497,8 @@ service: docs: >- list the raw revenue record details for the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14319,6 +14555,8 @@ service: docs: >- Get the revenue report of the given organization, product, entitlement, or buyer. + source: + openapi: ../swagger.json path-parameters: orgId: type: string @@ -14402,6 +14640,8 @@ service: docs: >- get the daily usage report of the given entitlement, the default timespan is lifetime. + source: + openapi: ../swagger.json path-parameters: orgId: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/superagent.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/superagent.json index b800c342a47..c7b05cb2f8a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/superagent.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/superagent.json @@ -154,6 +154,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteAgent": { "auth": true, @@ -184,6 +187,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getAgent": { "auth": true, @@ -214,6 +220,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listAllAgents": { "auth": true, @@ -235,6 +244,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchAgent": { "auth": true, @@ -274,6 +286,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "promptAgent": { "auth": true, @@ -326,6 +341,9 @@ types: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -342,6 +360,8 @@ types: method: GET auth: true docs: List all agents + source: + openapi: ../openapi.yml display-name: List All Agents response: docs: Successful Response @@ -355,6 +375,8 @@ types: method: POST auth: true docs: Create a new agent + source: + openapi: ../openapi.yml display-name: Create Agent request: name: Agent @@ -391,6 +413,8 @@ types: method: GET auth: true docs: Get a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Get Agent @@ -410,6 +434,8 @@ types: method: DELETE auth: true docs: Delete a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Delete Agent @@ -429,6 +455,8 @@ types: method: PATCH auth: true docs: Patch a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Patch Agent @@ -454,6 +482,8 @@ types: method: POST auth: true docs: Invoke a specific agent + source: + openapi: ../openapi.yml path-parameters: agentId: string display-name: Prompt Agent @@ -534,6 +564,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteApiToken": { "auth": true, @@ -564,6 +597,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getApiToken": { "auth": true, @@ -594,6 +630,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listApiTokens": { "auth": true, @@ -615,6 +654,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -631,6 +673,8 @@ imports: method: GET auth: true docs: List all API tokens + source: + openapi: ../openapi.yml display-name: List Api Tokens response: docs: Successful Response @@ -644,6 +688,8 @@ imports: method: POST auth: true docs: Create a new API token + source: + openapi: ../openapi.yml display-name: Create Api Token request: name: ApiToken @@ -667,6 +713,8 @@ imports: method: GET auth: true docs: Get a specific API token + source: + openapi: ../openapi.yml path-parameters: tokenId: string display-name: Get Api Token @@ -686,6 +734,8 @@ imports: method: DELETE auth: true docs: Delete a specific API token + source: + openapi: ../openapi.yml path-parameters: tokenId: string display-name: Delete Api Token @@ -755,6 +805,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "signUp": { "auth": false, @@ -801,6 +854,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -818,6 +874,8 @@ service: path: /api/v1/auth/sign-in method: POST auth: false + source: + openapi: ../openapi.yml display-name: Sign In request: name: SignIn @@ -842,6 +900,8 @@ service: path: /api/v1/auth/sign-up method: POST auth: false + source: + openapi: ../openapi.yml display-name: Sign Up request: name: SignUp @@ -936,6 +996,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteDocument": { "auth": true, @@ -966,6 +1029,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getDocument": { "auth": true, @@ -996,6 +1062,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listDocuments": { "auth": true, @@ -1017,6 +1086,9 @@ service: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1033,6 +1105,8 @@ service: method: GET auth: true docs: List all documents + source: + openapi: ../openapi.yml display-name: List Documents response: docs: Successful Response @@ -1046,6 +1120,8 @@ service: method: POST auth: true docs: Create a new document + source: + openapi: ../openapi.yml display-name: Create Document request: name: Document @@ -1083,6 +1159,8 @@ service: method: GET auth: true docs: Get a specific document + source: + openapi: ../openapi.yml path-parameters: documentId: string display-name: Get Document @@ -1102,6 +1180,8 @@ service: method: DELETE auth: true docs: Delete a specific document + source: + openapi: ../openapi.yml path-parameters: documentId: string display-name: Delete Document @@ -1175,6 +1255,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deletePrompt": { "auth": true, @@ -1205,6 +1288,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getPrompt": { "auth": true, @@ -1235,6 +1321,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listPrompts": { "auth": true, @@ -1256,6 +1345,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "patchPrompt": { "auth": true, @@ -1295,6 +1387,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1311,6 +1406,8 @@ imports: method: GET auth: true docs: List all prompts + source: + openapi: ../openapi.yml display-name: List Prompts response: docs: Successful Response @@ -1324,6 +1421,8 @@ imports: method: POST auth: true docs: Create a new prompt + source: + openapi: ../openapi.yml display-name: Create A Prompt request: name: Prompt @@ -1352,6 +1451,8 @@ imports: method: GET auth: true docs: Get a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Get Prompt @@ -1371,6 +1472,8 @@ imports: method: DELETE auth: true docs: Delete a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Delete Prompt @@ -1390,6 +1493,8 @@ imports: method: PATCH auth: true docs: Patch a specific prompt + source: + openapi: ../openapi.yml path-parameters: promptId: string display-name: Patch Prompt @@ -1468,6 +1573,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteTool": { "auth": true, @@ -1498,6 +1606,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getTool": { "auth": true, @@ -1528,6 +1639,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "listTools": { "auth": true, @@ -1549,6 +1663,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1565,6 +1682,8 @@ imports: method: GET auth: true docs: List all tools + source: + openapi: ../openapi.yml display-name: List Tools response: docs: Successful Response @@ -1578,6 +1697,8 @@ imports: method: POST auth: true docs: Create a new tool + source: + openapi: ../openapi.yml display-name: Create A Tool request: name: Tool @@ -1605,6 +1726,8 @@ imports: method: GET auth: true docs: Get a specific tool + source: + openapi: ../openapi.yml path-parameters: toolId: string display-name: Get Tool @@ -1624,6 +1747,8 @@ imports: method: DELETE auth: true docs: Delete a specific tool + source: + openapi: ../openapi.yml path-parameters: toolId: string display-name: Delete Tool @@ -1671,6 +1796,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1687,6 +1815,8 @@ imports: method: GET auth: true docs: List all agent traces + source: + openapi: ../openapi.yml display-name: List Agent Traces response: docs: Successful Response @@ -1738,6 +1868,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, "readUserMe": { "auth": true, @@ -1759,6 +1892,9 @@ imports: "docs": "Successful Response", "type": "unknown", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1774,6 +1910,8 @@ imports: path: /api/v1/users/me method: GET auth: true + source: + openapi: ../openapi.yml display-name: Read User Me response: docs: Successful Response @@ -1786,6 +1924,8 @@ imports: path: /api/v1/users/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string display-name: Read User diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/switchboard.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/switchboard.json index a95408fd511..ee5674ac6ef 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/switchboard.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/switchboard.json @@ -1033,6 +1033,9 @@ types: }, "name": "AuthAndRedirectRequest", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1049,6 +1052,8 @@ types: method: GET auth: false docs: Auth and redirect sessions by ID + source: + openapi: ../openapi.yml display-name: Auth and redirect sessions request: name: AuthAndRedirectRequest @@ -1103,6 +1108,9 @@ types: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "audiences": [ @@ -1167,6 +1175,9 @@ types: "docs": "OK", "type": "root.ListExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getById": { "audiences": [ @@ -1231,6 +1242,9 @@ types: "docs": "OK", "type": "root.ExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -1298,6 +1312,9 @@ types: "docs": "Created", "type": "root.ExtensionV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1316,6 +1333,8 @@ service: method: GET auth: false docs: Get extensions, searching by name + source: + openapi: ../openapi.yml display-name: Get extensions request: name: ExtensionsGetRequest @@ -1354,6 +1373,8 @@ service: path: /extensions method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create an extension request: name: ExtensionsPostRequest @@ -1395,6 +1416,8 @@ service: method: DELETE auth: false docs: Delete an extension by ID + source: + openapi: ../openapi.yml display-name: Delete extensions matching name query request: name: ExtensionsDeleteRequest @@ -1412,6 +1435,8 @@ service: method: GET auth: false docs: Get an extension by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1493,6 +1518,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "audiences": [ @@ -1565,6 +1593,9 @@ service: "docs": "OK", "type": "root.ListProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getById": { "audiences": [ @@ -1632,6 +1663,9 @@ service: "docs": "OK", "type": "root.ProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -1712,6 +1746,9 @@ service: "docs": "Created", "type": "root.ProfileV1EnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1730,6 +1767,8 @@ service: method: GET auth: false docs: Get profiles, searching by name or tags + source: + openapi: ../openapi.yml display-name: Get profiles request: name: ProfilesGetRequest @@ -1776,6 +1815,8 @@ service: path: /profiles method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a profile request: name: ProfileInput @@ -1825,6 +1866,8 @@ service: method: DELETE auth: false docs: Delete profiles matching query + source: + openapi: ../openapi.yml display-name: Delete profiles matching query request: name: ProfilesDeleteRequest @@ -1848,6 +1891,8 @@ service: method: GET auth: false docs: Get a profile by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -1926,6 +1971,9 @@ service: "format": "sse", "type": "SessionsEventsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getinfo": { "audiences": [ @@ -2008,6 +2056,9 @@ service: "docs": "OK", "type": "root.SessionWithConnectionInfoEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "audiences": [ @@ -2107,6 +2158,9 @@ service: "docs": "OK", "type": "root.SessionsWithPaginationEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "post": { "audiences": [ @@ -2190,6 +2244,9 @@ service: "docs": "Created", "type": "root.SessionWithConnectionInfoEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "terminate": { "audiences": [ @@ -2214,6 +2271,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2344,6 +2404,8 @@ service: method: GET auth: false docs: Get a list of sessions by ID + source: + openapi: ../openapi.yml display-name: Get a list of sessions request: name: SessionsListRequest @@ -2410,6 +2472,8 @@ service: path: /sessions method: POST auth: false + source: + openapi: ../openapi.yml display-name: Create a session request: name: SessionRestInputV1 @@ -2465,6 +2529,8 @@ service: method: GET auth: false docs: Get a session by ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2523,6 +2589,8 @@ service: docs: >- Ends a session by ID. If a given session id does not exist within the organization, it is ignored. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2538,6 +2606,8 @@ service: method: GET auth: false docs: Get a session event stream for a given session ID + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -2649,6 +2719,9 @@ service: "docs": "Created", "type": "root.WindowEnvelopeDefaultMetaWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "prompt-content": { "audiences": [ @@ -2744,6 +2817,9 @@ service: "docs": "Created", "type": "root.ModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "scrape-content": { "audiences": [ @@ -2821,6 +2897,9 @@ service: "docs": "Created", "type": "root.ScrapeModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, "summarize-content": { "audiences": [ @@ -2909,6 +2988,9 @@ service: "docs": "Created", "type": "root.ModelResponseExternalSessionAiResponseMetadataWrapper", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2926,6 +3008,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/get-window-info method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -2986,6 +3070,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/prompt-content method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -3049,6 +3135,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/scrape-content method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string @@ -3098,6 +3186,8 @@ service: path: /sessions/{sessionId}/windows/{windowId}/summarize-content method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: sessionId: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uint.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uint.json index 49806743b7a..c5cdae9be46 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uint.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uint.json @@ -42,6 +42,9 @@ "docs": "A simple API response.", "type": "Response", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -70,6 +73,8 @@ path: /get method: GET auth: false + source: + openapi: ../openapi.yml request: name: Request body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uploadcare.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uploadcare.json index 1618842a7bd..c51c2aefe45 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uploadcare.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/uploadcare.json @@ -2303,6 +2303,9 @@ processing operations. "docs": "The group was created successfully.", "type": "root.GroupInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "filesGroupInfo": { "auth": false, @@ -2492,6 +2495,9 @@ Log.d("TAG", group.toString()) "docs": "File group information was retrieved successfully.", "type": "root.GroupInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -2527,6 +2533,8 @@ service: a group is to create a new one. + source: + openapi: ../openapi.json display-name: Create a file group request: name: CreateFilesGroupRequest @@ -2715,6 +2723,8 @@ service: group was created, number of the files in the group, etc). + source: + openapi: ../openapi.json display-name: Get information about a file group request: name: FilesGroupInfoRequest @@ -3048,6 +3058,9 @@ Log.d("TAG", file.toString()) "docs": "The file was uploaded successfully.", "type": "BaseUploadResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "fileUploadInfo": { "auth": false, @@ -3266,6 +3279,9 @@ Log.d("TAG", file.toString()) "docs": "File information was retrieved successfully.", "type": "root.FileUploadInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "fromURLUpload": { "auth": false, @@ -3681,6 +3697,9 @@ to the value of the `check_URL_duplicates` parameter. "docs": "Status Token or File Info of an already downloaded file.", "type": "FromUrlUploadResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "fromURLUploadStatus": { "auth": false, @@ -4276,6 +4295,9 @@ Log.d("TAG", status.toString()) ", "type": "FromUrlUploadStatusResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadComplete": { "auth": false, @@ -4527,6 +4549,9 @@ Log.d("TAG", file.toString()) "docs": "The file was uploaded successfully.", "type": "root.FileUploadInfo", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadPart": { "auth": false, @@ -4652,6 +4677,9 @@ Log.d("TAG", file.toString()) "body": "bytes", "content-type": "application/octet-stream", }, + "source": { + "openapi": "../openapi.json", + }, }, "multipartFileUploadStart": { "auth": false, @@ -4859,6 +4887,9 @@ to us as a value of the `part_size` parameter (in bytes). "docs": "Multipart upload started successfully.", "type": "MultipartFileUploadStartResponse", }, + "source": { + "openapi": "../openapi.json", + }, }, }, "source": { @@ -5076,6 +5107,8 @@ service: "my_file.jpg=@my_file.jpg" "https://upload.uploadcare.com/base/" ``` + source: + openapi: ../openapi.json display-name: Direct uploads request: name: BaseUploadRequest @@ -5236,6 +5269,8 @@ service: **Note**: Multipart uploads support files larger than 10 megabytes only. + source: + openapi: ../openapi.json display-name: Start multipart upload request: name: MultipartFileUploadStartRequest @@ -5452,6 +5487,8 @@ service: **Note**: You MUST define `Content-Type` header for your data. + source: + openapi: ../openapi.json display-name: Upload individual file parts request: body: bytes @@ -5585,6 +5622,8 @@ service: upload session to assemble all the file parts into a single resulting file. + source: + openapi: ../openapi.json display-name: Complete multipart upload request: name: MultipartFileUploadCompleteRequest @@ -5850,6 +5889,8 @@ service: uploads, pass the `save_URL_duplicates` and `check_URL_duplicates` parameters described below. + source: + openapi: ../openapi.json display-name: Upload files from URLs request: name: FromUrlUploadRequest @@ -6226,6 +6267,8 @@ service: and the endpoint returns a JSON object holding information about the uploaded file * if the system fails to fetch/upload the file, the `status` field is set to `error` and the `error` field is set to the cause of the error. + source: + openapi: ../openapi.json display-name: Check the status of a task to fetch/upload a file from a URL request: name: FromUrlUploadStatusRequest @@ -6756,6 +6799,8 @@ service: docs: > Returns a JSON object with information about an uploaded file (file size, MIME type, metadata, etc). + source: + openapi: ../openapi.json display-name: Get information about an uploaded file request: name: FileUploadInfoRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/valtown.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/valtown.json index bb403953e63..9c2313a2f3a 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/valtown.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/valtown.json @@ -977,6 +977,9 @@ API endpoints", "docs": "Default Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "val": { "auth": false, @@ -1031,6 +1034,9 @@ API endpoints", "docs": "A Val", "type": "AliasValResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1223,6 +1229,8 @@ service: method: GET auth: false docs: Get basic details about a user, given their username + source: + openapi: ../openapi.yml path-parameters: username: type: string @@ -1247,6 +1255,8 @@ service: method: GET auth: false docs: Get a val + source: + openapi: ../openapi.yml path-parameters: username: type: string @@ -1433,6 +1443,9 @@ types: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -1450,6 +1463,9 @@ types: "docs": "Binary contents of the returned file", "type": "file", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": false, @@ -1483,6 +1499,9 @@ types: "docs": "List of blobs that you’ve stored", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "store": { "auth": true, @@ -1517,6 +1536,9 @@ types: }, "content-type": "application/json", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1564,6 +1586,8 @@ service: method: GET auth: false docs: List blobs in your account + source: + openapi: ../openapi.yml request: name: BlobsListRequest query-parameters: @@ -1584,6 +1608,8 @@ service: method: GET auth: false docs: Get a blob’s contents. + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1596,6 +1622,8 @@ service: method: POST auth: true docs: Store data in blob storage + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1616,6 +1644,8 @@ service: method: DELETE auth: true docs: Delete a blob + source: + openapi: ../openapi.yml path-parameters: key: type: string @@ -1711,6 +1741,9 @@ docs: Blobs "docs": "Successfully sent email", "type": "EmailsSendResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -1873,6 +1906,8 @@ service: method: POST auth: true docs: Send emails + source: + openapi: ../openapi.yml request: name: EmailsSendRequest body: @@ -2006,6 +2041,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeCommentsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -2035,6 +2073,9 @@ give access to details and data from the requesting user.", "docs": "Your user information, with tier and email included", "type": "MeGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "likes": { "auth": false, @@ -2098,6 +2139,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeLikesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "references": { "auth": false, @@ -2160,6 +2204,9 @@ give access to details and data from the requesting user.", "docs": "A paginated result set", "type": "MeReferencesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2706,6 +2753,8 @@ service: method: GET auth: false docs: Get profile information for the current user + source: + openapi: ../openapi.yml response: docs: Your user information, with tier and email included type: MeGetResponse @@ -2726,6 +2775,8 @@ service: method: GET auth: false docs: Get vals liked by the current user + source: + openapi: ../openapi.yml request: name: MeLikesRequest query-parameters: @@ -2770,6 +2821,8 @@ service: method: GET auth: false docs: Get comments related to current user, either given or received + source: + openapi: ../openapi.yml request: name: MeCommentsRequest query-parameters: @@ -2818,6 +2871,8 @@ service: method: GET auth: false docs: Get vals that depend on any of the user's vals + source: + openapi: ../openapi.yml request: name: MeReferencesRequest query-parameters: @@ -2943,6 +2998,9 @@ imports: "docs": "A paginated result set", "type": "SearchValsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2981,6 +3039,8 @@ service: method: GET auth: false docs: Search for vals across the platform + source: + openapi: ../openapi.yml request: name: SearchValsRequest query-parameters: @@ -3093,6 +3153,9 @@ docs: Search "docs": "Array of results from the statements executed", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, "execute": { "auth": true, @@ -3172,6 +3235,9 @@ docs: Search "docs": "Default Response", "type": "root.ResultSet", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3343,6 +3409,8 @@ service: method: POST auth: true docs: Execute a single SQLite statement and return results + source: + openapi: ../openapi.yml request: name: SqliteExecuteRequest body: @@ -3387,6 +3455,8 @@ service: method: POST auth: true docs: Execute a batch of SQLite statements and return results for all of them + source: + openapi: ../openapi.yml request: name: SqliteBatchRequest body: @@ -3465,6 +3535,9 @@ docs: SQLite "docs": "Default Response", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "vals": { "auth": false, @@ -3537,6 +3610,9 @@ docs: SQLite "docs": "A paginated result set", "type": "UsersValsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3567,6 +3643,8 @@ service: method: GET auth: false docs: Get basic information about a user + source: + openapi: ../openapi.yml path-parameters: user_id: type: string @@ -3591,6 +3669,8 @@ service: method: GET auth: false docs: List a user's vals + source: + openapi: ../openapi.yml path-parameters: user_id: type: string @@ -3699,6 +3779,9 @@ let you get, create, and run vals.", "docs": "The evaluation_id was successfully searched for and the evaluation was either already done or now has been cancelled", "type": "ValsCancelResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create": { "auth": true, @@ -3795,6 +3878,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "createVersion": { "auth": true, @@ -3900,6 +3986,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -3923,6 +4012,9 @@ let you get, create, and run vals.", "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "deleteVersion": { "auth": true, @@ -3951,6 +4043,9 @@ let you get, create, and run vals.", "type": "integer", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "evalGet": { "auth": false, @@ -3987,6 +4082,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "evalPost": { "auth": false, @@ -4048,6 +4146,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "optional", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": false, @@ -4097,6 +4198,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "getVersion": { "auth": false, @@ -4168,6 +4272,9 @@ let you get, create, and run vals.", "docs": "Default Response", "type": "root.ExtendedVal", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": false, @@ -4225,6 +4332,9 @@ let you get, create, and run vals.", "docs": "A paginated result set", "type": "ValsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "put": { "auth": true, @@ -4270,6 +4380,9 @@ let you get, create, and run vals.", "name": "ValsPutRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "runGet": { "auth": false, @@ -4300,6 +4413,9 @@ let you get, create, and run vals.", }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "runPost": { "auth": false, @@ -4337,6 +4453,9 @@ let you get, create, and run vals.", "name": "RunPostRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -4409,6 +4528,9 @@ let you get, create, and run vals.", "name": "ValsUpdateRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4694,6 +4816,8 @@ service: method: POST auth: false docs: Run JavaScript or TypeScript without saving it permanently as a val + source: + openapi: ../openapi.yml request: name: EvalPostRequest body: @@ -4736,6 +4860,8 @@ service: method: GET auth: false docs: Run JavaScript or TypeScript without saving it permanently as a val + source: + openapi: ../openapi.yml path-parameters: code: type: string @@ -4759,6 +4885,8 @@ service: method: GET auth: false docs: Run a val, specify any parameters in a querystring + source: + openapi: ../openapi.yml path-parameters: valname: type: string @@ -4780,6 +4908,8 @@ service: method: POST auth: false docs: Run a val, with arguments in the request body + source: + openapi: ../openapi.yml path-parameters: valname: type: string @@ -4802,6 +4932,8 @@ service: method: POST auth: true docs: Create a new val + source: + openapi: ../openapi.yml request: name: ValsCreateRequest body: @@ -4872,6 +5004,8 @@ service: method: PUT auth: true docs: Run an existing val or create a new one + source: + openapi: ../openapi.yml request: name: ValsPutRequest body: @@ -4898,6 +5032,8 @@ service: method: GET auth: false docs: Get a val by id + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -4934,6 +5070,8 @@ service: method: PUT auth: true docs: Update an existing val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -4982,6 +5120,8 @@ service: method: DELETE auth: true docs: Delete a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -4996,6 +5136,8 @@ service: method: GET auth: false docs: List versions of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5033,6 +5175,8 @@ service: method: POST auth: true docs: Create a new version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5109,6 +5253,8 @@ service: method: GET auth: false docs: Get a specific version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5161,6 +5307,8 @@ service: method: DELETE auth: true docs: Delete a specific version of a val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string @@ -5179,6 +5327,8 @@ service: method: POST auth: true docs: Cancel a running val + source: + openapi: ../openapi.yml path-parameters: val_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/vellum.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/vellum.json index 7ecbffbe0ca..5582c87f5df 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/vellum.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/vellum.json @@ -198,6 +198,9 @@ Executes a deployed Workflow and streams back its results.", "format": "json", "type": "WorkflowStreamEvent", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "generate": { @@ -291,6 +294,9 @@ Generate a completion using a previously defined deployment. "docs": "", "type": "GenerateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "generate-stream": { @@ -385,6 +391,9 @@ Generate a stream of completions using a previously defined deployment. "format": "json", "type": "GenerateStreamResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "search": { @@ -474,6 +483,9 @@ Perform a search against a document index. "docs": "", "type": "SearchResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, "submit-completion-actuals": { @@ -534,6 +546,9 @@ Used to submit feedback regarding the quality of previously generated completion "name": "SubmitCompletionActualsRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Predict", }, }, @@ -2479,6 +2494,8 @@ Used to submit feedback regarding the quality of previously generated completion Executes a deployed Workflow and streams back its results. + source: + openapi: ../openapi.yml request: name: ExecuteWorkflowStreamRequest body: @@ -2560,6 +2577,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: GenerateBodyRequest body: @@ -2626,6 +2645,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: GenerateStreamBodyRequest body: @@ -2695,6 +2716,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: SearchRequestBodyRequest body: @@ -2757,6 +2780,8 @@ Used to submit feedback regarding the quality of previously generated completion **Note:** Uses a base url of `https://predict.vellum.ai`. + source: + openapi: ../openapi.yml request: name: SubmitCompletionActualsRequest body: @@ -4206,6 +4231,9 @@ Used to retrieve a deployment given its ID or name. "docs": "", "type": "root.DeploymentRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -4231,6 +4259,8 @@ service: Used to retrieve a deployment given its ID or name. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -4446,6 +4476,9 @@ Creates a new document index.", "docs": "", "type": "root.DocumentIndexRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -4470,6 +4503,8 @@ service: Creates a new document index. + source: + openapi: ../openapi.yml request: name: DocumentIndexCreateRequest body: @@ -4671,6 +4706,9 @@ Used to list documents. Optionally filter on supported fields. "docs": "", "type": "root.PaginatedSlimDocumentList", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upload": { @@ -4746,6 +4784,9 @@ Upload a document to be indexed and used for search. "docs": "", "type": "root.UploadDocumentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Documents", }, }, @@ -4771,6 +4812,8 @@ service: Used to list documents. Optionally filter on supported fields. + source: + openapi: ../openapi.yml request: name: DocumentsListRequest query-parameters: @@ -4825,6 +4868,8 @@ service: **Note:** Uses a base url of `https://documents.vellum.ai`. + source: + openapi: ../openapi.yml request: name: UploadDocumentBodyRequest body: @@ -4936,6 +4981,9 @@ Compiles the prompt backing the model version using the provided input values.", "docs": "", "type": "root.ModelVersionCompilePromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "retrieve": { @@ -5015,6 +5063,9 @@ Used to retrieve a model version given its ID. "docs": "", "type": "root.ModelVersionRead", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5040,6 +5091,8 @@ service: Used to retrieve a model version given its ID. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5098,6 +5151,8 @@ service: Compiles the prompt backing the model version using the provided input values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5282,6 +5337,9 @@ Under the hood, this endpoint creates a new sandbox, a new model version, and a "docs": "", "type": "root.RegisterPromptResponse", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5313,6 +5371,8 @@ service: Under the hood, this endpoint creates a new sandbox, a new model version, and a new deployment. + source: + openapi: ../openapi.yml request: name: RegisterPromptRequestRequest body: @@ -5445,6 +5505,9 @@ Deletes an existing scenario from a sandbox, keying off of the provided scenario "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upsert_sandbox_scenario": { @@ -5596,6 +5659,9 @@ or overwritten with default values.", "docs": "", "type": "root.SandboxScenario", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5633,6 +5699,8 @@ service: not provided will be removed or overwritten with default values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5725,6 +5793,8 @@ service: Deletes an existing scenario from a sandbox, keying off of the provided scenario id. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5777,6 +5847,9 @@ Deletes an existing test case for a test suite, keying off of the test case id." "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, "upsert_test_suite_test_case": { @@ -5860,6 +5933,9 @@ or overwritten with default values.", "docs": "", "type": "root.TestSuiteTestCase", }, + "source": { + "openapi": "../openapi.yml", + }, "url": "Default", }, }, @@ -5897,6 +5973,8 @@ service: fields not provided will be removed or overwritten with default values. + source: + openapi: ../openapi.yml path-parameters: id: type: string @@ -5956,6 +6034,8 @@ service: Deletes an existing test case for a test suite, keying off of the test case id. + source: + openapi: ../openapi.yml path-parameters: id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/webflow.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/webflow.json index a1162ac342d..00761d5bd79 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/webflow.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/webflow.json @@ -758,6 +758,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "AccessGroupsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -911,6 +914,8 @@ service: docs: >- Get a list of access groups for a site

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -1061,6 +1066,9 @@ service: "docs": "Request was successful", "type": "AssetsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-folder": { "auth": true, @@ -1128,6 +1136,9 @@ service: "docs": "Request was successful", "type": "AssetsCreateFolderResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -1156,6 +1167,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -1214,6 +1228,9 @@ service: "docs": "Request was successful", "type": "AssetsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-folder": { "auth": true, @@ -1260,6 +1277,9 @@ service: "docs": "Request was successful", "type": "AssetsGetFolderResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -1321,6 +1341,9 @@ service: "docs": "Request was successful", "type": "AssetsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-folders": { "auth": true, @@ -1376,6 +1399,9 @@ service: "docs": "Request was successful", "type": "AssetsListFoldersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -1451,6 +1477,9 @@ service: "docs": "Request was successful", "type": "AssetsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -2369,6 +2398,8 @@ service: method: GET auth: true docs: List assets for a given site

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -2424,6 +2455,8 @@ service: request to the `uploadUrl` with the `uploadDetails` object as your header information in the request.

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -2489,6 +2522,8 @@ service: method: GET auth: true docs: Get an Asset

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -2532,6 +2567,8 @@ service: method: DELETE auth: true docs: Delete an Asset + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -2551,6 +2588,8 @@ service: method: PATCH auth: true docs: Update an Asset

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: asset_id: type: string @@ -2606,6 +2645,8 @@ service: docs: >- List Asset Folders within a given site

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -2646,6 +2687,8 @@ service: docs: >- Create an Asset Folder within a given site

Required scope | `assets:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -2696,6 +2739,8 @@ service: docs: >- Get details about a specific Asset Folder

Required scope | `assets:read` + source: + openapi: ../openapi.yml path-parameters: asset_folder_id: type: string @@ -2819,6 +2864,9 @@ service: "docs": "Request was successful", "type": "CollectionsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -2852,6 +2900,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-collection": { "auth": true, @@ -2880,6 +2931,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -2933,6 +2987,9 @@ service: "docs": "Request was successful", "type": "CollectionsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -2995,6 +3052,9 @@ service: "docs": "Request was successful", "type": "CollectionsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -3428,6 +3488,8 @@ service: docs: >- List of all Collections within a Site.

Required scope | `cms:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -3471,6 +3533,8 @@ service: method: POST auth: true docs: Create a Collection for a site.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -3529,6 +3593,8 @@ service: docs: >- Get the full details of a collection from its ID.

Required scope | `cms:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -3569,6 +3635,8 @@ service: docs: >- Delete a collection using its ID.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -3590,6 +3658,8 @@ service: docs: >- Delete a custom field in a collection. This endpoint does not currently support bulk deletion.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -3698,6 +3768,9 @@ service: "docs": "Request was successful", "type": "FieldsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -3773,6 +3846,9 @@ service: "docs": "Request was successful", "type": "FieldsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -4046,6 +4122,8 @@ service: field types can be created through the API. This endpoint does not currently support bulk creation.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -4101,6 +4179,8 @@ service: docs: >- Update a custom field in a collection.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -4243,6 +4323,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-item-for-multiple-locales": { "auth": true, @@ -4320,6 +4403,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemForMultipleLocalesResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-item-live": { "auth": true, @@ -4401,6 +4487,9 @@ service: "docs": "Request was successful", "type": "ItemsCreateItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-item": { "auth": true, @@ -4443,6 +4532,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete-item-live": { "auth": true, @@ -4485,6 +4577,9 @@ service: }, }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-item": { "auth": true, @@ -4546,6 +4641,9 @@ service: "docs": "Request was successful", "type": "ItemsGetItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-item-live": { "auth": true, @@ -4607,6 +4705,9 @@ service: "docs": "Request was successful", "type": "ItemsGetItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-items": { "auth": true, @@ -4709,6 +4810,9 @@ service: "docs": "Request was successful", "type": "ItemsListItemsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-items-live": { "auth": true, @@ -4811,6 +4915,9 @@ service: "docs": "Request was successful", "type": "ItemsListItemsLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish-item": { "auth": true, @@ -4870,6 +4977,9 @@ service: "docs": "Request was successful", "type": "ItemsPublishItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-item": { "auth": true, @@ -4976,6 +5086,9 @@ service: "docs": "Request was successful", "type": "ItemsUpdateItemResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-item-live": { "auth": true, @@ -5082,6 +5195,9 @@ service: "docs": "Request was successful", "type": "ItemsUpdateItemLiveResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -6380,6 +6496,8 @@ service: docs: >- List of all Items within a Collection.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6465,6 +6583,8 @@ service: href="https://developers.webflow.com/data/reference/create-item-for-multiple-locales"> please use the bulk item endpoint.

Required scope | CMS:write + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6525,6 +6645,8 @@ service: docs: >- List of all live Items within a Collection.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6608,6 +6730,8 @@ service: live site.

To create items across multiple locales, please use this endpoint.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6668,6 +6792,8 @@ service: docs: >- Create single Item in a Collection with multiple corresponding locales.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6727,6 +6853,8 @@ service: docs: >- Get details of a selected Collection Item.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6777,6 +6905,8 @@ service: docs: >- Delete an Item from a Collection. This endpoint does not currently support bulk deletion.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6812,6 +6942,8 @@ service: docs: >- Update a selected Item in a Collection.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6892,6 +7024,8 @@ service: docs: >- Get details of a selected Collection live Item.

Required scope | `CMS:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6944,6 +7078,8 @@ service: unpublish the item from the live site and set it to draft. This endpoint does not currently support bulk deletion.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -6980,6 +7116,8 @@ service: Update a selected live Item in a Collection. The updates for this Item will be published to the live site.

Required scope | `CMS:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -7060,6 +7198,8 @@ service: docs: >- Publish an item or multiple items.

Required scope | `cms:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -7150,6 +7290,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "EcommerceGetSettingsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -7208,6 +7351,8 @@ service: Retrieve ecommerce settings for a site. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -7313,6 +7458,9 @@ service: "docs": "Request was successful", "type": "FormsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-submission": { "auth": true, @@ -7359,6 +7507,9 @@ service: "docs": "Request was successful", "type": "FormsGetSubmissionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -7467,6 +7618,9 @@ service: "docs": "Request was successful", "type": "FormsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-submissions": { "auth": true, @@ -7546,6 +7700,9 @@ service: "docs": "Request was successful", "type": "FormsListSubmissionsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-submission": { "auth": true, @@ -7608,6 +7765,9 @@ service: "docs": "Request was successful", "type": "FormsUpdateSubmissionResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -8462,6 +8622,8 @@ service: method: GET auth: true docs: List forms for a given site

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -8545,6 +8707,8 @@ service: docs: >- Get information about a given form

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_id: type: string @@ -8598,6 +8762,8 @@ service: docs: >- List form submissions for a given form

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_id: type: string @@ -8657,6 +8823,8 @@ service: docs: >- Get information about a given form submission

Required scope | `forms:read` + source: + openapi: ../openapi.yml path-parameters: form_submission_id: type: string @@ -8692,6 +8860,8 @@ service: docs: >- Update hidden fields on a form submission

Required scope | `forms:write` + source: + openapi: ../openapi.yml path-parameters: form_submission_id: type: string @@ -8833,6 +9003,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "InventoryListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -8907,6 +9080,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "InventoryUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -9128,6 +9304,8 @@ service: List the current inventory levels for a particular SKU item. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -9169,6 +9347,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: collection_id: type: string @@ -10035,6 +10215,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "OrdersGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -10510,6 +10693,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "OrdersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "refund": { "auth": true, @@ -10798,6 +10984,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersRefundResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -11096,6 +11285,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-fulfill": { "auth": true, @@ -11383,6 +11575,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateFulfillResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-unfulfill": { "auth": true, @@ -11654,6 +11849,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "OrdersUpdateUnfulfillResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -25368,6 +25566,8 @@ service: List all orders created for a given site. Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -25757,6 +25957,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -25980,6 +26182,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -26218,6 +26422,8 @@ service: Updates an order's status to fulfilled Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -26448,6 +26654,8 @@ service: Updates an order's status to unfulfilled Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -26670,6 +26878,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -27368,6 +27578,9 @@ webhooks: "docs": "Request was successful", "type": "PagesGetContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-metadata": { "auth": true, @@ -27440,6 +27653,9 @@ webhooks: "docs": "Request was successful", "type": "PagesGetMetadataResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -27555,6 +27771,9 @@ webhooks: "docs": "Request was successful", "type": "PagesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-page-settings": { "auth": true, @@ -27663,6 +27882,9 @@ webhooks: "docs": "Request was successful", "type": "UpdatePageSettingsResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-static-content": { "auth": true, @@ -27742,6 +27964,9 @@ Required scope | `pages:write` "docs": "Request was successful", "type": "UpdateStaticContentResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -28984,6 +29209,8 @@ service: method: GET auth: true docs: List of all pages for a site

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -29087,6 +29314,8 @@ service: docs: >- Get metadata information for a single page

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29149,6 +29378,8 @@ service: docs: >- Update Page-level metadata, including SEO and Open Graph fields.

Required scope | `pages:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29243,6 +29474,8 @@ service: Locale ID in your request, the response will return any content that can be localized from the Primary locale

Required scope | `pages:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29324,6 +29557,8 @@ service: Required scope | `pages:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29459,6 +29694,9 @@ webhooks: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-code": { "auth": true, @@ -29508,6 +29746,9 @@ webhooks: "docs": "Request was successful", "type": "ScriptsGetCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsert-custom-code": { "auth": true, @@ -29596,6 +29837,9 @@ webhooks: "docs": "Request was successful", "type": "ScriptsUpsertCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -29893,6 +30137,8 @@ service: from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29933,6 +30179,8 @@ service: to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -29997,6 +30245,8 @@ service: from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: page_id: type: string @@ -30180,6 +30430,9 @@ Required scope | `ecommerce:write`", "docs": "Request was successful", "type": "ProductsCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create-sku": { "auth": true, @@ -30273,6 +30526,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsCreateSkuResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -30405,6 +30661,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "ProductsGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -30551,6 +30810,9 @@ Required scope | `ecommerce:read` "docs": "Request was successful", "type": "ProductsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -30684,6 +30946,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update-sku": { "auth": true, @@ -30788,6 +31053,9 @@ Required scope | `ecommerce:write` "docs": "Request was successful", "type": "ProductsUpdateSkuResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -36433,6 +36701,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -36560,6 +36830,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -36667,6 +36939,8 @@ service: Required scope | `ecommerce:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -36763,6 +37037,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -36866,6 +37142,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -36937,6 +37215,8 @@ service: Required scope | `ecommerce:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -37089,6 +37369,9 @@ service: "docs": "Request was successful", "type": "ScriptsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register-hosted": { "auth": true, @@ -37172,6 +37455,9 @@ service: "docs": "Request was successful", "type": "ScriptsRegisterHostedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "register-inline": { "auth": true, @@ -37253,6 +37539,9 @@ service: "docs": "Created", "type": "ScriptsRegisterInlineResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -37529,6 +37818,8 @@ service: theme="📘">Access to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -37589,6 +37880,8 @@ service: href="https://developers.webflow.com/data/docs/getting-started-data-clients">Data Client App.

Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -37665,6 +37958,8 @@ service: theme="📘">Access to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -37819,6 +38114,9 @@ service: "docs": "Request was successful", "type": "SitesGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-domain": { "auth": true, @@ -37865,6 +38163,9 @@ service: "docs": "Request was successful", "type": "SitesGetCustomDomainResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -38021,6 +38322,9 @@ service: "docs": "Request was successful", "type": "SitesListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "publish": { "auth": true, @@ -38084,6 +38388,9 @@ service: "docs": "Request accepted", "type": "SitesPublishResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -38887,6 +39194,8 @@ service: docs: >- List of all sites the provided access token is able to access.

Required scope | `sites:read` + source: + openapi: ../openapi.yml display-name: List Sites response: docs: Request was successful @@ -39004,6 +39313,8 @@ service: method: GET auth: true docs: Get a site by site id

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -39064,6 +39375,8 @@ service: docs: >- Get a list of all custom domains related to site.

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -39099,6 +39412,8 @@ service: class="callout-icon">📘

Endpoint-specific rate limit

This endpoint has a limit of one successful publish queue per minute.

+ source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -39240,6 +39555,9 @@ webhooks: "docs": "A list of site activity logs", "type": "ActivityLogsListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -39389,6 +39707,8 @@ service: docs: >- Retrieve Activity Logs for a specific Site. Requires Site to be on an Enterprise plan.

Required scope | `site_activity:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -39479,6 +39799,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get-custom-code": { "auth": true, @@ -39536,6 +39859,9 @@ service: "docs": "Request was successful", "type": "ScriptsGetCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list-custom-code-blocks": { "auth": true, @@ -39635,6 +39961,9 @@ service: "docs": "Request was successful", "type": "ScriptsListCustomCodeBlocksResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "upsert-custom-code": { "auth": true, @@ -39723,6 +40052,9 @@ service: "docs": "Request was successful", "type": "ScriptsUpsertCustomCodeResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40214,6 +40546,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -40259,6 +40593,8 @@ service: to this endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -40319,6 +40655,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -40343,6 +40681,8 @@ service: endpoint requires a bearer token from a Data Client App. Required scope | `custom_code:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -40446,6 +40786,9 @@ service: "docs": "Request was successful", "type": "TokenAuthorizedByResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "introspect": { "auth": true, @@ -40495,6 +40838,9 @@ service: "docs": "Request was successful", "type": "TokenIntrospectResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -40677,6 +41023,8 @@ service: docs: >- Information about the Authorized User

Required Scope | `authorized_user:read` + source: + openapi: ../openapi.yml display-name: Get Authorization User Info response: docs: Request was successful @@ -40701,6 +41049,8 @@ service: from a Data Client App. + source: + openapi: ../openapi.yml display-name: Get Authorization Info response: docs: Request was successful @@ -40776,6 +41126,9 @@ service: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -40840,6 +41193,9 @@ service: "docs": "Request was successful", "type": "UsersGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "invite": { "auth": true, @@ -40931,6 +41287,9 @@ service: "docs": "Request was successful", "type": "UsersInviteResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -41071,6 +41430,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "UsersListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "update": { "auth": true, @@ -41165,6 +41527,9 @@ Can be prefixed with a `-` to reverse the sort (ex. `-CreatedOn`) "docs": "Request was successful", "type": "UsersUpdateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -43189,6 +43554,8 @@ service: method: GET auth: true docs: Get a list of users for a site

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -43288,6 +43655,8 @@ service: method: GET auth: true docs: Get a User by ID

Required scope | `users:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -43334,6 +43703,8 @@ service: method: DELETE auth: true docs: Delete a User by ID

Required scope | `users:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -43362,6 +43733,8 @@ service: + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -43432,6 +43805,8 @@ service: Create and invite a user with an email address. The user will be sent and invite via email, which they will need to accept in order to join paid Access Groups.

Required scope | `users:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -43647,6 +44022,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksCreateResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "delete": { "auth": true, @@ -43675,6 +44053,9 @@ webhooks: "type": "string", }, }, + "source": { + "openapi": "../openapi.yml", + }, }, "get": { "auth": true, @@ -43721,6 +44102,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "list": { "auth": true, @@ -43801,6 +44185,9 @@ webhooks: "docs": "Request was successful", "type": "WebhooksListResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -44737,6 +45124,8 @@ service: docs: > List all App-created Webhooks registered for a given site

Required scope | `sites:read` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44799,6 +45188,8 @@ service: a bearer token from a Data Client App. Required scope | `sites:write` + source: + openapi: ../openapi.yml path-parameters: site_id: type: string @@ -44893,6 +45284,8 @@ service: method: GET auth: true docs: Get a specific Webhook instance + source: + openapi: ../openapi.yml path-parameters: webhook_id: type: string @@ -44926,6 +45319,8 @@ service: method: DELETE auth: true docs: Remove a Webhook + source: + openapi: ../openapi.yml path-parameters: webhook_id: type: string diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-audiences.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-audiences.json index 3c9659a1159..e45c3ddb45f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-audiences.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-audiences.json @@ -38,6 +38,9 @@ "name": "PostV1UsersRequest", "query-parameters": undefined, }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -75,6 +78,8 @@ path: /v1/users method: POST auth: false + source: + openapi: ../openapi.yml request: name: PostV1UsersRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-auth-variables.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-auth-variables.json index c74bc77e34c..2c23ca6fdaf 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-auth-variables.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-auth-variables.json @@ -34,6 +34,9 @@ "docs": "Success", "type": "UserGetResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_all": { "auth": false, @@ -56,6 +59,9 @@ "docs": "Success", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -124,6 +130,8 @@ service: path: /user method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: UserGetResponse @@ -135,6 +143,8 @@ service: path: /users method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: list diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-base-path.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-base-path.json index cf4fc9664b2..852bef37e6f 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-base-path.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-base-path.json @@ -19,6 +19,9 @@ "method": "GET", "pagination": undefined, "path": "/v1/example", + "source": { + "openapi": "../swagger.yml", + }, }, }, "source": { @@ -34,6 +37,8 @@ path: /v1/example method: GET auth: false + source: + openapi: ../swagger.yml display-name: Example endpoint examples: - {} diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-global-headers.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-global-headers.json index 88cace414fa..df5e1639863 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-global-headers.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-global-headers.json @@ -122,6 +122,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -173,6 +176,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -190,6 +196,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -219,6 +227,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-idempotency-headers.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-idempotency-headers.json index 64fa5a1981d..0980331ce22 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-idempotency-headers.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-idempotency-headers.json @@ -45,6 +45,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60,6 +63,8 @@ path: /send method: POST auth: false + source: + openapi: ../openapi.yml request: name: SendRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-ignore.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-ignore.json index fd276c108af..f63e11f3957 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-ignore.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-ignore.json @@ -46,6 +46,9 @@ "docs": "Success", "type": "UsersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -103,6 +106,8 @@ method: GET auth: false docs: '' + source: + openapi: ../openapi.yml display-name: List request: name: ListRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-pagination.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-pagination.json index b6ad53f2092..a01b42ff886 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-pagination.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-pagination.json @@ -51,6 +51,9 @@ "docs": "Success", "type": "UsersResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -113,6 +116,8 @@ step: $request.limit results: $response.users has-next-page: $response.meta.hasMore + source: + openapi: ../openapi.yml display-name: List request: name: ListRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-parameter-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-parameter-name.json index e80b015390e..16b121c7511 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-parameter-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-parameter-name.json @@ -45,6 +45,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -60,6 +63,8 @@ path: /user/{id} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: id: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-resolutions.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-resolutions.json index dcebc3d80d0..ed9839ce3ac 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-resolutions.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-resolutions.json @@ -65,6 +65,9 @@ "docs": "Success", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_all": { "auth": false, @@ -87,6 +90,9 @@ "docs": "Success", "type": "list", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -104,6 +110,8 @@ service: path: /user method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: root.User @@ -115,6 +123,8 @@ service: path: /users method: GET auth: false + source: + openapi: ../openapi.yml response: docs: Success type: list diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name-with-streaming.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name-with-streaming.json index 3a5edde50c6..ec27fb6b7f3 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name-with-streaming.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name-with-streaming.json @@ -115,6 +115,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -159,6 +162,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -176,6 +182,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -201,6 +209,8 @@ service: path: /user/{userId} method: POST auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name.json index bc19740d1d7..ba79432b480 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-sdk-group-name.json @@ -70,6 +70,9 @@ "docs": "Success", "type": "user.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -88,6 +91,8 @@ service: method: GET auth: false docs: This endpoint should be in `auth/user.yml` + source: + openapi: ../openapi.yml response: docs: Success type: user.User diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-audiences.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-audiences.json index bac53aba415..8f48f3e4607 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-audiences.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-audiences.json @@ -121,6 +121,9 @@ "docs": "", "type": "root.User", }, + "source": { + "openapi": "../openapi.yml", + }, }, "get_stream": { "auth": false, @@ -171,6 +174,9 @@ "format": "json", "type": "root.StreamUser", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -188,6 +194,8 @@ service: path: /user/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: @@ -216,6 +224,8 @@ service: path: /user/{userId} method: GET auth: false + source: + openapi: ../openapi.yml path-parameters: userId: string request: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-reference.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-reference.json index 96dba16d993..ee65c3623e7 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-reference.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-reference.json @@ -84,6 +84,9 @@ "docs": "", "type": "root.Completion", }, + "source": { + "openapi": "../openapi.yml", + }, }, "create_stream": { "auth": false, @@ -123,6 +126,9 @@ "format": "json", "type": "root.CompletionChunk", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -140,6 +146,8 @@ service: path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: ChatCompletionsCreateStreamRequest body: @@ -162,6 +170,8 @@ service: path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: ChatCompletionsCreateRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-sse.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-sse.json index d61786b99c0..244017d7964 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-sse.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-sse.json @@ -69,6 +69,9 @@ "format": "sse", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -84,6 +87,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-stream-condition.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-stream-condition.json index 634b2a29dc5..02d4b166cc0 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-stream-condition.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-streaming-with-stream-condition.json @@ -53,6 +53,9 @@ "docs": "", "type": "ChatFullResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, "chat_stream": { "auth": false, @@ -99,6 +102,9 @@ "format": "json", "type": "ChatStreamedResponse", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -151,6 +157,8 @@ docs: >- Create a chat while specifying the default retrieval parameters used by the prompt. + source: + openapi: ../openapi.yml display-name: Start a chat request: name: ChatStreamRequest @@ -181,6 +189,8 @@ docs: >- Create a chat while specifying the default retrieval parameters used by the prompt. + source: + openapi: ../openapi.yml display-name: Start a chat request: name: ChatRequest diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-token-variable-name.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-token-variable-name.json index e0909a4cf7d..3f059d479f5 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-token-variable-name.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-token-variable-name.json @@ -78,6 +78,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-version.json b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-version.json index babefb8f882..e21a557ae7e 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-version.json +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern-tests/src/__test__/__snapshots__/openapi/x-fern-version.json @@ -78,6 +78,9 @@ "docs": "Success!", "type": "string", }, + "source": { + "openapi": "../openapi.yml", + }, }, }, "source": { @@ -93,6 +96,8 @@ path: /completions/chat method: POST auth: false + source: + openapi: ../openapi.yml request: name: CreateCompletionRequest body: diff --git a/packages/cli/api-importers/openapi/openapi-ir-to-fern/src/buildEndpoint.ts b/packages/cli/api-importers/openapi/openapi-ir-to-fern/src/buildEndpoint.ts index 67fc9216367..a1fec1b3e81 100644 --- a/packages/cli/api-importers/openapi/openapi-ir-to-fern/src/buildEndpoint.ts +++ b/packages/cli/api-importers/openapi/openapi-ir-to-fern/src/buildEndpoint.ts @@ -16,6 +16,7 @@ import { convertToHttpMethod } from "./utils/convertToHttpMethod"; import { getDocsFromTypeReference, getTypeFromTypeReference } from "./utils/getTypeFromTypeReference"; import { getEndpointNamespace } from "./utils/getNamespaceFromGroup"; import { resolveLocationWithNamespace } from "./utils/convertSdkGroupName"; +import { convertToSourceSchema } from "./utils/convertToSourceSchema"; export interface ConvertedEndpoint { value: RawSchemas.HttpEndpointSchema; @@ -94,7 +95,8 @@ export function buildEndpoint({ method: convertToHttpMethod(endpoint.method), auth: endpoint.authed, docs: endpoint.description ?? undefined, - pagination + pagination, + source: endpoint.source != null ? convertToSourceSchema(endpoint.source) : undefined }; if (Object.keys(pathParameters).length > 0) { diff --git a/packages/cli/dynamic-snippets/src/__test__/test-definitions/grpc-proto-exhaustive.json b/packages/cli/dynamic-snippets/src/__test__/test-definitions/grpc-proto-exhaustive.json index 525ab81027a..22797ddb9ac 100644 --- a/packages/cli/dynamic-snippets/src/__test__/test-definitions/grpc-proto-exhaustive.json +++ b/packages/cli/dynamic-snippets/src/__test__/test-definitions/grpc-proto-exhaustive.json @@ -1794,8 +1794,147 @@ }, "headers": [], "endpoints": { + "endpoint_dataservice.foo": { + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, + "declaration": { + "name": { + "originalName": "foo", + "camelCase": { + "unsafeName": "foo", + "safeName": "foo" + }, + "snakeCase": { + "unsafeName": "foo", + "safeName": "foo" + }, + "screamingSnakeCase": { + "unsafeName": "FOO", + "safeName": "FOO" + }, + "pascalCase": { + "unsafeName": "Foo", + "safeName": "Foo" + } + }, + "fernFilepath": { + "allParts": [ + { + "originalName": "dataservice", + "camelCase": { + "unsafeName": "dataservice", + "safeName": "dataservice" + }, + "snakeCase": { + "unsafeName": "dataservice", + "safeName": "dataservice" + }, + "screamingSnakeCase": { + "unsafeName": "DATASERVICE", + "safeName": "DATASERVICE" + }, + "pascalCase": { + "unsafeName": "Dataservice", + "safeName": "Dataservice" + } + } + ], + "packagePath": [], + "file": { + "originalName": "dataservice", + "camelCase": { + "unsafeName": "dataservice", + "safeName": "dataservice" + }, + "snakeCase": { + "unsafeName": "dataservice", + "safeName": "dataservice" + }, + "screamingSnakeCase": { + "unsafeName": "DATASERVICE", + "safeName": "DATASERVICE" + }, + "pascalCase": { + "unsafeName": "Dataservice", + "safeName": "Dataservice" + } + } + } + }, + "location": { + "method": "POST", + "path": "/foo" + }, + "request": { + "type": "body", + "pathParameters": [], + "body": null + }, + "response": { + "type": "json" + } + }, "endpoint_dataservice.upload": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "upload", @@ -2006,7 +2145,37 @@ } }, "endpoint_dataservice.delete": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "delete", @@ -2282,7 +2451,37 @@ } }, "endpoint_dataservice.describe": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "describe", @@ -2462,7 +2661,37 @@ } }, "endpoint_dataservice.fetch": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "fetch", @@ -2673,7 +2902,37 @@ } }, "endpoint_dataservice.list": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "list", @@ -2943,7 +3202,37 @@ } }, "endpoint_dataservice.query": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "query", @@ -3374,7 +3663,37 @@ } }, "endpoint_dataservice.update": { - "auth": null, + "auth": { + "type": "header", + "header": { + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "typeReference": { + "_type": "primitive", + "value": "STRING" + } + } + }, "declaration": { "name": { "originalName": "update", diff --git a/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap b/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap index 9fb79fd50b5..bc958586e67 100644 --- a/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap +++ b/packages/cli/ete-tests/src/tests/dependencies/__snapshots__/dependencies.test.ts.snap @@ -1,5 +1,5 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`dependencies > correctly incorporates dependencies 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"dependent","camelCase":{"unsafeName":"dependent","safeName":"dependent"},"snakeCase":{"unsafeName":"dependent","safeName":"dependent"},"screamingSnakeCase":{"unsafeName":"DEPENDENT","safeName":"DEPENDENT"},"pascalCase":{"unsafeName":"Dependent","safeName":"Dependent"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_imported:RootString":{"inline":false,"name":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"typeId":"type_imported:RootString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_y:IntegerAlias":{"inline":false,"name":{"name":{"originalName":"IntegerAlias","camelCase":{"unsafeName":"integerAlias","safeName":"integerAlias"},"snakeCase":{"unsafeName":"integer_alias","safeName":"integer_alias"},"screamingSnakeCase":{"unsafeName":"INTEGER_ALIAS","safeName":"INTEGER_ALIAS"},"pascalCase":{"unsafeName":"IntegerAlias","safeName":"IntegerAlias"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"typeId":"type_y:IntegerAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imported/x:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"typeId":"type_imported/x:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_imported":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imported.rootEndpoint","name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_imported:RootString","type_y:IntegerAlias","type_imported/x:StringAlias"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_imported":{"name":{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"service":"service_imported","types":["type_imported:RootString"],"errors":[],"subpackages":["subpackage_imported/x"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_y":{"name":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"service":null,"types":["type_y:IntegerAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imported/x":{"name":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"service":null,"types":["type_imported/x:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_imported","subpackage_y"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`dependencies > correctly incorporates dependencies 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"dependent","camelCase":{"unsafeName":"dependent","safeName":"dependent"},"snakeCase":{"unsafeName":"dependent","safeName":"dependent"},"screamingSnakeCase":{"unsafeName":"DEPENDENT","safeName":"DEPENDENT"},"pascalCase":{"unsafeName":"Dependent","safeName":"Dependent"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_imported:RootString":{"inline":false,"name":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"typeId":"type_imported:RootString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_y:IntegerAlias":{"inline":false,"name":{"name":{"originalName":"IntegerAlias","camelCase":{"unsafeName":"integerAlias","safeName":"integerAlias"},"snakeCase":{"unsafeName":"integer_alias","safeName":"integer_alias"},"screamingSnakeCase":{"unsafeName":"INTEGER_ALIAS","safeName":"INTEGER_ALIAS"},"pascalCase":{"unsafeName":"IntegerAlias","safeName":"IntegerAlias"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"typeId":"type_y:IntegerAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imported/x:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"typeId":"type_imported/x:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_imported":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imported.rootEndpoint","name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_imported:RootString","type_y:IntegerAlias","type_imported/x:StringAlias"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_imported":{"name":{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":null},"service":"service_imported","types":["type_imported:RootString"],"errors":[],"subpackages":["subpackage_imported/x"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_y":{"name":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}},"fernFilepath":{"allParts":[{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}],"packagePath":[],"file":{"originalName":"y","camelCase":{"unsafeName":"y","safeName":"y"},"snakeCase":{"unsafeName":"y","safeName":"y"},"screamingSnakeCase":{"unsafeName":"Y","safeName":"Y"},"pascalCase":{"unsafeName":"Y","safeName":"Y"}}},"service":null,"types":["type_y:IntegerAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imported/x":{"name":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}},"fernFilepath":{"allParts":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"imported","camelCase":{"unsafeName":"imported","safeName":"imported"},"snakeCase":{"unsafeName":"imported","safeName":"imported"},"screamingSnakeCase":{"unsafeName":"IMPORTED","safeName":"IMPORTED"},"pascalCase":{"unsafeName":"Imported","safeName":"Imported"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"service":null,"types":["type_imported/x:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_imported","subpackage_y"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`dependencies > file dependencies 1`] = `559581`; +exports[`dependencies > file dependencies 1`] = `559734`; diff --git a/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap b/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap index 632e243369a..bd1435be8e2 100644 --- a/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap +++ b/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap @@ -4,28 +4,28 @@ exports[`ir > {"name":"auth-header-prefix"} 1`] = `"{"fdrApiDefinitionId":null," exports[`ir > {"name":"extended-examples"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"api","camelCase":{"unsafeName":"api","safeName":"api"},"snakeCase":{"unsafeName":"api","safeName":"api"},"screamingSnakeCase":{"unsafeName":"API","safeName":"API"},"pascalCase":{"unsafeName":"Api","safeName":"Api"}},"apiDisplayName":"API","apiDocs":null,"auth":{"requirement":"ALL","schemes":[{"_type":"bearer","token":{"originalName":"token","camelCase":{"unsafeName":"token","safeName":"token"},"snakeCase":{"unsafeName":"token","safeName":"token"},"screamingSnakeCase":{"unsafeName":"TOKEN","safeName":"TOKEN"},"pascalCase":{"unsafeName":"Token","safeName":"Token"}},"tokenEnvVar":null,"docs":null}],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_app:GetAppResponse":{"inline":false,"name":{"name":{"originalName":"GetAppResponse","camelCase":{"unsafeName":"getAppResponse","safeName":"getAppResponse"},"snakeCase":{"unsafeName":"get_app_response","safeName":"get_app_response"},"screamingSnakeCase":{"unsafeName":"GET_APP_RESPONSE","safeName":"GET_APP_RESPONSE"},"pascalCase":{"unsafeName":"GetAppResponse","safeName":"GetAppResponse"}},"fernFilepath":{"allParts":[{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}],"packagePath":[],"file":{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}},"typeId":"type_app:GetAppResponse"},"shape":{"_type":"object","extends":[{"name":{"originalName":"Deployment","camelCase":{"unsafeName":"deployment","safeName":"deployment"},"snakeCase":{"unsafeName":"deployment","safeName":"deployment"},"screamingSnakeCase":{"unsafeName":"DEPLOYMENT","safeName":"DEPLOYMENT"},"pascalCase":{"unsafeName":"Deployment","safeName":"Deployment"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Deployment"}],"properties":[{"name":{"name":{"originalName":"property","camelCase":{"unsafeName":"property","safeName":"property"},"snakeCase":{"unsafeName":"property","safeName":"property"},"screamingSnakeCase":{"unsafeName":"PROPERTY","safeName":"PROPERTY"},"pascalCase":{"unsafeName":"Property","safeName":"Property"}},"wireValue":"property"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[{"name":{"name":{"originalName":"appId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"wireValue":"appId"},"valueType":{"_type":"named","name":{"originalName":"AppId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:AppId","default":null,"inline":null},"availability":null,"docs":null}]},"referencedTypes":["type_commons:Deployment","type_commons:AppId"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example","camelCase":{"unsafeName":"example","safeName":"example"},"snakeCase":{"unsafeName":"example","safeName":"example"},"screamingSnakeCase":{"unsafeName":"EXAMPLE","safeName":"EXAMPLE"},"pascalCase":{"unsafeName":"Example","safeName":"Example"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"appId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"wireValue":"appId"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_commons:AppId","fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"name":{"originalName":"AppId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"your-app-id"}}},"jsonExample":"your-app-id"}}},"jsonExample":"your-app-id"},"originalTypeDeclaration":{"name":{"originalName":"Deployment","camelCase":{"unsafeName":"deployment","safeName":"deployment"},"snakeCase":{"unsafeName":"deployment","safeName":"deployment"},"screamingSnakeCase":{"unsafeName":"DEPLOYMENT","safeName":"DEPLOYMENT"},"pascalCase":{"unsafeName":"Deployment","safeName":"Deployment"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Deployment"}},{"name":{"name":{"originalName":"property","camelCase":{"unsafeName":"property","safeName":"property"},"snakeCase":{"unsafeName":"property","safeName":"property"},"screamingSnakeCase":{"unsafeName":"PROPERTY","safeName":"PROPERTY"},"pascalCase":{"unsafeName":"Property","safeName":"Property"}},"wireValue":"property"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"app-secret"}}},"jsonExample":"app-secret"},"originalTypeDeclaration":{"name":{"originalName":"GetAppResponse","camelCase":{"unsafeName":"getAppResponse","safeName":"getAppResponse"},"snakeCase":{"unsafeName":"get_app_response","safeName":"get_app_response"},"screamingSnakeCase":{"unsafeName":"GET_APP_RESPONSE","safeName":"GET_APP_RESPONSE"},"pascalCase":{"unsafeName":"GetAppResponse","safeName":"GetAppResponse"}},"fernFilepath":{"allParts":[{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}],"packagePath":[],"file":{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}},"typeId":"type_app:GetAppResponse"}}]},"jsonExample":{"appId":"your-app-id","property":"app-secret"},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:AppId":{"inline":false,"name":{"name":{"originalName":"AppId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:AppId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example","camelCase":{"unsafeName":"example","safeName":"example"},"snakeCase":{"unsafeName":"example","safeName":"example"},"screamingSnakeCase":{"unsafeName":"EXAMPLE","safeName":"EXAMPLE"},"pascalCase":{"unsafeName":"Example","safeName":"Example"}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"your-app-id"}}},"jsonExample":"your-app-id"}},"jsonExample":"your-app-id","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:Deployment":{"inline":false,"name":{"name":{"originalName":"Deployment","camelCase":{"unsafeName":"deployment","safeName":"deployment"},"snakeCase":{"unsafeName":"deployment","safeName":"deployment"},"screamingSnakeCase":{"unsafeName":"DEPLOYMENT","safeName":"DEPLOYMENT"},"pascalCase":{"unsafeName":"Deployment","safeName":"Deployment"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Deployment"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"appId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"wireValue":"appId"},"valueType":{"_type":"named","name":{"originalName":"AppId","camelCase":{"unsafeName":"appId","safeName":"appId"},"snakeCase":{"unsafeName":"app_id","safeName":"app_id"},"screamingSnakeCase":{"unsafeName":"APP_ID","safeName":"APP_ID"},"pascalCase":{"unsafeName":"AppId","safeName":"AppId"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:AppId","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_commons:AppId"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_app:GetAppResponse","type_commons:AppId","type_commons:Deployment"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_app":{"name":{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}},"fernFilepath":{"allParts":[{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}],"packagePath":[],"file":{"originalName":"app","camelCase":{"unsafeName":"app","safeName":"app"},"snakeCase":{"unsafeName":"app","safeName":"app"},"screamingSnakeCase":{"unsafeName":"APP","safeName":"APP"},"pascalCase":{"unsafeName":"App","safeName":"App"}}},"service":null,"types":["type_app:GetAppResponse"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:AppId","type_commons:Deployment"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_app","subpackage_commons"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":false,"docs":null},"sdkConfig":{"isAuthMandatory":true,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"file-upload"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_file-upload":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}],"packagePath":[],"file":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_file-upload.fileUpload","name":{"originalName":"fileUpload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/movies","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"fileUpload","name":{"originalName":"FileUploadRequest","camelCase":{"unsafeName":"fileUploadRequest","safeName":"fileUploadRequest"},"snakeCase":{"unsafeName":"file_upload_request","safeName":"file_upload_request"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD_REQUEST","safeName":"FILE_UPLOAD_REQUEST"},"pascalCase":{"unsafeName":"FileUploadRequest","safeName":"FileUploadRequest"}},"properties":[{"type":"bodyProperty","contentType":null,"name":{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"wireValue":"foo"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"type":"file","value":{"type":"file","key":{"name":{"originalName":"file","camelCase":{"unsafeName":"file","safeName":"file"},"snakeCase":{"unsafeName":"file","safeName":"file"},"screamingSnakeCase":{"unsafeName":"FILE","safeName":"FILE"},"pascalCase":{"unsafeName":"File","safeName":"File"}},"wireValue":"file"},"isOptional":false,"contentType":null}},{"type":"file","value":{"type":"file","key":{"name":{"originalName":"optionalFile","camelCase":{"unsafeName":"optionalFile","safeName":"optionalFile"},"snakeCase":{"unsafeName":"optional_file","safeName":"optional_file"},"screamingSnakeCase":{"unsafeName":"OPTIONAL_FILE","safeName":"OPTIONAL_FILE"},"pascalCase":{"unsafeName":"OptionalFile","safeName":"OptionalFile"}},"wireValue":"optionalFile"},"isOptional":true,"contentType":null}},{"type":"bodyProperty","contentType":null,"name":{"name":{"originalName":"bar","camelCase":{"unsafeName":"bar","safeName":"bar"},"snakeCase":{"unsafeName":"bar","safeName":"bar"},"screamingSnakeCase":{"unsafeName":"BAR","safeName":"BAR"},"pascalCase":{"unsafeName":"Bar","safeName":"Bar"}},"wireValue":"bar"},"valueType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"availability":null,"docs":null}],"docs":null},"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"FileUploadRequest","camelCase":{"unsafeName":"fileUploadRequest","safeName":"fileUploadRequest"},"snakeCase":{"unsafeName":"file_upload_request","safeName":"file_upload_request"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD_REQUEST","safeName":"FILE_UPLOAD_REQUEST"},"pascalCase":{"unsafeName":"FileUploadRequest","safeName":"FileUploadRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_file-upload":{"name":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}},"fernFilepath":{"allParts":[{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}],"packagePath":[],"file":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}},"service":"service_file-upload","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_file-upload"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"file-upload"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_file-upload":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}],"packagePath":[],"file":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_file-upload.fileUpload","name":{"originalName":"fileUpload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/movies","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"fileUpload","name":{"originalName":"FileUploadRequest","camelCase":{"unsafeName":"fileUploadRequest","safeName":"fileUploadRequest"},"snakeCase":{"unsafeName":"file_upload_request","safeName":"file_upload_request"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD_REQUEST","safeName":"FILE_UPLOAD_REQUEST"},"pascalCase":{"unsafeName":"FileUploadRequest","safeName":"FileUploadRequest"}},"properties":[{"type":"bodyProperty","contentType":null,"name":{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"wireValue":"foo"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"type":"file","value":{"type":"file","key":{"name":{"originalName":"file","camelCase":{"unsafeName":"file","safeName":"file"},"snakeCase":{"unsafeName":"file","safeName":"file"},"screamingSnakeCase":{"unsafeName":"FILE","safeName":"FILE"},"pascalCase":{"unsafeName":"File","safeName":"File"}},"wireValue":"file"},"isOptional":false,"contentType":null}},{"type":"file","value":{"type":"file","key":{"name":{"originalName":"optionalFile","camelCase":{"unsafeName":"optionalFile","safeName":"optionalFile"},"snakeCase":{"unsafeName":"optional_file","safeName":"optional_file"},"screamingSnakeCase":{"unsafeName":"OPTIONAL_FILE","safeName":"OPTIONAL_FILE"},"pascalCase":{"unsafeName":"OptionalFile","safeName":"OptionalFile"}},"wireValue":"optionalFile"},"isOptional":true,"contentType":null}},{"type":"bodyProperty","contentType":null,"name":{"name":{"originalName":"bar","camelCase":{"unsafeName":"bar","safeName":"bar"},"snakeCase":{"unsafeName":"bar","safeName":"bar"},"screamingSnakeCase":{"unsafeName":"BAR","safeName":"BAR"},"pascalCase":{"unsafeName":"Bar","safeName":"Bar"}},"wireValue":"bar"},"valueType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"availability":null,"docs":null}],"docs":null},"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"FileUploadRequest","camelCase":{"unsafeName":"fileUploadRequest","safeName":"fileUploadRequest"},"snakeCase":{"unsafeName":"file_upload_request","safeName":"file_upload_request"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD_REQUEST","safeName":"FILE_UPLOAD_REQUEST"},"pascalCase":{"unsafeName":"FileUploadRequest","safeName":"FileUploadRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_file-upload":{"name":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}},"fernFilepath":{"allParts":[{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}],"packagePath":[],"file":{"originalName":"file-upload","camelCase":{"unsafeName":"fileUpload","safeName":"fileUpload"},"snakeCase":{"unsafeName":"file_upload","safeName":"file_upload"},"screamingSnakeCase":{"unsafeName":"FILE_UPLOAD","safeName":"FILE_UPLOAD"},"pascalCase":{"unsafeName":"FileUpload","safeName":"FileUpload"}}},"service":"service_file-upload","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_file-upload"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; exports[`ir > {"name":"migration","version":"v1"} 1`] = `"{"apiName":"my-api","auth":{"requirement":"ALL","schemes":[]},"headers":[{"name":{"originalValue":"apiVersion","camelCase":"apiVersion","pascalCase":"ApiVersion","snakeCase":"api_version","screamingSnakeCase":"API_VERSION","wireValue":"X-API-VERSION"},"nameV2":{"wireValue":"X-API-VERSION","name":{"safeName":{"originalValue":"apiVersion","camelCase":"apiVersion","pascalCase":"ApiVersion","snakeCase":"api_version","screamingSnakeCase":"API_VERSION"},"unsafeName":{"originalValue":"apiVersion","camelCase":"apiVersion","pascalCase":"ApiVersion","snakeCase":"api_version","screamingSnakeCase":"API_VERSION"}}},"valueType":{"container":{"optional":{"primitive":"STRING","_type":"primitive"},"_type":"optional"},"_type":"container"},"availability":{"status":"GENERAL_AVAILABILITY"}}],"types":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},"shape":{"extends":[],"properties":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"name","camelCase":"name","pascalCase":"Name","snakeCase":"name","screamingSnakeCase":"NAME","wireValue":"name"},"nameV2":{"wireValue":"name","name":{"safeName":{"originalValue":"name","camelCase":"name","pascalCase":"Name","snakeCase":"name","screamingSnakeCase":"NAME"},"unsafeName":{"originalValue":"name","camelCase":"name","pascalCase":"Name","snakeCase":"name","screamingSnakeCase":"NAME"}}},"valueType":{"primitive":"STRING","_type":"primitive"}},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE","wireValue":"age"},"nameV2":{"wireValue":"age","name":{"safeName":{"originalValue":"age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},"valueType":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}},"_type":"named"}}],"_type":"object"},"examples":[{"properties":[{"wireKey":"name","value":{"primitive":{"string":"George the Director","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}},{"wireKey":"age","value":{"typeName":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},"shape":{"value":{"primitive":{"integer":20,"type":"integer"},"type":"primitive"},"type":"alias"},"type":"named"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}}],"type":"object"}],"referencedTypes":[{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}}]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},"shape":{"aliasOf":{"primitive":"INTEGER","_type":"primitive"},"resolvedType":{"primitive":"INTEGER","_type":"primitive"},"_type":"alias"},"examples":[{"value":{"primitive":{"integer":20,"type":"integer"},"type":"primitive"},"type":"alias"}],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"LiteralString","nameV2":{"originalValue":"LiteralString","camelCase":"literalString","pascalCase":"LiteralString","snakeCase":"literal_string","screamingSnakeCase":"LITERAL_STRING"},"nameV3":{"safeName":{"originalValue":"LiteralString","camelCase":"literalString","pascalCase":"LiteralString","snakeCase":"literal_string","screamingSnakeCase":"LITERAL_STRING"},"unsafeName":{"originalValue":"LiteralString","camelCase":"literalString","pascalCase":"LiteralString","snakeCase":"literal_string","screamingSnakeCase":"LITERAL_STRING"}}},"shape":{"aliasOf":{"container":{"literal":{"string":"hello","type":"string"},"_type":"literal"},"_type":"container"},"resolvedType":{"container":{"literal":{"string":"hello","type":"string"},"_type":"literal"},"_type":"container"},"_type":"alias"},"examples":[],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CurrencyAmount","nameV2":{"originalValue":"CurrencyAmount","camelCase":"currencyAmount","pascalCase":"CurrencyAmount","snakeCase":"currency_amount","screamingSnakeCase":"CURRENCY_AMOUNT"},"nameV3":{"safeName":{"originalValue":"CurrencyAmount","camelCase":"currencyAmount","pascalCase":"CurrencyAmount","snakeCase":"currency_amount","screamingSnakeCase":"CURRENCY_AMOUNT"},"unsafeName":{"originalValue":"CurrencyAmount","camelCase":"currencyAmount","pascalCase":"CurrencyAmount","snakeCase":"currency_amount","screamingSnakeCase":"CURRENCY_AMOUNT"}}},"shape":{"aliasOf":{"primitive":"STRING","_type":"primitive"},"resolvedType":{"primitive":"STRING","_type":"primitive"},"_type":"alias"},"examples":[{"value":{"primitive":{"string":"$4.50","type":"string"},"type":"primitive"},"type":"alias"}],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}}},"shape":{"aliasOf":{"primitive":"STRING","_type":"primitive"},"resolvedType":{"primitive":"STRING","_type":"primitive"},"_type":"alias"},"examples":[{"value":{"primitive":{"string":"id1","type":"string"},"type":"primitive"},"type":"alias"},{"value":{"primitive":{"string":"id2","type":"string"},"type":"primitive"},"type":"alias"}],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"ActorId","nameV2":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"nameV3":{"safeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"unsafeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"}}},"shape":{"aliasOf":{"primitive":"STRING","_type":"primitive"},"resolvedType":{"primitive":"STRING","_type":"primitive"},"_type":"alias"},"examples":[],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}}},"shape":{"extends":[],"properties":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"id","camelCase":"id","pascalCase":"Id","snakeCase":"id","screamingSnakeCase":"ID","wireValue":"id"},"nameV2":{"wireValue":"id","name":{"safeName":{"originalValue":"id","camelCase":"id","pascalCase":"Id","snakeCase":"id","screamingSnakeCase":"ID"},"unsafeName":{"originalValue":"id","camelCase":"id","pascalCase":"Id","snakeCase":"id","screamingSnakeCase":"ID"}}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"_type":"named"}},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE","wireValue":"title"},"nameV2":{"wireValue":"title","name":{"safeName":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE"},"unsafeName":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE"}}},"valueType":{"primitive":"STRING","_type":"primitive"}},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"rating","camelCase":"rating","pascalCase":"Rating","snakeCase":"rating","screamingSnakeCase":"RATING","wireValue":"rating"},"nameV2":{"wireValue":"rating","name":{"safeName":{"originalValue":"rating","camelCase":"rating","pascalCase":"Rating","snakeCase":"rating","screamingSnakeCase":"RATING"},"unsafeName":{"originalValue":"rating","camelCase":"rating","pascalCase":"Rating","snakeCase":"rating","screamingSnakeCase":"RATING"}}},"valueType":{"primitive":"DOUBLE","_type":"primitive"}}],"_type":"object"},"examples":[{"properties":[{"wireKey":"id","value":{"typeName":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}}},"shape":{"value":{"primitive":{"string":"my-movie-id","type":"string"},"type":"primitive"},"type":"alias"},"type":"named"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}}}},{"wireKey":"title","value":{"primitive":{"string":"Goodwill Hunting","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}}}},{"wireKey":"rating","value":{"primitive":{"double":14.5,"type":"double"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}}}}],"type":"object"}],"referencedTypes":[{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}}}]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}},"shape":{"extends":[],"properties":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE","wireValue":"title"},"nameV2":{"wireValue":"title","name":{"safeName":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE"},"unsafeName":{"originalValue":"title","camelCase":"title","pascalCase":"Title","snakeCase":"title","screamingSnakeCase":"TITLE"}}},"valueType":{"primitive":"STRING","_type":"primitive"}},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"ratings","camelCase":"ratings","pascalCase":"Ratings","snakeCase":"ratings","screamingSnakeCase":"RATINGS","wireValue":"ratings"},"nameV2":{"wireValue":"ratings","name":{"safeName":{"originalValue":"ratings","camelCase":"ratings","pascalCase":"Ratings","snakeCase":"ratings","screamingSnakeCase":"RATINGS"},"unsafeName":{"originalValue":"ratings","camelCase":"ratings","pascalCase":"Ratings","snakeCase":"ratings","screamingSnakeCase":"RATINGS"}}},"valueType":{"container":{"list":{"primitive":"DOUBLE","_type":"primitive"},"_type":"list"},"_type":"container"}}],"_type":"object"},"examples":[{"properties":[{"wireKey":"title","value":{"primitive":{"string":"Winnie the Pooh","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"ratings","value":{"container":{"list":[{"primitive":{"double":1,"type":"double"},"type":"primitive"},{"primitive":{"double":2,"type":"double"},"type":"primitive"},{"primitive":{"double":3,"type":"double"},"type":"primitive"}],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}}],"type":"object"}],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"DirectorWrapper","nameV2":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"},"nameV3":{"safeName":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"},"unsafeName":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"}}},"shape":{"extends":[],"properties":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR","wireValue":"director"},"nameV2":{"wireValue":"director","name":{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},"valueType":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}},"_type":"named"}}],"_type":"object"},"examples":[{"properties":[{"wireKey":"director","value":{"typeName":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},"shape":{"properties":[{"wireKey":"name","value":{"primitive":{"string":"George the Director","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}},{"wireKey":"age","value":{"typeName":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},"shape":{"value":{"primitive":{"integer":20,"type":"integer"},"type":"primitive"},"type":"alias"},"type":"named"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}}],"type":"object"},"type":"named"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"DirectorWrapper","nameV2":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"},"nameV3":{"safeName":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"},"unsafeName":{"originalValue":"DirectorWrapper","camelCase":"directorWrapper","pascalCase":"DirectorWrapper","snakeCase":"director_wrapper","screamingSnakeCase":"DIRECTOR_WRAPPER"}}}}],"type":"object"}],"referencedTypes":[{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}}]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}}},"shape":{"extends":[],"properties":[],"_type":"object"},"examples":[],"referencedTypes":[]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Person","nameV2":{"originalValue":"Person","camelCase":"person","pascalCase":"Person","snakeCase":"person","screamingSnakeCase":"PERSON"},"nameV3":{"safeName":{"originalValue":"Person","camelCase":"person","pascalCase":"Person","snakeCase":"person","screamingSnakeCase":"PERSON"},"unsafeName":{"originalValue":"Person","camelCase":"person","pascalCase":"Person","snakeCase":"person","screamingSnakeCase":"PERSON"}}},"shape":{"discriminant":"type","discriminantV2":{"originalValue":"type","camelCase":"type","pascalCase":"Type","snakeCase":"type","screamingSnakeCase":"TYPE","wireValue":"type"},"discriminantV3":{"wireValue":"type","name":{"safeName":{"originalValue":"type","camelCase":"type","pascalCase":"Type","snakeCase":"type","screamingSnakeCase":"TYPE"},"unsafeName":{"originalValue":"type","camelCase":"type","pascalCase":"Type","snakeCase":"type","screamingSnakeCase":"TYPE"}}},"types":[{"discriminantValue":{"originalValue":"actor","camelCase":"actor","pascalCase":"Actor","snakeCase":"actor","screamingSnakeCase":"ACTOR","wireValue":"actor"},"discriminantValueV2":{"wireValue":"actor","name":{"safeName":{"originalValue":"actor","camelCase":"actor","pascalCase":"Actor","snakeCase":"actor","screamingSnakeCase":"ACTOR"},"unsafeName":{"originalValue":"actor","camelCase":"actor","pascalCase":"Actor","snakeCase":"actor","screamingSnakeCase":"ACTOR"}}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"ActorId","nameV2":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"nameV3":{"safeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"unsafeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"}},"_type":"named"},"shape":{"name":{"originalValue":"value","camelCase":"value","pascalCase":"Value","snakeCase":"value","screamingSnakeCase":"VALUE","wireValue":"value"},"nameV2":{"wireValue":"value","name":{"safeName":{"originalValue":"value","camelCase":"value","pascalCase":"Value","snakeCase":"value","screamingSnakeCase":"VALUE"},"unsafeName":{"originalValue":"value","camelCase":"value","pascalCase":"Value","snakeCase":"value","screamingSnakeCase":"VALUE"}}},"type":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"ActorId","nameV2":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"nameV3":{"safeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"unsafeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"}},"_type":"named"},"_type":"singleProperty"}},{"discriminantValue":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR","wireValue":"director"},"discriminantValueV2":{"wireValue":"director","name":{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},"valueType":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}},"_type":"named"},"shape":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}},"_type":"samePropertiesAsObject"}},{"discriminantValue":{"originalValue":"producer","camelCase":"producer","pascalCase":"Producer","snakeCase":"producer","screamingSnakeCase":"PRODUCER","wireValue":"producer"},"discriminantValueV2":{"wireValue":"producer","name":{"safeName":{"originalValue":"producer","camelCase":"producer","pascalCase":"Producer","snakeCase":"producer","screamingSnakeCase":"PRODUCER"},"unsafeName":{"originalValue":"producer","camelCase":"producer","pascalCase":"Producer","snakeCase":"producer","screamingSnakeCase":"PRODUCER"}}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}},"_type":"named"},"shape":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}},"_type":"samePropertiesAsObject"}},{"docs":"i am docs","discriminantValue":{"originalValue":"cinematographer","camelCase":"cinematographer","pascalCase":"Cinematographer","snakeCase":"cinematographer","screamingSnakeCase":"CINEMATOGRAPHER","wireValue":"cinematographer"},"discriminantValueV2":{"wireValue":"cinematographer","name":{"safeName":{"originalValue":"cinematographer","camelCase":"cinematographer","pascalCase":"Cinematographer","snakeCase":"cinematographer","screamingSnakeCase":"CINEMATOGRAPHER"},"unsafeName":{"originalValue":"cinematographer","camelCase":"cinematographer","pascalCase":"Cinematographer","snakeCase":"cinematographer","screamingSnakeCase":"CINEMATOGRAPHER"}}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}},"_type":"named"},"shape":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}},"_type":"samePropertiesAsObject"}}],"_type":"union"},"examples":[{"wireDiscriminantValue":"actor","properties":{"singleProperty":{"typeName":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"ActorId","nameV2":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"nameV3":{"safeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"unsafeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"}}},"shape":{"value":{"primitive":{"string":"Matt Damon","type":"string"},"type":"primitive"},"type":"alias"},"type":"named"},"type":"singleProperty"},"type":"union"},{"wireDiscriminantValue":"director","properties":{"typeName":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},"shape":{"properties":[{"wireKey":"name","value":{"primitive":{"string":"George the Directory","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}},{"wireKey":"age","value":{"typeName":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},"shape":{"value":{"primitive":{"integer":100,"type":"integer"},"type":"primitive"},"type":"alias"},"type":"named"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}}}],"type":"object"},"type":"samePropertiesAsObject"},"type":"union"},{"wireDiscriminantValue":"producer","properties":{"typeName":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}}},"shape":{"properties":[],"type":"object"},"type":"samePropertiesAsObject"},"type":"union"}],"referencedTypes":[{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"ActorId","nameV2":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"nameV3":{"safeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"},"unsafeName":{"originalValue":"ActorId","camelCase":"actorId","pascalCase":"ActorId","snakeCase":"actor_id","screamingSnakeCase":"ACTOR_ID"}}},{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Director","nameV2":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"nameV3":{"safeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"Director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}},{"fernFilepath":[{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}],"fernFilepathV2":[{"safeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"},"unsafeName":{"originalValue":"director","camelCase":"director","pascalCase":"Director","snakeCase":"director","screamingSnakeCase":"DIRECTOR"}}],"name":"Age","nameV2":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"nameV3":{"safeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"},"unsafeName":{"originalValue":"Age","camelCase":"age","pascalCase":"Age","snakeCase":"age","screamingSnakeCase":"AGE"}}},{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"EmptyObject","nameV2":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"nameV3":{"safeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"},"unsafeName":{"originalValue":"EmptyObject","camelCase":"emptyObject","pascalCase":"EmptyObject","snakeCase":"empty_object","screamingSnakeCase":"EMPTY_OBJECT"}}}]},{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}},"shape":{"extends":[{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}],"properties":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"selfReferencing","camelCase":"selfReferencing","pascalCase":"SelfReferencing","snakeCase":"self_referencing","screamingSnakeCase":"SELF_REFERENCING","wireValue":"selfReferencing"},"nameV2":{"wireValue":"selfReferencing","name":{"safeName":{"originalValue":"selfReferencing","camelCase":"selfReferencing","pascalCase":"SelfReferencing","snakeCase":"self_referencing","screamingSnakeCase":"SELF_REFERENCING"},"unsafeName":{"originalValue":"selfReferencing","camelCase":"selfReferencing","pascalCase":"SelfReferencing","snakeCase":"self_referencing","screamingSnakeCase":"SELF_REFERENCING"}}},"valueType":{"container":{"list":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}},"_type":"named"},"_type":"list"},"_type":"container"}}],"_type":"object"},"examples":[{"properties":[{"wireKey":"title","value":{"primitive":{"string":"The Godfather","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"ratings","value":{"container":{"list":[{"primitive":{"double":10,"type":"double"},"type":"primitive"},{"primitive":{"double":5,"type":"double"},"type":"primitive"},{"primitive":{"double":9,"type":"double"},"type":"primitive"}],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"selfReferencing","value":{"container":{"list":[{"typeName":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}},"shape":{"properties":[{"wireKey":"title","value":{"primitive":{"string":"The Godfather II","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"ratings","value":{"container":{"list":[{"primitive":{"double":10,"type":"double"},"type":"primitive"},{"primitive":{"double":11,"type":"double"},"type":"primitive"}],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"selfReferencing","value":{"container":{"list":[],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}}}],"type":"object"},"type":"named"},{"typeName":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}},"shape":{"properties":[{"wireKey":"title","value":{"primitive":{"string":"The Godfather III","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"ratings","value":{"container":{"list":[],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"selfReferencing","value":{"container":{"list":[],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}}}],"type":"object"},"type":"named"}],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}}}],"type":"object"},{"properties":[{"wireKey":"title","value":{"primitive":{"string":"Goodfellas","type":"string"},"type":"primitive"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"ratings","value":{"container":{"list":[{"primitive":{"double":1,"type":"double"},"type":"primitive"},{"primitive":{"double":2,"type":"double"},"type":"primitive"},{"primitive":{"double":3,"type":"double"},"type":"primitive"}],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}}},{"wireKey":"selfReferencing","value":{"container":{"list":[],"type":"list"},"type":"container"},"originalTypeDeclaration":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}}}],"type":"object"}],"referencedTypes":[{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}}},{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"RecursiveType","nameV2":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"nameV3":{"safeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"},"unsafeName":{"originalValue":"RecursiveType","camelCase":"recursiveType","pascalCase":"RecursiveType","snakeCase":"recursive_type","screamingSnakeCase":"RECURSIVE_TYPE"}}}]}],"services":{"websocket":[],"http":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"name":"ImdbService","fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}]},"basePath":"/movies","basePathV2":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"endpoints":[{"availability":{"status":"GENERAL_AVAILABILITY"},"id":"createMovie","name":{"originalValue":"createMovie","camelCase":"createMovie","pascalCase":"CreateMovie","snakeCase":"create_movie","screamingSnakeCase":"CREATE_MOVIE"},"nameV2":{"safeName":{"originalValue":"createMovie","camelCase":"createMovie","pascalCase":"CreateMovie","snakeCase":"create_movie","screamingSnakeCase":"CREATE_MOVIE"},"unsafeName":{"originalValue":"createMovie","camelCase":"createMovie","pascalCase":"CreateMovie","snakeCase":"create_movie","screamingSnakeCase":"CREATE_MOVIE"}},"method":"POST","headers":[],"path":{"head":"","parts":[]},"pathParameters":[],"queryParameters":[],"request":{"type":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}},"_type":"named"},"typeV2":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"CreateMovieRequest","nameV2":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"nameV3":{"safeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"},"unsafeName":{"originalValue":"CreateMovieRequest","camelCase":"createMovieRequest","pascalCase":"CreateMovieRequest","snakeCase":"create_movie_request","screamingSnakeCase":"CREATE_MOVIE_REQUEST"}},"_type":"named"}},"response":{"type":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"_type":"named"},"typeV2":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"_type":"named"}},"errors":[{"error":{"name":"BadRequestError","nameV2":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"nameV3":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}},"fernFilepath":[{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}],"fernFilepathV2":[{"safeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"},"unsafeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}}]}}],"errorsV2":{"discriminant":{"originalValue":"errorName","camelCase":"errorName","snakeCase":"error_name","pascalCase":"ErrorName","screamingSnakeCase":"ERROR_NAME","wireValue":"errorName"},"types":[{"discriminantValue":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR","wireValue":"BadRequestError"},"shape":{"type":"noProperties"}}]},"auth":false},{"availability":{"status":"GENERAL_AVAILABILITY"},"id":"getMovie","name":{"originalValue":"getMovie","camelCase":"getMovie","pascalCase":"GetMovie","snakeCase":"get_movie","screamingSnakeCase":"GET_MOVIE"},"nameV2":{"safeName":{"originalValue":"getMovie","camelCase":"getMovie","pascalCase":"GetMovie","snakeCase":"get_movie","screamingSnakeCase":"GET_MOVIE"},"unsafeName":{"originalValue":"getMovie","camelCase":"getMovie","pascalCase":"GetMovie","snakeCase":"get_movie","screamingSnakeCase":"GET_MOVIE"}},"method":"GET","headers":[],"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV2":{"safeName":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"_type":"named"}}],"queryParameters":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"movieName","camelCase":"movieName","pascalCase":"MovieName","snakeCase":"movie_name","screamingSnakeCase":"MOVIE_NAME","wireValue":"movieName"},"nameV2":{"wireValue":"movieName","name":{"safeName":{"originalValue":"movieName","camelCase":"movieName","pascalCase":"MovieName","snakeCase":"movie_name","screamingSnakeCase":"MOVIE_NAME"},"unsafeName":{"originalValue":"movieName","camelCase":"movieName","pascalCase":"MovieName","snakeCase":"movie_name","screamingSnakeCase":"MOVIE_NAME"}}},"valueType":{"primitive":"STRING","_type":"primitive"},"allowMultiple":true}],"request":{"type":{"_type":"void"}},"response":{"type":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}},"_type":"named"},"typeV2":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"Movie","nameV2":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"nameV3":{"safeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"},"unsafeName":{"originalValue":"Movie","camelCase":"movie","pascalCase":"Movie","snakeCase":"movie","screamingSnakeCase":"MOVIE"}},"_type":"named"}},"errors":[{"error":{"name":"NotFoundError","nameV2":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"nameV3":{"safeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"unsafeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"}},"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}]}},{"error":{"name":"BadRequestError","nameV2":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"nameV3":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}},"fernFilepath":[{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}],"fernFilepathV2":[{"safeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"},"unsafeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}}]}}],"errorsV2":{"discriminant":{"originalValue":"errorName","camelCase":"errorName","snakeCase":"error_name","pascalCase":"ErrorName","screamingSnakeCase":"ERROR_NAME","wireValue":"errorName"},"types":[{"discriminantValue":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR","wireValue":"NotFoundError"},"shape":{"name":{"originalValue":"content","camelCase":"content","snakeCase":"content","pascalCase":"Content","screamingSnakeCase":"CONTENT","wireValue":"content"},"error":{"name":"NotFoundError","nameV2":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"nameV3":{"safeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"unsafeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"}},"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}]},"type":"singleProperty"}},{"discriminantValue":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR","wireValue":"BadRequestError"},"shape":{"type":"noProperties"}}]},"auth":false},{"availability":{"status":"GENERAL_AVAILABILITY"},"id":"delete","name":{"originalValue":"delete","camelCase":"delete","pascalCase":"Delete","snakeCase":"delete","screamingSnakeCase":"DELETE"},"nameV2":{"safeName":{"originalValue":"delete","camelCase":"delete","pascalCase":"Delete","snakeCase":"delete","screamingSnakeCase":"DELETE"},"unsafeName":{"originalValue":"delete","camelCase":"delete","pascalCase":"Delete","snakeCase":"delete","screamingSnakeCase":"DELETE"}},"method":"DELETE","headers":[],"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"availability":{"status":"GENERAL_AVAILABILITY"},"name":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV2":{"safeName":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"movieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"valueType":{"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}],"name":"MovieId","nameV2":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"nameV3":{"safeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"},"unsafeName":{"originalValue":"MovieId","camelCase":"movieId","pascalCase":"MovieId","snakeCase":"movie_id","screamingSnakeCase":"MOVIE_ID"}},"_type":"named"}}],"queryParameters":[],"request":{"type":{"_type":"void"}},"response":{"type":{"_type":"void"}},"errors":[{"error":{"name":"BadRequestError","nameV2":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"nameV3":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}},"fernFilepath":[{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}],"fernFilepathV2":[{"safeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"},"unsafeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}}]}}],"errorsV2":{"discriminant":{"originalValue":"errorName","camelCase":"errorName","snakeCase":"error_name","pascalCase":"ErrorName","screamingSnakeCase":"ERROR_NAME","wireValue":"errorName"},"types":[{"discriminantValue":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR","wireValue":"BadRequestError"},"shape":{"type":"noProperties"}}]},"auth":false}]}]},"constants":{"errorDiscriminant":"_error","errorInstanceIdKey":"_errorInstanceId","unknownErrorDiscriminantValue":"_unknown"},"constantsV2":{"errors":{"errorInstanceIdKey":{"originalValue":"errorInstanceId","camelCase":"errorInstanceId","pascalCase":"ErrorInstanceId","snakeCase":"error_instance_id","screamingSnakeCase":"ERROR_INSTANCE_ID","wireValue":"errorInstanceId"},"errorDiscriminant":{"originalValue":"error","camelCase":"error","snakeCase":"error","pascalCase":"Error","screamingSnakeCase":"ERROR","wireValue":"error"},"errorContentKey":{"originalValue":"content","camelCase":"content","snakeCase":"content","pascalCase":"Content","screamingSnakeCase":"CONTENT","wireValue":"content"}},"errorsV2":{"errorInstanceIdKey":{"wireValue":"errorInstanceId","name":{"safeName":{"originalValue":"errorInstanceId","camelCase":"errorInstanceId","pascalCase":"ErrorInstanceId","snakeCase":"error_instance_id","screamingSnakeCase":"ERROR_INSTANCE_ID"},"unsafeName":{"originalValue":"errorInstanceId","camelCase":"errorInstanceId","pascalCase":"ErrorInstanceId","snakeCase":"error_instance_id","screamingSnakeCase":"ERROR_INSTANCE_ID"}}},"errorDiscriminant":{"name":{"unsafeName":{"originalValue":"error","camelCase":"error","snakeCase":"error","pascalCase":"Error","screamingSnakeCase":"ERROR"},"safeName":{"originalValue":"error","camelCase":"error","snakeCase":"error","pascalCase":"Error","screamingSnakeCase":"ERROR"}},"wireValue":"error"},"errorContentKey":{"name":{"unsafeName":{"originalValue":"content","camelCase":"content","snakeCase":"content","pascalCase":"Content","screamingSnakeCase":"CONTENT"},"safeName":{"originalValue":"content","camelCase":"content","snakeCase":"content","pascalCase":"Content","screamingSnakeCase":"CONTENT"}},"wireValue":"content"}}},"environments":[],"errorDiscriminant":{"safeName":{"originalValue":"error","camelCase":"error","pascalCase":"Error","snakeCase":"error","screamingSnakeCase":"ERROR"},"unsafeName":{"originalValue":"error","camelCase":"error","pascalCase":"Error","snakeCase":"error","screamingSnakeCase":"ERROR"}},"errorDiscriminationStrategy":{"discriminant":{"wireValue":"error","name":{"safeName":{"originalValue":"error","camelCase":"error","pascalCase":"Error","snakeCase":"error","screamingSnakeCase":"ERROR"},"unsafeName":{"originalValue":"error","camelCase":"error","pascalCase":"Error","snakeCase":"error","screamingSnakeCase":"ERROR"}}},"contentProperty":{"wireValue":"content","name":{"safeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"},"unsafeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"}}},"type":"property"},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version"}},"errors":[{"name":{"name":"BadRequestError","nameV2":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"nameV3":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}},"fernFilepath":[{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}],"fernFilepathV2":[{"safeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"},"unsafeName":{"originalValue":"commons","camelCase":"commons","pascalCase":"Commons","snakeCase":"commons","screamingSnakeCase":"COMMONS"}}]},"discriminantValue":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR","wireValue":"BadRequestError"},"discriminantValueV2":{"wireValue":"BadRequestError","name":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}}},"discriminantValueV3":{"wireValue":"content","name":{"safeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"},"unsafeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"}},"type":"property"},"discriminantValueV4":{"wireValue":"BadRequestError","name":{"safeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"},"unsafeName":{"originalValue":"BadRequestError","camelCase":"badRequestError","pascalCase":"BadRequestError","snakeCase":"bad_request_error","screamingSnakeCase":"BAD_REQUEST_ERROR"}}},"type":{"aliasOf":{"_type":"void"},"resolvedType":{"_type":"void"},"_type":"alias"},"http":{"statusCode":400},"statusCode":400},{"name":{"name":"NotFoundError","nameV2":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"nameV3":{"safeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"unsafeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"}},"fernFilepath":[{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}],"fernFilepathV2":[{"safeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"},"unsafeName":{"originalValue":"imdb","camelCase":"imdb","pascalCase":"Imdb","snakeCase":"imdb","screamingSnakeCase":"IMDB"}}]},"discriminantValue":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR","wireValue":"NotFoundError"},"discriminantValueV2":{"wireValue":"NotFoundError","name":{"safeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"unsafeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"}}},"discriminantValueV3":{"wireValue":"content","name":{"safeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"},"unsafeName":{"originalValue":"content","camelCase":"content","pascalCase":"Content","snakeCase":"content","screamingSnakeCase":"CONTENT"}},"type":"property"},"discriminantValueV4":{"wireValue":"NotFoundError","name":{"safeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"},"unsafeName":{"originalValue":"NotFoundError","camelCase":"notFoundError","pascalCase":"NotFoundError","snakeCase":"not_found_error","screamingSnakeCase":"NOT_FOUND_ERROR"}}},"type":{"aliasOf":{"primitive":"STRING","_type":"primitive"},"resolvedType":{"primitive":"STRING","_type":"primitive"},"_type":"alias"},"typeV2":{"aliasOf":{"primitive":"STRING","_type":"primitive"},"resolvedType":{"primitive":"STRING","_type":"primitive"},"_type":"alias"},"typeV3":{"primitive":"STRING","_type":"primitive"},"http":{"statusCode":404},"statusCode":404}]}"`; -exports[`ir > {"name":"multiple-environment-urls"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"api","camelCase":{"unsafeName":"api","safeName":"api"},"snakeCase":{"unsafeName":"api","safeName":"api"},"screamingSnakeCase":{"unsafeName":"API","safeName":"API"},"pascalCase":{"unsafeName":"Api","safeName":"Api"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_endpoint-urls":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}],"packagePath":[],"file":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_endpoint-urls.test1","name":{"originalName":"test1","camelCase":{"unsafeName":"test1","safeName":"test1"},"snakeCase":{"unsafeName":"test_1","safeName":"test_1"},"screamingSnakeCase":{"unsafeName":"TEST_1","safeName":"TEST_1"},"pascalCase":{"unsafeName":"Test1","safeName":"Test1"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerA","method":"GET","basePath":null,"path":{"head":"/a","parts":[]},"fullPath":{"head":"/a","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"/a","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_endpoint-urls.test2","name":{"originalName":"test2","camelCase":{"unsafeName":"test2","safeName":"test2"},"snakeCase":{"unsafeName":"test_2","safeName":"test_2"},"screamingSnakeCase":{"unsafeName":"TEST_2","safeName":"TEST_2"},"pascalCase":{"unsafeName":"Test2","safeName":"Test2"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerB","method":"POST","basePath":null,"path":{"head":"/b","parts":[]},"fullPath":{"head":"/b","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"/b","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]},"service_service-url":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}],"packagePath":[],"file":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service-url.test","name":{"originalName":"test","camelCase":{"unsafeName":"test","safeName":"test"},"snakeCase":{"unsafeName":"test","safeName":"test"},"screamingSnakeCase":{"unsafeName":"TEST","safeName":"TEST"},"pascalCase":{"unsafeName":"Test","safeName":"Test"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerA","method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":{"defaultEnvironment":"Production","environments":{"type":"multipleBaseUrls","baseUrls":[{"id":"ServerA","name":{"originalName":"ServerA","camelCase":{"unsafeName":"serverA","safeName":"serverA"},"snakeCase":{"unsafeName":"server_a","safeName":"server_a"},"screamingSnakeCase":{"unsafeName":"SERVER_A","safeName":"SERVER_A"},"pascalCase":{"unsafeName":"ServerA","safeName":"ServerA"}}},{"id":"ServerB","name":{"originalName":"ServerB","camelCase":{"unsafeName":"serverB","safeName":"serverB"},"snakeCase":{"unsafeName":"server_b","safeName":"server_b"},"screamingSnakeCase":{"unsafeName":"SERVER_B","safeName":"SERVER_B"},"pascalCase":{"unsafeName":"ServerB","safeName":"ServerB"}}}],"environments":[{"id":"Production","name":{"originalName":"Production","camelCase":{"unsafeName":"production","safeName":"production"},"snakeCase":{"unsafeName":"production","safeName":"production"},"screamingSnakeCase":{"unsafeName":"PRODUCTION","safeName":"PRODUCTION"},"pascalCase":{"unsafeName":"Production","safeName":"Production"}},"urls":{"ServerA":"a.prod.com","ServerB":"b.prod.com"},"docs":null},{"id":"Staging","name":{"originalName":"Staging","camelCase":{"unsafeName":"staging","safeName":"staging"},"snakeCase":{"unsafeName":"staging","safeName":"staging"},"screamingSnakeCase":{"unsafeName":"STAGING","safeName":"STAGING"},"pascalCase":{"unsafeName":"Staging","safeName":"Staging"}},"urls":{"ServerA":"a.staging.com","ServerB":"b.staging.com"},"docs":null}]}},"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_endpoint-urls":{"name":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}},"fernFilepath":{"allParts":[{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}],"packagePath":[],"file":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}},"service":"service_endpoint-urls","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_service-url":{"name":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}},"fernFilepath":{"allParts":[{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}],"packagePath":[],"file":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}},"service":"service_service-url","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_endpoint-urls","subpackage_service-url"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"multiple-environment-urls"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"api","camelCase":{"unsafeName":"api","safeName":"api"},"snakeCase":{"unsafeName":"api","safeName":"api"},"screamingSnakeCase":{"unsafeName":"API","safeName":"API"},"pascalCase":{"unsafeName":"Api","safeName":"Api"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_endpoint-urls":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}],"packagePath":[],"file":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_endpoint-urls.test1","name":{"originalName":"test1","camelCase":{"unsafeName":"test1","safeName":"test1"},"snakeCase":{"unsafeName":"test_1","safeName":"test_1"},"screamingSnakeCase":{"unsafeName":"TEST_1","safeName":"TEST_1"},"pascalCase":{"unsafeName":"Test1","safeName":"Test1"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerA","method":"GET","basePath":null,"path":{"head":"/a","parts":[]},"fullPath":{"head":"/a","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"/a","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_endpoint-urls.test2","name":{"originalName":"test2","camelCase":{"unsafeName":"test2","safeName":"test2"},"snakeCase":{"unsafeName":"test_2","safeName":"test_2"},"screamingSnakeCase":{"unsafeName":"TEST_2","safeName":"TEST_2"},"pascalCase":{"unsafeName":"Test2","safeName":"Test2"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerB","method":"POST","basePath":null,"path":{"head":"/b","parts":[]},"fullPath":{"head":"/b","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"/b","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]},"service_service-url":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}],"packagePath":[],"file":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service-url.test","name":{"originalName":"test","camelCase":{"unsafeName":"test","safeName":"test"},"snakeCase":{"unsafeName":"test","safeName":"test"},"screamingSnakeCase":{"unsafeName":"TEST","safeName":"TEST"},"pascalCase":{"unsafeName":"Test","safeName":"Test"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":"ServerA","method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":{"defaultEnvironment":"Production","environments":{"type":"multipleBaseUrls","baseUrls":[{"id":"ServerA","name":{"originalName":"ServerA","camelCase":{"unsafeName":"serverA","safeName":"serverA"},"snakeCase":{"unsafeName":"server_a","safeName":"server_a"},"screamingSnakeCase":{"unsafeName":"SERVER_A","safeName":"SERVER_A"},"pascalCase":{"unsafeName":"ServerA","safeName":"ServerA"}}},{"id":"ServerB","name":{"originalName":"ServerB","camelCase":{"unsafeName":"serverB","safeName":"serverB"},"snakeCase":{"unsafeName":"server_b","safeName":"server_b"},"screamingSnakeCase":{"unsafeName":"SERVER_B","safeName":"SERVER_B"},"pascalCase":{"unsafeName":"ServerB","safeName":"ServerB"}}}],"environments":[{"id":"Production","name":{"originalName":"Production","camelCase":{"unsafeName":"production","safeName":"production"},"snakeCase":{"unsafeName":"production","safeName":"production"},"screamingSnakeCase":{"unsafeName":"PRODUCTION","safeName":"PRODUCTION"},"pascalCase":{"unsafeName":"Production","safeName":"Production"}},"urls":{"ServerA":"a.prod.com","ServerB":"b.prod.com"},"docs":null},{"id":"Staging","name":{"originalName":"Staging","camelCase":{"unsafeName":"staging","safeName":"staging"},"snakeCase":{"unsafeName":"staging","safeName":"staging"},"screamingSnakeCase":{"unsafeName":"STAGING","safeName":"STAGING"},"pascalCase":{"unsafeName":"Staging","safeName":"Staging"}},"urls":{"ServerA":"a.staging.com","ServerB":"b.staging.com"},"docs":null}]}},"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_endpoint-urls":{"name":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}},"fernFilepath":{"allParts":[{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}],"packagePath":[],"file":{"originalName":"endpoint-urls","camelCase":{"unsafeName":"endpointUrls","safeName":"endpointUrls"},"snakeCase":{"unsafeName":"endpoint_urls","safeName":"endpoint_urls"},"screamingSnakeCase":{"unsafeName":"ENDPOINT_URLS","safeName":"ENDPOINT_URLS"},"pascalCase":{"unsafeName":"EndpointUrls","safeName":"EndpointUrls"}}},"service":"service_endpoint-urls","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_service-url":{"name":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}},"fernFilepath":{"allParts":[{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}],"packagePath":[],"file":{"originalName":"service-url","camelCase":{"unsafeName":"serviceUrl","safeName":"serviceUrl"},"snakeCase":{"unsafeName":"service_url","safeName":"service_url"},"screamingSnakeCase":{"unsafeName":"SERVICE_URL","safeName":"SERVICE_URL"},"pascalCase":{"unsafeName":"ServiceUrl","safeName":"ServiceUrl"}}},"service":"service_service-url","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_endpoint-urls","subpackage_service-url"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; exports[`ir > {"name":"navigation-points-to"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_subpackage":{"name":{"originalName":"subpackage","camelCase":{"unsafeName":"subpackage","safeName":"subpackage"},"snakeCase":{"unsafeName":"subpackage","safeName":"subpackage"},"screamingSnakeCase":{"unsafeName":"SUBPACKAGE","safeName":"SUBPACKAGE"},"pascalCase":{"unsafeName":"Subpackage","safeName":"Subpackage"}},"fernFilepath":{"allParts":[{"originalName":"subpackage","camelCase":{"unsafeName":"subpackage","safeName":"subpackage"},"snakeCase":{"unsafeName":"subpackage","safeName":"subpackage"},"screamingSnakeCase":{"unsafeName":"SUBPACKAGE","safeName":"SUBPACKAGE"},"pascalCase":{"unsafeName":"Subpackage","safeName":"Subpackage"}}],"packagePath":[{"originalName":"subpackage","camelCase":{"unsafeName":"subpackage","safeName":"subpackage"},"snakeCase":{"unsafeName":"subpackage","safeName":"subpackage"},"screamingSnakeCase":{"unsafeName":"SUBPACKAGE","safeName":"SUBPACKAGE"},"pascalCase":{"unsafeName":"Subpackage","safeName":"Subpackage"}}],"file":null},"service":null,"types":[],"errors":[],"subpackages":["subpackage_subpackage/x"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_subpackage/x":{"name":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}},"fernFilepath":{"allParts":[{"originalName":"subpackage","camelCase":{"unsafeName":"subpackage","safeName":"subpackage"},"snakeCase":{"unsafeName":"subpackage","safeName":"subpackage"},"screamingSnakeCase":{"unsafeName":"SUBPACKAGE","safeName":"SUBPACKAGE"},"pascalCase":{"unsafeName":"Subpackage","safeName":"Subpackage"}},{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}],"packagePath":[{"originalName":"subpackage","camelCase":{"unsafeName":"subpackage","safeName":"subpackage"},"snakeCase":{"unsafeName":"subpackage","safeName":"subpackage"},"screamingSnakeCase":{"unsafeName":"SUBPACKAGE","safeName":"SUBPACKAGE"},"pascalCase":{"unsafeName":"Subpackage","safeName":"Subpackage"}}],"file":{"originalName":"x","camelCase":{"unsafeName":"x","safeName":"x"},"snakeCase":{"unsafeName":"x","safeName":"x"},"screamingSnakeCase":{"unsafeName":"X","safeName":"X"},"pascalCase":{"unsafeName":"X","safeName":"X"}}},"service":null,"types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_subpackage"],"webhooks":null,"navigationConfig":{"pointsTo":"subpackage_subpackage"},"hasEndpointsInTree":false,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"nested-example-reference"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"api","camelCase":{"unsafeName":"api","safeName":"api"},"snakeCase":{"unsafeName":"api","safeName":"api"},"screamingSnakeCase":{"unsafeName":"API","safeName":"API"},"pascalCase":{"unsafeName":"Api","safeName":"Api"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[{"_type":"basic","username":{"originalName":"clientId","camelCase":{"unsafeName":"clientId","safeName":"clientId"},"snakeCase":{"unsafeName":"client_id","safeName":"client_id"},"screamingSnakeCase":{"unsafeName":"CLIENT_ID","safeName":"CLIENT_ID"},"pascalCase":{"unsafeName":"ClientId","safeName":"ClientId"}},"usernameEnvVar":null,"password":{"originalName":"clientSecret","camelCase":{"unsafeName":"clientSecret","safeName":"clientSecret"},"snakeCase":{"unsafeName":"client_secret","safeName":"client_secret"},"screamingSnakeCase":{"unsafeName":"CLIENT_SECRET","safeName":"CLIENT_SECRET"},"pascalCase":{"unsafeName":"ClientSecret","safeName":"ClientSecret"}},"passwordEnvVar":null,"docs":null}],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_nested:Response":{"inline":false,"name":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_nested:Product"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_nested:Product":{"inline":false,"name":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"unknown"}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_nested:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example","camelCase":{"unsafeName":"example","safeName":"example"},"snakeCase":{"unsafeName":"example","safeName":"example"},"screamingSnakeCase":{"unsafeName":"EXAMPLE","safeName":"EXAMPLE"},"pascalCase":{"unsafeName":"Example","safeName":"Example"}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"}},"jsonExample":"hello","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_nested":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}}},"displayName":null,"basePath":{"head":"/nested","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_nested.calculate","name":{"originalName":"calculate","camelCase":{"unsafeName":"calculate","safeName":"calculate"},"snakeCase":{"unsafeName":"calculate","safeName":"calculate"},"screamingSnakeCase":{"unsafeName":"CALCULATE","safeName":"CALCULATE"},"pascalCase":{"unsafeName":"Calculate","safeName":"Calculate"}},"displayName":null,"auth":true,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/nested","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[{"example":{"id":"5a6f08f1a5b7c467c617c891b9b6e1f85c3cdaa17c9bc1a56012234eeb809937","name":null,"url":"/nested","rootPathParameters":[],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_nested:Response","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"container","container":{"type":"map","map":[{"key":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"b"}}},"jsonExample":"b"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_nested:Product","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"unknown","unknown":{"d":{"e":"$11","f":"hello"}}},"jsonExample":{"d":{"e":"$11","f":"hello"}}},"valueType":{"_type":"unknown"}}},"jsonExample":{"d":{"e":"$11","f":"hello"}}},"originalTypeDeclaration":{"typeId":"type_nested:Product","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}}}}]}},"jsonExample":{"c":{"d":{"e":"$11","f":"hello"}}}}}],"keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}},"jsonExample":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}},"valueType":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"jsonExample":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}},"originalTypeDeclaration":{"typeId":"type_nested:Response","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}}}}]}},"jsonExample":{"a":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}}}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"e91f0ffaa82ef1376271047c051f6c2a66368ac4","url":"/nested","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"container","container":{"type":"map","map":[{"key":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"a"}}},"jsonExample":"a"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"originalTypeDeclaration":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}},"valueType":{"_type":"unknown"}}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"}},"jsonExample":{"c":{"key":"value"}}}}],"keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}},"jsonExample":{"a":{"c":{"key":"value"}}}},"valueType":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"jsonExample":{"a":{"c":{"key":"value"}}}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"}},"jsonExample":{"a":{"a":{"c":{"key":"value"}}}}}}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_nested":["type_nested:Response"]},"sharedTypes":["type_nested:Product","type_nested:StringAlias"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_nested":{"name":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"service":"service_nested","types":["type_nested:Response","type_nested:Product","type_nested:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_nested"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":true,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"nested-example-reference"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"api","camelCase":{"unsafeName":"api","safeName":"api"},"snakeCase":{"unsafeName":"api","safeName":"api"},"screamingSnakeCase":{"unsafeName":"API","safeName":"API"},"pascalCase":{"unsafeName":"Api","safeName":"Api"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[{"_type":"basic","username":{"originalName":"clientId","camelCase":{"unsafeName":"clientId","safeName":"clientId"},"snakeCase":{"unsafeName":"client_id","safeName":"client_id"},"screamingSnakeCase":{"unsafeName":"CLIENT_ID","safeName":"CLIENT_ID"},"pascalCase":{"unsafeName":"ClientId","safeName":"ClientId"}},"usernameEnvVar":null,"password":{"originalName":"clientSecret","camelCase":{"unsafeName":"clientSecret","safeName":"clientSecret"},"snakeCase":{"unsafeName":"client_secret","safeName":"client_secret"},"screamingSnakeCase":{"unsafeName":"CLIENT_SECRET","safeName":"CLIENT_SECRET"},"pascalCase":{"unsafeName":"ClientSecret","safeName":"ClientSecret"}},"passwordEnvVar":null,"docs":null}],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_nested:Response":{"inline":false,"name":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_nested:Product"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_nested:Product":{"inline":false,"name":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"unknown"}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_nested:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example","camelCase":{"unsafeName":"example","safeName":"example"},"snakeCase":{"unsafeName":"example","safeName":"example"},"screamingSnakeCase":{"unsafeName":"EXAMPLE","safeName":"EXAMPLE"},"pascalCase":{"unsafeName":"Example","safeName":"Example"}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"}},"jsonExample":"hello","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_nested":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}}},"displayName":null,"basePath":{"head":"/nested","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_nested.calculate","name":{"originalName":"calculate","camelCase":{"unsafeName":"calculate","safeName":"calculate"},"snakeCase":{"unsafeName":"calculate","safeName":"calculate"},"screamingSnakeCase":{"unsafeName":"CALCULATE","safeName":"CALCULATE"},"pascalCase":{"unsafeName":"Calculate","safeName":"Calculate"}},"displayName":null,"auth":true,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/nested","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[{"example":{"id":"5a6f08f1a5b7c467c617c891b9b6e1f85c3cdaa17c9bc1a56012234eeb809937","name":null,"url":"/nested","rootPathParameters":[],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_nested:Response","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"container","container":{"type":"map","map":[{"key":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"b"}}},"jsonExample":"b"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_nested:Product","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"unknown","unknown":{"d":{"e":"$11","f":"hello"}}},"jsonExample":{"d":{"e":"$11","f":"hello"}}},"valueType":{"_type":"unknown"}}},"jsonExample":{"d":{"e":"$11","f":"hello"}}},"originalTypeDeclaration":{"typeId":"type_nested:Product","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}}}}]}},"jsonExample":{"c":{"d":{"e":"$11","f":"hello"}}}}}],"keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}},"jsonExample":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}},"valueType":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"jsonExample":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}},"originalTypeDeclaration":{"typeId":"type_nested:Response","fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}}}}]}},"jsonExample":{"a":{"b":{"c":{"d":{"e":"$11","f":"hello"}}}}}}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"e91f0ffaa82ef1376271047c051f6c2a66368ac4","url":"/nested","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"wireValue":"a"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"container","container":{"type":"map","map":[{"key":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"a"}}},"jsonExample":"a"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"c","camelCase":{"unsafeName":"c","safeName":"c"},"snakeCase":{"unsafeName":"c","safeName":"c"},"screamingSnakeCase":{"unsafeName":"C","safeName":"C"},"pascalCase":{"unsafeName":"C","safeName":"C"}},"wireValue":"c"},"originalTypeDeclaration":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"},"value":{"shape":{"type":"container","container":{"type":"optional","optional":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}},"valueType":{"_type":"unknown"}}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product"}},"jsonExample":{"c":{"key":"value"}}}}],"keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}},"jsonExample":{"a":{"c":{"key":"value"}}}},"valueType":{"_type":"container","container":{"_type":"map","keyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"valueType":{"_type":"named","name":{"originalName":"Product","camelCase":{"unsafeName":"product","safeName":"product"},"snakeCase":{"unsafeName":"product","safeName":"product"},"screamingSnakeCase":{"unsafeName":"PRODUCT","safeName":"PRODUCT"},"pascalCase":{"unsafeName":"Product","safeName":"Product"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Product","default":null,"inline":null}}}}},"jsonExample":{"a":{"c":{"key":"value"}}}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"typeId":"type_nested:Response"}},"jsonExample":{"a":{"a":{"c":{"key":"value"}}}}}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_nested":["type_nested:Response"]},"sharedTypes":["type_nested:Product","type_nested:StringAlias"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_nested":{"name":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}},"fernFilepath":{"allParts":[{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}],"packagePath":[],"file":{"originalName":"nested","camelCase":{"unsafeName":"nested","safeName":"nested"},"snakeCase":{"unsafeName":"nested","safeName":"nested"},"screamingSnakeCase":{"unsafeName":"NESTED","safeName":"NESTED"},"pascalCase":{"unsafeName":"Nested","safeName":"Nested"}}},"service":"service_nested","types":["type_nested:Response","type_nested:Product","type_nested:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_nested"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":true,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"packages"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"packages","camelCase":{"unsafeName":"packages","safeName":"packages"},"snakeCase":{"unsafeName":"packages","safeName":"packages"},"screamingSnakeCase":{"unsafeName":"PACKAGES","safeName":"PACKAGES"},"pascalCase":{"unsafeName":"Packages","safeName":"Packages"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_:RootString":{"inline":false,"name":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"typeId":"type_:RootString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_package:PackageString":{"inline":false,"name":{"name":{"originalName":"PackageString","camelCase":{"unsafeName":"packageString","safeName":"packageString"},"snakeCase":{"unsafeName":"package_string","safeName":"package_string"},"screamingSnakeCase":{"unsafeName":"PACKAGE_STRING","safeName":"PACKAGE_STRING"},"pascalCase":{"unsafeName":"PackageString","safeName":"PackageString"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"typeId":"type_package:PackageString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_importer:Foo":{"inline":false,"name":{"name":{"originalName":"Foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"fernFilepath":{"allParts":[{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}],"packagePath":[],"file":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}},"typeId":"type_importer:Foo"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"wireValue":"root"},"valueType":{"_type":"named","name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"typeId":"type_:RootString","default":null,"inline":null},"availability":null,"docs":null},{"name":{"name":{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},"wireValue":"package"},"valueType":{"_type":"named","name":{"originalName":"PackageString","camelCase":{"unsafeName":"packageString","safeName":"packageString"},"snakeCase":{"unsafeName":"package_string","safeName":"package_string"},"screamingSnakeCase":{"unsafeName":"PACKAGE_STRING","safeName":"PACKAGE_STRING"},"pascalCase":{"unsafeName":"PackageString","safeName":"PackageString"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"typeId":"type_package:PackageString","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_:RootString","type_package:PackageString"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_package/a:A":{"inline":false,"name":{"name":{"originalName":"A","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}},"typeId":"type_package/a:A"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_":{"availability":null,"name":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_.rootEndpoint","name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]},"service_package":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_:RootString","type_package:PackageString","type_importer:Foo","type_package/a:A"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_package":{"name":{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"service":"service_package","types":["type_package:PackageString"],"errors":[],"subpackages":["subpackage_package/b","subpackage_package/a"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_importer":{"name":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}},"fernFilepath":{"allParts":[{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}],"packagePath":[],"file":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}},"service":null,"types":["type_importer:Foo"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":"I'm an importer!"},"subpackage_package/a":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}},"service":null,"types":["type_package/a:A"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_package/b":{"name":{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}}},"service":null,"types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":"service_","types":["type_:RootString"],"errors":[],"subpackages":["subpackage_package","subpackage_importer"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"packages"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"packages","camelCase":{"unsafeName":"packages","safeName":"packages"},"snakeCase":{"unsafeName":"packages","safeName":"packages"},"screamingSnakeCase":{"unsafeName":"PACKAGES","safeName":"PACKAGES"},"pascalCase":{"unsafeName":"Packages","safeName":"Packages"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_:RootString":{"inline":false,"name":{"name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"typeId":"type_:RootString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_package:PackageString":{"inline":false,"name":{"name":{"originalName":"PackageString","camelCase":{"unsafeName":"packageString","safeName":"packageString"},"snakeCase":{"unsafeName":"package_string","safeName":"package_string"},"screamingSnakeCase":{"unsafeName":"PACKAGE_STRING","safeName":"PACKAGE_STRING"},"pascalCase":{"unsafeName":"PackageString","safeName":"PackageString"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"typeId":"type_package:PackageString"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_importer:Foo":{"inline":false,"name":{"name":{"originalName":"Foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"fernFilepath":{"allParts":[{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}],"packagePath":[],"file":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}},"typeId":"type_importer:Foo"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"wireValue":"root"},"valueType":{"_type":"named","name":{"originalName":"RootString","camelCase":{"unsafeName":"rootString","safeName":"rootString"},"snakeCase":{"unsafeName":"root_string","safeName":"root_string"},"screamingSnakeCase":{"unsafeName":"ROOT_STRING","safeName":"ROOT_STRING"},"pascalCase":{"unsafeName":"RootString","safeName":"RootString"}},"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"typeId":"type_:RootString","default":null,"inline":null},"availability":null,"docs":null},{"name":{"name":{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},"wireValue":"package"},"valueType":{"_type":"named","name":{"originalName":"PackageString","camelCase":{"unsafeName":"packageString","safeName":"packageString"},"snakeCase":{"unsafeName":"package_string","safeName":"package_string"},"screamingSnakeCase":{"unsafeName":"PACKAGE_STRING","safeName":"PACKAGE_STRING"},"pascalCase":{"unsafeName":"PackageString","safeName":"PackageString"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"typeId":"type_package:PackageString","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_:RootString","type_package:PackageString"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_package/a:A":{"inline":false,"name":{"name":{"originalName":"A","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}},"typeId":"type_package/a:A"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_":{"availability":null,"name":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_.rootEndpoint","name":{"originalName":"rootEndpoint","camelCase":{"unsafeName":"rootEndpoint","safeName":"rootEndpoint"},"snakeCase":{"unsafeName":"root_endpoint","safeName":"root_endpoint"},"screamingSnakeCase":{"unsafeName":"ROOT_ENDPOINT","safeName":"ROOT_ENDPOINT"},"pascalCase":{"unsafeName":"RootEndpoint","safeName":"RootEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"0151c4f21dcb59ded0264beca4e001f6c9a6203a","url":"","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]},"service_package":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null}},"displayName":null,"basePath":{"head":"/","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":["type_:RootString","type_package:PackageString","type_importer:Foo","type_package/a:A"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_package":{"name":{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":null},"service":"service_package","types":["type_package:PackageString"],"errors":[],"subpackages":["subpackage_package/b","subpackage_package/a"],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null},"subpackage_importer":{"name":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}},"fernFilepath":{"allParts":[{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}],"packagePath":[],"file":{"originalName":"importer","camelCase":{"unsafeName":"importer","safeName":"importer"},"snakeCase":{"unsafeName":"importer","safeName":"importer"},"screamingSnakeCase":{"unsafeName":"IMPORTER","safeName":"IMPORTER"},"pascalCase":{"unsafeName":"Importer","safeName":"Importer"}}},"service":null,"types":["type_importer:Foo"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":"I'm an importer!"},"subpackage_package/a":{"name":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"a","camelCase":{"unsafeName":"a","safeName":"a"},"snakeCase":{"unsafeName":"a","safeName":"a"},"screamingSnakeCase":{"unsafeName":"A","safeName":"A"},"pascalCase":{"unsafeName":"A","safeName":"A"}}},"service":null,"types":["type_package/a:A"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_package/b":{"name":{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}},"fernFilepath":{"allParts":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}},{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}}],"packagePath":[{"originalName":"package","camelCase":{"unsafeName":"package","safeName":"package"},"snakeCase":{"unsafeName":"package","safeName":"package"},"screamingSnakeCase":{"unsafeName":"PACKAGE","safeName":"PACKAGE"},"pascalCase":{"unsafeName":"Package","safeName":"Package"}}],"file":{"originalName":"b","camelCase":{"unsafeName":"b","safeName":"b"},"snakeCase":{"unsafeName":"b","safeName":"b"},"screamingSnakeCase":{"unsafeName":"B","safeName":"B"},"pascalCase":{"unsafeName":"B","safeName":"B"}}},"service":null,"types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":"service_","types":["type_:RootString"],"errors":[],"subpackages":["subpackage_package","subpackage_importer"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"response-property"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"response-property","camelCase":{"unsafeName":"responseProperty","safeName":"responseProperty"},"snakeCase":{"unsafeName":"response_property","safeName":"response_property"},"screamingSnakeCase":{"unsafeName":"RESPONSE_PROPERTY","safeName":"RESPONSE_PROPERTY"},"pascalCase":{"unsafeName":"ResponseProperty","safeName":"ResponseProperty"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_service:WithDocs":{"inline":false,"name":{"name":{"originalName":"WithDocs","camelCase":{"unsafeName":"withDocs","safeName":"withDocs"},"snakeCase":{"unsafeName":"with_docs","safeName":"with_docs"},"screamingSnakeCase":{"unsafeName":"WITH_DOCS","safeName":"WITH_DOCS"},"pascalCase":{"unsafeName":"WithDocs","safeName":"WithDocs"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:WithDocs"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_service:Movie":{"inline":false,"name":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_service:Response":{"inline":false,"name":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"shape":{"_type":"object","extends":[{"name":{"originalName":"WithDocs","camelCase":{"unsafeName":"withDocs","safeName":"withDocs"},"snakeCase":{"unsafeName":"with_docs","safeName":"with_docs"},"screamingSnakeCase":{"unsafeName":"WITH_DOCS","safeName":"WITH_DOCS"},"pascalCase":{"unsafeName":"WithDocs","safeName":"WithDocs"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:WithDocs"}],"properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"valueType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}]},"referencedTypes":["type_service:WithDocs","type_service:Movie"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_service":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}}},"displayName":null,"basePath":{"head":"","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service.getMovie","name":{"originalName":"getMovie","camelCase":{"unsafeName":"getMovie","safeName":"getMovie"},"snakeCase":{"unsafeName":"get_movie","safeName":"get_movie"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE","safeName":"GET_MOVIE"},"pascalCase":{"unsafeName":"GetMovie","safeName":"GetMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/movie","parts":[]},"fullPath":{"head":"movie","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"nestedPropertyAsResponse","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response","default":null,"inline":null},"responseProperty":{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"valueType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie","default":null,"inline":null},"availability":null,"docs":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"51ecfe336a3cafcb2aee1fe0fb691ea2f698c246","url":"/movie","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":{"type":"reference","shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"}},"jsonExample":{"id":"id"}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"}},"jsonExample":{"data":{"id":"id"}}}}},"docs":null}}],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_service.getMovieDocs","name":{"originalName":"getMovieDocs","camelCase":{"unsafeName":"getMovieDocs","safeName":"getMovieDocs"},"snakeCase":{"unsafeName":"get_movie_docs","safeName":"get_movie_docs"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE_DOCS","safeName":"GET_MOVIE_DOCS"},"pascalCase":{"unsafeName":"GetMovieDocs","safeName":"GetMovieDocs"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/movie","parts":[]},"fullPath":{"head":"movie","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"nestedPropertyAsResponse","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response","default":null,"inline":null},"responseProperty":{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"51ecfe336a3cafcb2aee1fe0fb691ea2f698c246","url":"/movie","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":{"type":"reference","shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"}},"jsonExample":{"id":"id"}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"}},"jsonExample":{"data":{"id":"id"}}}}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_service":["type_service:Response"]},"sharedTypes":["type_service:WithDocs","type_service:Movie"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_service":{"name":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"service":"service_service","types":["type_service:WithDocs","type_service:Movie","type_service:Response"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_service"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"response-property"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"response-property","camelCase":{"unsafeName":"responseProperty","safeName":"responseProperty"},"snakeCase":{"unsafeName":"response_property","safeName":"response_property"},"screamingSnakeCase":{"unsafeName":"RESPONSE_PROPERTY","safeName":"RESPONSE_PROPERTY"},"pascalCase":{"unsafeName":"ResponseProperty","safeName":"ResponseProperty"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_service:WithDocs":{"inline":false,"name":{"name":{"originalName":"WithDocs","camelCase":{"unsafeName":"withDocs","safeName":"withDocs"},"snakeCase":{"unsafeName":"with_docs","safeName":"with_docs"},"screamingSnakeCase":{"unsafeName":"WITH_DOCS","safeName":"WITH_DOCS"},"pascalCase":{"unsafeName":"WithDocs","safeName":"WithDocs"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:WithDocs"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_service:Movie":{"inline":false,"name":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_service:Response":{"inline":false,"name":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"shape":{"_type":"object","extends":[{"name":{"originalName":"WithDocs","camelCase":{"unsafeName":"withDocs","safeName":"withDocs"},"snakeCase":{"unsafeName":"with_docs","safeName":"with_docs"},"screamingSnakeCase":{"unsafeName":"WITH_DOCS","safeName":"WITH_DOCS"},"pascalCase":{"unsafeName":"WithDocs","safeName":"WithDocs"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:WithDocs"}],"properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"valueType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}]},"referencedTypes":["type_service:WithDocs","type_service:Movie"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_service":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}}},"displayName":null,"basePath":{"head":"","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service.getMovie","name":{"originalName":"getMovie","camelCase":{"unsafeName":"getMovie","safeName":"getMovie"},"snakeCase":{"unsafeName":"get_movie","safeName":"get_movie"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE","safeName":"GET_MOVIE"},"pascalCase":{"unsafeName":"GetMovie","safeName":"GetMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/movie","parts":[]},"fullPath":{"head":"movie","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"nestedPropertyAsResponse","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response","default":null,"inline":null},"responseProperty":{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"valueType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie","default":null,"inline":null},"availability":null,"docs":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"51ecfe336a3cafcb2aee1fe0fb691ea2f698c246","url":"/movie","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":{"type":"reference","shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"}},"jsonExample":{"id":"id"}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"}},"jsonExample":{"data":{"id":"id"}}}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_service.getMovieDocs","name":{"originalName":"getMovieDocs","camelCase":{"unsafeName":"getMovieDocs","safeName":"getMovieDocs"},"snakeCase":{"unsafeName":"get_movie_docs","safeName":"get_movie_docs"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE_DOCS","safeName":"GET_MOVIE_DOCS"},"pascalCase":{"unsafeName":"GetMovieDocs","safeName":"GetMovieDocs"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/movie","parts":[]},"fullPath":{"head":"movie","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"nestedPropertyAsResponse","responseBodyType":{"_type":"named","name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response","default":null,"inline":null},"responseProperty":{"name":{"name":{"originalName":"docs","camelCase":{"unsafeName":"docs","safeName":"docs"},"snakeCase":{"unsafeName":"docs","safeName":"docs"},"screamingSnakeCase":{"unsafeName":"DOCS","safeName":"DOCS"},"pascalCase":{"unsafeName":"Docs","safeName":"Docs"}},"wireValue":"docs"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"51ecfe336a3cafcb2aee1fe0fb691ea2f698c246","url":"/movie","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[],"request":{"type":"reference","shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"data","camelCase":{"unsafeName":"data","safeName":"data"},"snakeCase":{"unsafeName":"data","safeName":"data"},"screamingSnakeCase":{"unsafeName":"DATA","safeName":"DATA"},"pascalCase":{"unsafeName":"Data","safeName":"Data"}},"wireValue":"data"},"originalTypeDeclaration":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"},"value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Movie"}},"jsonExample":{"id":"id"}}}]},"typeName":{"name":{"originalName":"Response","camelCase":{"unsafeName":"response","safeName":"response"},"snakeCase":{"unsafeName":"response","safeName":"response"},"screamingSnakeCase":{"unsafeName":"RESPONSE","safeName":"RESPONSE"},"pascalCase":{"unsafeName":"Response","safeName":"Response"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"typeId":"type_service:Response"}},"jsonExample":{"data":{"id":"id"}}}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_service":["type_service:Response"]},"sharedTypes":["type_service:WithDocs","type_service:Movie"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_service":{"name":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"service":"service_service","types":["type_service:WithDocs","type_service:Movie","type_service:Response"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_service"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"simple","audiences":["internal"]} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Internal":{"inline":false,"name":{"name":{"originalName":"Internal","camelCase":{"unsafeName":"internal","safeName":"internal"},"snakeCase":{"unsafeName":"internal","safeName":"internal"},"screamingSnakeCase":{"unsafeName":"INTERNAL","safeName":"INTERNAL"},"pascalCase":{"unsafeName":"Internal","safeName":"Internal"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Internal"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:UnknownRequest":{"inline":false,"name":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"valueType":{"_type":"unknown"},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.internalEndpoint","name":{"originalName":"internalEndpoint","camelCase":{"unsafeName":"internalEndpoint","safeName":"internalEndpoint"},"snakeCase":{"unsafeName":"internal_endpoint","safeName":"internal_endpoint"},"screamingSnakeCase":{"unsafeName":"INTERNAL_ENDPOINT","safeName":"INTERNAL_ENDPOINT"},"pascalCase":{"unsafeName":"InternalEndpoint","safeName":"InternalEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"6ddea0588fd84ef0a9732ab58c4e1d50078da707","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"originalTypeDeclaration":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"value":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"}},"jsonExample":{"unknown":{"key":"value"}}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"sharedTypes":["type_commons:Internal"],"typesReferencedOnlyByService":{"service_imdb":["type_imdb:UnknownRequest"]}},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Internal"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:UnknownRequest"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"simple","audiences":["internal"]} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Internal":{"inline":false,"name":{"name":{"originalName":"Internal","camelCase":{"unsafeName":"internal","safeName":"internal"},"snakeCase":{"unsafeName":"internal","safeName":"internal"},"screamingSnakeCase":{"unsafeName":"INTERNAL","safeName":"INTERNAL"},"pascalCase":{"unsafeName":"Internal","safeName":"Internal"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Internal"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:UnknownRequest":{"inline":false,"name":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"valueType":{"_type":"unknown"},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.internalEndpoint","name":{"originalName":"internalEndpoint","camelCase":{"unsafeName":"internalEndpoint","safeName":"internalEndpoint"},"snakeCase":{"unsafeName":"internal_endpoint","safeName":"internal_endpoint"},"screamingSnakeCase":{"unsafeName":"INTERNAL_ENDPOINT","safeName":"INTERNAL_ENDPOINT"},"pascalCase":{"unsafeName":"InternalEndpoint","safeName":"InternalEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"6ddea0588fd84ef0a9732ab58c4e1d50078da707","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"originalTypeDeclaration":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"value":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"}},"jsonExample":{"unknown":{"key":"value"}}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"sharedTypes":["type_commons:Internal"],"typesReferencedOnlyByService":{"service_imdb":["type_imdb:UnknownRequest"]}},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Internal"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:UnknownRequest"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"simple","audiences":["test"]} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Type":{"inline":false,"name":{"name":{"originalName":"Type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Type"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:MovieId":{"inline":false,"name":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id1"}}},"jsonExample":"id1"}},"jsonExample":"id1","docs":null},{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id2"}}},"jsonExample":"id2"}},"jsonExample":"id2","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CreateMovieRequest":{"inline":false,"name":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}}]},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.createMovie","name":{"originalName":"createMovie","camelCase":{"unsafeName":"createMovie","safeName":"createMovie"},"snakeCase":{"unsafeName":"create_movie","safeName":"create_movie"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE","safeName":"CREATE_MOVIE"},"pascalCase":{"unsafeName":"CreateMovie","safeName":"CreateMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"0ec9625807680a71388bf490199238a7c22569a5bf7092901fcb77bdd393e496","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,10,10,10]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Shrek","ratings":[10,10,10,10]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null},{"example":{"id":"624277beb517e6d1281e37e2781b35851d2d5de808ab821d6bad4c0917b014a5","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3435f6402495ee7805cf225e15f28f07a6f16235","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1},{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1.1,1.1]}}]},"typeName":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},"jsonExample":{"title":"title","ratings":[1.1,1.1]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"sharedTypes":["type_commons:Type"],"typesReferencedOnlyByService":{"service_imdb":["type_imdb:MovieId","type_imdb:CreateMovieRequest"]}},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Type"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:MovieId","type_imdb:CreateMovieRequest"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"simple","audiences":["test"]} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Type":{"inline":false,"name":{"name":{"originalName":"Type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Type"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:MovieId":{"inline":false,"name":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id1"}}},"jsonExample":"id1"}},"jsonExample":"id1","docs":null},{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id2"}}},"jsonExample":"id2"}},"jsonExample":"id2","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CreateMovieRequest":{"inline":false,"name":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}}]},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.createMovie","name":{"originalName":"createMovie","camelCase":{"unsafeName":"createMovie","safeName":"createMovie"},"snakeCase":{"unsafeName":"create_movie","safeName":"create_movie"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE","safeName":"CREATE_MOVIE"},"pascalCase":{"unsafeName":"CreateMovie","safeName":"CreateMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"0ec9625807680a71388bf490199238a7c22569a5bf7092901fcb77bdd393e496","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,10,10,10]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Shrek","ratings":[10,10,10,10]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null},{"example":{"id":"624277beb517e6d1281e37e2781b35851d2d5de808ab821d6bad4c0917b014a5","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3435f6402495ee7805cf225e15f28f07a6f16235","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1},{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1.1,1.1]}}]},"typeName":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},"jsonExample":{"title":"title","ratings":[1.1,1.1]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"sharedTypes":["type_commons:Type"],"typesReferencedOnlyByService":{"service_imdb":["type_imdb:MovieId","type_imdb:CreateMovieRequest"]}},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Type"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:MovieId","type_imdb:CreateMovieRequest"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"simple"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Internal":{"inline":false,"name":{"name":{"originalName":"Internal","camelCase":{"unsafeName":"internal","safeName":"internal"},"snakeCase":{"unsafeName":"internal","safeName":"internal"},"screamingSnakeCase":{"unsafeName":"INTERNAL","safeName":"INTERNAL"},"pascalCase":{"unsafeName":"Internal","safeName":"Internal"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Internal"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:Type":{"inline":false,"name":{"name":{"originalName":"Type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Type"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:UndiscriminatedUnion":{"inline":false,"name":{"name":{"originalName":"UndiscriminatedUnion","camelCase":{"unsafeName":"undiscriminatedUnion","safeName":"undiscriminatedUnion"},"snakeCase":{"unsafeName":"undiscriminated_union","safeName":"undiscriminated_union"},"screamingSnakeCase":{"unsafeName":"UNDISCRIMINATED_UNION","safeName":"UNDISCRIMINATED_UNION"},"pascalCase":{"unsafeName":"UndiscriminatedUnion","safeName":"UndiscriminatedUnion"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:UndiscriminatedUnion"},"shape":{"_type":"undiscriminatedUnion","members":[{"type":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null},{"type":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"docs":null},{"type":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"docs":null},{"type":{"_type":"container","container":{"_type":"list","list":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}}}}},"docs":null}]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:Director":{"inline":false,"name":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"valueType":{"_type":"named","name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Age","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_director:Age"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"GeorgeExample","camelCase":{"unsafeName":"georgeExample","safeName":"georgeExample"},"snakeCase":{"unsafeName":"george_example","safeName":"george_example"},"screamingSnakeCase":{"unsafeName":"GEORGE_EXAMPLE","safeName":"GEORGE_EXAMPLE"},"pascalCase":{"unsafeName":"GeorgeExample","safeName":"GeorgeExample"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Director"}}},"jsonExample":"George the Director"},"originalTypeDeclaration":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}}},"jsonExample":20},"originalTypeDeclaration":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"}}]},"jsonExample":{"name":"George the Director","age":20},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:Age":{"inline":false,"name":{"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Age"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}},"jsonExample":20,"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:LiteralBoolean":{"inline":false,"name":{"name":{"originalName":"LiteralBoolean","camelCase":{"unsafeName":"literalBoolean","safeName":"literalBoolean"},"snakeCase":{"unsafeName":"literal_boolean","safeName":"literal_boolean"},"screamingSnakeCase":{"unsafeName":"LITERAL_BOOLEAN","safeName":"LITERAL_BOOLEAN"},"pascalCase":{"unsafeName":"LiteralBoolean","safeName":"LiteralBoolean"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:LiteralBoolean"},"shape":{"_type":"alias","aliasOf":{"_type":"container","container":{"_type":"literal","literal":{"type":"boolean","boolean":true}}},"resolvedType":{"_type":"container","container":{"_type":"literal","literal":{"type":"boolean","boolean":true}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:LiteralString":{"inline":false,"name":{"name":{"originalName":"LiteralString","camelCase":{"unsafeName":"literalString","safeName":"literalString"},"snakeCase":{"unsafeName":"literal_string","safeName":"literal_string"},"screamingSnakeCase":{"unsafeName":"LITERAL_STRING","safeName":"LITERAL_STRING"},"pascalCase":{"unsafeName":"LiteralString","safeName":"LiteralString"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:LiteralString"},"shape":{"_type":"alias","aliasOf":{"_type":"container","container":{"_type":"literal","literal":{"type":"string","string":"hello"}}},"resolvedType":{"_type":"container","container":{"_type":"literal","literal":{"type":"string","string":"hello"}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CurrencyAmount":{"inline":false,"name":{"name":{"originalName":"CurrencyAmount","camelCase":{"unsafeName":"currencyAmount","safeName":"currencyAmount"},"snakeCase":{"unsafeName":"currency_amount","safeName":"currency_amount"},"screamingSnakeCase":{"unsafeName":"CURRENCY_AMOUNT","safeName":"CURRENCY_AMOUNT"},"pascalCase":{"unsafeName":"CurrencyAmount","safeName":"CurrencyAmount"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CurrencyAmount"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"$4.50"}}},"jsonExample":"$4.50"}},"jsonExample":"$4.50","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:MovieId":{"inline":false,"name":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id1"}}},"jsonExample":"id1"}},"jsonExample":"id1","docs":null},{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id2"}}},"jsonExample":"id2"}},"jsonExample":"id2","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:ActorId":{"inline":false,"name":{"name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:ActorId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:Movie":{"inline":false,"name":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"availability":null,"docs":null},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"valueType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_imdb:MovieId"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"my-movie-id"}}},"jsonExample":"my-movie-id"}}},"jsonExample":"my-movie-id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Goodwill Hunting"}}},"jsonExample":"Goodwill Hunting"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":14.5}},"jsonExample":14.5},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}}]},"jsonExample":{"id":"my-movie-id","title":"Goodwill Hunting","rating":14.5},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CreateMovieRequest":{"inline":false,"name":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}}]},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:DirectorWrapper":{"inline":false,"name":{"name":{"originalName":"DirectorWrapper","camelCase":{"unsafeName":"directorWrapper","safeName":"directorWrapper"},"snakeCase":{"unsafeName":"director_wrapper","safeName":"director_wrapper"},"screamingSnakeCase":{"unsafeName":"DIRECTOR_WRAPPER","safeName":"DIRECTOR_WRAPPER"},"pascalCase":{"unsafeName":"DirectorWrapper","safeName":"DirectorWrapper"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:DirectorWrapper"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"valueType":{"_type":"named","name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_director:Director","type_director:Age"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Director"}}},"jsonExample":"George the Director"},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}}},"jsonExample":20},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}}]}},"jsonExample":{"name":"George the Director","age":20}},"originalTypeDeclaration":{"name":{"originalName":"DirectorWrapper","camelCase":{"unsafeName":"directorWrapper","safeName":"directorWrapper"},"snakeCase":{"unsafeName":"director_wrapper","safeName":"director_wrapper"},"screamingSnakeCase":{"unsafeName":"DIRECTOR_WRAPPER","safeName":"DIRECTOR_WRAPPER"},"pascalCase":{"unsafeName":"DirectorWrapper","safeName":"DirectorWrapper"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:DirectorWrapper"}}]},"jsonExample":{"director":{"name":"George the Director","age":20}},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:EmptyObject":{"inline":false,"name":{"name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"shape":{"_type":"object","extends":[],"properties":[],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:Person":{"inline":false,"name":{"name":{"originalName":"Person","camelCase":{"unsafeName":"person","safeName":"person"},"snakeCase":{"unsafeName":"person","safeName":"person"},"screamingSnakeCase":{"unsafeName":"PERSON","safeName":"PERSON"},"pascalCase":{"unsafeName":"Person","safeName":"Person"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Person"},"shape":{"_type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"extends":[],"baseProperties":[],"types":[{"discriminantValue":{"name":{"originalName":"actor","camelCase":{"unsafeName":"actor","safeName":"actor"},"snakeCase":{"unsafeName":"actor","safeName":"actor"},"screamingSnakeCase":{"unsafeName":"ACTOR","safeName":"ACTOR"},"pascalCase":{"unsafeName":"Actor","safeName":"Actor"}},"wireValue":"actor"},"shape":{"_type":"singleProperty","name":{"name":{"originalName":"value","camelCase":{"unsafeName":"value","safeName":"value"},"snakeCase":{"unsafeName":"value","safeName":"value"},"screamingSnakeCase":{"unsafeName":"VALUE","safeName":"VALUE"},"pascalCase":{"unsafeName":"Value","safeName":"Value"}},"wireValue":"value"},"type":{"_type":"named","name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:ActorId","default":null,"inline":null}},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"producer","camelCase":{"unsafeName":"producer","safeName":"producer"},"snakeCase":{"unsafeName":"producer","safeName":"producer"},"screamingSnakeCase":{"unsafeName":"PRODUCER","safeName":"PRODUCER"},"pascalCase":{"unsafeName":"Producer","safeName":"Producer"}},"wireValue":"producer"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"cinematographer","camelCase":{"unsafeName":"cinematographer","safeName":"cinematographer"},"snakeCase":{"unsafeName":"cinematographer","safeName":"cinematographer"},"screamingSnakeCase":{"unsafeName":"CINEMATOGRAPHER","safeName":"CINEMATOGRAPHER"},"pascalCase":{"unsafeName":"Cinematographer","safeName":"Cinematographer"}},"wireValue":"cinematographer"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"displayName":null,"availability":null,"docs":"i am docs"}]},"referencedTypes":["type_imdb:ActorId","type_director:Director","type_director:Age","type_imdb:EmptyObject"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"PersonExample1","camelCase":{"unsafeName":"personExample1","safeName":"personExample1"},"snakeCase":{"unsafeName":"person_example_1","safeName":"person_example_1"},"screamingSnakeCase":{"unsafeName":"PERSON_EXAMPLE_1","safeName":"PERSON_EXAMPLE_1"},"pascalCase":{"unsafeName":"PersonExample1","safeName":"PersonExample1"}},"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"actor","camelCase":{"unsafeName":"actor","safeName":"actor"},"snakeCase":{"unsafeName":"actor","safeName":"actor"},"screamingSnakeCase":{"unsafeName":"ACTOR","safeName":"ACTOR"},"pascalCase":{"unsafeName":"Actor","safeName":"Actor"}},"wireValue":"actor"},"shape":{"type":"singleProperty","shape":{"type":"named","typeName":{"typeId":"type_imdb:ActorId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Matt Damon"}}},"jsonExample":"Matt Damon"}}},"jsonExample":"Matt Damon"}}},"jsonExample":{"type":"actor","value":"Matt Damon"},"docs":"this is a person example"},{"name":null,"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"shape":{"type":"samePropertiesAsObject","typeId":"type_director:Director","object":{"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Directory"}}},"jsonExample":"George the Directory"},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":100}},"jsonExample":100}}},"jsonExample":100},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}}]}}}},"jsonExample":{"type":"director","name":"George the Directory","age":100},"docs":null},{"name":null,"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"producer","camelCase":{"unsafeName":"producer","safeName":"producer"},"snakeCase":{"unsafeName":"producer","safeName":"producer"},"screamingSnakeCase":{"unsafeName":"PRODUCER","safeName":"PRODUCER"},"pascalCase":{"unsafeName":"Producer","safeName":"Producer"}},"wireValue":"producer"},"shape":{"type":"samePropertiesAsObject","typeId":"type_imdb:EmptyObject","object":{"properties":[]}}}},"jsonExample":{"type":"producer"},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:UnknownRequest":{"inline":false,"name":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"valueType":{"_type":"unknown"},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:RecursiveType":{"inline":false,"name":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"},"shape":{"_type":"object","extends":[{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}],"properties":[{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}]},"referencedTypes":["type_imdb:CreateMovieRequest","type_imdb:RecursiveType"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather"}}},"jsonExample":"The Godfather"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":5}},"jsonExample":5},{"shape":{"type":"primitive","primitive":{"type":"double","double":9}},"jsonExample":9}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,5,9]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"named","typeName":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather II"}}},"jsonExample":"The Godfather II"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":11}},"jsonExample":11}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,11]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}}}]}},"jsonExample":{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]}},{"shape":{"type":"named","typeName":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather III"}}},"jsonExample":"The Godfather III"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}}}]}},"jsonExample":{"title":"The Godfather III","ratings":[],"selfReferencing":[]}}],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]},{"title":"The Godfather III","ratings":[],"selfReferencing":[]}]},"originalTypeDeclaration":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"}}]},"jsonExample":{"title":"The Godfather","ratings":[10,5,9],"selfReferencing":[{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]},{"title":"The Godfather III","ratings":[],"selfReferencing":[]}]},"docs":null},{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Goodfellas"}}},"jsonExample":"Goodfellas"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"}}]},"jsonExample":{"title":"Goodfellas","ratings":[1,2,3],"selfReferencing":[]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null},"error_imdb:NotFoundError":{"name":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"discriminantValue":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"wireValue":"NotFoundError"},"statusCode":404,"type":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.internalEndpoint","name":{"originalName":"internalEndpoint","camelCase":{"unsafeName":"internalEndpoint","safeName":"internalEndpoint"},"snakeCase":{"unsafeName":"internal_endpoint","safeName":"internal_endpoint"},"screamingSnakeCase":{"unsafeName":"INTERNAL_ENDPOINT","safeName":"INTERNAL_ENDPOINT"},"pascalCase":{"unsafeName":"InternalEndpoint","safeName":"InternalEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"6ddea0588fd84ef0a9732ab58c4e1d50078da707","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"originalTypeDeclaration":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"value":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"}},"jsonExample":{"unknown":{"key":"value"}}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_imdb.createMovie","name":{"originalName":"createMovie","camelCase":{"unsafeName":"createMovie","safeName":"createMovie"},"snakeCase":{"unsafeName":"create_movie","safeName":"create_movie"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE","safeName":"CREATE_MOVIE"},"pascalCase":{"unsafeName":"CreateMovie","safeName":"CreateMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"0ec9625807680a71388bf490199238a7c22569a5bf7092901fcb77bdd393e496","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,10,10,10]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Shrek","ratings":[10,10,10,10]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null},{"example":{"id":"624277beb517e6d1281e37e2781b35851d2d5de808ab821d6bad4c0917b014a5","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3435f6402495ee7805cf225e15f28f07a6f16235","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1},{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1.1,1.1]}}]},"typeName":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},"jsonExample":{"title":"title","ratings":[1.1,1.1]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_imdb.getMovie","name":{"originalName":"getMovie","camelCase":{"unsafeName":"getMovie","safeName":"getMovie"},"snakeCase":{"unsafeName":"get_movie","safeName":"get_movie"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE","safeName":"GET_MOVIE"},"pascalCase":{"unsafeName":"GetMovie","safeName":"GetMovie"}},"displayName":"Get Movie by Id","auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies/"},{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null},{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"allowMultiple":true,"availability":null,"docs":null}],"headers":[],"requestBody":null,"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"GetMovieRequest","camelCase":{"unsafeName":"getMovieRequest","safeName":"getMovieRequest"},"snakeCase":{"unsafeName":"get_movie_request","safeName":"get_movie_request"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE_REQUEST","safeName":"GET_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"GetMovieRequest","safeName":"GetMovieRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"docs":null},{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"b631e6a0d36395e53918c8b8aa048cf1bfe8180757f41402426ec3c109737ddd","name":null,"url":"/test/root/movies/id-123","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"}}],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"},"shape":{"type":"exploded"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}}]}},"jsonExample":{"id":"id-123","title":"Shrek","rating":10}}}},"docs":null},"codeSamples":null},{"example":{"id":"e0f04d26bcd1b030581f6d67cbd9d4be232fc0bc43bad08ffb1adb038ecbce8f","name":null,"url":"/test/root/movies/id-123","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"}}],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"},"shape":{"type":"exploded"}}],"request":null,"response":{"type":"error","error":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"body":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3285e2d8c07bd6f2c3100d3de09fb7039f7d4df8","url":"/test/rootPathParam/movies/movieId","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieId"}}},"jsonExample":"movieId"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"movieId"}}],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"shape":{"type":"exploded"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieName"}}},"jsonExample":"movieName"}}],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"id"}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},"jsonExample":{"id":"id","title":"title","rating":1.1}}}},"docs":null}}],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_imdb.delete","name":{"originalName":"delete","camelCase":{"unsafeName":"delete","safeName":"delete"},"snakeCase":{"unsafeName":"delete","safeName":"delete"},"screamingSnakeCase":{"unsafeName":"DELETE","safeName":"DELETE"},"pascalCase":{"unsafeName":"Delete","safeName":"Delete"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"DELETE","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies/"},{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null},{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"b45fd34c7d591a65682197d8d7b5b726c7e5a1f8","url":"/test/rootPathParam/movies/movieId","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieId"}}},"jsonExample":"movieId"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"movieId"}}],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_imdb":["type_imdb:MovieId","type_imdb:Movie","type_imdb:CreateMovieRequest","type_imdb:UnknownRequest"]},"sharedTypes":["type_commons:Internal","type_commons:Type","type_commons:UndiscriminatedUnion","type_director:Director","type_director:Age","type_director:LiteralBoolean","type_director:LiteralString","type_imdb:CurrencyAmount","type_imdb:ActorId","type_imdb:DirectorWrapper","type_imdb:EmptyObject","type_imdb:Person","type_imdb:RecursiveType"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Internal","type_commons:Type","type_commons:UndiscriminatedUnion"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_director":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"service":null,"types":["type_director:Director","type_director:Age","type_director:LiteralBoolean","type_director:LiteralString"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:CurrencyAmount","type_imdb:MovieId","type_imdb:ActorId","type_imdb:Movie","type_imdb:CreateMovieRequest","type_imdb:DirectorWrapper","type_imdb:EmptyObject","type_imdb:Person","type_imdb:UnknownRequest","type_imdb:RecursiveType"],"errors":["error_imdb:NotFoundError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_director","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"simple"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":"foo bar baz","auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[{"name":{"name":{"originalName":"apiVersion","camelCase":{"unsafeName":"apiVersion","safeName":"apiVersion"},"snakeCase":{"unsafeName":"api_version","safeName":"api_version"},"screamingSnakeCase":{"unsafeName":"API_VERSION","safeName":"API_VERSION"},"pascalCase":{"unsafeName":"ApiVersion","safeName":"ApiVersion"}},"wireValue":"X-API-VERSION"},"valueType":{"_type":"container","container":{"_type":"optional","optional":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"env":null,"availability":null,"docs":null}],"idempotencyHeaders":[],"types":{"type_commons:Internal":{"inline":false,"name":{"name":{"originalName":"Internal","camelCase":{"unsafeName":"internal","safeName":"internal"},"snakeCase":{"unsafeName":"internal","safeName":"internal"},"screamingSnakeCase":{"unsafeName":"INTERNAL","safeName":"INTERNAL"},"pascalCase":{"unsafeName":"Internal","safeName":"Internal"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Internal"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:Type":{"inline":false,"name":{"name":{"originalName":"Type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:Type"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_commons:UndiscriminatedUnion":{"inline":false,"name":{"name":{"originalName":"UndiscriminatedUnion","camelCase":{"unsafeName":"undiscriminatedUnion","safeName":"undiscriminatedUnion"},"snakeCase":{"unsafeName":"undiscriminated_union","safeName":"undiscriminated_union"},"screamingSnakeCase":{"unsafeName":"UNDISCRIMINATED_UNION","safeName":"UNDISCRIMINATED_UNION"},"pascalCase":{"unsafeName":"UndiscriminatedUnion","safeName":"UndiscriminatedUnion"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:UndiscriminatedUnion"},"shape":{"_type":"undiscriminatedUnion","members":[{"type":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null},{"type":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}}},"docs":null},{"type":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"docs":null},{"type":{"_type":"container","container":{"_type":"list","list":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}}}}},"docs":null}]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:Director":{"inline":false,"name":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"valueType":{"_type":"named","name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Age","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_director:Age"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"GeorgeExample","camelCase":{"unsafeName":"georgeExample","safeName":"georgeExample"},"snakeCase":{"unsafeName":"george_example","safeName":"george_example"},"screamingSnakeCase":{"unsafeName":"GEORGE_EXAMPLE","safeName":"GEORGE_EXAMPLE"},"pascalCase":{"unsafeName":"GeorgeExample","safeName":"GeorgeExample"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Director"}}},"jsonExample":"George the Director"},"originalTypeDeclaration":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}}},"jsonExample":20},"originalTypeDeclaration":{"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"}}]},"jsonExample":{"name":"George the Director","age":20},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:Age":{"inline":false,"name":{"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Age"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"INTEGER","v2":{"type":"integer","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}},"jsonExample":20,"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:LiteralBoolean":{"inline":false,"name":{"name":{"originalName":"LiteralBoolean","camelCase":{"unsafeName":"literalBoolean","safeName":"literalBoolean"},"snakeCase":{"unsafeName":"literal_boolean","safeName":"literal_boolean"},"screamingSnakeCase":{"unsafeName":"LITERAL_BOOLEAN","safeName":"LITERAL_BOOLEAN"},"pascalCase":{"unsafeName":"LiteralBoolean","safeName":"LiteralBoolean"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:LiteralBoolean"},"shape":{"_type":"alias","aliasOf":{"_type":"container","container":{"_type":"literal","literal":{"type":"boolean","boolean":true}}},"resolvedType":{"_type":"container","container":{"_type":"literal","literal":{"type":"boolean","boolean":true}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_director:LiteralString":{"inline":false,"name":{"name":{"originalName":"LiteralString","camelCase":{"unsafeName":"literalString","safeName":"literalString"},"snakeCase":{"unsafeName":"literal_string","safeName":"literal_string"},"screamingSnakeCase":{"unsafeName":"LITERAL_STRING","safeName":"LITERAL_STRING"},"pascalCase":{"unsafeName":"LiteralString","safeName":"LiteralString"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:LiteralString"},"shape":{"_type":"alias","aliasOf":{"_type":"container","container":{"_type":"literal","literal":{"type":"string","string":"hello"}}},"resolvedType":{"_type":"container","container":{"_type":"literal","literal":{"type":"string","string":"hello"}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CurrencyAmount":{"inline":false,"name":{"name":{"originalName":"CurrencyAmount","camelCase":{"unsafeName":"currencyAmount","safeName":"currencyAmount"},"snakeCase":{"unsafeName":"currency_amount","safeName":"currency_amount"},"screamingSnakeCase":{"unsafeName":"CURRENCY_AMOUNT","safeName":"CURRENCY_AMOUNT"},"pascalCase":{"unsafeName":"CurrencyAmount","safeName":"CurrencyAmount"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CurrencyAmount"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"$4.50"}}},"jsonExample":"$4.50"}},"jsonExample":"$4.50","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:MovieId":{"inline":false,"name":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id1"}}},"jsonExample":"id1"}},"jsonExample":"id1","docs":null},{"name":null,"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id2"}}},"jsonExample":"id2"}},"jsonExample":"id2","docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:ActorId":{"inline":false,"name":{"name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:ActorId"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:Movie":{"inline":false,"name":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"availability":null,"docs":null},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"valueType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_imdb:MovieId"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"my-movie-id"}}},"jsonExample":"my-movie-id"}}},"jsonExample":"my-movie-id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Goodwill Hunting"}}},"jsonExample":"Goodwill Hunting"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":14.5}},"jsonExample":14.5},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}}]},"jsonExample":{"id":"my-movie-id","title":"Goodwill Hunting","rating":14.5},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:CreateMovieRequest":{"inline":false,"name":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"Example1","camelCase":{"unsafeName":"example1","safeName":"example1"},"snakeCase":{"unsafeName":"example_1","safeName":"example_1"},"screamingSnakeCase":{"unsafeName":"EXAMPLE_1","safeName":"EXAMPLE_1"},"pascalCase":{"unsafeName":"Example1","safeName":"Example1"}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}}]},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:DirectorWrapper":{"inline":false,"name":{"name":{"originalName":"DirectorWrapper","camelCase":{"unsafeName":"directorWrapper","safeName":"directorWrapper"},"snakeCase":{"unsafeName":"director_wrapper","safeName":"director_wrapper"},"screamingSnakeCase":{"unsafeName":"DIRECTOR_WRAPPER","safeName":"DIRECTOR_WRAPPER"},"pascalCase":{"unsafeName":"DirectorWrapper","safeName":"DirectorWrapper"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:DirectorWrapper"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"valueType":{"_type":"named","name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director","default":null,"inline":null},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":["type_director:Director","type_director:Age"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Director"}}},"jsonExample":"George the Director"},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":20}},"jsonExample":20}}},"jsonExample":20},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}}]}},"jsonExample":{"name":"George the Director","age":20}},"originalTypeDeclaration":{"name":{"originalName":"DirectorWrapper","camelCase":{"unsafeName":"directorWrapper","safeName":"directorWrapper"},"snakeCase":{"unsafeName":"director_wrapper","safeName":"director_wrapper"},"screamingSnakeCase":{"unsafeName":"DIRECTOR_WRAPPER","safeName":"DIRECTOR_WRAPPER"},"pascalCase":{"unsafeName":"DirectorWrapper","safeName":"DirectorWrapper"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:DirectorWrapper"}}]},"jsonExample":{"director":{"name":"George the Director","age":20}},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:EmptyObject":{"inline":false,"name":{"name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"shape":{"_type":"object","extends":[],"properties":[],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:Person":{"inline":false,"name":{"name":{"originalName":"Person","camelCase":{"unsafeName":"person","safeName":"person"},"snakeCase":{"unsafeName":"person","safeName":"person"},"screamingSnakeCase":{"unsafeName":"PERSON","safeName":"PERSON"},"pascalCase":{"unsafeName":"Person","safeName":"Person"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Person"},"shape":{"_type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"extends":[],"baseProperties":[],"types":[{"discriminantValue":{"name":{"originalName":"actor","camelCase":{"unsafeName":"actor","safeName":"actor"},"snakeCase":{"unsafeName":"actor","safeName":"actor"},"screamingSnakeCase":{"unsafeName":"ACTOR","safeName":"ACTOR"},"pascalCase":{"unsafeName":"Actor","safeName":"Actor"}},"wireValue":"actor"},"shape":{"_type":"singleProperty","name":{"name":{"originalName":"value","camelCase":{"unsafeName":"value","safeName":"value"},"snakeCase":{"unsafeName":"value","safeName":"value"},"screamingSnakeCase":{"unsafeName":"VALUE","safeName":"VALUE"},"pascalCase":{"unsafeName":"Value","safeName":"Value"}},"wireValue":"value"},"type":{"_type":"named","name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:ActorId","default":null,"inline":null}},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"typeId":"type_director:Director"},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"producer","camelCase":{"unsafeName":"producer","safeName":"producer"},"snakeCase":{"unsafeName":"producer","safeName":"producer"},"screamingSnakeCase":{"unsafeName":"PRODUCER","safeName":"PRODUCER"},"pascalCase":{"unsafeName":"Producer","safeName":"Producer"}},"wireValue":"producer"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"displayName":null,"availability":null,"docs":null},{"discriminantValue":{"name":{"originalName":"cinematographer","camelCase":{"unsafeName":"cinematographer","safeName":"cinematographer"},"snakeCase":{"unsafeName":"cinematographer","safeName":"cinematographer"},"screamingSnakeCase":{"unsafeName":"CINEMATOGRAPHER","safeName":"CINEMATOGRAPHER"},"pascalCase":{"unsafeName":"Cinematographer","safeName":"Cinematographer"}},"wireValue":"cinematographer"},"shape":{"_type":"samePropertiesAsObject","name":{"originalName":"EmptyObject","camelCase":{"unsafeName":"emptyObject","safeName":"emptyObject"},"snakeCase":{"unsafeName":"empty_object","safeName":"empty_object"},"screamingSnakeCase":{"unsafeName":"EMPTY_OBJECT","safeName":"EMPTY_OBJECT"},"pascalCase":{"unsafeName":"EmptyObject","safeName":"EmptyObject"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:EmptyObject"},"displayName":null,"availability":null,"docs":"i am docs"}]},"referencedTypes":["type_imdb:ActorId","type_director:Director","type_director:Age","type_imdb:EmptyObject"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":{"originalName":"PersonExample1","camelCase":{"unsafeName":"personExample1","safeName":"personExample1"},"snakeCase":{"unsafeName":"person_example_1","safeName":"person_example_1"},"screamingSnakeCase":{"unsafeName":"PERSON_EXAMPLE_1","safeName":"PERSON_EXAMPLE_1"},"pascalCase":{"unsafeName":"PersonExample1","safeName":"PersonExample1"}},"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"actor","camelCase":{"unsafeName":"actor","safeName":"actor"},"snakeCase":{"unsafeName":"actor","safeName":"actor"},"screamingSnakeCase":{"unsafeName":"ACTOR","safeName":"ACTOR"},"pascalCase":{"unsafeName":"Actor","safeName":"Actor"}},"wireValue":"actor"},"shape":{"type":"singleProperty","shape":{"type":"named","typeName":{"typeId":"type_imdb:ActorId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"ActorId","camelCase":{"unsafeName":"actorId","safeName":"actorId"},"snakeCase":{"unsafeName":"actor_id","safeName":"actor_id"},"screamingSnakeCase":{"unsafeName":"ACTOR_ID","safeName":"ACTOR_ID"},"pascalCase":{"unsafeName":"ActorId","safeName":"ActorId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Matt Damon"}}},"jsonExample":"Matt Damon"}}},"jsonExample":"Matt Damon"}}},"jsonExample":{"type":"actor","value":"Matt Damon"},"docs":"this is a person example"},{"name":null,"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"wireValue":"director"},"shape":{"type":"samePropertiesAsObject","typeId":"type_director:Director","object":{"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"George the Directory"}}},"jsonExample":"George the Directory"},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}},{"name":{"name":{"originalName":"age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}},"wireValue":"age"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_director:Age","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Age","camelCase":{"unsafeName":"age","safeName":"age"},"snakeCase":{"unsafeName":"age","safeName":"age"},"screamingSnakeCase":{"unsafeName":"AGE","safeName":"AGE"},"pascalCase":{"unsafeName":"Age","safeName":"Age"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"integer","integer":100}},"jsonExample":100}}},"jsonExample":100},"originalTypeDeclaration":{"typeId":"type_director:Director","fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"name":{"originalName":"Director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}}}]}}}},"jsonExample":{"type":"director","name":"George the Directory","age":100},"docs":null},{"name":null,"shape":{"type":"union","discriminant":{"name":{"originalName":"type","camelCase":{"unsafeName":"type","safeName":"type"},"snakeCase":{"unsafeName":"type","safeName":"type"},"screamingSnakeCase":{"unsafeName":"TYPE","safeName":"TYPE"},"pascalCase":{"unsafeName":"Type","safeName":"Type"}},"wireValue":"type"},"singleUnionType":{"wireDiscriminantValue":{"name":{"originalName":"producer","camelCase":{"unsafeName":"producer","safeName":"producer"},"snakeCase":{"unsafeName":"producer","safeName":"producer"},"screamingSnakeCase":{"unsafeName":"PRODUCER","safeName":"PRODUCER"},"pascalCase":{"unsafeName":"Producer","safeName":"Producer"}},"wireValue":"producer"},"shape":{"type":"samePropertiesAsObject","typeId":"type_imdb:EmptyObject","object":{"properties":[]}}}},"jsonExample":{"type":"producer"},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:UnknownRequest":{"inline":false,"name":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"shape":{"_type":"object","extends":[],"properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"valueType":{"_type":"unknown"},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[]},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null},"type_imdb:RecursiveType":{"inline":false,"name":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"},"shape":{"_type":"object","extends":[{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}],"properties":[{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"valueType":{"_type":"container","container":{"_type":"list","list":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"availability":null,"docs":null}]},"referencedTypes":["type_imdb:CreateMovieRequest","type_imdb:RecursiveType"],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather"}}},"jsonExample":"The Godfather"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":5}},"jsonExample":5},{"shape":{"type":"primitive","primitive":{"type":"double","double":9}},"jsonExample":9}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,5,9]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"named","typeName":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather II"}}},"jsonExample":"The Godfather II"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":11}},"jsonExample":11}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,11]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}}}]}},"jsonExample":{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]}},{"shape":{"type":"named","typeName":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"The Godfather III"}}},"jsonExample":"The Godfather III"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"typeId":"type_imdb:RecursiveType","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}}}}]}},"jsonExample":{"title":"The Godfather III","ratings":[],"selfReferencing":[]}}],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]},{"title":"The Godfather III","ratings":[],"selfReferencing":[]}]},"originalTypeDeclaration":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"}}]},"jsonExample":{"title":"The Godfather","ratings":[10,5,9],"selfReferencing":[{"title":"The Godfather II","ratings":[10,11],"selfReferencing":[]},{"title":"The Godfather III","ratings":[],"selfReferencing":[]}]},"docs":null},{"name":null,"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Goodfellas"}}},"jsonExample":"Goodfellas"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},{"name":{"name":{"originalName":"selfReferencing","camelCase":{"unsafeName":"selfReferencing","safeName":"selfReferencing"},"snakeCase":{"unsafeName":"self_referencing","safeName":"self_referencing"},"screamingSnakeCase":{"unsafeName":"SELF_REFERENCING","safeName":"SELF_REFERENCING"},"pascalCase":{"unsafeName":"SelfReferencing","safeName":"SelfReferencing"}},"wireValue":"selfReferencing"},"value":{"shape":{"type":"container","container":{"type":"list","list":[],"itemType":{"_type":"named","name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType","default":null,"inline":null}}},"jsonExample":[]},"originalTypeDeclaration":{"name":{"originalName":"RecursiveType","camelCase":{"unsafeName":"recursiveType","safeName":"recursiveType"},"snakeCase":{"unsafeName":"recursive_type","safeName":"recursive_type"},"screamingSnakeCase":{"unsafeName":"RECURSIVE_TYPE","safeName":"RECURSIVE_TYPE"},"pascalCase":{"unsafeName":"RecursiveType","safeName":"RecursiveType"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:RecursiveType"}}]},"jsonExample":{"title":"Goodfellas","ratings":[1,2,3],"selfReferencing":[]},"docs":null}],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{"error_commons:BadRequestError":{"name":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"discriminantValue":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"wireValue":"BadRequestError"},"statusCode":400,"type":null,"examples":[],"docs":null},"error_imdb:NotFoundError":{"name":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"discriminantValue":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"wireValue":"NotFoundError"},"statusCode":404,"type":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"examples":[],"docs":null}},"services":{"service_imdb":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_imdb.internalEndpoint","name":{"originalName":"internalEndpoint","camelCase":{"unsafeName":"internalEndpoint","safeName":"internalEndpoint"},"snakeCase":{"unsafeName":"internal_endpoint","safeName":"internal_endpoint"},"screamingSnakeCase":{"unsafeName":"INTERNAL_ENDPOINT","safeName":"INTERNAL_ENDPOINT"},"pascalCase":{"unsafeName":"InternalEndpoint","safeName":"InternalEndpoint"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"6ddea0588fd84ef0a9732ab58c4e1d50078da707","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"unknown","camelCase":{"unsafeName":"unknown","safeName":"unknown"},"snakeCase":{"unsafeName":"unknown","safeName":"unknown"},"screamingSnakeCase":{"unsafeName":"UNKNOWN","safeName":"UNKNOWN"},"pascalCase":{"unsafeName":"Unknown","safeName":"Unknown"}},"wireValue":"unknown"},"originalTypeDeclaration":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"},"value":{"shape":{"type":"unknown","unknown":{"key":"value"}},"jsonExample":{"key":"value"}}}]},"typeName":{"name":{"originalName":"UnknownRequest","camelCase":{"unsafeName":"unknownRequest","safeName":"unknownRequest"},"snakeCase":{"unsafeName":"unknown_request","safeName":"unknown_request"},"screamingSnakeCase":{"unsafeName":"UNKNOWN_REQUEST","safeName":"UNKNOWN_REQUEST"},"pascalCase":{"unsafeName":"UnknownRequest","safeName":"UnknownRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:UnknownRequest"}},"jsonExample":{"unknown":{"key":"value"}}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_imdb.createMovie","name":{"originalName":"createMovie","camelCase":{"unsafeName":"createMovie","safeName":"createMovie"},"snakeCase":{"unsafeName":"create_movie","safeName":"create_movie"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE","safeName":"CREATE_MOVIE"},"pascalCase":{"unsafeName":"CreateMovie","safeName":"CreateMovie"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"","parts":[]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies"}]},"pathParameters":[],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":{"type":"reference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null},"sdkRequest":{"shape":{"type":"justRequestBody","value":{"type":"typeReference","requestBodyType":{"_type":"named","name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest","default":null,"inline":null},"contentType":null,"docs":null}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"0ec9625807680a71388bf490199238a7c22569a5bf7092901fcb77bdd393e496","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[10,10,10,10]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Shrek","ratings":[10,10,10,10]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null},{"example":{"id":"624277beb517e6d1281e37e2781b35851d2d5de808ab821d6bad4c0917b014a5","name":null,"url":"/test/root/movies","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[],"request":{"type":"reference","shape":{"type":"named","typeName":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Winnie the Pooh"}}},"jsonExample":"Winnie the Pooh"},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1}},"jsonExample":1},{"shape":{"type":"primitive","primitive":{"type":"double","double":2}},"jsonExample":2},{"shape":{"type":"primitive","primitive":{"type":"double","double":3}},"jsonExample":3}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1,2,3]},"originalTypeDeclaration":{"typeId":"type_imdb:CreateMovieRequest","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}}}}]}},"jsonExample":{"title":"Winnie the Pooh","ratings":[1,2,3]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"shrek-123"}}},"jsonExample":"shrek-123"}}},"jsonExample":"shrek-123"}}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3435f6402495ee7805cf225e15f28f07a6f16235","url":"/test/rootPathParam/movies","name":null,"endpointHeaders":[],"endpointPathParameters":[],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":{"type":"reference","shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"ratings","camelCase":{"unsafeName":"ratings","safeName":"ratings"},"snakeCase":{"unsafeName":"ratings","safeName":"ratings"},"screamingSnakeCase":{"unsafeName":"RATINGS","safeName":"RATINGS"},"pascalCase":{"unsafeName":"Ratings","safeName":"Ratings"}},"wireValue":"ratings"},"originalTypeDeclaration":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"},"value":{"shape":{"type":"container","container":{"type":"list","list":[{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1},{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}],"itemType":{"_type":"primitive","primitive":{"v1":"DOUBLE","v2":{"type":"double","default":null,"validation":null}}}}},"jsonExample":[1.1,1.1]}}]},"typeName":{"name":{"originalName":"CreateMovieRequest","camelCase":{"unsafeName":"createMovieRequest","safeName":"createMovieRequest"},"snakeCase":{"unsafeName":"create_movie_request","safeName":"create_movie_request"},"screamingSnakeCase":{"unsafeName":"CREATE_MOVIE_REQUEST","safeName":"CREATE_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"CreateMovieRequest","safeName":"CreateMovieRequest"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:CreateMovieRequest"}},"jsonExample":{"title":"title","ratings":[1.1,1.1]}},"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"string"}}},"jsonExample":"string"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"string"}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_imdb.getMovie","name":{"originalName":"getMovie","camelCase":{"unsafeName":"getMovie","safeName":"getMovie"},"snakeCase":{"unsafeName":"get_movie","safeName":"get_movie"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE","safeName":"GET_MOVIE"},"pascalCase":{"unsafeName":"GetMovie","safeName":"GetMovie"}},"displayName":"Get Movie by Id","auth":false,"idempotent":false,"baseUrl":null,"method":"GET","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies/"},{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null},{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"allowMultiple":true,"availability":null,"docs":null}],"headers":[],"requestBody":null,"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"GetMovieRequest","camelCase":{"unsafeName":"getMovieRequest","safeName":"getMovieRequest"},"snakeCase":{"unsafeName":"get_movie_request","safeName":"get_movie_request"},"screamingSnakeCase":{"unsafeName":"GET_MOVIE_REQUEST","safeName":"GET_MOVIE_REQUEST"},"pascalCase":{"unsafeName":"GetMovieRequest","safeName":"GetMovieRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"json","value":{"type":"response","responseBodyType":{"_type":"named","name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie","default":null,"inline":null},"docs":null}},"status-code":null},"errors":[{"error":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"docs":null},{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[{"example":{"id":"b631e6a0d36395e53918c8b8aa048cf1bfe8180757f41402426ec3c109737ddd","name":null,"url":"/test/root/movies/id-123","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"}}],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"},"shape":{"type":"exploded"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}},"shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"Shrek"}}},"jsonExample":"Shrek"},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":10}},"jsonExample":10},"originalTypeDeclaration":{"typeId":"type_imdb:Movie","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}}}}]}},"jsonExample":{"id":"id-123","title":"Shrek","rating":10}}}},"docs":null},"codeSamples":null},{"example":{"id":"e0f04d26bcd1b030581f6d67cbd9d4be232fc0bc43bad08ffb1adb038ecbce8f","name":null,"url":"/test/root/movies/id-123","rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}}],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","typeName":{"typeId":"type_imdb:MovieId","fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}}},"shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}}},"jsonExample":"id-123"}}],"servicePathParameters":[],"endpointHeaders":[],"serviceHeaders":[],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"hello"}}},"jsonExample":"hello"},"shape":{"type":"exploded"}}],"request":null,"response":{"type":"error","error":{"name":{"originalName":"NotFoundError","camelCase":{"unsafeName":"notFoundError","safeName":"notFoundError"},"snakeCase":{"unsafeName":"not_found_error","safeName":"not_found_error"},"screamingSnakeCase":{"unsafeName":"NOT_FOUND_ERROR","safeName":"NOT_FOUND_ERROR"},"pascalCase":{"unsafeName":"NotFoundError","safeName":"NotFoundError"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"errorId":"error_imdb:NotFoundError"},"body":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id-123"}}},"jsonExample":"id-123"}},"docs":null},"codeSamples":null}],"autogeneratedExamples":[{"example":{"id":"3285e2d8c07bd6f2c3100d3de09fb7039f7d4df8","url":"/test/rootPathParam/movies/movieId","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieId"}}},"jsonExample":"movieId"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"movieId"}}],"queryParameters":[{"name":{"name":{"originalName":"movieName","camelCase":{"unsafeName":"movieName","safeName":"movieName"},"snakeCase":{"unsafeName":"movie_name","safeName":"movie_name"},"screamingSnakeCase":{"unsafeName":"MOVIE_NAME","safeName":"MOVIE_NAME"},"pascalCase":{"unsafeName":"MovieName","safeName":"MovieName"}},"wireValue":"movieName"},"shape":{"type":"exploded"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieName"}}},"jsonExample":"movieName"}}],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":{"shape":{"type":"named","shape":{"type":"object","properties":[{"name":{"name":{"originalName":"id","camelCase":{"unsafeName":"id","safeName":"id"},"snakeCase":{"unsafeName":"id","safeName":"id"},"screamingSnakeCase":{"unsafeName":"ID","safeName":"ID"},"pascalCase":{"unsafeName":"Id","safeName":"Id"}},"wireValue":"id"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"id"}}},"jsonExample":"id"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"id"}},{"name":{"name":{"originalName":"title","camelCase":{"unsafeName":"title","safeName":"title"},"snakeCase":{"unsafeName":"title","safeName":"title"},"screamingSnakeCase":{"unsafeName":"TITLE","safeName":"TITLE"},"pascalCase":{"unsafeName":"Title","safeName":"Title"}},"wireValue":"title"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"title"}}},"jsonExample":"title"}},{"name":{"name":{"originalName":"rating","camelCase":{"unsafeName":"rating","safeName":"rating"},"snakeCase":{"unsafeName":"rating","safeName":"rating"},"screamingSnakeCase":{"unsafeName":"RATING","safeName":"RATING"},"pascalCase":{"unsafeName":"Rating","safeName":"Rating"}},"wireValue":"rating"},"originalTypeDeclaration":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"},"value":{"shape":{"type":"primitive","primitive":{"type":"double","double":1.1}},"jsonExample":1.1}}]},"typeName":{"name":{"originalName":"Movie","camelCase":{"unsafeName":"movie","safeName":"movie"},"snakeCase":{"unsafeName":"movie","safeName":"movie"},"screamingSnakeCase":{"unsafeName":"MOVIE","safeName":"MOVIE"},"pascalCase":{"unsafeName":"Movie","safeName":"Movie"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:Movie"}},"jsonExample":{"id":"id","title":"title","rating":1.1}}}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_imdb.delete","name":{"originalName":"delete","camelCase":{"unsafeName":"delete","safeName":"delete"},"snakeCase":{"unsafeName":"delete","safeName":"delete"},"screamingSnakeCase":{"unsafeName":"DELETE","safeName":"DELETE"},"pascalCase":{"unsafeName":"Delete","safeName":"Delete"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"DELETE","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"movieId","tail":""}]},"fullPath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":"/movies/"},{"pathParameter":"movieId","tail":""}]},"pathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"allPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null},{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"valueType":{"_type":"named","name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId","default":null,"inline":null},"location":"ENDPOINT","variable":null,"docs":null}],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[{"error":{"name":{"originalName":"BadRequestError","camelCase":{"unsafeName":"badRequestError","safeName":"badRequestError"},"snakeCase":{"unsafeName":"bad_request_error","safeName":"bad_request_error"},"screamingSnakeCase":{"unsafeName":"BAD_REQUEST_ERROR","safeName":"BAD_REQUEST_ERROR"},"pascalCase":{"unsafeName":"BadRequestError","safeName":"BadRequestError"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"errorId":"error_commons:BadRequestError"},"docs":null}],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"b45fd34c7d591a65682197d8d7b5b726c7e5a1f8","url":"/test/rootPathParam/movies/movieId","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"movieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"movieId"}}},"jsonExample":"movieId"}},"typeName":{"name":{"originalName":"MovieId","camelCase":{"unsafeName":"movieId","safeName":"movieId"},"snakeCase":{"unsafeName":"movie_id","safeName":"movie_id"},"screamingSnakeCase":{"unsafeName":"MOVIE_ID","safeName":"MOVIE_ID"},"pascalCase":{"unsafeName":"MovieId","safeName":"MovieId"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"typeId":"type_imdb:MovieId"}},"jsonExample":"movieId"}}],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"rootPathParam"}}},"jsonExample":"rootPathParam"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"property","discriminant":{"name":{"originalName":"error","camelCase":{"unsafeName":"error","safeName":"error"},"snakeCase":{"unsafeName":"error","safeName":"error"},"screamingSnakeCase":{"unsafeName":"ERROR","safeName":"ERROR"},"pascalCase":{"unsafeName":"Error","safeName":"Error"}},"wireValue":"error"},"contentProperty":{"name":{"originalName":"content","camelCase":{"unsafeName":"content","safeName":"content"},"snakeCase":{"unsafeName":"content","safeName":"content"},"screamingSnakeCase":{"unsafeName":"CONTENT","safeName":"CONTENT"},"pascalCase":{"unsafeName":"Content","safeName":"Content"}},"wireValue":"content"}},"basePath":{"head":"/test/","parts":[{"pathParameter":"rootPathParam","tail":""}]},"pathParameters":[{"name":{"originalName":"rootPathParam","camelCase":{"unsafeName":"rootPathParam","safeName":"rootPathParam"},"snakeCase":{"unsafeName":"root_path_param","safeName":"root_path_param"},"screamingSnakeCase":{"unsafeName":"ROOT_PATH_PARAM","safeName":"ROOT_PATH_PARAM"},"pascalCase":{"unsafeName":"RootPathParam","safeName":"RootPathParam"}},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"location":"ROOT","variable":null,"docs":null}],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_imdb":["type_imdb:MovieId","type_imdb:Movie","type_imdb:CreateMovieRequest","type_imdb:UnknownRequest"]},"sharedTypes":["type_commons:Internal","type_commons:Type","type_commons:UndiscriminatedUnion","type_director:Director","type_director:Age","type_director:LiteralBoolean","type_director:LiteralString","type_imdb:CurrencyAmount","type_imdb:ActorId","type_imdb:DirectorWrapper","type_imdb:EmptyObject","type_imdb:Person","type_imdb:RecursiveType"]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:Internal","type_commons:Type","type_commons:UndiscriminatedUnion"],"errors":["error_commons:BadRequestError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_director":{"name":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}},"fernFilepath":{"allParts":[{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}],"packagePath":[],"file":{"originalName":"director","camelCase":{"unsafeName":"director","safeName":"director"},"snakeCase":{"unsafeName":"director","safeName":"director"},"screamingSnakeCase":{"unsafeName":"DIRECTOR","safeName":"DIRECTOR"},"pascalCase":{"unsafeName":"Director","safeName":"Director"}}},"service":null,"types":["type_director:Director","type_director:Age","type_director:LiteralBoolean","type_director:LiteralString"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_imdb":{"name":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}},"fernFilepath":{"allParts":[{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}],"packagePath":[],"file":{"originalName":"imdb","camelCase":{"unsafeName":"imdb","safeName":"imdb"},"snakeCase":{"unsafeName":"imdb","safeName":"imdb"},"screamingSnakeCase":{"unsafeName":"IMDB","safeName":"IMDB"},"pascalCase":{"unsafeName":"Imdb","safeName":"Imdb"}}},"service":"service_imdb","types":["type_imdb:CurrencyAmount","type_imdb:MovieId","type_imdb:ActorId","type_imdb:Movie","type_imdb:CreateMovieRequest","type_imdb:DirectorWrapper","type_imdb:EmptyObject","type_imdb:Person","type_imdb:UnknownRequest","type_imdb:RecursiveType"],"errors":["error_imdb:NotFoundError"],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_director","subpackage_imdb"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"streaming"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_streaming":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}],"packagePath":[],"file":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_streaming.streaming","name":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/streaming","parts":[]},"fullPath":{"head":"/movies/streaming","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":{"type":"streaming","value":{"type":"json","payload":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"terminator":null,"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"availability":null,"docs":null},{"id":"endpoint_streaming.maybeStreaming","name":{"originalName":"maybeStreaming","camelCase":{"unsafeName":"maybeStreaming","safeName":"maybeStreaming"},"snakeCase":{"unsafeName":"maybe_streaming","safeName":"maybe_streaming"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING","safeName":"MAYBE_STREAMING"},"pascalCase":{"unsafeName":"MaybeStreaming","safeName":"MaybeStreaming"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/maybe-streaming","parts":[]},"fullPath":{"head":"/movies/maybe-streaming","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"inlinedRequestBody","name":{"originalName":"maybeStreamingRequest","camelCase":{"unsafeName":"maybeStreamingRequest","safeName":"maybeStreamingRequest"},"snakeCase":{"unsafeName":"maybe_streaming_request","safeName":"maybe_streaming_request"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING_REQUEST","safeName":"MAYBE_STREAMING_REQUEST"},"pascalCase":{"unsafeName":"MaybeStreamingRequest","safeName":"MaybeStreamingRequest"}},"extends":[],"contentType":null,"properties":[{"name":{"name":{"originalName":"stream","camelCase":{"unsafeName":"stream","safeName":"stream"},"snakeCase":{"unsafeName":"stream","safeName":"stream"},"screamingSnakeCase":{"unsafeName":"STREAM","safeName":"STREAM"},"pascalCase":{"unsafeName":"Stream","safeName":"Stream"}},"wireValue":"stream"},"valueType":{"_type":"primitive","primitive":{"v1":"BOOLEAN","v2":null}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[],"docs":null},"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"maybeStreamingRequest","camelCase":{"unsafeName":"maybeStreamingRequest","safeName":"maybeStreamingRequest"},"snakeCase":{"unsafeName":"maybe_streaming_request","safeName":"maybe_streaming_request"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING_REQUEST","safeName":"MAYBE_STREAMING_REQUEST"},"pascalCase":{"unsafeName":"MaybeStreamingRequest","safeName":"MaybeStreamingRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"streaming","value":{"type":"json","payload":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"terminator":"[DONE]","docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_streaming":{"name":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}},"fernFilepath":{"allParts":[{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}],"packagePath":[],"file":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}},"service":"service_streaming","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_streaming"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":true,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"streaming"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{"service_streaming":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}],"packagePath":[],"file":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_streaming.streaming","name":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/streaming","parts":[]},"fullPath":{"head":"/movies/streaming","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":{"type":"streaming","value":{"type":"json","payload":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"terminator":null,"docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"transport":null,"availability":null,"docs":null},{"id":"endpoint_streaming.maybeStreaming","name":{"originalName":"maybeStreaming","camelCase":{"unsafeName":"maybeStreaming","safeName":"maybeStreaming"},"snakeCase":{"unsafeName":"maybe_streaming","safeName":"maybe_streaming"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING","safeName":"MAYBE_STREAMING"},"pascalCase":{"unsafeName":"MaybeStreaming","safeName":"MaybeStreaming"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/maybe-streaming","parts":[]},"fullPath":{"head":"/movies/maybe-streaming","parts":[]},"pathParameters":[],"allPathParameters":[],"queryParameters":[],"headers":[],"requestBody":{"type":"inlinedRequestBody","name":{"originalName":"maybeStreamingRequest","camelCase":{"unsafeName":"maybeStreamingRequest","safeName":"maybeStreamingRequest"},"snakeCase":{"unsafeName":"maybe_streaming_request","safeName":"maybe_streaming_request"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING_REQUEST","safeName":"MAYBE_STREAMING_REQUEST"},"pascalCase":{"unsafeName":"MaybeStreamingRequest","safeName":"MaybeStreamingRequest"}},"extends":[],"contentType":null,"properties":[{"name":{"name":{"originalName":"stream","camelCase":{"unsafeName":"stream","safeName":"stream"},"snakeCase":{"unsafeName":"stream","safeName":"stream"},"screamingSnakeCase":{"unsafeName":"STREAM","safeName":"STREAM"},"pascalCase":{"unsafeName":"Stream","safeName":"Stream"}},"wireValue":"stream"},"valueType":{"_type":"primitive","primitive":{"v1":"BOOLEAN","v2":null}},"availability":null,"docs":null}],"extra-properties":false,"extendedProperties":[],"docs":null},"sdkRequest":{"shape":{"type":"wrapper","wrapperName":{"originalName":"maybeStreamingRequest","camelCase":{"unsafeName":"maybeStreamingRequest","safeName":"maybeStreamingRequest"},"snakeCase":{"unsafeName":"maybe_streaming_request","safeName":"maybe_streaming_request"},"screamingSnakeCase":{"unsafeName":"MAYBE_STREAMING_REQUEST","safeName":"MAYBE_STREAMING_REQUEST"},"pascalCase":{"unsafeName":"MaybeStreamingRequest","safeName":"MaybeStreamingRequest"}},"bodyKey":{"originalName":"body","camelCase":{"unsafeName":"body","safeName":"body"},"snakeCase":{"unsafeName":"body","safeName":"body"},"screamingSnakeCase":{"unsafeName":"BODY","safeName":"BODY"},"pascalCase":{"unsafeName":"Body","safeName":"Body"}}},"requestParameterName":{"originalName":"request","camelCase":{"unsafeName":"request","safeName":"request"},"snakeCase":{"unsafeName":"request","safeName":"request"},"screamingSnakeCase":{"unsafeName":"REQUEST","safeName":"REQUEST"},"pascalCase":{"unsafeName":"Request","safeName":"Request"}},"streamParameter":null},"response":{"body":{"type":"streaming","value":{"type":"json","payload":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"terminator":"[DONE]","docs":null}},"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_streaming":{"name":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}},"fernFilepath":{"allParts":[{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}],"packagePath":[],"file":{"originalName":"streaming","camelCase":{"unsafeName":"streaming","safeName":"streaming"},"snakeCase":{"unsafeName":"streaming","safeName":"streaming"},"screamingSnakeCase":{"unsafeName":"STREAMING","safeName":"STREAMING"},"pascalCase":{"unsafeName":"Streaming","safeName":"Streaming"}}},"service":"service_streaming","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_streaming"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":true,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; -exports[`ir > {"name":"variables"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_commons:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_service":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service.test","name":{"originalName":"test","camelCase":{"unsafeName":"test","safeName":"test"},"snakeCase":{"unsafeName":"test","safeName":"test"},"screamingSnakeCase":{"unsafeName":"TEST","safeName":"TEST"},"pascalCase":{"unsafeName":"Test","safeName":"Test"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"foo","tail":""}]},"fullPath":{"head":"/","parts":[{"pathParameter":"root","tail":"/movies/"},{"pathParameter":"foo","tail":""}]},"pathParameters":[{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ENDPOINT","variable":"my-variable","docs":null}],"allPathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ROOT","variable":"my-variable","docs":null},{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ENDPOINT","variable":"my-variable","docs":null}],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"568b0fbafed694545ab88d89d14b21c8c748220a","url":"/root/movies/foo","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"foo"}}},"jsonExample":"foo"}},"typeName":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"}},"jsonExample":"foo"}}],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}},"typeName":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"}},"jsonExample":"root"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":{"head":"/","parts":[{"pathParameter":"root","tail":""}]},"pathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ROOT","variable":"my-variable","docs":null}],"variables":[{"id":"my-variable","name":{"originalName":"my-variable","camelCase":{"unsafeName":"myVariable","safeName":"myVariable"},"snakeCase":{"unsafeName":"my_variable","safeName":"my_variable"},"screamingSnakeCase":{"unsafeName":"MY_VARIABLE","safeName":"MY_VARIABLE"},"pascalCase":{"unsafeName":"MyVariable","safeName":"MyVariable"}},"type":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"docs":"I am a variable"}],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_service":["type_commons:StringAlias"]},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_service":{"name":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"service":"service_service","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_service"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; +exports[`ir > {"name":"variables"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{"type_commons:StringAlias":{"inline":false,"name":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"},"shape":{"_type":"alias","aliasOf":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"resolvedType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}}},"referencedTypes":[],"encoding":{"json":{},"proto":null},"source":null,"userProvidedExamples":[],"autogeneratedExamples":[],"availability":null,"docs":null}},"errors":{},"services":{"service_service":{"availability":null,"name":{"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}}},"displayName":null,"basePath":{"head":"/movies","parts":[]},"headers":[],"pathParameters":[],"encoding":{"json":{},"proto":null},"transport":{"type":"http"},"endpoints":[{"id":"endpoint_service.test","name":{"originalName":"test","camelCase":{"unsafeName":"test","safeName":"test"},"snakeCase":{"unsafeName":"test","safeName":"test"},"screamingSnakeCase":{"unsafeName":"TEST","safeName":"TEST"},"pascalCase":{"unsafeName":"Test","safeName":"Test"}},"displayName":null,"auth":false,"idempotent":false,"baseUrl":null,"method":"POST","basePath":null,"path":{"head":"/","parts":[{"pathParameter":"foo","tail":""}]},"fullPath":{"head":"/","parts":[{"pathParameter":"root","tail":"/movies/"},{"pathParameter":"foo","tail":""}]},"pathParameters":[{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ENDPOINT","variable":"my-variable","docs":null}],"allPathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ROOT","variable":"my-variable","docs":null},{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ENDPOINT","variable":"my-variable","docs":null}],"queryParameters":[],"headers":[],"requestBody":null,"sdkRequest":null,"response":{"body":null,"status-code":null},"errors":[],"userSpecifiedExamples":[],"autogeneratedExamples":[{"example":{"id":"568b0fbafed694545ab88d89d14b21c8c748220a","url":"/root/movies/foo","name":null,"endpointHeaders":[],"endpointPathParameters":[{"name":{"originalName":"foo","camelCase":{"unsafeName":"foo","safeName":"foo"},"snakeCase":{"unsafeName":"foo","safeName":"foo"},"screamingSnakeCase":{"unsafeName":"FOO","safeName":"FOO"},"pascalCase":{"unsafeName":"Foo","safeName":"Foo"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"foo"}}},"jsonExample":"foo"}},"typeName":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"}},"jsonExample":"foo"}}],"queryParameters":[],"servicePathParameters":[],"serviceHeaders":[],"rootPathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"value":{"shape":{"type":"named","shape":{"type":"alias","value":{"shape":{"type":"primitive","primitive":{"type":"string","string":{"original":"root"}}},"jsonExample":"root"}},"typeName":{"name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias"}},"jsonExample":"root"}}],"request":null,"response":{"type":"ok","value":{"type":"body","value":null}},"docs":null}}],"pagination":null,"transport":null,"availability":null,"docs":null}]}},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":{"head":"/","parts":[{"pathParameter":"root","tail":""}]},"pathParameters":[{"name":{"originalName":"root","camelCase":{"unsafeName":"root","safeName":"root"},"snakeCase":{"unsafeName":"root","safeName":"root"},"screamingSnakeCase":{"unsafeName":"ROOT","safeName":"ROOT"},"pascalCase":{"unsafeName":"Root","safeName":"Root"}},"valueType":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"location":"ROOT","variable":"my-variable","docs":null}],"variables":[{"id":"my-variable","name":{"originalName":"my-variable","camelCase":{"unsafeName":"myVariable","safeName":"myVariable"},"snakeCase":{"unsafeName":"my_variable","safeName":"my_variable"},"screamingSnakeCase":{"unsafeName":"MY_VARIABLE","safeName":"MY_VARIABLE"},"pascalCase":{"unsafeName":"MyVariable","safeName":"MyVariable"}},"type":{"_type":"named","name":{"originalName":"StringAlias","camelCase":{"unsafeName":"stringAlias","safeName":"stringAlias"},"snakeCase":{"unsafeName":"string_alias","safeName":"string_alias"},"screamingSnakeCase":{"unsafeName":"STRING_ALIAS","safeName":"STRING_ALIAS"},"pascalCase":{"unsafeName":"StringAlias","safeName":"StringAlias"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"typeId":"type_commons:StringAlias","default":null,"inline":null},"docs":"I am a variable"}],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{"service_service":["type_commons:StringAlias"]},"sharedTypes":[]},"webhookGroups":{},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_commons":{"name":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}},"fernFilepath":{"allParts":[{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}],"packagePath":[],"file":{"originalName":"commons","camelCase":{"unsafeName":"commons","safeName":"commons"},"snakeCase":{"unsafeName":"commons","safeName":"commons"},"screamingSnakeCase":{"unsafeName":"COMMONS","safeName":"COMMONS"},"pascalCase":{"unsafeName":"Commons","safeName":"Commons"}}},"service":null,"types":["type_commons:StringAlias"],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":false,"docs":null},"subpackage_service":{"name":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}},"fernFilepath":{"allParts":[{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}],"packagePath":[],"file":{"originalName":"service","camelCase":{"unsafeName":"service","safeName":"service"},"snakeCase":{"unsafeName":"service","safeName":"service"},"screamingSnakeCase":{"unsafeName":"SERVICE","safeName":"SERVICE"},"pascalCase":{"unsafeName":"Service","safeName":"Service"}}},"service":"service_service","types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":null,"websocket":null,"hasEndpointsInTree":true,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_commons","subpackage_service"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":true,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; exports[`ir > {"name":"webhooks"} 1`] = `"{"fdrApiDefinitionId":null,"apiVersion":null,"apiName":{"originalName":"my-api","camelCase":{"unsafeName":"myApi","safeName":"myApi"},"snakeCase":{"unsafeName":"my_api","safeName":"my_api"},"screamingSnakeCase":{"unsafeName":"MY_API","safeName":"MY_API"},"pascalCase":{"unsafeName":"MyApi","safeName":"MyApi"}},"apiDisplayName":null,"apiDocs":null,"auth":{"requirement":"ALL","schemes":[],"docs":null},"headers":[],"idempotencyHeaders":[],"types":{},"errors":{},"services":{},"constants":{"errorInstanceIdKey":{"name":{"originalName":"errorInstanceId","camelCase":{"unsafeName":"errorInstanceId","safeName":"errorInstanceId"},"snakeCase":{"unsafeName":"error_instance_id","safeName":"error_instance_id"},"screamingSnakeCase":{"unsafeName":"ERROR_INSTANCE_ID","safeName":"ERROR_INSTANCE_ID"},"pascalCase":{"unsafeName":"ErrorInstanceId","safeName":"ErrorInstanceId"}},"wireValue":"errorInstanceId"}},"environments":null,"errorDiscriminationStrategy":{"type":"statusCode"},"basePath":null,"pathParameters":[],"variables":[],"serviceTypeReferenceInfo":{"typesReferencedOnlyByService":{},"sharedTypes":[]},"webhookGroups":{"webhooks_webhooks":[{"id":"webhooks_webhooks.sendNotification","displayName":null,"method":"POST","name":{"originalName":"sendNotification","camelCase":{"unsafeName":"sendNotification","safeName":"sendNotification"},"snakeCase":{"unsafeName":"send_notification","safeName":"send_notification"},"screamingSnakeCase":{"unsafeName":"SEND_NOTIFICATION","safeName":"SEND_NOTIFICATION"},"pascalCase":{"unsafeName":"SendNotification","safeName":"SendNotification"}},"headers":[],"payload":{"type":"inlinedPayload","name":{"originalName":"NotificationPayload","camelCase":{"unsafeName":"notificationPayload","safeName":"notificationPayload"},"snakeCase":{"unsafeName":"notification_payload","safeName":"notification_payload"},"screamingSnakeCase":{"unsafeName":"NOTIFICATION_PAYLOAD","safeName":"NOTIFICATION_PAYLOAD"},"pascalCase":{"unsafeName":"NotificationPayload","safeName":"NotificationPayload"}},"extends":[],"properties":[{"name":{"name":{"originalName":"name","camelCase":{"unsafeName":"name","safeName":"name"},"snakeCase":{"unsafeName":"name","safeName":"name"},"screamingSnakeCase":{"unsafeName":"NAME","safeName":"NAME"},"pascalCase":{"unsafeName":"Name","safeName":"Name"}},"wireValue":"name"},"valueType":{"_type":"primitive","primitive":{"v1":"STRING","v2":{"type":"string","default":null,"validation":null}}},"availability":null,"docs":null},{"name":{"name":{"originalName":"urgent","camelCase":{"unsafeName":"urgent","safeName":"urgent"},"snakeCase":{"unsafeName":"urgent","safeName":"urgent"},"screamingSnakeCase":{"unsafeName":"URGENT","safeName":"URGENT"},"pascalCase":{"unsafeName":"Urgent","safeName":"Urgent"}},"wireValue":"urgent"},"valueType":{"_type":"primitive","primitive":{"v1":"BOOLEAN","v2":null}},"availability":null,"docs":"Some docs about urgency"}]},"examples":null,"availability":null,"docs":"This is a webhook to receive notifications."}]},"websocketChannels":{},"readmeConfig":null,"sourceConfig":null,"publishConfig":null,"subpackages":{"subpackage_webhooks":{"name":{"originalName":"webhooks","camelCase":{"unsafeName":"webhooks","safeName":"webhooks"},"snakeCase":{"unsafeName":"webhooks","safeName":"webhooks"},"screamingSnakeCase":{"unsafeName":"WEBHOOKS","safeName":"WEBHOOKS"},"pascalCase":{"unsafeName":"Webhooks","safeName":"Webhooks"}},"fernFilepath":{"allParts":[{"originalName":"webhooks","camelCase":{"unsafeName":"webhooks","safeName":"webhooks"},"snakeCase":{"unsafeName":"webhooks","safeName":"webhooks"},"screamingSnakeCase":{"unsafeName":"WEBHOOKS","safeName":"WEBHOOKS"},"pascalCase":{"unsafeName":"Webhooks","safeName":"Webhooks"}}],"packagePath":[],"file":{"originalName":"webhooks","camelCase":{"unsafeName":"webhooks","safeName":"webhooks"},"snakeCase":{"unsafeName":"webhooks","safeName":"webhooks"},"screamingSnakeCase":{"unsafeName":"WEBHOOKS","safeName":"WEBHOOKS"},"pascalCase":{"unsafeName":"Webhooks","safeName":"Webhooks"}}},"service":null,"types":[],"errors":[],"subpackages":[],"navigationConfig":null,"webhooks":"webhooks_webhooks","websocket":null,"hasEndpointsInTree":false,"docs":null}},"rootPackage":{"fernFilepath":{"allParts":[],"packagePath":[],"file":null},"websocket":null,"service":null,"types":[],"errors":[],"subpackages":["subpackage_webhooks"],"webhooks":null,"navigationConfig":null,"hasEndpointsInTree":false,"docs":null},"sdkConfig":{"isAuthMandatory":false,"hasStreamingEndpoints":false,"hasPaginatedEndpoints":false,"hasFileDownloadEndpoints":false,"platformHeaders":{"language":"X-Fern-Language","sdkName":"X-Fern-SDK-Name","sdkVersion":"X-Fern-SDK-Version","userAgent":null}}}"`; diff --git a/packages/cli/ete-tests/src/tests/jsonschema/jsonschema.test.ts b/packages/cli/ete-tests/src/tests/jsonschema/jsonschema.test.ts index c5423f371a0..9c5a30b5a7e 100644 --- a/packages/cli/ete-tests/src/tests/jsonschema/jsonschema.test.ts +++ b/packages/cli/ete-tests/src/tests/jsonschema/jsonschema.test.ts @@ -15,5 +15,5 @@ describe("jsonschema", () => { await readFile(join(pathOfDirectory, RelativeFilePath.of("schema.json")), "utf-8") ); expect(jsonSchema).toMatchSnapshot(); - }, 10_000); + }, 20_000); }); diff --git a/packages/cli/ete-tests/src/tests/write-definition/__snapshots__/writeDefinition.test.ts.snap b/packages/cli/ete-tests/src/tests/write-definition/__snapshots__/writeDefinition.test.ts.snap index 8b4ad2eba33..80df1edc6b2 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/__snapshots__/writeDefinition.test.ts.snap +++ b/packages/cli/ete-tests/src/tests/write-definition/__snapshots__/writeDefinition.test.ts.snap @@ -48,6 +48,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/openapi.yml listPets: auth: false display-name: List all pets @@ -68,6 +70,8 @@ service: response: docs: A paged array of pets type: root.Pets + source: + openapi: openapi/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -88,6 +92,8 @@ service: response: docs: Expected response to a valid request type: root.Pet + source: + openapi: openapi/openapi.yml source: openapi: openapi/openapi.yml ", @@ -147,6 +153,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/openapi.yml listPets: auth: false display-name: List all pets @@ -167,6 +175,8 @@ service: response: docs: A paged array of pets type: root.Pets + source: + openapi: openapi/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -187,6 +197,8 @@ service: response: docs: Expected response to a valid request type: root.Pet + source: + openapi: openapi/openapi.yml source: openapi: openapi/openapi.yml ", @@ -275,6 +287,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/petstore/openapi.yml listPets: auth: false display-name: List all pets @@ -297,6 +311,8 @@ service: response: docs: A paged array of pets type: neopetsRoot.Pets + source: + openapi: openapi/petstore/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -319,6 +335,8 @@ service: response: docs: Expected response to a valid request type: neopetsRoot.Pet + source: + openapi: openapi/petstore/openapi.yml source: openapi: openapi/petstore/openapi.yml ", @@ -941,6 +959,8 @@ service: response: docs: Booking successful type: CreateBookingResponse + source: + openapi: openapi/trains/openapi.yml delete-booking: auth: true display-name: Delete a booking @@ -961,6 +981,8 @@ service: bookingId: docs: The ID of the booking to retrieve. type: string + source: + openapi: openapi/trains/openapi.yml get-booking: auth: true display-name: Get a booking @@ -994,6 +1016,8 @@ service: response: docs: The booking details type: GetBookingResponse + source: + openapi: openapi/trains/openapi.yml get-bookings: auth: true display-name: List existing bookings @@ -1027,6 +1051,8 @@ service: response: docs: A list of bookings type: GetBookingsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml ", @@ -1229,6 +1255,8 @@ service: response: docs: Payment successful type: CreateBookingPaymentResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml ", @@ -1299,6 +1327,8 @@ service: response: docs: A list of train stations type: GetStationsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml ", @@ -1441,6 +1471,8 @@ service: response: docs: A list of available train trips type: GetTripsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml ", @@ -1915,6 +1947,8 @@ service: response: docs: OK type: list + source: + openapi: openapi/cohere.yaml source: openapi: openapi/cohere.yaml ", @@ -2221,6 +2255,8 @@ service: response: docs: OK type: list + source: + openapi: openapi/cohere-v2.yaml source: openapi: openapi/cohere-v2.yaml ", diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/header-overrides/fern/.definition/pets.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/header-overrides/fern/.definition/pets.yml index 6a039b73ec2..f25130e86d3 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/header-overrides/fern/.definition/pets.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/header-overrides/fern/.definition/pets.yml @@ -11,6 +11,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/openapi.yml listPets: auth: false display-name: List all pets @@ -31,6 +33,8 @@ service: response: docs: A paged array of pets type: root.Pets + source: + openapi: openapi/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -51,5 +55,7 @@ service: response: docs: Expected response to a valid request type: root.Pet + source: + openapi: openapi/openapi.yml source: openapi: openapi/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v1/__package__.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v1/__package__.yml index 72f57996285..410397ac0bf 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v1/__package__.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v1/__package__.yml @@ -430,5 +430,7 @@ service: response: docs: OK type: list + source: + openapi: openapi/cohere.yaml source: openapi: openapi/cohere.yaml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v2/v2.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v2/v2.yml index 84867e5da86..14ea8add667 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v2/v2.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced-fleshedout/fern/.definition/v2/v2.yml @@ -132,5 +132,7 @@ service: response: docs: OK type: list + source: + openapi: openapi/cohere-v2.yaml source: openapi: openapi/cohere-v2.yaml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/neopets/pets.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/neopets/pets.yml index f37bca6741f..e388ff71933 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/neopets/pets.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/neopets/pets.yml @@ -11,6 +11,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/petstore/openapi.yml listPets: auth: false display-name: List all pets @@ -33,6 +35,8 @@ service: response: docs: A paged array of pets type: neopetsRoot.Pets + source: + openapi: openapi/petstore/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -55,5 +59,7 @@ service: response: docs: Expected response to a valid request type: neopetsRoot.Pet + source: + openapi: openapi/petstore/openapi.yml source: openapi: openapi/petstore/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/bookings.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/bookings.yml index 90e9b9995f8..08a47e98270 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/bookings.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/bookings.yml @@ -69,6 +69,8 @@ service: response: docs: Booking successful type: CreateBookingResponse + source: + openapi: openapi/trains/openapi.yml delete-booking: auth: true display-name: Delete a booking @@ -89,6 +91,8 @@ service: bookingId: docs: The ID of the booking to retrieve. type: string + source: + openapi: openapi/trains/openapi.yml get-booking: auth: true display-name: Get a booking @@ -122,6 +126,8 @@ service: response: docs: The booking details type: GetBookingResponse + source: + openapi: openapi/trains/openapi.yml get-bookings: auth: true display-name: List existing bookings @@ -155,5 +161,7 @@ service: response: docs: A list of bookings type: GetBookingsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/payments.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/payments.yml index 018cf5b3286..eed61da1950 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/payments.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/payments.yml @@ -193,5 +193,7 @@ service: response: docs: Payment successful type: CreateBookingPaymentResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/stations.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/stations.yml index 429aa747e6b..1d95c3c826d 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/stations.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/stations.yml @@ -61,5 +61,7 @@ service: response: docs: A list of train stations type: GetStationsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/trips.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/trips.yml index b1dd048ebe5..d6acafb693d 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/trips.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/namespaced/fern/.definition/trains/trips.yml @@ -92,5 +92,7 @@ service: response: docs: A list of available train trips type: GetTripsResponse + source: + openapi: openapi/trains/openapi.yml source: openapi: openapi/trains/openapi.yml diff --git a/packages/cli/ete-tests/src/tests/write-definition/fixtures/petstore/fern/.definition/pets.yml b/packages/cli/ete-tests/src/tests/write-definition/fixtures/petstore/fern/.definition/pets.yml index 6a039b73ec2..f25130e86d3 100644 --- a/packages/cli/ete-tests/src/tests/write-definition/fixtures/petstore/fern/.definition/pets.yml +++ b/packages/cli/ete-tests/src/tests/write-definition/fixtures/petstore/fern/.definition/pets.yml @@ -11,6 +11,8 @@ service: - {} method: POST path: /pets + source: + openapi: openapi/openapi.yml listPets: auth: false display-name: List all pets @@ -31,6 +33,8 @@ service: response: docs: A paged array of pets type: root.Pets + source: + openapi: openapi/openapi.yml showPetById: auth: false display-name: Info for a specific pet @@ -51,5 +55,7 @@ service: response: docs: Expected response to a valid request type: root.Pet + source: + openapi: openapi/openapi.yml source: openapi: openapi/openapi.yml diff --git a/packages/cli/fern-definition/schema/src/index.ts b/packages/cli/fern-definition/schema/src/index.ts index 206b96b4466..780ab9a69d4 100644 --- a/packages/cli/fern-definition/schema/src/index.ts +++ b/packages/cli/fern-definition/schema/src/index.ts @@ -7,6 +7,7 @@ export * from "./utils/auth"; export { getRequestBody } from "./utils/getRequestBody"; export { isInlineRequestBody } from "./utils/isInlineRequestBody"; export { isRawProtobufSourceSchema } from "./utils/isRawProtobufSourceSchema"; +export { isOpenApiSourceSchema } from "./utils/isOpenApiSourceSchema"; export { isRawTextType } from "./utils/isRawTextType"; export { parseBytesRequest, type BytesRequest } from "./utils/parseBytesRequest"; export { parseFileUploadRequest, type RawFileUploadRequest } from "./utils/parseFileUploadRequest"; diff --git a/packages/cli/fern-definition/schema/src/schemas/api/resources/service/types/HttpEndpointSchema.ts b/packages/cli/fern-definition/schema/src/schemas/api/resources/service/types/HttpEndpointSchema.ts index de1edb177e9..43d0484af2c 100644 --- a/packages/cli/fern-definition/schema/src/schemas/api/resources/service/types/HttpEndpointSchema.ts +++ b/packages/cli/fern-definition/schema/src/schemas/api/resources/service/types/HttpEndpointSchema.ts @@ -19,4 +19,6 @@ export interface HttpEndpointSchema extends FernDefinition.WithDisplayName, Fern errors?: FernDefinition.ResponseErrorsSchema; examples?: FernDefinition.ExampleEndpointCallSchema[]; pagination?: FernDefinition.Pagination; + transport?: FernDefinition.ServiceTransport; + source?: FernDefinition.SourceSchema; } diff --git a/packages/cli/fern-definition/schema/src/schemas/serialization/resources/service/types/HttpEndpointSchema.ts b/packages/cli/fern-definition/schema/src/schemas/serialization/resources/service/types/HttpEndpointSchema.ts index f8fcbd6c21c..dd1fe4ea727 100644 --- a/packages/cli/fern-definition/schema/src/schemas/serialization/resources/service/types/HttpEndpointSchema.ts +++ b/packages/cli/fern-definition/schema/src/schemas/serialization/resources/service/types/HttpEndpointSchema.ts @@ -13,6 +13,8 @@ import { HttpResponseStreamSchema } from "./HttpResponseStreamSchema"; import { ResponseErrorsSchema } from "./ResponseErrorsSchema"; import { ExampleEndpointCallSchema } from "../../examples/types/ExampleEndpointCallSchema"; import { Pagination } from "./Pagination"; +import { ServiceTransport } from "./ServiceTransport"; +import { SourceSchema } from "../../source/types/SourceSchema"; import { WithDisplayName } from "../../commons/types/WithDisplayName"; import { DeclarationSchema } from "../../commons/types/DeclarationSchema"; import { ResponseError } from "./ResponseError"; @@ -36,6 +38,8 @@ export const HttpEndpointSchema: core.serialization.ObjectSchema< errors: ResponseErrorsSchema.optional(), examples: core.serialization.list(ExampleEndpointCallSchema).optional(), pagination: Pagination.optional(), + transport: ServiceTransport.optional(), + source: SourceSchema.optional(), }) .extend(WithDisplayName) .extend(DeclarationSchema); @@ -56,5 +60,7 @@ export declare namespace HttpEndpointSchema { errors?: ResponseErrorsSchema.Raw | null; examples?: ExampleEndpointCallSchema.Raw[] | null; pagination?: Pagination.Raw | null; + transport?: ServiceTransport.Raw | null; + source?: SourceSchema.Raw | null; } } diff --git a/packages/cli/fern-definition/schema/src/utils/isOpenApiSourceSchema.ts b/packages/cli/fern-definition/schema/src/utils/isOpenApiSourceSchema.ts new file mode 100644 index 00000000000..54cee496fe9 --- /dev/null +++ b/packages/cli/fern-definition/schema/src/utils/isOpenApiSourceSchema.ts @@ -0,0 +1,6 @@ +import { OpenApiSourceSchema, SourceSchema } from "../schemas"; + +export function isOpenApiSourceSchema(rawSourceSchema: SourceSchema): rawSourceSchema is OpenApiSourceSchema { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return (rawSourceSchema as OpenApiSourceSchema).openapi != null; +} diff --git a/packages/cli/fern-definition/schema/src/utils/isRawProtobufSourceSchema.ts b/packages/cli/fern-definition/schema/src/utils/isRawProtobufSourceSchema.ts index 16d6e21a928..5b3e458fc51 100644 --- a/packages/cli/fern-definition/schema/src/utils/isRawProtobufSourceSchema.ts +++ b/packages/cli/fern-definition/schema/src/utils/isRawProtobufSourceSchema.ts @@ -1,6 +1,11 @@ import { ProtobufSourceSchema, SourceSchema } from "../schemas"; -export function isRawProtobufSourceSchema(rawSourceSchema: SourceSchema): rawSourceSchema is ProtobufSourceSchema { +export function isRawProtobufSourceSchema( + rawSourceSchema: SourceSchema | null | undefined +): rawSourceSchema is ProtobufSourceSchema { + if (!rawSourceSchema) { + return false; + } // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition return (rawSourceSchema as ProtobufSourceSchema).proto != null; } diff --git a/packages/cli/fern-definition/validator/src/ast/visitors/services/visitHttpService.ts b/packages/cli/fern-definition/validator/src/ast/visitors/services/visitHttpService.ts index 897a1a140f9..a4b964a22ab 100644 --- a/packages/cli/fern-definition/validator/src/ast/visitors/services/visitHttpService.ts +++ b/packages/cli/fern-definition/validator/src/ast/visitors/services/visitHttpService.ts @@ -297,7 +297,9 @@ async function visitEndpoint({ }); } }, - pagination: noop + pagination: noop, + source: noop, + transport: noop }); } diff --git a/packages/cli/fern-definition/validator/src/rules/compatible-ir-versions/__test__/compatible-ir-versions.test.ts b/packages/cli/fern-definition/validator/src/rules/compatible-ir-versions/__test__/compatible-ir-versions.test.ts index 4036e9c42a0..0e7b51b4644 100644 --- a/packages/cli/fern-definition/validator/src/rules/compatible-ir-versions/__test__/compatible-ir-versions.test.ts +++ b/packages/cli/fern-definition/validator/src/rules/compatible-ir-versions/__test__/compatible-ir-versions.test.ts @@ -27,7 +27,7 @@ describe("compatible-ir-versions", () => { ]; expect(violations).toEqual(expectedViolations); - }); + }, 10_000); it("simple success", async () => { process.env.DEFAULT_FDR_ORIGIN = "https://registry-dev2.buildwithfern.com"; @@ -45,5 +45,5 @@ describe("compatible-ir-versions", () => { const expectedViolations: ValidationViolation[] = []; expect(violations).toEqual(expectedViolations); - }); + }, 10_000); }); diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/audiences.json b/packages/cli/generation/ir-generator/src/__test__/irs/audiences.json index a7dc3f50cfe..d85c8661f03 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/audiences.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/audiences.json @@ -1160,6 +1160,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" } diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/availability.json b/packages/cli/generation/ir-generator/src/__test__/irs/availability.json index 3b63aeb9b7e..2963fdef16a 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/availability.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/availability.json @@ -495,6 +495,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/docs.json b/packages/cli/generation/ir-generator/src/__test__/irs/docs.json index 3db16c4d8f0..a4d21b1fea0 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/docs.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/docs.json @@ -713,6 +713,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiences.json b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiences.json index 4aca1d11710..1517cfb14c9 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiences.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiences.json @@ -2046,6 +2046,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" }, @@ -4319,6 +4320,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Retrieve a movie from the database based on the ID" } diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesAllHack.json b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesAllHack.json index 29e079a1e99..f4d84a01c45 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesAllHack.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesAllHack.json @@ -1577,6 +1577,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" }, @@ -3417,6 +3418,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Retrieve a movie from the database based on the ID" } diff --git a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesSelectHack.json b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesSelectHack.json index 822001c9bdd..e6c87b97a2e 100644 --- a/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesSelectHack.json +++ b/packages/cli/generation/ir-generator/src/__test__/irs/environmentAudiencesSelectHack.json @@ -1160,6 +1160,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/code-samples-open-api.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/code-samples-open-api.json index f93c9daaecd..dababa71fc7 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/code-samples-open-api.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/code-samples-open-api.json @@ -1842,6 +1842,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/enum-casing.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/enum-casing.json index 426cb775691..8aad5d2059e 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/enum-casing.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/enum-casing.json @@ -1450,6 +1450,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/inline-schema-reference.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/inline-schema-reference.json index 14f679fc060..999dcbd4639 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/inline-schema-reference.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/inline-schema-reference.json @@ -1018,6 +1018,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/names.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/names.json index 7995839e7ab..0f93fd90d86 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/names.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions-openapi/names.json @@ -3162,6 +3162,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias-extends.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias-extends.json index c7801b95371..030eafda699 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias-extends.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias-extends.json @@ -1094,6 +1094,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias.json index 7df9a32a93b..48483ecd64c 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/alias.json @@ -1100,6 +1100,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/any-auth.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/any-auth.json index bf6d43790c7..8bbc5a2c5f3 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/any-auth.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/any-auth.json @@ -1743,6 +1743,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -2611,6 +2612,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/api-wide-base-path.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/api-wide-base-path.json index 607f39fceda..58d8f4e9b24 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/api-wide-base-path.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/api-wide-base-path.json @@ -578,6 +578,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/audiences.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/audiences.json index 548c360334c..0be3f9eeae9 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/audiences.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/audiences.json @@ -2726,6 +2726,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -3273,6 +3274,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -4105,6 +4107,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/auth-environment-variables.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/auth-environment-variables.json index dd0371ed195..9ecfd284a5c 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/auth-environment-variables.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/auth-environment-variables.json @@ -310,6 +310,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with custom api key" }, @@ -551,6 +552,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with custom api key" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth-environment-variables.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth-environment-variables.json index cf8eaf5bee1..570bdd060bb 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth-environment-variables.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth-environment-variables.json @@ -680,6 +680,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with basic auth scheme" }, @@ -964,6 +965,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "POST request with basic auth scheme" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth.json index 1aeb5f58d32..ef80033174c 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/basic-auth.json @@ -680,6 +680,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with basic auth scheme" }, @@ -964,6 +965,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "POST request with basic auth scheme" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/bearer-token-environment-variable.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/bearer-token-environment-variable.json index aa7bfcef77e..12002d1961a 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/bearer-token-environment-variable.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/bearer-token-environment-variable.json @@ -219,6 +219,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with custom api key" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/bytes.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/bytes.json index 2c55b6c09e4..0639314b991 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/bytes.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/bytes.json @@ -178,6 +178,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/cross-package-type-names.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/cross-package-type-names.json index 6eaf933dab1..f3ea7637df9 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/cross-package-type-names.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/cross-package-type-names.json @@ -2665,6 +2665,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -3944,6 +3945,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -4776,6 +4778,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/csharp-namespace-conflict.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/csharp-namespace-conflict.json index 4c6f3dd3bcb..e085ee0bcd1 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/csharp-namespace-conflict.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/csharp-namespace-conflict.json @@ -1296,6 +1296,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/custom-auth.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/custom-auth.json index 1a40ad2c45d..bfa84c4c355 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/custom-auth.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/custom-auth.json @@ -675,6 +675,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request with custom auth scheme" }, @@ -959,6 +960,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "POST request with custom auth scheme" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/enum.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/enum.json index 19277c82ca1..9f278a8e6bc 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/enum.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/enum.json @@ -1635,6 +1635,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -2426,6 +2427,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -3308,6 +3310,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -3894,6 +3897,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/error-property.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/error-property.json index 154953e50fe..eafbb96d9b6 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/error-property.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/error-property.json @@ -548,6 +548,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET request that always throws an error" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json index 15bf8aa3c04..55737a814f2 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json @@ -22117,6 +22117,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -22729,6 +22730,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -24063,6 +24065,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -25086,6 +25089,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "This endpoint returns a file by its name." } @@ -25531,6 +25535,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "This endpoint checks the health of a resource." }, @@ -25679,6 +25684,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "This endpoint checks the health of the service." } @@ -29270,6 +29276,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -32626,6 +32633,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -33450,6 +33458,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -37079,6 +37088,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/exhaustive.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/exhaustive.json index c38a145a5d6..16835693507 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/exhaustive.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/exhaustive.json @@ -5229,6 +5229,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -6959,6 +6960,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -7195,6 +7197,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -8405,6 +8408,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -8724,6 +8728,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -10017,6 +10022,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -10960,6 +10966,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -11767,6 +11774,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -12089,6 +12097,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -15095,6 +15104,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -18217,6 +18227,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -23122,6 +23133,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -23335,6 +23347,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -28227,6 +28240,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -29175,6 +29189,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -30365,6 +30380,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -34185,6 +34201,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -39883,6 +39900,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -48030,6 +48048,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -48352,6 +48371,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET with path param" }, @@ -48643,6 +48663,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET with query param" }, @@ -48934,6 +48955,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET with multiple of same query param" }, @@ -49266,6 +49288,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "GET with path and query params" }, @@ -49552,6 +49575,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "PUT to update with path param" } @@ -49825,6 +49849,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -49991,6 +50016,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50145,6 +50171,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50311,6 +50338,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50465,6 +50493,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50621,6 +50650,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50775,6 +50805,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -50929,6 +50960,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -51083,6 +51115,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -52518,6 +52551,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -57596,6 +57630,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "POST with custom object in request body, response is an object" } @@ -57876,6 +57911,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "POST request with no auth" } @@ -60442,6 +60478,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -60545,6 +60582,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -60925,6 +60963,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/extends.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/extends.json index 05e1744cdbd..dcb7a7de56c 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/extends.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/extends.json @@ -1617,6 +1617,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/extra-properties.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/extra-properties.json index b020530ade3..7e6ff31a178 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/extra-properties.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/extra-properties.json @@ -951,6 +951,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-download.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-download.json index c0918c1d254..969f09b08c0 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-download.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-download.json @@ -146,6 +146,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-upload.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-upload.json index 764701ddedc..ccb2ecfd776 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-upload.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/file-upload.json @@ -1235,6 +1235,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1403,6 +1404,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1780,6 +1782,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -2083,6 +2086,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/folders.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/folders.json index 51cc8e329d2..0656efadc78 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/folders.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/folders.json @@ -452,6 +452,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -631,6 +632,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -810,6 +812,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -951,6 +954,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -1129,6 +1133,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1362,6 +1367,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/go-content-type.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/go-content-type.json index 376e603b506..25db020c21a 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/go-content-type.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/go-content-type.json @@ -828,6 +828,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto-exhaustive.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto-exhaustive.json index 2a81f8f0753..3e3d1766839 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto-exhaustive.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto-exhaustive.json @@ -20,11 +20,51 @@ "safeName": "API" } }, - "apiDisplayName": "\"\"", + "apiDisplayName": "Test API", "apiDocs": null, "auth": { "requirement": "ALL", - "schemes": [], + "schemes": [ + { + "_type": "header", + "name": { + "name": { + "originalName": "apiKey", + "camelCase": { + "unsafeName": "apiKey", + "safeName": "apiKey" + }, + "snakeCase": { + "unsafeName": "api_key", + "safeName": "api_key" + }, + "screamingSnakeCase": { + "unsafeName": "API_KEY", + "safeName": "API_KEY" + }, + "pascalCase": { + "unsafeName": "APIKey", + "safeName": "APIKey" + } + }, + "wireValue": "X-API-Key" + }, + "valueType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "prefix": null, + "headerEnvVar": null, + "docs": null + } + ], "docs": null }, "headers": [], @@ -3612,6 +3652,234 @@ } }, "endpoints": [ + { + "id": "endpoint_dataservice.foo", + "name": { + "originalName": "foo", + "camelCase": { + "unsafeName": "foo", + "safeName": "foo" + }, + "snakeCase": { + "unsafeName": "foo", + "safeName": "foo" + }, + "screamingSnakeCase": { + "unsafeName": "FOO", + "safeName": "FOO" + }, + "pascalCase": { + "unsafeName": "Foo", + "safeName": "Foo" + } + }, + "displayName": null, + "auth": true, + "idempotent": false, + "baseUrl": null, + "method": "POST", + "basePath": null, + "path": { + "head": "/foo", + "parts": [] + }, + "fullPath": { + "head": "foo", + "parts": [] + }, + "pathParameters": [], + "allPathParameters": [], + "queryParameters": [], + "headers": [], + "requestBody": null, + "sdkRequest": null, + "response": { + "body": { + "type": "json", + "value": { + "type": "response", + "responseBodyType": { + "_type": "container", + "container": { + "_type": "map", + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "docs": null + } + }, + "status-code": null + }, + "errors": [], + "userSpecifiedExamples": [ + { + "example": { + "id": "3da1df2e522ba96c14c10c68b745bdfb3bff9e3de4ae562c45addca35de12df9", + "name": null, + "url": "/foo", + "rootPathParameters": [], + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": null, + "response": { + "type": "ok", + "value": { + "type": "body", + "value": { + "shape": { + "type": "container", + "container": { + "type": "map", + "map": [ + { + "key": { + "shape": { + "type": "primitive", + "primitive": { + "type": "string", + "string": { + "original": "key" + } + } + }, + "jsonExample": "key" + }, + "value": { + "shape": { + "type": "unknown", + "unknown": "value" + }, + "jsonExample": "value" + } + } + ], + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "jsonExample": { + "key": "value" + } + } + } + }, + "docs": null + }, + "codeSamples": null + } + ], + "autogeneratedExamples": [ + { + "example": { + "id": "a6ed54576c86109c3acea4e10911bd296a87ae7e", + "url": "/foo", + "name": null, + "endpointHeaders": [], + "endpointPathParameters": [], + "queryParameters": [], + "servicePathParameters": [], + "serviceHeaders": [], + "rootPathParameters": [], + "request": null, + "response": { + "type": "ok", + "value": { + "type": "body", + "value": { + "shape": { + "type": "container", + "container": { + "type": "map", + "map": [ + { + "key": { + "shape": { + "type": "primitive", + "primitive": { + "type": "string", + "string": { + "original": "string" + } + } + }, + "jsonExample": "string" + }, + "value": { + "shape": { + "type": "unknown", + "unknown": { + "key": "value" + } + }, + "jsonExample": { + "key": "value" + } + } + } + ], + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "jsonExample": { + "string": { + "key": "value" + } + } + } + } + }, + "docs": null + } + } + ], + "pagination": null, + "transport": { + "type": "http" + }, + "availability": null, + "docs": null + }, { "id": "endpoint_dataservice.upload", "name": { @@ -5351,6 +5619,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -6051,6 +6320,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -7561,6 +7831,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -10516,6 +10787,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -12668,6 +12940,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -22570,6 +22843,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -23424,6 +23698,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -23454,7 +23729,38 @@ "wireValue": "errorInstanceId" } }, - "environments": null, + "environments": { + "defaultEnvironment": "Default", + "environments": { + "type": "singleBaseUrl", + "environments": [ + { + "id": "Default", + "name": { + "originalName": "Default", + "camelCase": { + "unsafeName": "default", + "safeName": "default" + }, + "snakeCase": { + "unsafeName": "default", + "safeName": "default" + }, + "screamingSnakeCase": { + "unsafeName": "DEFAULT", + "safeName": "DEFAULT" + }, + "pascalCase": { + "unsafeName": "Default", + "safeName": "Default" + } + }, + "url": "https://localhost", + "docs": null + } + ] + } + }, "errorDiscriminationStrategy": { "type": "statusCode" }, diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto.json index 70cade83e87..b49d8cbc684 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/grpc-proto.json @@ -3008,6 +3008,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/idempotency-headers.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/idempotency-headers.json index 79bc0875df1..138e89f0bd0 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/idempotency-headers.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/idempotency-headers.json @@ -812,6 +812,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1003,6 +1004,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/imdb.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/imdb.json index fe35567ee10..2117ee8e278 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/imdb.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/imdb.json @@ -1479,6 +1479,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" }, @@ -2455,6 +2456,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/literal.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/literal.json index bd954a774de..538ffa48a7d 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/literal.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/literal.json @@ -2738,6 +2738,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -5706,6 +5707,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -6517,6 +6519,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -7593,6 +7596,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -11611,6 +11615,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-case.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-case.json index efc85bc99dd..cd150c1dcb2 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-case.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-case.json @@ -4398,6 +4398,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -6683,6 +6684,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-file-directory.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-file-directory.json index 37f2628a8dd..2488dffdcab 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-file-directory.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/mixed-file-directory.json @@ -3088,6 +3088,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Create a new organization." } @@ -4337,6 +4338,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "List all users." } @@ -5735,6 +5737,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "List all user events." } @@ -6846,6 +6849,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Get event metadata." } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-line-docs.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-line-docs.json index 922ffd4f683..8e18906e7c3 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-line-docs.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-line-docs.json @@ -707,6 +707,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Retrieve a user.\nThis endpoint is used to retrieve a user." }, @@ -1515,6 +1516,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Create a new user.\nThis endpoint is used to create a new user." } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment-no-default.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment-no-default.json index d2af6e1fb35..531e0ceac60 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment-no-default.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment-no-default.json @@ -362,6 +362,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -700,6 +701,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment.json index b27ae98912e..a9e0a7eae79 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/multi-url-environment.json @@ -362,6 +362,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -700,6 +701,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/no-environment.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/no-environment.json index caa4112bac4..662b45ff995 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/no-environment.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/no-environment.json @@ -219,6 +219,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-default.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-default.json index b3de1b56e81..88aeb1d4294 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-default.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-default.json @@ -1151,6 +1151,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-environment-variables.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-environment-variables.json index 0e1ede22913..8fe9842f710 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-environment-variables.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-environment-variables.json @@ -1520,6 +1520,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -2632,6 +2633,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-nested-root.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-nested-root.json index ffcb7e8bee1..87a87ca43bb 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-nested-root.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials-nested-root.json @@ -1534,6 +1534,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials.json index 8419e10b67f..29dbe4317ed 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/oauth-client-credentials.json @@ -1520,6 +1520,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -2632,6 +2633,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/optional.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/optional.json index 4f6252cf19a..ebf1bc92ab6 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/optional.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/optional.json @@ -308,6 +308,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/package-yml.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/package-yml.json index 361e25acaab..0a73f51b09b 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/package-yml.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/package-yml.json @@ -846,6 +846,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -1266,6 +1267,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/pagination.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/pagination.json index f1081ca4f81..00258f65921 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/pagination.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/pagination.json @@ -6071,6 +6071,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -8817,6 +8818,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -11466,6 +11468,7 @@ "step": null, "hasNextPage": null }, + "transport": null, "availability": null, "docs": null }, @@ -14135,6 +14138,7 @@ "step": null, "hasNextPage": null }, + "transport": null, "availability": null, "docs": null }, @@ -16787,6 +16791,7 @@ }, "hasNextPage": null }, + "transport": null, "availability": null, "docs": null }, @@ -19480,6 +19485,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -20119,6 +20125,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -20764,6 +20771,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -21487,6 +21495,7 @@ } } }, + "transport": null, "availability": null, "docs": null }, @@ -22059,6 +22068,7 @@ "step": null, "hasNextPage": null }, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/plain-text.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/plain-text.json index 393254e0d24..19274748a5a 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/plain-text.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/plain-text.json @@ -146,6 +146,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/query-parameters.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/query-parameters.json index 5e2c44dd407..b3fcb4a042b 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/query-parameters.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/query-parameters.json @@ -1504,6 +1504,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/reserved-keywords.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/reserved-keywords.json index 337401b8c68..4ed08c984da 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/reserved-keywords.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/reserved-keywords.json @@ -608,6 +608,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/response-property.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/response-property.json index e8d841a0ac3..65bd0f04e4d 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/response-property.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/response-property.json @@ -2039,6 +2039,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -2742,6 +2743,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -3059,6 +3061,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -3779,6 +3782,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -4627,6 +4631,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -5213,6 +5218,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -5609,6 +5615,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-event-examples.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-event-examples.json index 7feb2ca6545..82b77f8e7d2 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-event-examples.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-event-examples.json @@ -1203,6 +1203,7 @@ ], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-events.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-events.json index 89a98431118..8c4d7ecaa7a 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-events.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/server-sent-events.json @@ -512,6 +512,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/simple-fhir.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/simple-fhir.json index a0acc20996a..dbc74970701 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/simple-fhir.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/simple-fhir.json @@ -3444,6 +3444,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-default.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-default.json index a13729e3e3b..6c741aaa9e4 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-default.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-default.json @@ -219,6 +219,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-no-default.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-no-default.json index d3ee13a0cf1..c95e03eb4ba 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-no-default.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/single-url-environment-no-default.json @@ -219,6 +219,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming-parameter.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming-parameter.json index 93ee125e3af..23872235f6b 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming-parameter.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming-parameter.json @@ -1242,6 +1242,7 @@ ], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming.json index b9f400a1e6c..c24dbf6c9bc 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/streaming.json @@ -548,6 +548,7 @@ "userSpecifiedExamples": [], "autogeneratedExamples": [], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1664,6 +1665,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/trace.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/trace.json index cce086e0dfd..b6deec7516c 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/trace.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/trace.json @@ -76519,6 +76519,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -77254,6 +77255,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -78291,6 +78293,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -78962,6 +78965,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -79999,6 +80003,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -84451,6 +84456,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -88729,6 +88735,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -92524,6 +92531,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -96386,6 +96394,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -96858,6 +96867,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -97368,6 +97378,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -98542,6 +98553,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -100071,6 +100083,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Create a new playlist" }, @@ -101627,6 +101640,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns the user's playlists" }, @@ -102716,6 +102730,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns a playlist" }, @@ -104081,6 +104096,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Updates a playlist" }, @@ -104531,6 +104547,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Deletes a playlist" } @@ -111140,6 +111157,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Creates a problem" }, @@ -117956,6 +117974,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Updates a problem" }, @@ -118335,6 +118354,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Soft deletes a problem" }, @@ -121570,6 +121590,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns default starter files for problem" } @@ -122769,6 +122790,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns sessionId and execution server URL for session. Spins up server." }, @@ -123794,6 +123816,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns execution server URL for session. Returns empty if session isn't registered." }, @@ -123985,6 +124008,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Stops execution session." }, @@ -125579,6 +125603,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -126141,6 +126166,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -126506,6 +126532,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } @@ -128845,6 +128872,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns lightweight versions of all problems" }, @@ -196881,6 +196909,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns latest versions of all problems" }, @@ -230985,6 +231014,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns latest version of a problem" }, @@ -265198,6 +265228,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns requested version of a problem" } @@ -268031,6 +268062,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns lightweight versions of all problems" }, @@ -353015,6 +353047,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns latest versions of all problems" }, @@ -395593,6 +395626,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns latest version of a problem" }, @@ -438280,6 +438314,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Returns requested version of a problem" } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/ts-express-casing.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/ts-express-casing.json index 4b2d00742e2..eb5072af951 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/ts-express-casing.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/ts-express-casing.json @@ -1321,6 +1321,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": "Add a movie to the database" }, @@ -2297,6 +2298,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/undiscriminated-unions.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/undiscriminated-unions.json index a4459a3abcd..48033969cad 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/undiscriminated-unions.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/undiscriminated-unions.json @@ -2108,6 +2108,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -3278,6 +3279,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/unions.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/unions.json index d3c91bfeda5..30e0db46f0e 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/unions.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/unions.json @@ -4295,6 +4295,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -4791,6 +4792,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/unknown.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/unknown.json index 680274965cf..5f2c7f4076d 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/unknown.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/unknown.json @@ -612,6 +612,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -1093,6 +1094,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json index 9c6421f0523..bd1d180adce 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/validation.json @@ -2039,6 +2039,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null }, @@ -2794,6 +2795,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/variables.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/variables.json index b8d1379a4c1..d2ecd9b0f19 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/variables.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/variables.json @@ -282,6 +282,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/version-no-default.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/version-no-default.json index 73471c5d9b9..e41b7e4fb7f 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/version-no-default.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/version-no-default.json @@ -1344,6 +1344,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/version.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/version.json index 8d3da9f959f..2d15f1e6123 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/version.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/version.json @@ -1369,6 +1369,7 @@ } ], "pagination": null, + "transport": null, "availability": null, "docs": null } diff --git a/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts b/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts index 024845338b8..bc917fe5123 100644 --- a/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts +++ b/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts @@ -32,7 +32,7 @@ import { convertHttpSdkRequest } from "./convertHttpSdkRequest"; import { convertPagination } from "./convertPagination"; import { convertQueryParameter } from "./convertQueryParameter"; import { convertResponseErrors } from "./convertResponseErrors"; -import { convertTransport } from "./convertTransport"; +import { getTransportForService, getTransportForEndpoint } from "./convertTransport"; export async function convertHttpService({ rootDefaultUrl, @@ -68,7 +68,7 @@ export async function convertHttpService({ variableResolver }); - const transport = await convertTransport({ + const transport = await getTransportForService({ file, serviceDeclaration: serviceDefinition, sourceResolver @@ -89,7 +89,7 @@ export async function convertHttpService({ ) : [], pathParameters: servicePathParameters, - encoding: convertTransportToEncoding(transport), + encoding: convertTransportToEncoding(transport, serviceDefinition), transport, endpoints: await Promise.all( Object.entries(serviceDefinition.endpoints).map(async ([endpointKey, endpoint]): Promise => { @@ -183,6 +183,12 @@ export async function convertHttpService({ file, endpointName: endpointKey, endpointSchema: endpoint + }), + transport: await getTransportForEndpoint({ + file, + serviceTransport: transport, + endpointDeclaration: endpoint, + sourceResolver }) }; httpEndpoint.id = IdGenerator.generateEndpointId(serviceName, httpEndpoint); @@ -371,7 +377,7 @@ export function getHeaderName({ headerKey, header }: { headerKey: string; header }; } -function convertTransportToEncoding(transport: Transport): Encoding { +function convertTransportToEncoding(transport: Transport, service: RawSchemas.HttpServiceSchema): Encoding { switch (transport.type) { case "http": return { diff --git a/packages/cli/generation/ir-generator/src/converters/services/convertTransport.ts b/packages/cli/generation/ir-generator/src/converters/services/convertTransport.ts index 12836ac99e9..0889bca1fc1 100644 --- a/packages/cli/generation/ir-generator/src/converters/services/convertTransport.ts +++ b/packages/cli/generation/ir-generator/src/converters/services/convertTransport.ts @@ -1,10 +1,10 @@ import { Transport } from "@fern-api/ir-sdk"; -import { RawSchemas } from "@fern-api/fern-definition-schema"; +import { isRawProtobufSourceSchema, RawSchemas } from "@fern-api/fern-definition-schema"; import { FernFileContext } from "../../FernFileContext"; import { SourceResolver } from "../../resolvers/SourceResolver"; import { convertProtobufService } from "./convertProtobufService"; -export async function convertTransport({ +export async function getTransportForService({ file, serviceDeclaration, sourceResolver @@ -13,19 +13,76 @@ export async function convertTransport({ serviceDeclaration: RawSchemas.HttpServiceSchema; sourceResolver: SourceResolver; }): Promise { - if (serviceDeclaration.source == null) { + if (!isRawProtobufSourceSchema(serviceDeclaration.source)) { + // anything not protobuf is http return Transport.http(); } + return await createProtobufService( + file, + serviceDeclaration.source, + sourceResolver, + serviceDeclaration.transport?.grpc?.["service-name"] + ); +} + +export async function getTransportForEndpoint({ + file, + serviceTransport, + endpointDeclaration, + sourceResolver +}: { + file: FernFileContext; + serviceTransport: Transport; + endpointDeclaration: RawSchemas.HttpEndpointSchema; + sourceResolver: SourceResolver; +}): Promise { + const isGrpcService = serviceTransport.type === "grpc"; + const isHttpService = serviceTransport.type === "http"; + const isGrpcEndpoint = isRawProtobufSourceSchema(endpointDeclaration.source); + const isHttpEndpoint = !isGrpcEndpoint; + if (!isGrpcService) { + // no need to override the transport if the service is not grpc + return undefined; + } + if (isHttpService && isGrpcEndpoint) { + throw new Error("Cannot have a grpc endpoint on an http service"); + } + if (isGrpcService && isHttpEndpoint) { + // if the service is grpc, but the endpoint is http, the endpoint should override the service transport + return Transport.http(); + } + if (isGrpcService && isGrpcEndpoint) { + const protoSource = endpointDeclaration.source as RawSchemas.ProtobufSourceSchema; + const serviceNameOverride = endpointDeclaration.transport?.grpc?.["service-name"]; + if (!serviceNameOverride) { + // if there's no config specifically for the endpoint, we'll return undefined to inherit the service's transport + return undefined; + } else { + return await createProtobufService(file, protoSource, sourceResolver, serviceNameOverride); + } + } + + throw new Error( + `Internal error; failed to determine endpoint transport for\n ${JSON.stringify(endpointDeclaration)}"` + ); +} + +async function createProtobufService( + file: FernFileContext, + source: RawSchemas.ProtobufSourceSchema, + sourceResolver: SourceResolver, + serviceNameOverride: string | undefined +) { const resolvedSource = await sourceResolver.resolveSourceOrThrow({ - source: serviceDeclaration.source, + source, file }); if (resolvedSource == null || resolvedSource.type !== "protobuf") { - return Transport.http(); + throw new Error(`Expected a protobuf source for ${source.proto}.`); } const protobufService = convertProtobufService({ source: resolvedSource, - serviceNameOverride: serviceDeclaration.transport?.grpc?.["service-name"] + serviceNameOverride }); if (protobufService == null) { throw new Error(`Failed to resolve service name from ${resolvedSource.relativeFilePath}.`); diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-proto-exhaustive.json b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-proto-exhaustive.json index 9ddb4629979..41d1a9834c5 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-proto-exhaustive.json +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-proto-exhaustive.json @@ -736,9 +736,81 @@ "displayName": "DataService", "name": "dataservice", "endpoints": [ + { + "auth": true, + "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], + "id": "foo", + "originalEndpointId": "endpoint_dataservice.foo", + "name": "Foo", + "path": { + "pathParameters": [], + "parts": [ + { + "type": "literal", + "value": "" + }, + { + "type": "literal", + "value": "/foo" + } + ] + }, + "queryParameters": [], + "headers": [], + "response": { + "type": { + "type": "reference", + "value": { + "type": "map", + "keyType": { + "type": "primitive", + "value": { + "type": "string" + } + }, + "valueType": { + "type": "unknown" + } + } + } + }, + "errorsV2": [], + "examples": [ + { + "path": "/foo", + "pathParameters": {}, + "queryParameters": {}, + "headers": {}, + "responseStatusCode": 200, + "responseBody": { + "key": "value" + }, + "responseBodyV3": { + "type": "json", + "value": { + "key": "value" + } + } + } + ] + }, { "auth": false, "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "upload", "originalEndpointId": "endpoint_dataservice.upload", "name": "Upload", @@ -847,6 +919,13 @@ { "auth": false, "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "delete", "originalEndpointId": "endpoint_dataservice.delete", "name": "Delete", @@ -961,6 +1040,13 @@ { "auth": false, "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "describe", "originalEndpointId": "endpoint_dataservice.describe", "name": "Describe", @@ -1053,6 +1139,13 @@ { "auth": false, "method": "GET", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "fetch", "originalEndpointId": "endpoint_dataservice.fetch", "name": "Fetch", @@ -1173,6 +1266,13 @@ { "auth": false, "method": "GET", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "list", "originalEndpointId": "endpoint_dataservice.list", "name": "List", @@ -1295,6 +1395,13 @@ { "auth": false, "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "query", "originalEndpointId": "endpoint_dataservice.query", "name": "Query", @@ -1543,6 +1650,13 @@ { "auth": false, "method": "POST", + "defaultEnvironment": "Default", + "environments": [ + { + "id": "Default", + "baseUrl": "https://localhost" + } + ], "id": "update", "originalEndpointId": "endpoint_dataservice.update", "name": "Update", @@ -1702,6 +1816,11 @@ "subpackage_dataservice" ] }, + "auth": { + "type": "header", + "headerWireValue": "X-API-Key", + "nameOverride": "apiKey" + }, "snippetsConfiguration": {}, "globalHeaders": [] } \ No newline at end of file diff --git a/packages/ir-sdk/fern/apis/ir-types-latest/VERSION b/packages/ir-sdk/fern/apis/ir-types-latest/VERSION index 7955844a12e..d1206f7cbd3 100644 --- a/packages/ir-sdk/fern/apis/ir-types-latest/VERSION +++ b/packages/ir-sdk/fern/apis/ir-types-latest/VERSION @@ -1 +1 @@ -53.17.0 +53.18.0 diff --git a/packages/ir-sdk/fern/apis/ir-types-latest/changelog/CHANGELOG.md b/packages/ir-sdk/fern/apis/ir-types-latest/changelog/CHANGELOG.md index 082721fde41..5ad28e67319 100644 --- a/packages/ir-sdk/fern/apis/ir-types-latest/changelog/CHANGELOG.md +++ b/packages/ir-sdk/fern/apis/ir-types-latest/changelog/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v53.18.0] - 2024-11-04 + +- Internal: Add `transport` to `HttpEndpoint`. `transport` on the endpoint overrides the `transport` on the `HttpService`. + ## [v53.15.0] - 2024-10-07 - Internal: Introduce dynamic IR types. diff --git a/packages/ir-sdk/fern/apis/ir-types-latest/definition/http.yml b/packages/ir-sdk/fern/apis/ir-types-latest/definition/http.yml index 735dda38dde..e3534ebab7f 100644 --- a/packages/ir-sdk/fern/apis/ir-types-latest/definition/http.yml +++ b/packages/ir-sdk/fern/apis/ir-types-latest/definition/http.yml @@ -41,7 +41,7 @@ types: method: HttpMethod headers: list baseUrl: optional - basePath: + basePath: type: optional docs: Overrides the service and endpoint level base paths path: HttpPath @@ -58,6 +58,8 @@ types: pagination: optional userSpecifiedExamples: list autogeneratedExamples: list + transport: optional + EndpointName: commons.Name HttpPath: properties: @@ -110,9 +112,9 @@ types: name: commons.Name extends: list properties: list - extendedProperties: + extendedProperties: type: optional> - docs: A list of properties that all the parents of this request have. + docs: A list of properties that all the parents of this request have. contentType: optional extra-properties: docs: Whether to allow extra properties on the request. @@ -136,9 +138,9 @@ types: union: file: FileProperty bodyProperty: FileUploadBodyProperty - FileUploadBodyProperty: + FileUploadBodyProperty: extends: InlinedRequestBodyProperty - properties: + properties: contentType: optional FileProperty: union: @@ -164,11 +166,11 @@ types: typeReference: HttpRequestBodyReference bytes: BytesRequest SdkRequest: - properties: - streamParameter: + properties: + streamParameter: type: optional - docs: | - The request property that controls whether or not the response is streamed. + docs: | + The request property that controls whether or not the response is streamed. requestParameterName: commons.Name shape: SdkRequestShape SdkRequestShape: @@ -184,9 +186,9 @@ types: properties: status-code: optional body: optional - - NonStreamHttpResponseBody: - union: + + NonStreamHttpResponseBody: + union: json: JsonResponse fileDownload: FileDownloadResponse text: TextResponse @@ -197,11 +199,11 @@ types: fileDownload: FileDownloadResponse text: TextResponse streaming: StreamingResponse - streamParameter: + streamParameter: type: StreamParameterResponse - docs: | - If there is a parameter that controls whether the response is streaming or not. Note - that if this is the response then `sdkRequest.streamParameter` will always be populated. + docs: | + If there is a parameter that controls whether the response is streaming or not. Note + that if this is the response then `sdkRequest.streamParameter` will always be populated. JsonResponse: union: @@ -231,9 +233,9 @@ types: TextResponse: extends: commons.WithDocs - - StreamParameterResponse: - properties: + + StreamParameterResponse: + properties: nonStreamResponse: NonStreamHttpResponseBody streamResponse: StreamingResponse @@ -293,7 +295,7 @@ types: properties: page: RequestProperty results: ResponseProperty - hasNextPage: + hasNextPage: docs: A response property that indicates whether there is a next page or not. type: optional step: @@ -332,16 +334,16 @@ types: property: types.ObjectProperty # examples - AutogeneratedEndpointExample: - properties: + AutogeneratedEndpointExample: + properties: example: ExampleEndpointCall - UserSpecifiedEndpointExample: - properties: - codeSamples: + UserSpecifiedEndpointExample: + properties: + codeSamples: type: optional> docs: Manually written code samples specified by the user - example: + example: type: optional docs: Manually written example specified by the user diff --git a/packages/ir-sdk/fern/fern.config.json b/packages/ir-sdk/fern/fern.config.json index cfd312e2d08..74b19788a58 100644 --- a/packages/ir-sdk/fern/fern.config.json +++ b/packages/ir-sdk/fern/fern.config.json @@ -1,4 +1,4 @@ { "organization": "fern", - "version": "0.37.6" + "version": "0.44.11" } \ No newline at end of file diff --git a/packages/ir-sdk/src/sdk/api/resources/http/types/HttpEndpoint.ts b/packages/ir-sdk/src/sdk/api/resources/http/types/HttpEndpoint.ts index ae76e25b7d2..35b3ab875a0 100644 --- a/packages/ir-sdk/src/sdk/api/resources/http/types/HttpEndpoint.ts +++ b/packages/ir-sdk/src/sdk/api/resources/http/types/HttpEndpoint.ts @@ -27,4 +27,5 @@ export interface HttpEndpoint extends FernIr.Declaration { pagination: FernIr.Pagination | undefined; userSpecifiedExamples: FernIr.UserSpecifiedEndpointExample[]; autogeneratedExamples: FernIr.AutogeneratedEndpointExample[]; + transport: FernIr.Transport | undefined; } diff --git a/packages/ir-sdk/src/sdk/serialization/resources/http/types/HttpEndpoint.ts b/packages/ir-sdk/src/sdk/serialization/resources/http/types/HttpEndpoint.ts index 5b81828592c..f873fec49f9 100644 --- a/packages/ir-sdk/src/sdk/serialization/resources/http/types/HttpEndpoint.ts +++ b/packages/ir-sdk/src/sdk/serialization/resources/http/types/HttpEndpoint.ts @@ -20,6 +20,7 @@ import { ResponseErrors } from "./ResponseErrors"; import { Pagination } from "./Pagination"; import { UserSpecifiedEndpointExample } from "./UserSpecifiedEndpointExample"; import { AutogeneratedEndpointExample } from "./AutogeneratedEndpointExample"; +import { Transport } from "./Transport"; import { Declaration } from "../../commons/types/Declaration"; import { ResponseError } from "./ResponseError"; @@ -47,6 +48,7 @@ export const HttpEndpoint: core.serialization.ObjectSchema UUID: + return self.root + + @staticmethod + def from_parent(value: Parent) -> AliasType: + AliasType(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/alias-extends/types/child.py b/seed/pydantic-v2/alias-extends/types/child.py new file mode 100644 index 00000000000..23547429cce --- /dev/null +++ b/seed/pydantic-v2/alias-extends/types/child.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from .types.parent import Parent +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Child(BaseModel, Parent): + child: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/alias-extends/types/parent.py b/seed/pydantic-v2/alias-extends/types/parent.py new file mode 100644 index 00000000000..5983008ca1e --- /dev/null +++ b/seed/pydantic-v2/alias-extends/types/parent.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Parent(BaseModel): + parent: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/alias/.mock/definition/__package__.yml b/seed/pydantic-v2/alias/.mock/definition/__package__.yml new file mode 100644 index 00000000000..8737d982401 --- /dev/null +++ b/seed/pydantic-v2/alias/.mock/definition/__package__.yml @@ -0,0 +1,37 @@ +types: + TypeId: + docs: An alias for type IDs. + type: string + examples: + - name: One + value: type-kaljhv87 + + Type: + docs: A simple type with just a name. + properties: + id: TypeId + name: string + examples: + - name: One + value: + id: type-df89sdg1 + name: foo + + Object: + docs: Object is an alias for a type. + type: Type + examples: + - name: One + value: + id: kljasc85 + name: bar + +service: + auth: false + base-path: / + endpoints: + get: + path: "/{typeId}" + path-parameters: + typeId: TypeId + method: GET diff --git a/seed/pydantic-v2/alias/.mock/definition/api.yml b/seed/pydantic-v2/alias/.mock/definition/api.yml new file mode 100644 index 00000000000..6ca90528fe0 --- /dev/null +++ b/seed/pydantic-v2/alias/.mock/definition/api.yml @@ -0,0 +1 @@ +name: alias diff --git a/seed/pydantic-v2/alias/.mock/fern.config.json b/seed/pydantic-v2/alias/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/alias/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/alias/.mock/generators.yml b/seed/pydantic-v2/alias/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/alias/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/alias/snippet-templates.json b/seed/pydantic-v2/alias/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/alias/snippet.json b/seed/pydantic-v2/alias/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/alias/types/object.py b/seed/pydantic-v2/alias/types/object.py new file mode 100644 index 00000000000..5901c14aef8 --- /dev/null +++ b/seed/pydantic-v2/alias/types/object.py @@ -0,0 +1,17 @@ +from pydantic import RootModel +from .types.type import Type +from dt import datetime +from core.datetime_utils import serialize_datetime +class Object(RootModel[Type]): +"""Object is an alias for a type.""" + root: Type + def get_as_type() -> UUID: + return self.root + @staticmethod + def from_type(value: Type) -> Object: + Object(root=value) + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/alias/types/type.py b/seed/pydantic-v2/alias/types/type.py new file mode 100644 index 00000000000..86fc8dd9d6a --- /dev/null +++ b/seed/pydantic-v2/alias/types/type.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class Type(BaseModel): +"""A simple type with just a name.""" + id: str + name: str + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/alias/types/type_id.py b/seed/pydantic-v2/alias/types/type_id.py new file mode 100644 index 00000000000..a170fef3f7e --- /dev/null +++ b/seed/pydantic-v2/alias/types/type_id.py @@ -0,0 +1,16 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class TypeId(RootModel[str]): +"""An alias for type IDs.""" + root: str + def get_as_str() -> UUID: + return self.root + @staticmethod + def from_str(value: str) -> TypeId: + TypeId(root=value) + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/any-auth/.mock/definition/api.yml b/seed/pydantic-v2/any-auth/.mock/definition/api.yml new file mode 100644 index 00000000000..0915d3f623c --- /dev/null +++ b/seed/pydantic-v2/any-auth/.mock/definition/api.yml @@ -0,0 +1,31 @@ +imports: + auth: auth.yml + +name: any-auth + +auth: + any: + - Bearer + - ApiKey + - OAuth +auth-schemes: + Bearer: + scheme: bearer + token: + env: MY_TOKEN + ApiKey: + header: X-API-Key + type: string + env: MY_API_KEY + OAuth: + scheme: oauth + type: client-credentials + client-id-env: MY_CLIENT_ID + client-secret-env: MY_CLIENT_SECRET + get-token: + endpoint: auth.getToken + response-properties: + access-token: $response.access_token + expires-in: $response.expires_in + + diff --git a/seed/pydantic-v2/any-auth/.mock/definition/auth.yml b/seed/pydantic-v2/any-auth/.mock/definition/auth.yml new file mode 100644 index 00000000000..3fd00041722 --- /dev/null +++ b/seed/pydantic-v2/any-auth/.mock/definition/auth.yml @@ -0,0 +1,26 @@ +types: + TokenResponse: + docs: | + An OAuth token response. + properties: + access_token: string + expires_in: integer + refresh_token: optional + +service: + auth: false + base-path: / + endpoints: + getToken: + path: /token + method: POST + request: + name: GetTokenRequest + body: + properties: + client_id: string + client_secret: string + audience: literal<"https://api.example.com"> + grant_type: literal<"client_credentials"> + scope: optional + response: TokenResponse diff --git a/seed/pydantic-v2/any-auth/.mock/definition/user.yml b/seed/pydantic-v2/any-auth/.mock/definition/user.yml new file mode 100644 index 00000000000..c8350c2a345 --- /dev/null +++ b/seed/pydantic-v2/any-auth/.mock/definition/user.yml @@ -0,0 +1,14 @@ +types: + User: + properties: + id: string + name: string + +service: + auth: true + base-path: "" + endpoints: + get: + path: /users + method: POST + response: list diff --git a/seed/pydantic-v2/any-auth/.mock/fern.config.json b/seed/pydantic-v2/any-auth/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/any-auth/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/any-auth/.mock/generators.yml b/seed/pydantic-v2/any-auth/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/any-auth/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/any-auth/resources/auth/types/token_response.py b/seed/pydantic-v2/any-auth/resources/auth/types/token_response.py new file mode 100644 index 00000000000..2ed020441af --- /dev/null +++ b/seed/pydantic-v2/any-auth/resources/auth/types/token_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime +class TokenResponse(BaseModel): +"""An OAuth token response.""" + access_token: str + expires_in: int + refresh_token: Optional[str] = None + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/any-auth/resources/user/types/user.py b/seed/pydantic-v2/any-auth/resources/user/types/user.py new file mode 100644 index 00000000000..c33409914bf --- /dev/null +++ b/seed/pydantic-v2/any-auth/resources/user/types/user.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class User(BaseModel): + id: str + name: str + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/any-auth/snippet-templates.json b/seed/pydantic-v2/any-auth/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/any-auth/snippet.json b/seed/pydantic-v2/any-auth/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/api-wide-base-path/.mock/definition/api.yml b/seed/pydantic-v2/api-wide-base-path/.mock/definition/api.yml new file mode 100644 index 00000000000..be62c79078e --- /dev/null +++ b/seed/pydantic-v2/api-wide-base-path/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: api-wide-base-path +base-path: /test/{pathParam} +path-parameters: + pathParam: string diff --git a/seed/pydantic-v2/api-wide-base-path/.mock/definition/service.yml b/seed/pydantic-v2/api-wide-base-path/.mock/definition/service.yml new file mode 100644 index 00000000000..2fbaa67b3d3 --- /dev/null +++ b/seed/pydantic-v2/api-wide-base-path/.mock/definition/service.yml @@ -0,0 +1,12 @@ +service: + auth: false + base-path: "/{serviceParam}" + path-parameters: + serviceParam: string + endpoints: + post: + path: "/{endpointParam}/{resourceParam}" + path-parameters: + resourceParam: string + endpointParam: integer + method: POST diff --git a/seed/pydantic-v2/api-wide-base-path/.mock/fern.config.json b/seed/pydantic-v2/api-wide-base-path/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/api-wide-base-path/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/api-wide-base-path/.mock/generators.yml b/seed/pydantic-v2/api-wide-base-path/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/api-wide-base-path/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/api-wide-base-path/snippet-templates.json b/seed/pydantic-v2/api-wide-base-path/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/api-wide-base-path/snippet.json b/seed/pydantic-v2/api-wide-base-path/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/audiences/.mock/definition/api.yml b/seed/pydantic-v2/audiences/.mock/definition/api.yml new file mode 100644 index 00000000000..80c01321be3 --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/api.yml @@ -0,0 +1,16 @@ +name: audiences +display-name: Audiences API +audiences: + - public + - private + - partner +environments: + environment-a: + url: https://api.example.a.com + audiences: + - public + environment-b: + url: https://api.example.b.com + audiences: + - private +default-environment: null \ No newline at end of file diff --git a/seed/pydantic-v2/audiences/.mock/definition/commons.yml b/seed/pydantic-v2/audiences/.mock/definition/commons.yml new file mode 100644 index 00000000000..0cdcfc9fb9b --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/commons.yml @@ -0,0 +1,5 @@ +imports: + commons: commons.yml + +types: + Imported: string diff --git a/seed/pydantic-v2/audiences/.mock/definition/folder-a/service.yml b/seed/pydantic-v2/audiences/.mock/definition/folder-a/service.yml new file mode 100644 index 00000000000..11d499ee5db --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/folder-a/service.yml @@ -0,0 +1,20 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderBCommons: ../folder-b/common.yml + +service: + auth: false + audiences: + - public + base-path: / + endpoints: + getDirectThread: + path: "" + method: GET + response: Response + +types: + Response: + properties: + foo: optional diff --git a/seed/pydantic-v2/audiences/.mock/definition/folder-b/common.yml b/seed/pydantic-v2/audiences/.mock/definition/folder-b/common.yml new file mode 100644 index 00000000000..23ab9ba28ed --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/folder-b/common.yml @@ -0,0 +1,9 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderCCommons: ../folder-c/common.yml + +types: + Foo: + properties: + foo: optional diff --git a/seed/pydantic-v2/audiences/.mock/definition/folder-c/common.yml b/seed/pydantic-v2/audiences/.mock/definition/folder-c/common.yml new file mode 100644 index 00000000000..caae3364b2e --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/folder-c/common.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +types: + FolderCFoo: + properties: + bar_property: uuid diff --git a/seed/pydantic-v2/audiences/.mock/definition/folder-d/service.yml b/seed/pydantic-v2/audiences/.mock/definition/folder-d/service.yml new file mode 100644 index 00000000000..13bcaf2edf2 --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/folder-d/service.yml @@ -0,0 +1,20 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderBCommons: ../folder-b/common.yml + +service: + auth: false + audiences: + - partner + base-path: /partner-path + endpoints: + getDirectThread: + path: "" + method: GET + response: Response + +types: + Response: + properties: + foo: string diff --git a/seed/pydantic-v2/audiences/.mock/definition/foo.yml b/seed/pydantic-v2/audiences/.mock/definition/foo.yml new file mode 100644 index 00000000000..3827e514cf6 --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/definition/foo.yml @@ -0,0 +1,46 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + commons: commons.yml + +service: + auth: false + base-path: / + endpoints: + find: + audiences: + - public + - private + path: "" + method: POST + request: + name: FindRequest + query-parameters: + optionalString: + type: OptionalString + audiences: + - private + body: + properties: + publicProperty: + type: optional + audiences: + - public + privateProperty: optional + response: ImportingType + +types: + ImportingType: + properties: + imported: commons.Imported + OptionalString: optional + + FilteredType: + audiences: + - public + properties: + public_property: + type: optional + audiences: + - public + private_property: integer diff --git a/seed/pydantic-v2/audiences/.mock/fern.config.json b/seed/pydantic-v2/audiences/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/audiences/.mock/generators.yml b/seed/pydantic-v2/audiences/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/audiences/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/audiences/resources/commons/types/imported.py b/seed/pydantic-v2/audiences/resources/commons/types/imported.py new file mode 100644 index 00000000000..bca598f7b52 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/commons/types/imported.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Imported(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Imported: + Imported(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/folder_a/resources/service/types/response.py b/seed/pydantic-v2/audiences/resources/folder_a/resources/service/types/response.py new file mode 100644 index 00000000000..df2a7e334f8 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/folder_a/resources/service/types/response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.folder_b.resources.common.types.foo import Foo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel): + foo: Optional[Foo] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/folder_b/resources/common/types/foo.py b/seed/pydantic-v2/audiences/resources/folder_b/resources/common/types/foo.py new file mode 100644 index 00000000000..f2c8bf200a1 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/folder_b/resources/common/types/foo.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.folder_c.resources.common.types.folder_c_foo import FolderCFoo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Foo(BaseModel): + foo: Optional[FolderCFoo] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/folder_c/resources/common/types/folder_c_foo.py b/seed/pydantic-v2/audiences/resources/folder_c/resources/common/types/folder_c_foo.py new file mode 100644 index 00000000000..6de8ab57d01 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/folder_c/resources/common/types/folder_c_foo.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from uuid import UUID +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class FolderCFoo(BaseModel): + bar_property: UUID + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/folder_d/resources/service/types/response.py b/seed/pydantic-v2/audiences/resources/folder_d/resources/service/types/response.py new file mode 100644 index 00000000000..865c2b9a59b --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/folder_d/resources/service/types/response.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel): + foo: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/foo/types/filtered_type.py b/seed/pydantic-v2/audiences/resources/foo/types/filtered_type.py new file mode 100644 index 00000000000..334a96841d3 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/foo/types/filtered_type.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class FilteredType(BaseModel): + public_property: Optional[str] = None + private_property: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/foo/types/importing_type.py b/seed/pydantic-v2/audiences/resources/foo/types/importing_type.py new file mode 100644 index 00000000000..f777bbecfaa --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/foo/types/importing_type.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ImportingType(BaseModel): + imported: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/resources/foo/types/optional_string.py b/seed/pydantic-v2/audiences/resources/foo/types/optional_string.py new file mode 100644 index 00000000000..7eef91b3a41 --- /dev/null +++ b/seed/pydantic-v2/audiences/resources/foo/types/optional_string.py @@ -0,0 +1,20 @@ +from pydantic import RootModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class OptionalString(RootModel[Optional[str]]): + root: Optional[str] + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: Optional[str]) -> OptionalString: + OptionalString(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/audiences/snippet-templates.json b/seed/pydantic-v2/audiences/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/audiences/snippet.json b/seed/pydantic-v2/audiences/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/auth-environment-variables/.mock/definition/api.yml b/seed/pydantic-v2/auth-environment-variables/.mock/definition/api.yml new file mode 100644 index 00000000000..f253d1d1590 --- /dev/null +++ b/seed/pydantic-v2/auth-environment-variables/.mock/definition/api.yml @@ -0,0 +1,14 @@ +name: auth-environment-variables +auth: APIKey +auth-schemes: + APIKey: + header: X-FERN-API-KEY + type: string + env: FERN_API_KEY +headers: + X-Another-Header: + type: string + env: ANOTHER_ENV_VAR + X-API-Version: + type: literal<"01-01-2000"> + env: VERSION diff --git a/seed/pydantic-v2/auth-environment-variables/.mock/definition/service.yml b/seed/pydantic-v2/auth-environment-variables/.mock/definition/service.yml new file mode 100644 index 00000000000..9e5d595f4a2 --- /dev/null +++ b/seed/pydantic-v2/auth-environment-variables/.mock/definition/service.yml @@ -0,0 +1,25 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: false + base-path: "" + endpoints: + getWithApiKey: + auth: true + docs: GET request with custom api key + path: /apiKey + method: GET + response: string + + getWithHeader: + docs: GET request with custom api key + path: /apiKeyInHeader + method: GET + request: + name: HeaderAuthRequest + headers: + X-Endpoint-Header: + docs: "Specifies the endpoint key." + type: string + env: MY_HEADER_ENV + response: string diff --git a/seed/pydantic-v2/auth-environment-variables/.mock/fern.config.json b/seed/pydantic-v2/auth-environment-variables/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/auth-environment-variables/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/auth-environment-variables/.mock/generators.yml b/seed/pydantic-v2/auth-environment-variables/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/auth-environment-variables/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/auth-environment-variables/snippet-templates.json b/seed/pydantic-v2/auth-environment-variables/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/auth-environment-variables/snippet.json b/seed/pydantic-v2/auth-environment-variables/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/api.yml b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/api.yml new file mode 100644 index 00000000000..828c6eced71 --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/api.yml @@ -0,0 +1,13 @@ +name: basic-auth-environment-variables +auth: Basic +auth-schemes: + Basic: + scheme: basic + username: + name: username + env: USERNAME + password: + name: password + env: PASSWORD +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/basic-auth.yml b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/basic-auth.yml new file mode 100644 index 00000000000..8a04bc9f070 --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/basic-auth.yml @@ -0,0 +1,35 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + errors: ./errors.yml + +service: + auth: false + base-path: "" + endpoints: + getWithBasicAuth: + auth: true + docs: GET request with basic auth scheme + path: /basic-auth + method: GET + response: + boolean + # headers: + # WWW-Authenticate: optional # Specifies which auth scheme to use if CustomAuthScheme was not applied + # body: + # success: boolean + errors: + - errors.UnauthorizedRequest + + postWithBasicAuth: + auth: true + docs: POST request with basic auth scheme + path: /basic-auth + method: POST + request: + name: PostWithBasicAuth + body: unknown + response: boolean + errors: + - errors.UnauthorizedRequest + - errors.BadRequest diff --git a/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/errors.yml b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/errors.yml new file mode 100644 index 00000000000..cdd6a966703 --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/.mock/definition/errors.yml @@ -0,0 +1,11 @@ +errors: + UnauthorizedRequest: + status-code: 401 + type: UnauthorizedRequestErrorBody + BadRequest: + status-code: 400 + +types: + UnauthorizedRequestErrorBody: + properties: + message: string diff --git a/seed/pydantic-v2/basic-auth-environment-variables/.mock/fern.config.json b/seed/pydantic-v2/basic-auth-environment-variables/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/basic-auth-environment-variables/.mock/generators.yml b/seed/pydantic-v2/basic-auth-environment-variables/.mock/generators.yml new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/.mock/generators.yml @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/seed/pydantic-v2/basic-auth-environment-variables/resources/errors/types/unauthorized_request_error_body.py b/seed/pydantic-v2/basic-auth-environment-variables/resources/errors/types/unauthorized_request_error_body.py new file mode 100644 index 00000000000..b1ed2dd64d1 --- /dev/null +++ b/seed/pydantic-v2/basic-auth-environment-variables/resources/errors/types/unauthorized_request_error_body.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UnauthorizedRequestErrorBody(BaseModel): + message: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/basic-auth-environment-variables/snippet-templates.json b/seed/pydantic-v2/basic-auth-environment-variables/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/basic-auth-environment-variables/snippet.json b/seed/pydantic-v2/basic-auth-environment-variables/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/basic-auth/.mock/definition/api.yml b/seed/pydantic-v2/basic-auth/.mock/definition/api.yml new file mode 100644 index 00000000000..2d6df22f2d1 --- /dev/null +++ b/seed/pydantic-v2/basic-auth/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: basic-auth +auth: basic +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/basic-auth/.mock/definition/basic-auth.yml b/seed/pydantic-v2/basic-auth/.mock/definition/basic-auth.yml new file mode 100644 index 00000000000..8a04bc9f070 --- /dev/null +++ b/seed/pydantic-v2/basic-auth/.mock/definition/basic-auth.yml @@ -0,0 +1,35 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + errors: ./errors.yml + +service: + auth: false + base-path: "" + endpoints: + getWithBasicAuth: + auth: true + docs: GET request with basic auth scheme + path: /basic-auth + method: GET + response: + boolean + # headers: + # WWW-Authenticate: optional # Specifies which auth scheme to use if CustomAuthScheme was not applied + # body: + # success: boolean + errors: + - errors.UnauthorizedRequest + + postWithBasicAuth: + auth: true + docs: POST request with basic auth scheme + path: /basic-auth + method: POST + request: + name: PostWithBasicAuth + body: unknown + response: boolean + errors: + - errors.UnauthorizedRequest + - errors.BadRequest diff --git a/seed/pydantic-v2/basic-auth/.mock/definition/errors.yml b/seed/pydantic-v2/basic-auth/.mock/definition/errors.yml new file mode 100644 index 00000000000..cdd6a966703 --- /dev/null +++ b/seed/pydantic-v2/basic-auth/.mock/definition/errors.yml @@ -0,0 +1,11 @@ +errors: + UnauthorizedRequest: + status-code: 401 + type: UnauthorizedRequestErrorBody + BadRequest: + status-code: 400 + +types: + UnauthorizedRequestErrorBody: + properties: + message: string diff --git a/seed/pydantic-v2/basic-auth/.mock/fern.config.json b/seed/pydantic-v2/basic-auth/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/basic-auth/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/basic-auth/.mock/generators.yml b/seed/pydantic-v2/basic-auth/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/basic-auth/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/basic-auth/resources/errors/types/unauthorized_request_error_body.py b/seed/pydantic-v2/basic-auth/resources/errors/types/unauthorized_request_error_body.py new file mode 100644 index 00000000000..b1ed2dd64d1 --- /dev/null +++ b/seed/pydantic-v2/basic-auth/resources/errors/types/unauthorized_request_error_body.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UnauthorizedRequestErrorBody(BaseModel): + message: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/basic-auth/snippet-templates.json b/seed/pydantic-v2/basic-auth/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/basic-auth/snippet.json b/seed/pydantic-v2/basic-auth/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/api.yml b/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/api.yml new file mode 100644 index 00000000000..819d8807966 --- /dev/null +++ b/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/api.yml @@ -0,0 +1,8 @@ +name: bearer-token-environment-variable +auth: Bearer +auth-schemes: + Bearer: + scheme: bearer + token: + name: apiKey + env: COURIER_API_KEY diff --git a/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/service.yml b/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/service.yml new file mode 100644 index 00000000000..d38a6ca2913 --- /dev/null +++ b/seed/pydantic-v2/bearer-token-environment-variable/.mock/definition/service.yml @@ -0,0 +1,12 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: false + base-path: "" + endpoints: + getWithBearerToken: + auth: true + docs: GET request with custom api key + path: /apiKey + method: GET + response: string diff --git a/seed/pydantic-v2/bearer-token-environment-variable/.mock/fern.config.json b/seed/pydantic-v2/bearer-token-environment-variable/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/bearer-token-environment-variable/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/bearer-token-environment-variable/.mock/generators.yml b/seed/pydantic-v2/bearer-token-environment-variable/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/bearer-token-environment-variable/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/bearer-token-environment-variable/snippet-templates.json b/seed/pydantic-v2/bearer-token-environment-variable/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/bearer-token-environment-variable/snippet.json b/seed/pydantic-v2/bearer-token-environment-variable/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/bytes/.mock/definition/api.yml b/seed/pydantic-v2/bytes/.mock/definition/api.yml new file mode 100644 index 00000000000..cdfcf5be4a1 --- /dev/null +++ b/seed/pydantic-v2/bytes/.mock/definition/api.yml @@ -0,0 +1 @@ +name: bytes diff --git a/seed/pydantic-v2/bytes/.mock/definition/service.yml b/seed/pydantic-v2/bytes/.mock/definition/service.yml new file mode 100644 index 00000000000..b0610fa616c --- /dev/null +++ b/seed/pydantic-v2/bytes/.mock/definition/service.yml @@ -0,0 +1,10 @@ +service: + auth: false + base-path: "" + endpoints: + upload: + path: /upload-content + method: POST + request: + content-type: "application/octet-stream" + body: bytes diff --git a/seed/pydantic-v2/bytes/.mock/fern.config.json b/seed/pydantic-v2/bytes/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/bytes/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/bytes/.mock/generators.yml b/seed/pydantic-v2/bytes/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/bytes/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/bytes/snippet-templates.json b/seed/pydantic-v2/bytes/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/bytes/snippet.json b/seed/pydantic-v2/bytes/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/definition/__package__.yml b/seed/pydantic-v2/circular-references-advanced/.mock/definition/__package__.yml new file mode 100644 index 00000000000..35979beb883 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/definition/__package__.yml @@ -0,0 +1,13 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + a: a.yml + +types: + ImportingA: + properties: + a: optional + + RootType: + properties: + s: string diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/definition/a.yml b/seed/pydantic-v2/circular-references-advanced/.mock/definition/a.yml new file mode 100644 index 00000000000..50553c25d2b --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/definition/a.yml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + root: __package__.yml + +types: + A: + extends: root.RootType diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/definition/api.yml b/seed/pydantic-v2/circular-references-advanced/.mock/definition/api.yml new file mode 100644 index 00000000000..9a8ae7d166b --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/definition/api.yml @@ -0,0 +1 @@ +name: api diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/definition/ast.yml b/seed/pydantic-v2/circular-references-advanced/.mock/definition/ast.yml new file mode 100644 index 00000000000..c48c39070df --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/definition/ast.yml @@ -0,0 +1,23 @@ +types: + ContainerValue: + union: + list: list + optional: optional + PrimitiveValue: + enum: + - STRING + - NUMBER + ObjectValue: + properties: {} + FieldName: string + FieldValue: + union: + primitive_value: PrimitiveValue + object_value: ObjectValue + container_value: ContainerValue + ObjectFieldValue: + docs: This type allows us to test a circular reference with a union type (see FieldValue). + properties: + name: FieldName + value: FieldValue + diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/fern.config.json b/seed/pydantic-v2/circular-references-advanced/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/circular-references-advanced/.mock/generators.yml b/seed/pydantic-v2/circular-references-advanced/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/circular-references-advanced/resources/a/types/a.py b/seed/pydantic-v2/circular-references-advanced/resources/a/types/a.py new file mode 100644 index 00000000000..139fa30867e --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/resources/a/types/a.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from types.root_type import RootType +from dt import datetime +from core.datetime_utils import serialize_datetime +class A(BaseModel, RootType): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references-advanced/resources/ast/types/field_name.py b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/field_name.py new file mode 100644 index 00000000000..4c3c7bf38c1 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/field_name.py @@ -0,0 +1,15 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class FieldName(RootModel[str]): + root: str + def get_as_str() -> UUID: + return self.root + @staticmethod + def from_str(value: str) -> FieldName: + FieldName(root=value) + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_field_value.py b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_field_value.py new file mode 100644 index 00000000000..09a448fd03d --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_field_value.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from resources.ast.types.field_value import FieldValue +from dt import datetime +from core.datetime_utils import serialize_datetime +class ObjectFieldValue(BaseModel): +"""This type allows us to test a circular reference with a union type (see FieldValue).""" + name: str + value: FieldValue + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_value.py b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_value.py new file mode 100644 index 00000000000..58c0e5c70b6 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/resources/ast/types/object_value.py @@ -0,0 +1,9 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class ObjectValue(BaseModel): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references-advanced/snippet-templates.json b/seed/pydantic-v2/circular-references-advanced/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/circular-references-advanced/snippet.json b/seed/pydantic-v2/circular-references-advanced/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/circular-references-advanced/types/importing_a.py b/seed/pydantic-v2/circular-references-advanced/types/importing_a.py new file mode 100644 index 00000000000..f0c8d75fc54 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/types/importing_a.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from typing import Optional +from resources.a.types.a import A +from dt import datetime +from core.datetime_utils import serialize_datetime +class ImportingA(BaseModel): + a: Optional[A] = None + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references-advanced/types/root_type.py b/seed/pydantic-v2/circular-references-advanced/types/root_type.py new file mode 100644 index 00000000000..14b81f4acc3 --- /dev/null +++ b/seed/pydantic-v2/circular-references-advanced/types/root_type.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class RootType(BaseModel): + s: str + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/circular-references/.mock/definition/__package__.yml b/seed/pydantic-v2/circular-references/.mock/definition/__package__.yml new file mode 100644 index 00000000000..35979beb883 --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/definition/__package__.yml @@ -0,0 +1,13 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + a: a.yml + +types: + ImportingA: + properties: + a: optional + + RootType: + properties: + s: string diff --git a/seed/pydantic-v2/circular-references/.mock/definition/a.yml b/seed/pydantic-v2/circular-references/.mock/definition/a.yml new file mode 100644 index 00000000000..50553c25d2b --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/definition/a.yml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + root: __package__.yml + +types: + A: + extends: root.RootType diff --git a/seed/pydantic-v2/circular-references/.mock/definition/api.yml b/seed/pydantic-v2/circular-references/.mock/definition/api.yml new file mode 100644 index 00000000000..9a8ae7d166b --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/definition/api.yml @@ -0,0 +1 @@ +name: api diff --git a/seed/pydantic-v2/circular-references/.mock/definition/ast.yml b/seed/pydantic-v2/circular-references/.mock/definition/ast.yml new file mode 100644 index 00000000000..4d9e43d0c96 --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/definition/ast.yml @@ -0,0 +1,24 @@ +types: + FieldValue: + union: + primitive_value: PrimitiveValue + object_value: ObjectValue + container_value: ContainerValue + ContainerValue: + union: + list: list + optional: optional + PrimitiveValue: + enum: + - STRING + - NUMBER + ObjectValue: + properties: {} + JsonLike: + discriminated: false + union: + - list + - map + - string + - integer + - boolean diff --git a/seed/pydantic-v2/circular-references/.mock/fern.config.json b/seed/pydantic-v2/circular-references/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/circular-references/.mock/generators.yml b/seed/pydantic-v2/circular-references/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/circular-references/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/circular-references/resources/a/types/a.py b/seed/pydantic-v2/circular-references/resources/a/types/a.py new file mode 100644 index 00000000000..d2b7ba42b2c --- /dev/null +++ b/seed/pydantic-v2/circular-references/resources/a/types/a.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from types.root_type import RootType +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class A(BaseModel, RootType): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/circular-references/resources/ast/types/object_value.py b/seed/pydantic-v2/circular-references/resources/ast/types/object_value.py new file mode 100644 index 00000000000..3aaba108efa --- /dev/null +++ b/seed/pydantic-v2/circular-references/resources/ast/types/object_value.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ObjectValue(BaseModel): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/circular-references/snippet-templates.json b/seed/pydantic-v2/circular-references/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/circular-references/snippet.json b/seed/pydantic-v2/circular-references/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/circular-references/types/importing_a.py b/seed/pydantic-v2/circular-references/types/importing_a.py new file mode 100644 index 00000000000..b244dfbe62b --- /dev/null +++ b/seed/pydantic-v2/circular-references/types/importing_a.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.a.types.a import A +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ImportingA(BaseModel): + a: Optional[A] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/circular-references/types/root_type.py b/seed/pydantic-v2/circular-references/types/root_type.py new file mode 100644 index 00000000000..38f81334f22 --- /dev/null +++ b/seed/pydantic-v2/circular-references/types/root_type.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class RootType(BaseModel): + s: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/api.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/api.yml new file mode 100644 index 00000000000..f5655049c1b --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/api.yml @@ -0,0 +1,2 @@ +name: cross-package-type-names +default-environment: null \ No newline at end of file diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/commons.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/commons.yml new file mode 100644 index 00000000000..0cdcfc9fb9b --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/commons.yml @@ -0,0 +1,5 @@ +imports: + commons: commons.yml + +types: + Imported: string diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-a/service.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-a/service.yml new file mode 100644 index 00000000000..f1689cb232d --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-a/service.yml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderBCommons: ../folder-b/common.yml + +service: + auth: false + base-path: / + endpoints: + getDirectThread: + path: "" + method: GET + response: Response + +types: + Response: + properties: + foo: optional diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-b/common.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-b/common.yml new file mode 100644 index 00000000000..fe77c996c07 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-b/common.yml @@ -0,0 +1,9 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderCCommons: ../folder-c/common.yml + +types: + Foo: + properties: + foo: optional diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-c/common.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-c/common.yml new file mode 100644 index 00000000000..5911f31e57f --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-c/common.yml @@ -0,0 +1,6 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +types: + Foo: + properties: + bar_property: uuid diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-d/service.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-d/service.yml new file mode 100644 index 00000000000..f1689cb232d --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/folder-d/service.yml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + folderBCommons: ../folder-b/common.yml + +service: + auth: false + base-path: / + endpoints: + getDirectThread: + path: "" + method: GET + response: Response + +types: + Response: + properties: + foo: optional diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/definition/foo.yml b/seed/pydantic-v2/cross-package-type-names/.mock/definition/foo.yml new file mode 100644 index 00000000000..c2f42ee8407 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/definition/foo.yml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + commons: commons.yml + +service: + auth: false + base-path: / + endpoints: + find: + path: "" + method: POST + request: + name: FindRequest + query-parameters: + optionalString: + type: OptionalString + body: + properties: + publicProperty: + type: optional + privateProperty: optional + response: ImportingType + +types: + ImportingType: + properties: + imported: commons.Imported + OptionalString: optional diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/fern.config.json b/seed/pydantic-v2/cross-package-type-names/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/cross-package-type-names/.mock/generators.yml b/seed/pydantic-v2/cross-package-type-names/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/commons/types/imported.py b/seed/pydantic-v2/cross-package-type-names/resources/commons/types/imported.py new file mode 100644 index 00000000000..bca598f7b52 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/commons/types/imported.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Imported(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Imported: + Imported(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/folder_a/resources/service/types/response.py b/seed/pydantic-v2/cross-package-type-names/resources/folder_a/resources/service/types/response.py new file mode 100644 index 00000000000..df2a7e334f8 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/folder_a/resources/service/types/response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.folder_b.resources.common.types.foo import Foo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel): + foo: Optional[Foo] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/folder_b/resources/common/types/foo.py b/seed/pydantic-v2/cross-package-type-names/resources/folder_b/resources/common/types/foo.py new file mode 100644 index 00000000000..07885b311be --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/folder_b/resources/common/types/foo.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.folder_c.resources.common.types.foo import Foo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Foo(BaseModel): + foo: Optional[Foo] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/folder_c/resources/common/types/foo.py b/seed/pydantic-v2/cross-package-type-names/resources/folder_c/resources/common/types/foo.py new file mode 100644 index 00000000000..d05f2f615a6 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/folder_c/resources/common/types/foo.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from uuid import UUID +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Foo(BaseModel): + bar_property: UUID + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/folder_d/resources/service/types/response.py b/seed/pydantic-v2/cross-package-type-names/resources/folder_d/resources/service/types/response.py new file mode 100644 index 00000000000..df2a7e334f8 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/folder_d/resources/service/types/response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from resources.folder_b.resources.common.types.foo import Foo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel): + foo: Optional[Foo] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/foo/types/importing_type.py b/seed/pydantic-v2/cross-package-type-names/resources/foo/types/importing_type.py new file mode 100644 index 00000000000..f777bbecfaa --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/foo/types/importing_type.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ImportingType(BaseModel): + imported: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/resources/foo/types/optional_string.py b/seed/pydantic-v2/cross-package-type-names/resources/foo/types/optional_string.py new file mode 100644 index 00000000000..7eef91b3a41 --- /dev/null +++ b/seed/pydantic-v2/cross-package-type-names/resources/foo/types/optional_string.py @@ -0,0 +1,20 @@ +from pydantic import RootModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class OptionalString(RootModel[Optional[str]]): + root: Optional[str] + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: Optional[str]) -> OptionalString: + OptionalString(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/cross-package-type-names/snippet-templates.json b/seed/pydantic-v2/cross-package-type-names/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/cross-package-type-names/snippet.json b/seed/pydantic-v2/cross-package-type-names/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/custom-auth/.mock/definition/api.yml b/seed/pydantic-v2/custom-auth/.mock/definition/api.yml new file mode 100644 index 00000000000..1d61eeff283 --- /dev/null +++ b/seed/pydantic-v2/custom-auth/.mock/definition/api.yml @@ -0,0 +1,8 @@ +name: custom-auth +auth: CustomAuthScheme +auth-schemes: + CustomAuthScheme: + header: X-API-KEY + type: string +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/custom-auth/.mock/definition/custom-auth.yml b/seed/pydantic-v2/custom-auth/.mock/definition/custom-auth.yml new file mode 100644 index 00000000000..de23674da02 --- /dev/null +++ b/seed/pydantic-v2/custom-auth/.mock/definition/custom-auth.yml @@ -0,0 +1,30 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + errors: ./errors.yml + +service: + auth: false + base-path: "" + endpoints: + getWithCustomAuth: + auth: true + docs: GET request with custom auth scheme + path: /custom-auth + method: GET + response: boolean + errors: + - errors.UnauthorizedRequest + + postWithCustomAuth: + auth: true + docs: POST request with custom auth scheme + path: /custom-auth + method: POST + request: + name: PostWithCustomAuth + body: unknown + response: boolean + errors: + - errors.UnauthorizedRequest + - errors.BadRequest diff --git a/seed/pydantic-v2/custom-auth/.mock/definition/errors.yml b/seed/pydantic-v2/custom-auth/.mock/definition/errors.yml new file mode 100644 index 00000000000..cdd6a966703 --- /dev/null +++ b/seed/pydantic-v2/custom-auth/.mock/definition/errors.yml @@ -0,0 +1,11 @@ +errors: + UnauthorizedRequest: + status-code: 401 + type: UnauthorizedRequestErrorBody + BadRequest: + status-code: 400 + +types: + UnauthorizedRequestErrorBody: + properties: + message: string diff --git a/seed/pydantic-v2/custom-auth/.mock/fern.config.json b/seed/pydantic-v2/custom-auth/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/custom-auth/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/custom-auth/.mock/generators.yml b/seed/pydantic-v2/custom-auth/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/custom-auth/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/custom-auth/resources/errors/types/unauthorized_request_error_body.py b/seed/pydantic-v2/custom-auth/resources/errors/types/unauthorized_request_error_body.py new file mode 100644 index 00000000000..b1ed2dd64d1 --- /dev/null +++ b/seed/pydantic-v2/custom-auth/resources/errors/types/unauthorized_request_error_body.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UnauthorizedRequestErrorBody(BaseModel): + message: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/custom-auth/snippet-templates.json b/seed/pydantic-v2/custom-auth/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/custom-auth/snippet.json b/seed/pydantic-v2/custom-auth/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/enum/.mock/definition/__package__.yml b/seed/pydantic-v2/enum/.mock/definition/__package__.yml new file mode 100644 index 00000000000..a72e076f94d --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/definition/__package__.yml @@ -0,0 +1,38 @@ +types: + Operand: + docs: | + Tests enum name and value can be + different. + enum: + - value: ">" + name: GREATER_THAN + - value: "=" + name: EQUAL_TO + - value: "less_than" + docs: | + The name and value should be similar + are similar for less than. + examples: + - name: GreaterThan + value: ">" + - name: LessThan + value: "less_than" + + Color: + enum: + - value: "red" + name: RED + - value: "blue" + name: BLUE + examples: + - name: Red + value: "red" + + ColorOrOperand: + discriminated: false + union: + - Color + - Operand + examples: + - name: Red + value: "red" diff --git a/seed/pydantic-v2/enum/.mock/definition/api.yml b/seed/pydantic-v2/enum/.mock/definition/api.yml new file mode 100644 index 00000000000..3e2ce7d17a8 --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/definition/api.yml @@ -0,0 +1 @@ +name: enum diff --git a/seed/pydantic-v2/enum/.mock/definition/inlined-request.yml b/seed/pydantic-v2/enum/.mock/definition/inlined-request.yml new file mode 100644 index 00000000000..f17deabdaaf --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/definition/inlined-request.yml @@ -0,0 +1,24 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /inlined + method: POST + request: + name: SendEnumInlinedRequest + body: + properties: + operand: + type: root.Operand + maybeOperand: optional + operandOrColor: root.ColorOrOperand + maybeOperandOrColor: optional + examples: + - request: + operand: $root.Operand.GreaterThan + operandOrColor: $root.ColorOrOperand.Red + \ No newline at end of file diff --git a/seed/pydantic-v2/enum/.mock/definition/path-param.yml b/seed/pydantic-v2/enum/.mock/definition/path-param.yml new file mode 100644 index 00000000000..5afc7329f1e --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/definition/path-param.yml @@ -0,0 +1,17 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /path/{operand}/{operandOrColor} + method: POST + path-parameters: + operand: root.Operand + operandOrColor: root.ColorOrOperand + examples: + - path-parameters: + operand: $root.Operand.GreaterThan + operandOrColor: $root.ColorOrOperand.Red diff --git a/seed/pydantic-v2/enum/.mock/definition/query-param.yml b/seed/pydantic-v2/enum/.mock/definition/query-param.yml new file mode 100644 index 00000000000..2b3724eba7e --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/definition/query-param.yml @@ -0,0 +1,40 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /query + method: POST + request: + name: SendEnumAsQueryParamRequest + query-parameters: + operand: root.Operand + maybeOperand: optional + operandOrColor: root.ColorOrOperand + maybeOperandOrColor: optional + examples: + - query-parameters: + operand: $root.Operand.GreaterThan + operandOrColor: $root.ColorOrOperand.Red + + sendList: + path: /query-list + method: POST + request: + name: SendEnumListAsQueryParamRequest + query-parameters: + operand: + type: root.Operand + allow-multiple: true + maybeOperand: + type: optional + allow-multiple: true + operandOrColor: + type: root.ColorOrOperand + allow-multiple: true + maybeOperandOrColor: + type: optional + allow-multiple: true diff --git a/seed/pydantic-v2/enum/.mock/fern.config.json b/seed/pydantic-v2/enum/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/enum/.mock/generators.yml b/seed/pydantic-v2/enum/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/enum/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/enum/snippet-templates.json b/seed/pydantic-v2/enum/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/enum/snippet.json b/seed/pydantic-v2/enum/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/error-property/.mock/definition/api.yml b/seed/pydantic-v2/error-property/.mock/definition/api.yml new file mode 100644 index 00000000000..48a882c38b3 --- /dev/null +++ b/seed/pydantic-v2/error-property/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: error-property +error-discrimination: + strategy: property + property-name: errorName diff --git a/seed/pydantic-v2/error-property/.mock/definition/errors.yml b/seed/pydantic-v2/error-property/.mock/definition/errors.yml new file mode 100644 index 00000000000..b700adf4582 --- /dev/null +++ b/seed/pydantic-v2/error-property/.mock/definition/errors.yml @@ -0,0 +1,9 @@ +errors: + PropertyBasedErrorTest: #returns a JSON object with { ErrorName: PropertyBasedErrorTest, body: {PropertyBasedErrorTestBody}} + status-code: 400 + type: PropertyBasedErrorTestBody + +types: + PropertyBasedErrorTestBody: + properties: + message: string diff --git a/seed/pydantic-v2/error-property/.mock/definition/property-based-error.yml b/seed/pydantic-v2/error-property/.mock/definition/property-based-error.yml new file mode 100644 index 00000000000..dd93ae75fc0 --- /dev/null +++ b/seed/pydantic-v2/error-property/.mock/definition/property-based-error.yml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +#return an error no matter what for this endpoint so that the errorName can be confirmed + +imports: + errors: ./errors.yml + +service: + auth: false + base-path: "" + endpoints: + ThrowError: + docs: GET request that always throws an error + path: /property-based-error + method: GET + response: string + errors: + - errors.PropertyBasedErrorTest diff --git a/seed/pydantic-v2/error-property/.mock/fern.config.json b/seed/pydantic-v2/error-property/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/error-property/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/error-property/.mock/generators.yml b/seed/pydantic-v2/error-property/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/error-property/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/error-property/resources/errors/types/property_based_error_test_body.py b/seed/pydantic-v2/error-property/resources/errors/types/property_based_error_test_body.py new file mode 100644 index 00000000000..f90afd34389 --- /dev/null +++ b/seed/pydantic-v2/error-property/resources/errors/types/property_based_error_test_body.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class PropertyBasedErrorTestBody(BaseModel): + message: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/error-property/snippet-templates.json b/seed/pydantic-v2/error-property/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/error-property/snippet.json b/seed/pydantic-v2/error-property/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/examples/.mock/definition/__package__.yml b/seed/pydantic-v2/examples/.mock/definition/__package__.yml new file mode 100644 index 00000000000..6ffd6f61506 --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/__package__.yml @@ -0,0 +1,48 @@ +types: + Type: + discriminated: false + union: + - BasicType + - ComplexType + + Identifier: + properties: + type: Type + value: string + label: string + + BasicType: + enum: + - name: Primitive + value: primitive + - name: Literal + value: literal + + ComplexType: + enum: + - name: Object + value: object + - name: Union + value: union + - name: unknown + value: unknown + +service: + auth: false + base-path: / + endpoints: + echo: + method: POST + path: "" + request: string + response: string + examples: + - request: Hello world!\n\nwith\n\tnewlines + response: + body: Hello world!\n\nwith\n\tnewlines + + createType: + method: POST + path: "" + request: Type + response: Identifier \ No newline at end of file diff --git a/seed/pydantic-v2/examples/.mock/definition/api.yml b/seed/pydantic-v2/examples/.mock/definition/api.yml new file mode 100644 index 00000000000..3f3cb4540de --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/api.yml @@ -0,0 +1,8 @@ +name: examples +auth: bearer +error-discrimination: + strategy: status-code +environments: + Production: https://production.com/api + Staging: https://staging.com/api +default-environment: null diff --git a/seed/pydantic-v2/examples/.mock/definition/commons/types.yml b/seed/pydantic-v2/examples/.mock/definition/commons/types.yml new file mode 100644 index 00000000000..33f95a4ab1b --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/commons/types.yml @@ -0,0 +1,43 @@ +types: + Tag: + type: string + examples: + - name: One + value: tag-wf9as23d + + Metadata: + properties: + id: string + data: optional> + jsonString: optional + examples: + - name: One + value: + id: metadata-js8dg24b + data: + foo: bar + baz: qux + jsonString: '{"foo": "bar", "baz": "qux"}' + + EventInfo: + union: + metadata: Metadata + tag: Tag + examples: + - name: Metadata + value: + type: metadata + id: metadata-alskjfg8 + data: + one: two + jsonString: '{"one": "two"}' + + Data: + union: + string: string + base64: base64 + examples: + - name: String + value: + type: string + value: data diff --git a/seed/pydantic-v2/examples/.mock/definition/file/notification/service.yml b/seed/pydantic-v2/examples/.mock/definition/file/notification/service.yml new file mode 100644 index 00000000000..7f518565dcf --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/file/notification/service.yml @@ -0,0 +1,18 @@ +imports: + types: ../../types.yml + +service: + auth: true + base-path: /file/notification/{notificationId} + path-parameters: + notificationId: string + endpoints: + getException: + method: GET + path: "" + response: types.Exception + examples: + - path-parameters: + notificationId: notification-hsy129x + response: + body: $types.Exception.One diff --git a/seed/pydantic-v2/examples/.mock/definition/file/service.yml b/seed/pydantic-v2/examples/.mock/definition/file/service.yml new file mode 100644 index 00000000000..349d80d6543 --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/file/service.yml @@ -0,0 +1,37 @@ +imports: + types: ../types.yml + +types: + Filename: + type: string + examples: + - name: Example0 + value: file.txt + +service: + auth: true + base-path: /file + headers: + X-File-API-Version: string + endpoints: + getFile: + docs: "This endpoint returns a file by its name." + method: GET + path: /{filename} + path-parameters: + filename: + type: string + docs: This is a filename + request: + name: GetFileRequest + response: types.File + errors: + - types.NotFoundError + examples: + - path-parameters: + filename: $Filename.Example0 + headers: + X-File-API-Version: 0.0.2 + response: + error: types.NotFoundError + body: A file with that name was not found! diff --git a/seed/pydantic-v2/examples/.mock/definition/health/service.yml b/seed/pydantic-v2/examples/.mock/definition/health/service.yml new file mode 100644 index 00000000000..46ba829d120 --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/health/service.yml @@ -0,0 +1,32 @@ +imports: + types: ../types.yml + +service: + auth: true + base-path: / + endpoints: + check: + docs: "This endpoint checks the health of a resource." + method: GET + path: /check/{id} + path-parameters: + id: + type: string + docs: The id to check + examples: + - name: Example0 + path-parameters: + id: id-2sdx82h + - name: Example2 + path-parameters: + id: id-3tey93i + + ping: + docs: "This endpoint checks the health of the service." + method: GET + path: /ping + response: boolean + examples: + - name: Example0 + response: + body: true diff --git a/seed/pydantic-v2/examples/.mock/definition/service.yml b/seed/pydantic-v2/examples/.mock/definition/service.yml new file mode 100644 index 00000000000..f564c7ce7e2 --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/service.yml @@ -0,0 +1,56 @@ +imports: + types: types.yml + +service: + auth: false + base-path: / + endpoints: + getMovie: + method: GET + path: /movie/{movieId} + path-parameters: + movieId: types.MovieId + response: types.Movie + examples: + - path-parameters: + movieId: $types.MovieId.One + response: + body: $types.Movie.One + + createMovie: + method: POST + path: /movie + request: types.Movie + response: types.MovieId + examples: + - request: $types.Movie.One + response: + body: $types.MovieId.One + + getMetadata: + method: GET + path: /metadata + request: + name: GetMetadataRequest + query-parameters: + shallow: optional + tag: + type: optional + allow-multiple: true + headers: + X-API-Version: string + response: types.Metadata + examples: + - query-parameters: + shallow: false + tag: development + headers: + X-API-Version: 0.0.1 + response: + body: $types.Metadata.One + + createBigEntity: + method: POST + path: /big-entity + request: types.BigEntity + response: types.Response \ No newline at end of file diff --git a/seed/pydantic-v2/examples/.mock/definition/types.yml b/seed/pydantic-v2/examples/.mock/definition/types.yml new file mode 100644 index 00000000000..ecceebe129c --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/definition/types.yml @@ -0,0 +1,314 @@ +imports: + commons: commons/types.yml + root: __package__.yml + +errors: + NotFoundError: + status-code: 404 + type: string + +types: + MovieId: + type: string + examples: + - name: One + value: movie-c06a4ad7 + + Movie: + properties: + id: MovieId + prequel: optional + title: string + from: string + rating: + type: double + docs: The rating scale is one to five stars + type: literal<"movie"> + tag: commons.Tag + book: optional + metadata: map + revenue: long + examples: + - name: One + value: + id: $MovieId.One + prequel: "movie-cv9b914f" + title: The Boy and the Heron + from: Hayao Miyazaki + rating: 8.0 + type: movie + tag: $commons.Tag.One + metadata: + actors: + - Christian Bale + - Florence Pugh + - Willem Dafoe + releaseDate: "2023-12-08" + ratings: + rottenTomatoes: 97 + imdb: 7.6 + revenue: 1000000 + + CastMember: + discriminated: false + union: + - Actor + - Actress + - StuntDouble + examples: + - name: Example0 + value: + id: actor_123 + name: "Brad Pitt" + - name: Example1 + value: $Actress.Example0 + + Actor: + properties: + name: string + id: string + + Actress: + properties: + name: string + id: string + examples: + - name: Example0 + value: + name: Jennifer Lawrence + id: actor_456 + + StuntDouble: + properties: + name: string + actorOrActressId: string + + ExtendedMovie: + extends: Movie + properties: + cast: list + examples: + - value: + id: movie-sda231x + title: Pulp Fiction + from: Quentin Tarantino + rating: 8.5 + type: movie + tag: tag-12efs9dv + cast: + - John Travolta + - Samuel L. Jackson + - Uma Thurman + - Bruce Willis + metadata: + academyAward: true + releaseDate: "2023-12-08" + ratings: + rottenTomatoes: 97 + imdb: 7.6 + revenue: 1000000 + + Moment: + properties: + id: uuid + date: date + datetime: datetime + examples: + - value: + id: 656f12d6-f592-444c-a1d3-a3cfd46d5b39 + date: 1994-01-01 + datetime: 1994-01-01T01:01:01Z + + File: + properties: + name: string + contents: string + examples: + - name: One + value: + name: file.txt + contents: ... + - name: Two + value: + name: another_file.txt + contents: ... + + Directory: + properties: + name: string + files: optional> + directories: optional> + examples: + - name: One + value: + name: root + files: + - $File.One + directories: + - name: tmp + files: + - $File.Two + + Node: + properties: + name: string + nodes: optional> + trees: optional> + examples: + - name: Tree + value: + name: root + nodes: + - $Node.Left + - $Node.Right + trees: + - $Tree.Root + - name: Left + value: + name: left + - name: Right + value: + name: right + + Tree: + properties: + nodes: optional> + examples: + - name: Root + value: + nodes: + - $Node.Left + - $Node.Right + + Metadata: + base-properties: + extra: map + tags: set + union: + html: string + markdown: string + examples: + - name: One + value: + type: html + extra: + version: 0.0.1 + tenancy: test + tags: + - development + - public + value: ... + + Exception: + union: + generic: ExceptionInfo + timeout: {} + examples: + - name: One + value: + type: generic + exceptionType: Unavailable + exceptionMessage: This component is unavailable! + exceptionStacktrace: + + ExceptionInfo: + properties: + exceptionType: string + exceptionMessage: string + exceptionStacktrace: string + examples: + - name: One + value: + exceptionType: Unavailable + exceptionMessage: This component is unavailable! + exceptionStacktrace: + + MigrationStatus: + enum: + - value: RUNNING + docs: The migration is running. + - value: FAILED + docs: The migration failed. + - FINISHED + examples: + - name: Running + value: RUNNING + - name: Failed + value: FAILED + + Migration: + properties: + name: string + status: MigrationStatus + examples: + - value: + name: 001_init + status: $MigrationStatus.Running + + Request: + properties: + request: unknown + examples: + - name: Empty + value: + request: {} + + Response: + properties: + response: unknown + identifiers: list + examples: + - name: String + value: + response: "Initializing..." + identifiers: + - type: primitive + value: 'example' + label: Primitive + - type: unknown + value: '{}' + label: Unknown + + ResponseType: + properties: + type: root.Type + + Test: + union: + and: boolean + or: boolean + examples: + - name: And + value: + type: and + value: true + - name: Or + value: + type: or + value: true + + Entity: + properties: + type: root.Type + name: string + examples: + - name: One + value: + type: unknown + name: unknown + + BigEntity: + properties: + castMember: optional + extendedMovie: optional + entity: optional + metadata: optional + commonMetadata: optional + eventInfo: optional + data: optional + migration: optional + exception: optional + test: optional + node: optional + directory: optional + moment: optional diff --git a/seed/pydantic-v2/examples/.mock/fern.config.json b/seed/pydantic-v2/examples/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/examples/.mock/generators.yml b/seed/pydantic-v2/examples/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/examples/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/examples/resources/commons/resources/types/types/metadata.py b/seed/pydantic-v2/examples/resources/commons/resources/types/types/metadata.py new file mode 100644 index 00000000000..6bd190834a7 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/commons/resources/types/types/metadata.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from typing import Optional, Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Metadata(BaseModel): + id: str + data: Optional[Dict[str, str]] = None + json_string: Optional[str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/commons/resources/types/types/tag.py b/seed/pydantic-v2/examples/resources/commons/resources/types/types/tag.py new file mode 100644 index 00000000000..9be1c20d23d --- /dev/null +++ b/seed/pydantic-v2/examples/resources/commons/resources/types/types/tag.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Tag(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Tag: + Tag(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/file/resources/service/types/filename.py b/seed/pydantic-v2/examples/resources/file/resources/service/types/filename.py new file mode 100644 index 00000000000..642ca36def9 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/file/resources/service/types/filename.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Filename(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Filename: + Filename(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/actor.py b/seed/pydantic-v2/examples/resources/types/types/actor.py new file mode 100644 index 00000000000..2a0ca861fb7 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/actor.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Actor(BaseModel): + name: str + id: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/actress.py b/seed/pydantic-v2/examples/resources/types/types/actress.py new file mode 100644 index 00000000000..e74c70e8cbb --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/actress.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Actress(BaseModel): + name: str + id: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/big_entity.py b/seed/pydantic-v2/examples/resources/types/types/big_entity.py new file mode 100644 index 00000000000..589edf4c1be --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/big_entity.py @@ -0,0 +1,38 @@ +from pydantic import BaseModel +from typing import Optional +from resources.types.types.cast_member import CastMember +from resources.types.types.extended_movie import ExtendedMovie +from resources.types.types.entity import Entity +from resources.types.types.metadata import Metadata +from resources.commons.resources.types.types.metadata import Metadata +from resources.commons.resources.types.types.event_info import EventInfo +from resources.commons.resources.types.types.data import Data +from resources.types.types.migration import Migration +from resources.types.types.exception import Exception +from resources.types.types.test import Test +from resources.types.types.node import Node +from resources.types.types.directory import Directory +from resources.types.types.moment import Moment +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class BigEntity(BaseModel): + cast_member: Optional[CastMember] + extended_movie: Optional[ExtendedMovie] + entity: Optional[Entity] = None + metadata: Optional[Metadata] = None + common_metadata: Optional[Metadata] + event_info: Optional[EventInfo] + data: Optional[Data] = None + migration: Optional[Migration] = None + exception: Optional[Exception] = None + test: Optional[Test] = None + node: Optional[Node] = None + directory: Optional[Directory] = None + moment: Optional[Moment] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/directory.py b/seed/pydantic-v2/examples/resources/types/types/directory.py new file mode 100644 index 00000000000..f6ce4623d4a --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/directory.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.types.types.file import File +from resources.types.types.directory import Directory +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Directory(BaseModel): + name: str + files: Optional[List[File]] = None + directories: Optional[List[Directory]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/entity.py b/seed/pydantic-v2/examples/resources/types/types/entity.py new file mode 100644 index 00000000000..2be7924b22c --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/entity.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from types.type import Type +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Entity(BaseModel): + type: Type + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/exception_info.py b/seed/pydantic-v2/examples/resources/types/types/exception_info.py new file mode 100644 index 00000000000..c29011aa0f1 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/exception_info.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ExceptionInfo(BaseModel): + exception_type: str + exception_message: str + exception_stacktrace: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/extended_movie.py b/seed/pydantic-v2/examples/resources/types/types/extended_movie.py new file mode 100644 index 00000000000..dda63a5bd5d --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/extended_movie.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from resources.types.types.movie import Movie +from typing import List +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ExtendedMovie(BaseModel, Movie): + cast: List[str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/file.py b/seed/pydantic-v2/examples/resources/types/types/file.py new file mode 100644 index 00000000000..ae36883611b --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/file.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class File(BaseModel): + name: str + contents: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/migration.py b/seed/pydantic-v2/examples/resources/types/types/migration.py new file mode 100644 index 00000000000..33e718afa61 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/migration.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from resources.types.types.migration_status import MigrationStatus +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Migration(BaseModel): + name: str + status: MigrationStatus + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/moment.py b/seed/pydantic-v2/examples/resources/types/types/moment.py new file mode 100644 index 00000000000..6b186825d59 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/moment.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from uuid import UUID +from datetime import datetime +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Moment(BaseModel): + id: UUID + date: str + datetime: datetime + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/movie.py b/seed/pydantic-v2/examples/resources/types/types/movie.py new file mode 100644 index 00000000000..03d68e992aa --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/movie.py @@ -0,0 +1,25 @@ +from pydantic import BaseModel +from typing import Optional, Dict, Any +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Movie(BaseModel): + id: str + prequel: Optional[str] = None + title: str + from_: str + rating: float + """ + The rating scale is one to five stars + """ + type: str + tag: str + book: Optional[str] = None + metadata: Dict[str, Any] + revenue: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/movie_id.py b/seed/pydantic-v2/examples/resources/types/types/movie_id.py new file mode 100644 index 00000000000..d18d5e6749e --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/movie_id.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class MovieId(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> MovieId: + MovieId(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/node.py b/seed/pydantic-v2/examples/resources/types/types/node.py new file mode 100644 index 00000000000..ec9b7a01a1c --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/node.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.types.types.node import Node +from resources.types.types.tree import Tree +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Node(BaseModel): + name: str + nodes: Optional[List[Node]] = None + trees: Optional[List[Tree]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/request.py b/seed/pydantic-v2/examples/resources/types/types/request.py new file mode 100644 index 00000000000..d257522f16e --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/request.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Any +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Request(BaseModel): + request: Any + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/response.py b/seed/pydantic-v2/examples/resources/types/types/response.py new file mode 100644 index 00000000000..a43a54bd9ef --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/response.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from typing import Any, List +from types.identifier import Identifier +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel): + response: Any + identifiers: List[Identifier] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/response_type.py b/seed/pydantic-v2/examples/resources/types/types/response_type.py new file mode 100644 index 00000000000..45a148d4339 --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/response_type.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from types.type import Type +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ResponseType(BaseModel): + type: Type + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/stunt_double.py b/seed/pydantic-v2/examples/resources/types/types/stunt_double.py new file mode 100644 index 00000000000..72ba3a84c9a --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/stunt_double.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class StuntDouble(BaseModel): + name: str + actor_or_actress_id: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/resources/types/types/tree.py b/seed/pydantic-v2/examples/resources/types/types/tree.py new file mode 100644 index 00000000000..eb25ec483cc --- /dev/null +++ b/seed/pydantic-v2/examples/resources/types/types/tree.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.types.types.node import Node +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Tree(BaseModel): + nodes: Optional[List[Node]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/examples/snippet-templates.json b/seed/pydantic-v2/examples/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/examples/snippet.json b/seed/pydantic-v2/examples/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/examples/types/identifier.py b/seed/pydantic-v2/examples/types/identifier.py new file mode 100644 index 00000000000..670642a42ed --- /dev/null +++ b/seed/pydantic-v2/examples/types/identifier.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from .types.type import Type +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Identifier(BaseModel): + type: Type + value: str + label: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/api.yml b/seed/pydantic-v2/exhaustive/.mock/definition/api.yml new file mode 100644 index 00000000000..dd65915538f --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: exhaustive +auth: bearer +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/container.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/container.yml new file mode 100644 index 00000000000..165a039dc65 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/container.yml @@ -0,0 +1,48 @@ +imports: + objects: ../types/object.yml + +service: + auth: true + base-path: /container + endpoints: + getAndReturnListOfPrimitives: + path: /list-of-primitives + method: POST + request: list + response: list + + getAndReturnListOfObjects: + path: /list-of-objects + method: POST + request: list + response: list + + getAndReturnSetOfPrimitives: + path: /set-of-primitives + method: POST + request: set + response: set + + getAndReturnSetOfObjects: + path: /set-of-objects + method: POST + request: set + response: set + + getAndReturnMapPrimToPrim: + path: /map-prim-to-prim + method: POST + request: map + response: map + + getAndReturnMapOfPrimToObject: + path: /map-prim-to-object + method: POST + request: map + response: map + + getAndReturnOptional: + path: /opt-objects + method: POST + request: optional + response: optional diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/enum.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/enum.yml new file mode 100644 index 00000000000..335a0889cc7 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/enum.yml @@ -0,0 +1,12 @@ +imports: + enums: ../types/enum.yml + +service: + auth: true + base-path: /enum + endpoints: + getAndReturnEnum: + method: POST + path: "" + request: enums.WeatherReport + response: enums.WeatherReport diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/http-methods.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/http-methods.yml new file mode 100644 index 00000000000..51a54c0802c --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/http-methods.yml @@ -0,0 +1,43 @@ +imports: + objects: ../types/object.yml + +service: + auth: true + base-path: /http-methods + + endpoints: + testGet: + method: GET + path: /{id} + path-parameters: + id: string + response: string + + testPost: + method: POST + path: "" + request: objects.ObjectWithRequiredField + response: objects.ObjectWithOptionalField + + testPut: + method: PUT + path: /{id} + path-parameters: + id: string + request: objects.ObjectWithRequiredField + response: objects.ObjectWithOptionalField + + testPatch: + method: PATCH + path: /{id} + path-parameters: + id: string + request: objects.ObjectWithOptionalField + response: objects.ObjectWithOptionalField + + testDelete: + method: DELETE + path: /{id} + path-parameters: + id: string + response: boolean diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/object.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/object.yml new file mode 100644 index 00000000000..9fad6aa2776 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/object.yml @@ -0,0 +1,44 @@ +imports: + objects: ../types/object.yml + +service: + auth: true + base-path: /object + endpoints: + getAndReturnWithOptionalField: + path: /get-and-return-with-optional-field + method: POST + request: objects.ObjectWithOptionalField + response: objects.ObjectWithOptionalField + + getAndReturnWithRequiredField: + path: /get-and-return-with-required-field + method: POST + request: objects.ObjectWithRequiredField + response: objects.ObjectWithRequiredField + + getAndReturnWithMapOfMap: + path: /get-and-return-with-map-of-map + method: POST + request: objects.ObjectWithMapOfMap + response: objects.ObjectWithMapOfMap + + getAndReturnNestedWithOptionalField: + path: /get-and-return-nested-with-optional-field + method: POST + request: objects.NestedObjectWithOptionalField + response: objects.NestedObjectWithOptionalField + + getAndReturnNestedWithRequiredField: + path: /get-and-return-nested-with-required-field/{string} + method: POST + path-parameters: + string: string + request: objects.NestedObjectWithRequiredField + response: objects.NestedObjectWithRequiredField + + getAndReturnNestedWithRequiredFieldAsList: + path: /get-and-return-nested-with-required-field-list + method: POST + request: list + response: objects.NestedObjectWithRequiredField diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/params.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/params.yml new file mode 100644 index 00000000000..7766547ad79 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/params.yml @@ -0,0 +1,57 @@ +service: + auth: true + base-path: /params + endpoints: + getWithPath: + docs: GET with path param + path: /path/{param} + path-parameters: + param: string + method: GET + response: string + + getWithQuery: + docs: GET with query param + path: "" + method: GET + request: + name: GetWithQuery + query-parameters: + query: string #mandatory for test + number: integer + + getWithAllowMultipleQuery: + docs: GET with multiple of same query param + path: "" + method: GET + request: + name: GetWithMultipleQuery + query-parameters: + query: + type: string + allow-multiple: true + numer: + type: integer + allow-multiple: true + + getWithPathAndQuery: + docs: GET with path and query params + path: /path-query/{param} + path-parameters: + param: string + method: GET + request: + name: GetWithPathAndQuery + query-parameters: + query: string #mandatory for test + + modifyWithPath: + docs: PUT to update with path param + path: /path/{param} + path-parameters: + param: string + method: PUT + request: + name: ModifyResourceAtPath + body: string + response: string diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/primitive.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/primitive.yml new file mode 100644 index 00000000000..8dd7674164c --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/primitive.yml @@ -0,0 +1,60 @@ +imports: + objects: ../types/object.yml + +service: + auth: true + base-path: /primitive + endpoints: + getAndReturnString: + path: /string + method: POST + request: string + response: string + + getAndReturnInt: + path: /integer + method: POST + request: integer + response: integer + + getAndReturnLong: + path: /long + method: POST + request: long + response: long + + getAndReturnDouble: + path: /double + method: POST + request: double + response: double + + getAndReturnBool: + path: /boolean + method: POST + request: boolean + response: boolean + + getAndReturnDatetime: + path: /datetime + method: POST + request: datetime + response: datetime + + getAndReturnDate: + path: /date + method: POST + request: date + response: date + + getAndReturnUUID: + path: /uuid + method: POST + request: uuid + response: uuid + + getAndReturnBase64: + path: /base64 + method: POST + request: base64 + response: base64 diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/union.yml b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/union.yml new file mode 100644 index 00000000000..ce9021160d7 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/endpoints/union.yml @@ -0,0 +1,12 @@ +imports: + unions: ../types/union.yml + +service: + auth: true + base-path: /union + endpoints: + getAndReturnUnion: + method: POST + path: "" + request: unions.Animal + response: unions.Animal diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/general-errors.yml b/seed/pydantic-v2/exhaustive/.mock/definition/general-errors.yml new file mode 100644 index 00000000000..5fbf9cfc417 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/general-errors.yml @@ -0,0 +1,9 @@ +errors: + BadRequestBody: + status-code: 400 + type: BadObjectRequestInfo + +types: + BadObjectRequestInfo: + properties: + message: string diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/inlined-requests.yml b/seed/pydantic-v2/exhaustive/.mock/definition/inlined-requests.yml new file mode 100644 index 00000000000..9347fe7e335 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/inlined-requests.yml @@ -0,0 +1,25 @@ +imports: + objects: ./types/object.yml + errors: ./general-errors.yml + +# test req bodies, path params, query params, multiple query params, etc. +# test union and enum as well + +service: + auth: false + base-path: /req-bodies + endpoints: + postWithObjectBodyandResponse: + docs: POST with custom object in request body, response is an object + path: /object + method: POST + request: + name: PostWithObjectBody + body: + properties: + string: string + integer: integer + NestedObject: objects.ObjectWithOptionalField + response: objects.ObjectWithOptionalField + errors: + - errors.BadRequestBody diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/no-auth.yml b/seed/pydantic-v2/exhaustive/.mock/definition/no-auth.yml new file mode 100644 index 00000000000..e3c33ed7fab --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/no-auth.yml @@ -0,0 +1,20 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +imports: + general-errors: ./general-errors.yml + +service: + auth: false + base-path: /no-auth + endpoints: + postWithNoAuth: + auth: false + docs: POST request with no auth + path: "" + method: POST + request: + name: PostWithNoAuth + body: unknown + response: boolean + errors: + - general-errors.BadRequestBody diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/no-req-body.yml b/seed/pydantic-v2/exhaustive/.mock/definition/no-req-body.yml new file mode 100644 index 00000000000..daffd9a495c --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/no-req-body.yml @@ -0,0 +1,16 @@ +imports: + objects: ./types/object.yml + +service: + auth: true + base-path: /no-req-body + endpoints: + getWithNoRequestBody: + path: "" + method: GET + response: objects.ObjectWithOptionalField + + postWithNoRequestBody: + path: "" + method: POST + response: string diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/req-with-headers.yml b/seed/pydantic-v2/exhaustive/.mock/definition/req-with-headers.yml new file mode 100644 index 00000000000..9e49725782f --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/req-with-headers.yml @@ -0,0 +1,14 @@ +service: + base-path: /test-headers + auth: true + headers: + X-TEST-SERVICE-HEADER: string + endpoints: + getWithCustomHeader: + path: /custom-header + method: POST + request: + name: ReqWithHeaders + headers: + X-TEST-ENDPOINT-HEADER: string + body: string diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/types/enum.yml b/seed/pydantic-v2/exhaustive/.mock/definition/types/enum.yml new file mode 100644 index 00000000000..a90686092e9 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/types/enum.yml @@ -0,0 +1,12 @@ +types: + WeatherReport: + enum: + - SUNNY + - CLOUDY + - RAINING + - SNOWING + +errors: + ErrorWithEnumBody: + status-code: 400 + type: WeatherReport #does this even make sense? the type of the error body would be enum, and it could only be one of the 4 values? diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/types/object.yml b/seed/pydantic-v2/exhaustive/.mock/definition/types/object.yml new file mode 100644 index 00000000000..a165ed94cfe --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/types/object.yml @@ -0,0 +1,59 @@ +types: + ObjectWithOptionalField: #generic object that supports any type, makes it easier to use when testing + properties: + string: + type: optional + docs: This is a rather long descriptor of this single field in a more complex type. If you ask me I think this is a pretty good description for this field all things considered. + integer: optional + long: optional + double: optional + bool: optional + datetime: optional + date: optional + uuid: optional + base64: optional + list: optional> + set: optional> + map: optional> + bigint: optional + + ObjectWithRequiredField: + properties: + string: string + + ObjectWithMapOfMap: + properties: + map: map> + + NestedObjectWithOptionalField: + properties: + string: optional + NestedObject: optional + + NestedObjectWithRequiredField: + properties: + string: string + NestedObject: ObjectWithOptionalField + + DoubleOptional: + properties: + optionalAlias: optional + + OptionalAlias: optional + +errors: + ObjectWithOptionalFieldError: + status-code: 400 + type: ObjectWithOptionalField + + ObjectWithRequiredFieldError: + status-code: 400 + type: ObjectWithRequiredField + + NestedObjectWithOptionalFieldError: + status-code: 400 + type: NestedObjectWithOptionalField + + NestedObjectWithRequiredFieldError: + status-code: 400 + type: NestedObjectWithRequiredField diff --git a/seed/pydantic-v2/exhaustive/.mock/definition/types/union.yml b/seed/pydantic-v2/exhaustive/.mock/definition/types/union.yml new file mode 100644 index 00000000000..99ce8c75ed0 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/definition/types/union.yml @@ -0,0 +1,21 @@ +types: + Animal: + discriminant: animal + union: + dog: Dog + cat: Cat + + Dog: + properties: + name: string + likesToWoof: boolean + + Cat: + properties: + name: string + likesToMeow: boolean + +errors: + ErrorWithUnionBody: + status-code: 400 + type: Animal #has to send either dog or cat object in error body diff --git a/seed/pydantic-v2/exhaustive/.mock/fern.config.json b/seed/pydantic-v2/exhaustive/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/exhaustive/.mock/generators.yml b/seed/pydantic-v2/exhaustive/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/exhaustive/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/exhaustive/resources/general_errors/types/bad_object_request_info.py b/seed/pydantic-v2/exhaustive/resources/general_errors/types/bad_object_request_info.py new file mode 100644 index 00000000000..291b3584199 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/general_errors/types/bad_object_request_info.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class BadObjectRequestInfo(BaseModel): + message: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/double_optional.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/double_optional.py new file mode 100644 index 00000000000..2845167b3c9 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/double_optional.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class DoubleOptional(BaseModel): + optional_alias: Optional[Optional[str]] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_optional_field.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_optional_field.py new file mode 100644 index 00000000000..671aaca7bf2 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_optional_field.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional +from resources.types.resources.object.types.object_with_optional_field import ( + ObjectWithOptionalField, +) +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedObjectWithOptionalField(BaseModel): + string: Optional[str] = None + nested_object: Optional[ObjectWithOptionalField] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_required_field.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_required_field.py new file mode 100644 index 00000000000..24cdbc73cc0 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/nested_object_with_required_field.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from resources.types.resources.object.types.object_with_optional_field import ( + ObjectWithOptionalField, +) +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedObjectWithRequiredField(BaseModel): + string: str + nested_object: ObjectWithOptionalField + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_map_of_map.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_map_of_map.py new file mode 100644 index 00000000000..48509979230 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_map_of_map.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ObjectWithMapOfMap(BaseModel): + map_: Dict[str, Dict[str, str]] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_optional_field.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_optional_field.py new file mode 100644 index 00000000000..e62353d62f4 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_optional_field.py @@ -0,0 +1,30 @@ +from pydantic import BaseModel +from typing import Optional, List, Set, Dict +from datetime import datetime +from uuid import UUID +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ObjectWithOptionalField(BaseModel): + string: Optional[str] = None + """ + This is a rather long descriptor of this single field in a more complex type. If you ask me I think this is a pretty good description for this field all things considered. + """ + integer: Optional[int] = None + long_: Optional[int] + double: Optional[float] = None + bool_: Optional[bool] + datetime: Optional[datetime] = None + date: Optional[str] = None + uuid_: Optional[UUID] + base_64: Optional[bytes] + list_: Optional[List[str]] + set_: Optional[Set[str]] + map_: Optional[Dict[int, str]] + bigint: Optional[str] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_required_field.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_required_field.py new file mode 100644 index 00000000000..6e575132a6c --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/object_with_required_field.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ObjectWithRequiredField(BaseModel): + string: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/optional_alias.py b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/optional_alias.py new file mode 100644 index 00000000000..04019f986cb --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/object/types/optional_alias.py @@ -0,0 +1,20 @@ +from pydantic import RootModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class OptionalAlias(RootModel[Optional[str]]): + root: Optional[str] + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: Optional[str]) -> OptionalAlias: + OptionalAlias(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/cat.py b/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/cat.py new file mode 100644 index 00000000000..b997e985dc7 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/cat.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Cat(BaseModel): + name: str + likes_to_meow: bool + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/dog.py b/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/dog.py new file mode 100644 index 00000000000..0111cd78b84 --- /dev/null +++ b/seed/pydantic-v2/exhaustive/resources/types/resources/union/types/dog.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Dog(BaseModel): + name: str + likes_to_woof: bool + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/exhaustive/snippet-templates.json b/seed/pydantic-v2/exhaustive/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/exhaustive/snippet.json b/seed/pydantic-v2/exhaustive/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/extends/.mock/definition/__package__.yml b/seed/pydantic-v2/extends/.mock/definition/__package__.yml new file mode 100644 index 00000000000..110080301d7 --- /dev/null +++ b/seed/pydantic-v2/extends/.mock/definition/__package__.yml @@ -0,0 +1,52 @@ +service: + auth: false + base-path: /extends + endpoints: + extendedInlineRequestBody: + path: /extended-inline-request-body + method: POST + request: + name: Inlined + body: + properties: + unique: string + extends: ExampleType +types: + ExampleType: + extends: Docs + properties: + name: string + examples: + - name: One + value: + docs: This is an example type. + name: Example + + NestedType: + extends: JSON + properties: + name: string + examples: + - name: One + value: + docs: This is an example nested type. + name: NestedExample + raw: '{"nested": "example"}' + + Docs: + properties: + docs: string + examples: + - name: One + value: + docs: Types extend this type to include a docs property. + + JSON: + extends: Docs + properties: + raw: string + examples: + - name: One + value: + docs: Types extend this type to include a docs and json property. + raw: '{"docs": true, "json": true}' diff --git a/seed/pydantic-v2/extends/.mock/definition/api.yml b/seed/pydantic-v2/extends/.mock/definition/api.yml new file mode 100644 index 00000000000..3d8c3b68e2d --- /dev/null +++ b/seed/pydantic-v2/extends/.mock/definition/api.yml @@ -0,0 +1 @@ +name: extends diff --git a/seed/pydantic-v2/extends/.mock/fern.config.json b/seed/pydantic-v2/extends/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/extends/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/extends/.mock/generators.yml b/seed/pydantic-v2/extends/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/extends/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/extends/snippet-templates.json b/seed/pydantic-v2/extends/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/extends/snippet.json b/seed/pydantic-v2/extends/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/extends/types/docs.py b/seed/pydantic-v2/extends/types/docs.py new file mode 100644 index 00000000000..bc94b5f60c3 --- /dev/null +++ b/seed/pydantic-v2/extends/types/docs.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Docs(BaseModel): + docs: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/extends/types/example_type.py b/seed/pydantic-v2/extends/types/example_type.py new file mode 100644 index 00000000000..780ebff5a37 --- /dev/null +++ b/seed/pydantic-v2/extends/types/example_type.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from .types.docs import Docs +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ExampleType(BaseModel, Docs): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/extends/types/json.py b/seed/pydantic-v2/extends/types/json.py new file mode 100644 index 00000000000..26c4ccc10e4 --- /dev/null +++ b/seed/pydantic-v2/extends/types/json.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from .types.docs import Docs +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Json(BaseModel, Docs): + raw: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/extends/types/nested_type.py b/seed/pydantic-v2/extends/types/nested_type.py new file mode 100644 index 00000000000..d4709ecf1f4 --- /dev/null +++ b/seed/pydantic-v2/extends/types/nested_type.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from .types.json import Json +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedType(BaseModel, Json): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/extra-properties/.mock/definition/__package__.yml b/seed/pydantic-v2/extra-properties/.mock/definition/__package__.yml new file mode 100644 index 00000000000..24bbfd0a4e5 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/.mock/definition/__package__.yml @@ -0,0 +1,5 @@ +types: + Failure: + extra-properties: true + properties: + status: literal<"failure"> diff --git a/seed/pydantic-v2/extra-properties/.mock/definition/api.yml b/seed/pydantic-v2/extra-properties/.mock/definition/api.yml new file mode 100644 index 00000000000..63aac580b28 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/.mock/definition/api.yml @@ -0,0 +1 @@ +name: extra-properties \ No newline at end of file diff --git a/seed/pydantic-v2/extra-properties/.mock/definition/user.yml b/seed/pydantic-v2/extra-properties/.mock/definition/user.yml new file mode 100644 index 00000000000..bd4e43eaa67 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/.mock/definition/user.yml @@ -0,0 +1,22 @@ +types: + User: + extra-properties: true + properties: + name: string + +service: + auth: false + base-path: / + endpoints: + createUser: + path: /user + method: POST + request: + name: CreateUserRequest + body: + extra-properties: true + properties: + _type: literal<"CreateUserRequest"> + _version: literal<"v1"> + name: string + response: User \ No newline at end of file diff --git a/seed/pydantic-v2/extra-properties/.mock/fern.config.json b/seed/pydantic-v2/extra-properties/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/extra-properties/.mock/generators.yml b/seed/pydantic-v2/extra-properties/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/extra-properties/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/extra-properties/resources/user/types/user.py b/seed/pydantic-v2/extra-properties/resources/user/types/user.py new file mode 100644 index 00000000000..7f16724e3d4 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/resources/user/types/user.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class User(BaseModel): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/extra-properties/snippet-templates.json b/seed/pydantic-v2/extra-properties/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/extra-properties/snippet.json b/seed/pydantic-v2/extra-properties/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/extra-properties/types/failure.py b/seed/pydantic-v2/extra-properties/types/failure.py new file mode 100644 index 00000000000..860a7960653 --- /dev/null +++ b/seed/pydantic-v2/extra-properties/types/failure.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Failure(BaseModel): + status: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/file-download/.mock/definition/api.yml b/seed/pydantic-v2/file-download/.mock/definition/api.yml new file mode 100644 index 00000000000..567ec30f014 --- /dev/null +++ b/seed/pydantic-v2/file-download/.mock/definition/api.yml @@ -0,0 +1 @@ +name: file-download diff --git a/seed/pydantic-v2/file-download/.mock/definition/service.yml b/seed/pydantic-v2/file-download/.mock/definition/service.yml new file mode 100644 index 00000000000..0742fce9edb --- /dev/null +++ b/seed/pydantic-v2/file-download/.mock/definition/service.yml @@ -0,0 +1,8 @@ +service: + auth: false + base-path: / + endpoints: + downloadFile: + path: "" + method: POST + response: file diff --git a/seed/pydantic-v2/file-download/.mock/fern.config.json b/seed/pydantic-v2/file-download/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/file-download/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/file-download/.mock/generators.yml b/seed/pydantic-v2/file-download/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/file-download/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/file-download/snippet-templates.json b/seed/pydantic-v2/file-download/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/file-download/snippet.json b/seed/pydantic-v2/file-download/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/file-upload/.mock/definition/api.yml b/seed/pydantic-v2/file-upload/.mock/definition/api.yml new file mode 100644 index 00000000000..b7f420003fb --- /dev/null +++ b/seed/pydantic-v2/file-upload/.mock/definition/api.yml @@ -0,0 +1 @@ +name: file-upload diff --git a/seed/pydantic-v2/file-upload/.mock/definition/service.yml b/seed/pydantic-v2/file-upload/.mock/definition/service.yml new file mode 100644 index 00000000000..5ae95021c2d --- /dev/null +++ b/seed/pydantic-v2/file-upload/.mock/definition/service.yml @@ -0,0 +1,78 @@ +service: + auth: false + base-path: / + endpoints: + post: + path: "" + method: POST + request: + name: MyRequest + body: + properties: + maybeString: optional + integer: integer + file: file + fileList: list + maybeFile: optional + maybeFileList: optional> + maybeInteger: optional + optionalListOfStrings: optional> + listOfObjects: list + optionalMetadata: optional + optionalObjectType: optional + optionalId: optional + + justFile: + path: /just-file + method: POST + request: + name: JustFileRequet + body: + properties: + file: file + + justFileWithQueryParams: + path: /just-file-with-query-params + method: POST + request: + name: JustFileWithQueryParamsRequet + query-parameters: + maybeString: optional + integer: integer + maybeInteger: optional + listOfStrings: + type: string + allow-multiple: true + optionalListOfStrings: + type: optional + allow-multiple: true + body: + properties: + file: file + + withContentType: + path: "/with-content-type" + method: POST + request: + name: WithContentTypeRequest + body: + properties: + file: + type: file + content-type: application/octet-stream + foo: string + bar: + type: MyObject + content-type: application/json + +types: + Id: string + + MyObject: + properties: + foo: string + + ObjectType: + enum: + - FOO + - BAR \ No newline at end of file diff --git a/seed/pydantic-v2/file-upload/.mock/fern.config.json b/seed/pydantic-v2/file-upload/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/file-upload/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/file-upload/.mock/generators.yml b/seed/pydantic-v2/file-upload/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/file-upload/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/file-upload/resources/service/types/id.py b/seed/pydantic-v2/file-upload/resources/service/types/id.py new file mode 100644 index 00000000000..3f8f15db9d4 --- /dev/null +++ b/seed/pydantic-v2/file-upload/resources/service/types/id.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Id(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Id: + Id(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/file-upload/resources/service/types/my_object.py b/seed/pydantic-v2/file-upload/resources/service/types/my_object.py new file mode 100644 index 00000000000..b0d4b5e7e07 --- /dev/null +++ b/seed/pydantic-v2/file-upload/resources/service/types/my_object.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class MyObject(BaseModel): + foo: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/file-upload/snippet-templates.json b/seed/pydantic-v2/file-upload/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/file-upload/snippet.json b/seed/pydantic-v2/file-upload/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/folders/.mock/definition/__package__.yml b/seed/pydantic-v2/folders/.mock/definition/__package__.yml new file mode 100644 index 00000000000..e94d9e8e75a --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/__package__.yml @@ -0,0 +1,7 @@ +service: + base-path: / + auth: false + endpoints: + foo: + method: POST + path: "" diff --git a/seed/pydantic-v2/folders/.mock/definition/a/b/__package__.yml b/seed/pydantic-v2/folders/.mock/definition/a/b/__package__.yml new file mode 100644 index 00000000000..e94d9e8e75a --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/a/b/__package__.yml @@ -0,0 +1,7 @@ +service: + base-path: / + auth: false + endpoints: + foo: + method: POST + path: "" diff --git a/seed/pydantic-v2/folders/.mock/definition/a/c/__package__.yml b/seed/pydantic-v2/folders/.mock/definition/a/c/__package__.yml new file mode 100644 index 00000000000..e94d9e8e75a --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/a/c/__package__.yml @@ -0,0 +1,7 @@ +service: + base-path: / + auth: false + endpoints: + foo: + method: POST + path: "" diff --git a/seed/pydantic-v2/folders/.mock/definition/a/d/types.yml b/seed/pydantic-v2/folders/.mock/definition/a/d/types.yml new file mode 100644 index 00000000000..10d0cf8713d --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/a/d/types.yml @@ -0,0 +1,2 @@ +types: + Foo: string diff --git a/seed/pydantic-v2/folders/.mock/definition/api.yml b/seed/pydantic-v2/folders/.mock/definition/api.yml new file mode 100644 index 00000000000..9888645c477 --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: api + +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/folders/.mock/definition/folder/__package__.yml b/seed/pydantic-v2/folders/.mock/definition/folder/__package__.yml new file mode 100644 index 00000000000..e94d9e8e75a --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/folder/__package__.yml @@ -0,0 +1,7 @@ +service: + base-path: / + auth: false + endpoints: + foo: + method: POST + path: "" diff --git a/seed/pydantic-v2/folders/.mock/definition/folder/service.yml b/seed/pydantic-v2/folders/.mock/definition/folder/service.yml new file mode 100644 index 00000000000..8c8a291592d --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/definition/folder/service.yml @@ -0,0 +1,17 @@ +service: + base-path: /service + auth: false + endpoints: + endpoint: + method: GET + path: "" + unknownRequest: + method: POST + path: "" + request: unknown + errors: + - NotFoundError +errors: + NotFoundError: + status-code: 404 + type: string diff --git a/seed/pydantic-v2/folders/.mock/fern.config.json b/seed/pydantic-v2/folders/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/folders/.mock/generators.yml b/seed/pydantic-v2/folders/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/folders/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/folders/resources/a/resources/d/resources/types/types/foo.py b/seed/pydantic-v2/folders/resources/a/resources/d/resources/types/types/foo.py new file mode 100644 index 00000000000..441e7fcc277 --- /dev/null +++ b/seed/pydantic-v2/folders/resources/a/resources/d/resources/types/types/foo.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Foo(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Foo: + Foo(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/folders/snippet-templates.json b/seed/pydantic-v2/folders/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/folders/snippet.json b/seed/pydantic-v2/folders/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/fern.config.json b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/generators.yml b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/generators.yml new file mode 100644 index 00000000000..972ed6d7b73 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/generators.yml @@ -0,0 +1,6 @@ +api: + - proto: + root: proto + target: proto/data/v1/data.proto + overrides: overrides.yml + local-generation: true \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/overrides.yml b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/overrides.yml new file mode 100644 index 00000000000..062b98c2ccb --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/overrides.yml @@ -0,0 +1,56 @@ + +paths: + /data/fetch: + get: + x-fern-request-name: FetchRequest + /data/list: + get: + x-fern-request-name: ListRequest +components: + schemas: + Metadata: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MetadataValue' + - type: object + x-fern-encoding: + proto: + type: google.protobuf.Struct + MetadataValue: + oneOf: + - type: number + format: double + - type: string + - type: boolean + x-fern-encoding: + proto: + type: google.protobuf.Value + DeleteRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + DescribeRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryRequest: + properties: + filter: + $ref: '#/components/schemas/Metadata' + QueryColumn: + properties: + filter: + $ref: '#/components/schemas/Metadata' + ScoredColumn: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + UpdateRequest: + properties: + setMetadata: + $ref: '#/components/schemas/Metadata' + Column: + properties: + metadata: + $ref: '#/components/schemas/Metadata' \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/data/v1/data.proto b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/data/v1/data.proto new file mode 100644 index 00000000000..dc3b07ece42 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/data/v1/data.proto @@ -0,0 +1,213 @@ +syntax = "proto3"; + +package data.v1; + +import "google/protobuf/struct.proto"; +import "google/api/annotations.proto"; +import "google/api/field_behavior.proto"; + +option csharp_namespace = "Data.V1.Grpc"; +option go_package = "github.com/acme.co/data-go-grpc"; + +message IndexedData { + repeated uint32 indices = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; +} + +message Column { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct metadata = 3; + IndexedData indexed_data = 4; +} + +message ScoredColumn { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + float score = 2; + repeated float values = 3; + google.protobuf.Struct metadata = 4; + IndexedData indexed_data = 5; +} + +message UploadRequest { + repeated Column columns = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message UploadResponse { + uint32 count = 1; +} + +message DeleteRequest { + repeated string ids = 1; + bool delete_all = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; +} + +message DeleteResponse {} + +message FetchRequest { + repeated string ids = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + string namespace = 2; +} + +message FetchResponse { + map columns = 1; + string namespace = 2; + optional Usage usage = 3; +} + +message ListRequest { + optional string prefix = 1; + optional uint32 limit = 2; + optional string pagination_token = 3; + string namespace = 4; +} + +message Pagination { + string next = 1; +} + +message ListElement { + string id = 1; +} + +message ListResponse { + repeated ListElement columns = 1; + optional Pagination pagination = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message QueryColumn { + repeated float values = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + uint32 top_k = 2; + string namespace = 3; + google.protobuf.Struct filter = 4; + IndexedData indexed_data = 5; +} + +message QueryRequest { + string namespace = 1; + uint32 top_k = 2 [ + (google.api.field_behavior) = REQUIRED + ]; + google.protobuf.Struct filter = 3; + bool include_values = 4; + bool include_metadata = 5; + repeated QueryColumn queries = 6 [ + deprecated = true + ]; + repeated float column = 7; + string id = 8; + IndexedData indexed_data = 9; +} + +message QueryResult { + repeated ScoredColumn matches = 1; + string namespace = 2; +} + +message QueryResponse { + repeated QueryResult results = 1 [deprecated=true]; + repeated ScoredColumn matches = 2; + string namespace = 3; + optional Usage usage = 4; +} + +message Usage { + optional uint32 units = 1; +} + +message UpdateRequest { + string id = 1 [ + (google.api.field_behavior) = REQUIRED + ]; + repeated float values = 2; + google.protobuf.Struct set_metadata = 3; + string namespace = 4; + IndexedData indexed_data = 5; +} + +message UpdateResponse {} + +message DescribeRequest { + google.protobuf.Struct filter = 1; +} + +message NamespaceSummary { + uint32 count = 1; +} + +message DescribeResponse { + map namespaces = 1; + uint32 dimension = 2; + float fullness = 3; + uint32 total_count = 4; +} + +service DataService { + rpc Upload(UploadRequest) returns (UploadResponse) { + option (google.api.http) = { + post: "/data" + body: "*" + }; + } + + rpc Delete(DeleteRequest) returns (DeleteResponse) { + option (google.api.http) = { + post: "/data/delete" + body: "*" + }; + } + + rpc Fetch(FetchRequest) returns (FetchResponse) { + option (google.api.http) = { + get: "/data/fetch" + }; + } + + rpc List(ListRequest) returns (ListResponse) { + option (google.api.http) = { + get: "/data/list" + }; + } + + rpc Query(QueryRequest) returns (QueryResponse) { + option (google.api.http) = { + post: "/data/query" + body: "*" + }; + } + + rpc Update(UpdateRequest) returns (UpdateResponse) { + option (google.api.http) = { + post: "/data/update" + body: "*" + }; + } + + rpc Describe(DescribeRequest) returns (DescribeResponse) { + option (google.api.http) = { + post: "/data/describe" + body: "*" + }; + } +} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/annotations.proto b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/field_behavior.proto b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/field_behavior.proto new file mode 100644 index 00000000000..128799c558d --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/field_behavior.proto @@ -0,0 +1,104 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "FieldBehaviorProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.FieldOptions { + // A designation of a specific field behavior (required, output only, etc.) + // in protobuf messages. + // + // Examples: + // + // string name = 1 [(google.api.field_behavior) = REQUIRED]; + // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; + // google.protobuf.Duration ttl = 1 + // [(google.api.field_behavior) = INPUT_ONLY]; + // google.protobuf.Timestamp expire_time = 1 + // [(google.api.field_behavior) = OUTPUT_ONLY, + // (google.api.field_behavior) = IMMUTABLE]; + repeated google.api.FieldBehavior field_behavior = 1052; +} + +// An indicator of the behavior of a given field (for example, that a field +// is required in requests, or given as output but ignored as input). +// This **does not** change the behavior in protocol buffers itself; it only +// denotes the behavior and may affect how API tooling handles the field. +// +// Note: This enum **may** receive new values in the future. +enum FieldBehavior { + // Conventional default for enums. Do not use this. + FIELD_BEHAVIOR_UNSPECIFIED = 0; + + // Specifically denotes a field as optional. + // While all fields in protocol buffers are optional, this may be specified + // for emphasis if appropriate. + OPTIONAL = 1; + + // Denotes a field as required. + // This indicates that the field **must** be provided as part of the request, + // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). + REQUIRED = 2; + + // Denotes a field as output only. + // This indicates that the field is provided in responses, but including the + // field in a request does nothing (the server *must* ignore it and + // *must not* throw an error as a result of the field's presence). + OUTPUT_ONLY = 3; + + // Denotes a field as input only. + // This indicates that the field is provided in requests, and the + // corresponding field is not included in output. + INPUT_ONLY = 4; + + // Denotes a field as immutable. + // This indicates that the field may be set once in a request to create a + // resource, but may not be changed thereafter. + IMMUTABLE = 5; + + // Denotes that a (repeated) field is an unordered list. + // This indicates that the service may provide the elements of the list + // in any arbitrary order, rather than the order the user originally + // provided. Additionally, the list's order may or may not be stable. + UNORDERED_LIST = 6; + + // Denotes that this field returns a non-empty default value if not set. + // This indicates that if the user provides the empty value in a request, + // a non-empty value will be returned. The user will not be aware of what + // non-empty value to expect. + NON_EMPTY_DEFAULT = 7; + + // Denotes that the field in a resource (a message annotated with + // google.api.resource) is used in the resource name to uniquely identify the + // resource. For AIP-compliant APIs, this should only be applied to the + // `name` field on the resource. + // + // This behavior should not be applied to references to other resources within + // the message. + // + // The identifier field of resources often have different field behavior + // depending on the request it is embedded in (e.g. for Create methods name + // is optional and unused, while for Update methods it is required). Instead + // of method-specific annotations, only `IDENTIFIER` is required. + IDENTIFIER = 8; +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/http.proto b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/.mock/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/snippet-templates.json b/seed/pydantic-v2/grpc-proto-exhaustive/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/snippet.json b/seed/pydantic-v2/grpc-proto-exhaustive/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/column.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/column.py new file mode 100644 index 00000000000..8b4cf0a463c --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/column.py @@ -0,0 +1,18 @@ +from pydantic import BaseModel +from typing import List, Optional +from .types.metadata import Metadata +from .types.indexed_data import IndexedData +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Column(BaseModel): + id: str + values: List[float] + metadata: Optional[Metadata] = None + indexed_data: Optional[IndexedData] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/delete_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/delete_response.py new file mode 100644 index 00000000000..305bd059f6b --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/delete_response.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class DeleteResponse(BaseModel): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/describe_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/describe_response.py new file mode 100644 index 00000000000..c75169dec33 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/describe_response.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional, Dict +from .types.namespace_summary import NamespaceSummary +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class DescribeResponse(BaseModel): + namespaces: Optional[Dict[str, NamespaceSummary]] = None + dimension: Optional[int] = None + fullness: Optional[float] = None + total_count: Optional[int] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/fetch_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/fetch_response.py new file mode 100644 index 00000000000..f7f9cbff3f3 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/fetch_response.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional, Dict +from .types.column import Column +from .types.usage import Usage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class FetchResponse(BaseModel): + columns: Optional[Dict[str, Column]] = None + namespace: Optional[str] = None + usage: Optional[Usage] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/indexed_data.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/indexed_data.py new file mode 100644 index 00000000000..2d9de61c7c3 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/indexed_data.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import List +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class IndexedData(BaseModel): + indices: List[int] + values: List[float] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/list_element.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/list_element.py new file mode 100644 index 00000000000..b976fc1d997 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/list_element.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ListElement(BaseModel): + id: Optional[str] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/list_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/list_response.py new file mode 100644 index 00000000000..3e443d579aa --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/list_response.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel +from typing import Optional, List +from .types.list_element import ListElement +from .types.pagination import Pagination +from .types.usage import Usage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ListResponse(BaseModel): + columns: Optional[List[ListElement]] = None + pagination: Optional[Pagination] = None + namespace: Optional[str] = None + usage: Optional[Usage] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/namespace_summary.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/namespace_summary.py new file mode 100644 index 00000000000..4f3916693d9 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/namespace_summary.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NamespaceSummary(BaseModel): + count: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/pagination.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/pagination.py new file mode 100644 index 00000000000..aee7d1f9dd0 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/pagination.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Pagination(BaseModel): + next: Optional[str] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/query_column.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_column.py new file mode 100644 index 00000000000..e6fab001451 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_column.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel +from typing import List, Optional +from .types.metadata import Metadata +from .types.indexed_data import IndexedData +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class QueryColumn(BaseModel): + values: List[float] + top_k: Optional[int] + namespace: Optional[str] = None + filter: Optional[Metadata] = None + indexed_data: Optional[IndexedData] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/query_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_response.py new file mode 100644 index 00000000000..39f3af2268d --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_response.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel +from typing import Optional, List +from .types.query_result import QueryResult +from .types.scored_column import ScoredColumn +from .types.usage import Usage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class QueryResponse(BaseModel): + results: Optional[List[QueryResult]] = None + matches: Optional[List[ScoredColumn]] = None + namespace: Optional[str] = None + usage: Optional[Usage] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/query_result.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_result.py new file mode 100644 index 00000000000..47b8d984e60 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/query_result.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from typing import Optional, List +from .types.scored_column import ScoredColumn +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class QueryResult(BaseModel): + matches: Optional[List[ScoredColumn]] = None + namespace: Optional[str] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/scored_column.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/scored_column.py new file mode 100644 index 00000000000..31c75d88fdc --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/scored_column.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel +from typing import Optional, List +from .types.metadata import Metadata +from .types.indexed_data import IndexedData +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ScoredColumn(BaseModel): + id: str + score: Optional[float] = None + values: Optional[List[float]] = None + metadata: Optional[Metadata] = None + indexed_data: Optional[IndexedData] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/update_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/update_response.py new file mode 100644 index 00000000000..8cb6344fb5d --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/update_response.py @@ -0,0 +1,10 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UpdateResponse(BaseModel): + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/upload_response.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/upload_response.py new file mode 100644 index 00000000000..70453a37d3b --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/upload_response.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UploadResponse(BaseModel): + count: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto-exhaustive/types/usage.py b/seed/pydantic-v2/grpc-proto-exhaustive/types/usage.py new file mode 100644 index 00000000000..f70ca4fe3b5 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto-exhaustive/types/usage.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Usage(BaseModel): + units: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto/.mock/fern.config.json b/seed/pydantic-v2/grpc-proto/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto/.mock/generators.yml b/seed/pydantic-v2/grpc-proto/.mock/generators.yml new file mode 100644 index 00000000000..d6b509d39ea --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/generators.yml @@ -0,0 +1,6 @@ +api: + - proto: + root: proto + target: proto/user/v1/user.proto + overrides: overrides.yml + local-generation: true \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto/.mock/overrides.yml b/seed/pydantic-v2/grpc-proto/.mock/overrides.yml new file mode 100644 index 00000000000..bb6db99b0e4 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/overrides.yml @@ -0,0 +1,31 @@ +components: + schemas: + UserModel: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + + CreateRequest: + properties: + metadata: + $ref: '#/components/schemas/Metadata' + + Metadata: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MetadataValue' + - type: object + x-fern-encoding: + proto: + type: google.protobuf.Struct + + MetadataValue: + oneOf: + - type: number + format: double + - type: string + - type: boolean + x-fern-encoding: + proto: + type: google.protobuf.Value diff --git a/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/annotations.proto b/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/annotations.proto new file mode 100644 index 00000000000..8ff42098404 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/annotations.proto @@ -0,0 +1,31 @@ +// Copyright 2015 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +import "google/api/http.proto"; +import "google/protobuf/descriptor.proto"; + +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "AnnotationsProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +extend google.protobuf.MethodOptions { + // See `HttpRule`. + HttpRule http = 72295728; +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/http.proto b/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/http.proto new file mode 100644 index 00000000000..c8392381eb9 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/proto/google/api/http.proto @@ -0,0 +1,379 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package google.api; + +option cc_enable_arenas = true; +option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; +option java_multiple_files = true; +option java_outer_classname = "HttpProto"; +option java_package = "com.google.api"; +option objc_class_prefix = "GAPI"; + +// Defines the HTTP configuration for an API service. It contains a list of +// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method +// to one or more HTTP REST API methods. +message Http { + // A list of HTTP configuration rules that apply to individual API methods. + // + // **NOTE:** All service configuration rules follow "last one wins" order. + repeated HttpRule rules = 1; + + // When set to true, URL path parameters will be fully URI-decoded except in + // cases of single segment matches in reserved expansion, where "%2F" will be + // left encoded. + // + // The default behavior is to not decode RFC 6570 reserved characters in multi + // segment matches. + bool fully_decode_reserved_expansion = 2; +} + +// # gRPC Transcoding +// +// gRPC Transcoding is a feature for mapping between a gRPC method and one or +// more HTTP REST endpoints. It allows developers to build a single API service +// that supports both gRPC APIs and REST APIs. Many systems, including [Google +// APIs](https://github.com/googleapis/googleapis), +// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC +// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), +// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature +// and use it for large scale production services. +// +// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies +// how different portions of the gRPC request message are mapped to the URL +// path, URL query parameters, and HTTP request body. It also controls how the +// gRPC response message is mapped to the HTTP response body. `HttpRule` is +// typically specified as an `google.api.http` annotation on the gRPC method. +// +// Each mapping specifies a URL path template and an HTTP method. The path +// template may refer to one or more fields in the gRPC request message, as long +// as each field is a non-repeated field with a primitive (non-message) type. +// The path template controls how fields of the request message are mapped to +// the URL path. +// +// Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/{name=messages/*}" +// }; +// } +// } +// message GetMessageRequest { +// string name = 1; // Mapped to URL path. +// } +// message Message { +// string text = 1; // The resource content. +// } +// +// This enables an HTTP REST to gRPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` +// +// Any fields in the request message which are not bound by the path template +// automatically become HTTP query parameters if there is no HTTP request body. +// For example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get:"/v1/messages/{message_id}" +// }; +// } +// } +// message GetMessageRequest { +// message SubMessage { +// string subfield = 1; +// } +// string message_id = 1; // Mapped to URL path. +// int64 revision = 2; // Mapped to URL query parameter `revision`. +// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. +// } +// +// This enables a HTTP JSON to RPC mapping as below: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | +// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: +// "foo"))` +// +// Note that fields which are mapped to URL query parameters must have a +// primitive type or a repeated primitive type or a non-repeated message type. +// In the case of a repeated type, the parameter can be repeated in the URL +// as `...?param=A¶m=B`. In the case of a message type, each field of the +// message is mapped to a separate parameter, such as +// `...?foo.a=A&foo.b=B&foo.c=C`. +// +// For HTTP methods that allow a request body, the `body` field +// specifies the mapping. Consider a REST update method on the +// message resource collection: +// +// service Messaging { +// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "message" +// }; +// } +// } +// message UpdateMessageRequest { +// string message_id = 1; // mapped to the URL +// Message message = 2; // mapped to the body +// } +// +// The following HTTP JSON to RPC mapping is enabled, where the +// representation of the JSON in the request body is determined by +// protos JSON encoding: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" message { text: "Hi!" })` +// +// The special name `*` can be used in the body mapping to define that +// every field not bound by the path template should be mapped to the +// request body. This enables the following alternative definition of +// the update method: +// +// service Messaging { +// rpc UpdateMessage(Message) returns (Message) { +// option (google.api.http) = { +// patch: "/v1/messages/{message_id}" +// body: "*" +// }; +// } +// } +// message Message { +// string message_id = 1; +// string text = 2; +// } +// +// +// The following HTTP JSON to RPC mapping is enabled: +// +// HTTP | gRPC +// -----|----- +// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: +// "123456" text: "Hi!")` +// +// Note that when using `*` in the body mapping, it is not possible to +// have HTTP parameters, as all fields not bound by the path end in +// the body. This makes this option more rarely used in practice when +// defining REST APIs. The common usage of `*` is in custom methods +// which don't use the URL at all for transferring data. +// +// It is possible to define multiple HTTP methods for one RPC by using +// the `additional_bindings` option. Example: +// +// service Messaging { +// rpc GetMessage(GetMessageRequest) returns (Message) { +// option (google.api.http) = { +// get: "/v1/messages/{message_id}" +// additional_bindings { +// get: "/v1/users/{user_id}/messages/{message_id}" +// } +// }; +// } +// } +// message GetMessageRequest { +// string message_id = 1; +// string user_id = 2; +// } +// +// This enables the following two alternative HTTP JSON to RPC mappings: +// +// HTTP | gRPC +// -----|----- +// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` +// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: +// "123456")` +// +// ## Rules for HTTP mapping +// +// 1. Leaf request fields (recursive expansion nested messages in the request +// message) are classified into three categories: +// - Fields referred by the path template. They are passed via the URL path. +// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They +// are passed via the HTTP +// request body. +// - All other fields are passed via the URL query parameters, and the +// parameter name is the field path in the request message. A repeated +// field can be represented as multiple query parameters under the same +// name. +// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL +// query parameter, all fields +// are passed via URL path and HTTP request body. +// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP +// request body, all +// fields are passed via URL path and URL query parameters. +// +// ### Path template syntax +// +// Template = "/" Segments [ Verb ] ; +// Segments = Segment { "/" Segment } ; +// Segment = "*" | "**" | LITERAL | Variable ; +// Variable = "{" FieldPath [ "=" Segments ] "}" ; +// FieldPath = IDENT { "." IDENT } ; +// Verb = ":" LITERAL ; +// +// The syntax `*` matches a single URL path segment. The syntax `**` matches +// zero or more URL path segments, which must be the last part of the URL path +// except the `Verb`. +// +// The syntax `Variable` matches part of the URL path as specified by its +// template. A variable template must not contain other variables. If a variable +// matches a single path segment, its template may be omitted, e.g. `{var}` +// is equivalent to `{var=*}`. +// +// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` +// contains any reserved character, such characters should be percent-encoded +// before the matching. +// +// If a variable contains exactly one path segment, such as `"{var}"` or +// `"{var=*}"`, when such a variable is expanded into a URL path on the client +// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The +// server side does the reverse decoding. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{var}`. +// +// If a variable contains multiple path segments, such as `"{var=foo/*}"` +// or `"{var=**}"`, when such a variable is expanded into a URL path on the +// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. +// The server side does the reverse decoding, except "%2F" and "%2f" are left +// unchanged. Such variables show up in the +// [Discovery +// Document](https://developers.google.com/discovery/v1/reference/apis) as +// `{+var}`. +// +// ## Using gRPC API Service Configuration +// +// gRPC API Service Configuration (service config) is a configuration language +// for configuring a gRPC service to become a user-facing product. The +// service config is simply the YAML representation of the `google.api.Service` +// proto message. +// +// As an alternative to annotating your proto file, you can configure gRPC +// transcoding in your service config YAML files. You do this by specifying a +// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same +// effect as the proto annotation. This can be particularly useful if you +// have a proto that is reused in multiple services. Note that any transcoding +// specified in the service config will override any matching transcoding +// configuration in the proto. +// +// Example: +// +// http: +// rules: +// # Selects a gRPC method and applies HttpRule to it. +// - selector: example.v1.Messaging.GetMessage +// get: /v1/messages/{message_id}/{sub.subfield} +// +// ## Special notes +// +// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the +// proto to JSON conversion must follow the [proto3 +// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). +// +// While the single segment variable follows the semantics of +// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String +// Expansion, the multi segment variable **does not** follow RFC 6570 Section +// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion +// does not expand special characters like `?` and `#`, which would lead +// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding +// for multi segment variables. +// +// The path variables **must not** refer to any repeated or mapped field, +// because client libraries are not capable of handling such variable expansion. +// +// The path variables **must not** capture the leading "/" character. The reason +// is that the most common use case "{var}" does not capture the leading "/" +// character. For consistency, all path variables must share the same behavior. +// +// Repeated message fields must not be mapped to URL query parameters, because +// no client library can support such complicated mapping. +// +// If an API needs to use a JSON array for request or response body, it can map +// the request or response body to a repeated field. However, some gRPC +// Transcoding implementations may not support this feature. +message HttpRule { + // Selects a method to which this rule applies. + // + // Refer to [selector][google.api.DocumentationRule.selector] for syntax + // details. + string selector = 1; + + // Determines the URL pattern is matched by this rules. This pattern can be + // used with any of the {get|put|post|delete|patch} methods. A custom method + // can be defined using the 'custom' field. + oneof pattern { + // Maps to HTTP GET. Used for listing and getting information about + // resources. + string get = 2; + + // Maps to HTTP PUT. Used for replacing a resource. + string put = 3; + + // Maps to HTTP POST. Used for creating a resource or performing an action. + string post = 4; + + // Maps to HTTP DELETE. Used for deleting a resource. + string delete = 5; + + // Maps to HTTP PATCH. Used for updating a resource. + string patch = 6; + + // The custom pattern is used for specifying an HTTP method that is not + // included in the `pattern` field, such as HEAD, or "*" to leave the + // HTTP method unspecified for this rule. The wild-card rule is useful + // for services that provide content to Web (HTML) clients. + CustomHttpPattern custom = 8; + } + + // The name of the request field whose value is mapped to the HTTP request + // body, or `*` for mapping all request fields not captured by the path + // pattern to the HTTP body, or omitted for not having any HTTP request body. + // + // NOTE: the referred field must be present at the top-level of the request + // message type. + string body = 7; + + // Optional. The name of the response field whose value is mapped to the HTTP + // response body. When omitted, the entire response message will be used + // as the HTTP response body. + // + // NOTE: The referred field must be present at the top-level of the response + // message type. + string response_body = 12; + + // Additional HTTP bindings for the selector. Nested bindings must + // not contain an `additional_bindings` field themselves (that is, + // the nesting may only be one level deep). + repeated HttpRule additional_bindings = 11; +} + +// A custom pattern is used for defining custom HTTP verb. +message CustomHttpPattern { + // The name of this custom HTTP verb. + string kind = 1; + + // The path matched by this custom verb. + string path = 2; +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto/.mock/proto/user/v1/user.proto b/seed/pydantic-v2/grpc-proto/.mock/proto/user/v1/user.proto new file mode 100644 index 00000000000..28542ac965a --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/.mock/proto/user/v1/user.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package user.v1; + +import "google/api/annotations.proto"; +import "google/protobuf/struct.proto"; + +option csharp_namespace = "User.V1"; +option go_package = "user/v1"; + +message UserModel { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateRequest { + string username = 1; + string email = 2; + uint32 age = 3; + float weight = 4; + google.protobuf.Struct metadata = 5; +} + +message CreateResponse { + UserModel user = 1; +} + +service UserService { + rpc Create(CreateRequest) returns (CreateResponse) { + option (google.api.http) = { + post: "/users" + body: "*" + }; + } +} \ No newline at end of file diff --git a/seed/pydantic-v2/grpc-proto/snippet-templates.json b/seed/pydantic-v2/grpc-proto/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/grpc-proto/snippet.json b/seed/pydantic-v2/grpc-proto/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/grpc-proto/types/create_response.py b/seed/pydantic-v2/grpc-proto/types/create_response.py new file mode 100644 index 00000000000..d873069f64d --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/types/create_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from .types.user_model import UserModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class CreateResponse(BaseModel): + user: Optional[UserModel] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/grpc-proto/types/user_model.py b/seed/pydantic-v2/grpc-proto/types/user_model.py new file mode 100644 index 00000000000..df694614716 --- /dev/null +++ b/seed/pydantic-v2/grpc-proto/types/user_model.py @@ -0,0 +1,18 @@ +from pydantic import BaseModel +from typing import Optional +from .types.metadata import Metadata +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UserModel(BaseModel): + username: Optional[str] = None + email: Optional[str] = None + age: Optional[int] = None + weight: Optional[float] = None + metadata: Optional[Metadata] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/idempotency-headers/.mock/definition/api.yml b/seed/pydantic-v2/idempotency-headers/.mock/definition/api.yml new file mode 100644 index 00000000000..7fbd5ce078b --- /dev/null +++ b/seed/pydantic-v2/idempotency-headers/.mock/definition/api.yml @@ -0,0 +1,5 @@ +name: idempotency-headers +auth: bearer +idempotency-headers: + Idempotency-Key: string + Idempotency-Expiration: integer diff --git a/seed/pydantic-v2/idempotency-headers/.mock/definition/payment.yml b/seed/pydantic-v2/idempotency-headers/.mock/definition/payment.yml new file mode 100644 index 00000000000..d8eb6950460 --- /dev/null +++ b/seed/pydantic-v2/idempotency-headers/.mock/definition/payment.yml @@ -0,0 +1,27 @@ +types: + Currency: + enum: + - USD + - YEN + +service: + auth: true + base-path: /payment + endpoints: + create: + method: POST + path: "" + idempotent: true + request: + name: CreatePaymentRequest + body: + properties: + amount: integer + currency: Currency + response: uuid + + delete: + method: DELETE + path: /{paymentId} + path-parameters: + paymentId: string diff --git a/seed/pydantic-v2/idempotency-headers/.mock/fern.config.json b/seed/pydantic-v2/idempotency-headers/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/idempotency-headers/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/idempotency-headers/.mock/generators.yml b/seed/pydantic-v2/idempotency-headers/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/idempotency-headers/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/idempotency-headers/snippet-templates.json b/seed/pydantic-v2/idempotency-headers/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/idempotency-headers/snippet.json b/seed/pydantic-v2/idempotency-headers/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/imdb/.mock/definition/api.yml b/seed/pydantic-v2/imdb/.mock/definition/api.yml new file mode 100644 index 00000000000..c437dc0ab29 --- /dev/null +++ b/seed/pydantic-v2/imdb/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: api +error-discrimination: + strategy: status-code +auth: bearer diff --git a/seed/pydantic-v2/imdb/.mock/definition/imdb.yml b/seed/pydantic-v2/imdb/.mock/definition/imdb.yml new file mode 100644 index 00000000000..7919173fe57 --- /dev/null +++ b/seed/pydantic-v2/imdb/.mock/definition/imdb.yml @@ -0,0 +1,42 @@ +types: + MovieId: string + + Movie: + properties: + id: MovieId + title: string + rating: + type: double + docs: The rating scale is one to five stars + + CreateMovieRequest: + properties: + title: string + rating: double + +service: + auth: false + base-path: /movies + endpoints: + createMovie: + docs: Add a movie to the database + method: POST + path: /create-movie + request: CreateMovieRequest + response: + type: MovieId + status-code: 201 + + getMovie: + method: GET + path: /{movieId} + path-parameters: + movieId: MovieId + response: Movie + errors: + - MovieDoesNotExistError + +errors: + MovieDoesNotExistError: + status-code: 404 + type: MovieId diff --git a/seed/pydantic-v2/imdb/.mock/fern.config.json b/seed/pydantic-v2/imdb/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/imdb/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/imdb/.mock/generators.yml b/seed/pydantic-v2/imdb/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/imdb/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/imdb/resources/imdb/types/create_movie_request.py b/seed/pydantic-v2/imdb/resources/imdb/types/create_movie_request.py new file mode 100644 index 00000000000..29d65f7cf32 --- /dev/null +++ b/seed/pydantic-v2/imdb/resources/imdb/types/create_movie_request.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class CreateMovieRequest(BaseModel): + title: str + rating: float + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/imdb/resources/imdb/types/movie.py b/seed/pydantic-v2/imdb/resources/imdb/types/movie.py new file mode 100644 index 00000000000..077831a0e7c --- /dev/null +++ b/seed/pydantic-v2/imdb/resources/imdb/types/movie.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Movie(BaseModel): + id: str + title: str + rating: float + """ + The rating scale is one to five stars + """ + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/imdb/resources/imdb/types/movie_id.py b/seed/pydantic-v2/imdb/resources/imdb/types/movie_id.py new file mode 100644 index 00000000000..d18d5e6749e --- /dev/null +++ b/seed/pydantic-v2/imdb/resources/imdb/types/movie_id.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class MovieId(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> MovieId: + MovieId(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/imdb/snippet-templates.json b/seed/pydantic-v2/imdb/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/imdb/snippet.json b/seed/pydantic-v2/imdb/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/literal/.mock/definition/__package__.yml b/seed/pydantic-v2/literal/.mock/definition/__package__.yml new file mode 100644 index 00000000000..9247629c4d5 --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/__package__.yml @@ -0,0 +1,10 @@ +types: + SendResponse: + properties: + message: + type: string + status: + type: integer + success: + type: literal + \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/definition/api.yml b/seed/pydantic-v2/literal/.mock/definition/api.yml new file mode 100644 index 00000000000..d3b137fcece --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/api.yml @@ -0,0 +1,10 @@ +name: literal +docs: | + Test definition for literal schemas. +headers: + X-API-Version: + name: version + type: literal<"02-02-2024"> + X-API-Enable-Audit-Logging: + name: audit_logging + type: literal \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/definition/headers.yml b/seed/pydantic-v2/literal/.mock/definition/headers.yml new file mode 100644 index 00000000000..1b7e148d61a --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/headers.yml @@ -0,0 +1,36 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /headers + method: POST + request: + name: SendLiteralsInHeadersRequest + headers: + X-Endpoint-Version: + name: endpointVersion + type: literal<"02-12-2024"> + X-Async: + name: async + type: literal + body: + properties: + query: + type: string + response: root.SendResponse + examples: + - headers: + X-Endpoint-Version: "02-12-2024" + X-Async: true + request: + query: "What is the weather today" + response: + body: + message: "The weather is sunny" + status: 200 + success: true + \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/definition/inlined.yml b/seed/pydantic-v2/literal/.mock/definition/inlined.yml new file mode 100644 index 00000000000..c2834c5c50c --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/inlined.yml @@ -0,0 +1,53 @@ +imports: + root: __package__.yml + +types: + SomeAliasedLiteral: + type: literal<"You're super wise"> + + ATopLevelLiteral: + properties: + nestedLiteral: ANestedLiteral + + ANestedLiteral: + properties: + myLiteral: literal<"How super cool"> + +service: + auth: false + base-path: "" + endpoints: + send: + path: /inlined + method: POST + request: + name: SendLiteralsInlinedRequest + body: + properties: + prompt: literal<"You are a helpful assistant"> + context: optional> + query: string + temperature: optional + stream: literal + aliasedContext: SomeAliasedLiteral + maybeContext: optional + objectWithLiteral: ATopLevelLiteral + + response: root.SendResponse + examples: + - request: + temperature: 10.1 + prompt: "You are a helpful assistant" + context: "You're super wise" + aliasedContext: "You're super wise" + maybeContext: "You're super wise" + objectWithLiteral: + nestedLiteral: + myLiteral: "How super cool" + stream: false + query: "What is the weather today" + response: + body: + message: "The weather is sunny" + status: 200 + success: true diff --git a/seed/pydantic-v2/literal/.mock/definition/path.yml b/seed/pydantic-v2/literal/.mock/definition/path.yml new file mode 100644 index 00000000000..236d8744417 --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/path.yml @@ -0,0 +1,22 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /path/{id} + method: POST + path-parameters: + id: literal<"123"> + response: root.SendResponse + examples: + - path-parameters: + id: "123" + response: + body: + message: "The weather is sunny" + status: 200 + success: true + \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/definition/query.yml b/seed/pydantic-v2/literal/.mock/definition/query.yml new file mode 100644 index 00000000000..9d6cec5ad8e --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/query.yml @@ -0,0 +1,28 @@ +imports: + root: __package__.yml + +service: + auth: false + base-path: "" + endpoints: + send: + path: /query + method: POST + request: + name: SendLiteralsInQueryRequest + query-parameters: + prompt: literal<"You are a helpful assistant"> + query: string + stream: literal + response: root.SendResponse + examples: + - query-parameters: + prompt: "You are a helpful assistant" + stream: false + query: "What is the weather today" + response: + body: + message: "The weather is sunny" + status: 200 + success: true + \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/definition/reference.yml b/seed/pydantic-v2/literal/.mock/definition/reference.yml new file mode 100644 index 00000000000..ec164521928 --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/definition/reference.yml @@ -0,0 +1,48 @@ +imports: + root: __package__.yml + +types: + SendRequest: + properties: + prompt: literal<"You are a helpful assistant"> + query: string + stream: literal + context: SomeLiteral + maybeContext: optional + containerObject: ContainerObject + ContainerObject: + properties: + nestedObjects: list + NestedObjectWithLiterals: + properties: + literal1: literal<"literal1"> + literal2: literal<"literal2"> + strProp: string + SomeLiteral: + type: literal<"You're super wise"> + +service: + auth: false + base-path: "" + endpoints: + send: + path: /reference + method: POST + request: SendRequest + response: root.SendResponse + examples: + - request: + prompt: "You are a helpful assistant" + stream: false + context: "You're super wise" + query: "What is the weather today" + containerObject: + nestedObjects: + - literal1: "literal1" + literal2: "literal2" + strProp: "strProp" + response: + body: + message: "The weather is sunny" + status: 200 + success: true diff --git a/seed/pydantic-v2/literal/.mock/fern.config.json b/seed/pydantic-v2/literal/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/literal/.mock/generators.yml b/seed/pydantic-v2/literal/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/literal/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/literal/resources/inlined/types/a_nested_literal.py b/seed/pydantic-v2/literal/resources/inlined/types/a_nested_literal.py new file mode 100644 index 00000000000..e8535566a07 --- /dev/null +++ b/seed/pydantic-v2/literal/resources/inlined/types/a_nested_literal.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ANestedLiteral(BaseModel): + my_literal: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/inlined/types/a_top_level_literal.py b/seed/pydantic-v2/literal/resources/inlined/types/a_top_level_literal.py new file mode 100644 index 00000000000..93d7956ced9 --- /dev/null +++ b/seed/pydantic-v2/literal/resources/inlined/types/a_top_level_literal.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from resources.inlined.types.a_nested_literal import ANestedLiteral +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ATopLevelLiteral(BaseModel): + nested_literal: ANestedLiteral + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/inlined/types/some_aliased_literal.py b/seed/pydantic-v2/literal/resources/inlined/types/some_aliased_literal.py new file mode 100644 index 00000000000..fda7cff6b9b --- /dev/null +++ b/seed/pydantic-v2/literal/resources/inlined/types/some_aliased_literal.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class SomeAliasedLiteral(RootModel[str]): + root: str + + def get_as_string() -> UUID: + return self.root + + @staticmethod + def from_string(value: str) -> SomeAliasedLiteral: + SomeAliasedLiteral(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/reference/types/container_object.py b/seed/pydantic-v2/literal/resources/reference/types/container_object.py new file mode 100644 index 00000000000..f8666009cac --- /dev/null +++ b/seed/pydantic-v2/literal/resources/reference/types/container_object.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from typing import List +from resources.reference.types.nested_object_with_literals import ( + NestedObjectWithLiterals, +) +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ContainerObject(BaseModel): + nested_objects: List[NestedObjectWithLiterals] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/reference/types/nested_object_with_literals.py b/seed/pydantic-v2/literal/resources/reference/types/nested_object_with_literals.py new file mode 100644 index 00000000000..9f42c1c7de3 --- /dev/null +++ b/seed/pydantic-v2/literal/resources/reference/types/nested_object_with_literals.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedObjectWithLiterals(BaseModel): + literal_1: str + literal_2: str + str_prop: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/reference/types/send_request.py b/seed/pydantic-v2/literal/resources/reference/types/send_request.py new file mode 100644 index 00000000000..3f48f15773e --- /dev/null +++ b/seed/pydantic-v2/literal/resources/reference/types/send_request.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel +from typing import Optional +from resources.reference.types.container_object import ContainerObject +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class SendRequest(BaseModel): + prompt: str + query: str + stream: bool + context: str + maybe_context: Optional[str] + container_object: ContainerObject + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/resources/reference/types/some_literal.py b/seed/pydantic-v2/literal/resources/reference/types/some_literal.py new file mode 100644 index 00000000000..6b00c55e973 --- /dev/null +++ b/seed/pydantic-v2/literal/resources/reference/types/some_literal.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class SomeLiteral(RootModel[str]): + root: str + + def get_as_string() -> UUID: + return self.root + + @staticmethod + def from_string(value: str) -> SomeLiteral: + SomeLiteral(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/literal/snippet-templates.json b/seed/pydantic-v2/literal/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/literal/snippet.json b/seed/pydantic-v2/literal/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/literal/types/send_response.py b/seed/pydantic-v2/literal/types/send_response.py new file mode 100644 index 00000000000..124a79064de --- /dev/null +++ b/seed/pydantic-v2/literal/types/send_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class SendResponse(BaseModel): + message: str + status: int + success: bool + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-case/.mock/definition/api.yml b/seed/pydantic-v2/mixed-case/.mock/definition/api.yml new file mode 100644 index 00000000000..cf9d2078f7f --- /dev/null +++ b/seed/pydantic-v2/mixed-case/.mock/definition/api.yml @@ -0,0 +1 @@ +name: mixed-case \ No newline at end of file diff --git a/seed/pydantic-v2/mixed-case/.mock/definition/service.yml b/seed/pydantic-v2/mixed-case/.mock/definition/service.yml new file mode 100644 index 00000000000..7a38e853c35 --- /dev/null +++ b/seed/pydantic-v2/mixed-case/.mock/definition/service.yml @@ -0,0 +1,118 @@ +types: + Organization: + properties: + name: string + examples: + - name: One + value: + name: orgName + + User: + properties: + userName: string + metadata_tags: list + EXTRA_PROPERTIES: map + examples: + - name: One + value: + userName: username + metadata_tags: + - tag1 + - tag2 + EXTRA_PROPERTIES: + foo: bar + baz: qux + + NestedUser: + properties: + Name: string + NestedUser: User + examples: + - name: One + value: + Name: username + NestedUser: + userName: nestedUsername + metadata_tags: + - tag1 + - tag2 + EXTRA_PROPERTIES: + foo: bar + baz: qux + + ResourceStatus: + enum: + - ACTIVE + - INACTIVE + + Resource: + discriminant: + value: resource_type + name: resourceType + base-properties: + status: ResourceStatus + union: + user: User + Organization: Organization + examples: + - value: + status: ACTIVE + resource_type: user + userName: username + metadata_tags: + - tag1 + - tag2 + EXTRA_PROPERTIES: + foo: bar + baz: qux + +service: + base-path: /resource + auth: false + endpoints: + getResource: + path: "/{ResourceID}" + method: GET + path-parameters: + ResourceID: string + response: Resource + examples: + - path-parameters: + ResourceID: "rsc-xyz" + response: + body: + status: ACTIVE + resource_type: user + userName: username + metadata_tags: + - tag1 + - tag2 + EXTRA_PROPERTIES: + foo: bar + baz: qux + + listResources: + path: "" + method: GET + request: + name: ListResourcesRequest + query-parameters: + page_limit: integer + beforeDate: date + response: list + examples: + - name: One + query-parameters: + page_limit: 10 + beforeDate: "2023-01-01" + response: + body: + - resource_type: user + status: ACTIVE + userName: username + metadata_tags: + - tag1 + - tag2 + EXTRA_PROPERTIES: + foo: bar + baz: qux diff --git a/seed/pydantic-v2/mixed-case/.mock/fern.config.json b/seed/pydantic-v2/mixed-case/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/mixed-case/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/mixed-case/.mock/generators.yml b/seed/pydantic-v2/mixed-case/.mock/generators.yml new file mode 100644 index 00000000000..9e26dfeeb6e --- /dev/null +++ b/seed/pydantic-v2/mixed-case/.mock/generators.yml @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/seed/pydantic-v2/mixed-case/resources/service/types/nested_user.py b/seed/pydantic-v2/mixed-case/resources/service/types/nested_user.py new file mode 100644 index 00000000000..7b9af203334 --- /dev/null +++ b/seed/pydantic-v2/mixed-case/resources/service/types/nested_user.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from resources.service.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedUser(BaseModel): + name: str + nested_user: User + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-case/resources/service/types/organization.py b/seed/pydantic-v2/mixed-case/resources/service/types/organization.py new file mode 100644 index 00000000000..6fe8b18b556 --- /dev/null +++ b/seed/pydantic-v2/mixed-case/resources/service/types/organization.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Organization(BaseModel): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-case/resources/service/types/user.py b/seed/pydantic-v2/mixed-case/resources/service/types/user.py new file mode 100644 index 00000000000..6cf7bfa8ea7 --- /dev/null +++ b/seed/pydantic-v2/mixed-case/resources/service/types/user.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from typing import List, Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class User(BaseModel): + user_name: str + metadata_tags: List[str] + extra_properties: Dict[str, str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-case/snippet-templates.json b/seed/pydantic-v2/mixed-case/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/mixed-case/snippet.json b/seed/pydantic-v2/mixed-case/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/__package__.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/__package__.yml new file mode 100644 index 00000000000..c4224b55354 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/__package__.yml @@ -0,0 +1,2 @@ +types: + Id: string diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/api.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/api.yml new file mode 100644 index 00000000000..7d680d624f8 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/api.yml @@ -0,0 +1 @@ +name: mixed-file-directory diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/organization.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/organization.yml new file mode 100644 index 00000000000..6b1021dfd9c --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/organization.yml @@ -0,0 +1,26 @@ +imports: + root: __package__.yml + user: user.yml + +types: + Organization: + properties: + id: root.Id + name: string + users: list + + CreateOrganizationRequest: + properties: + name: string + +service: + auth: false + base-path: /organizations + endpoints: + create: + path: / + method: POST + auth: false + docs: Create a new organization. + request: CreateOrganizationRequest + response: Organization diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/user.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user.yml new file mode 100644 index 00000000000..f6d372b45f4 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user.yml @@ -0,0 +1,26 @@ +imports: + root: __package__.yml + +types: + User: + properties: + id: root.Id + name: string + age: integer + +service: + auth: false + base-path: /users + endpoints: + list: + path: / + method: GET + auth: false + docs: List all users. + request: + name: ListUsersRequest + query-parameters: + limit: + type: optional + docs: The maximum number of results to return. + response: list diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events.yml new file mode 100644 index 00000000000..e0d993ff09b --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events.yml @@ -0,0 +1,26 @@ +imports: + root: ../__package__.yml + user: ../user.yml + +types: + Event: + properties: + id: root.Id + name: string + +service: + auth: false + base-path: /users/events + endpoints: + listEvents: + path: / + method: GET + auth: false + docs: List all user events. + request: + name: ListUserEventsRequest + query-parameters: + limit: + type: optional + docs: The maximum number of results to return. + response: list diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events/metadata.yml b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events/metadata.yml new file mode 100644 index 00000000000..f38b5afcb12 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/definition/user/events/metadata.yml @@ -0,0 +1,23 @@ +imports: + root: ../../__package__.yml + +types: + Metadata: + properties: + id: root.Id + value: unknown + +service: + auth: false + base-path: /users/events/metadata + endpoints: + getMetadata: + path: / + method: GET + auth: false + docs: Get event metadata. + request: + name: GetEventMetadataRequest + query-parameters: + id: root.Id + response: Metadata diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/fern.config.json b/seed/pydantic-v2/mixed-file-directory/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/mixed-file-directory/.mock/generators.yml b/seed/pydantic-v2/mixed-file-directory/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/mixed-file-directory/resources/organization/types/create_organization_request.py b/seed/pydantic-v2/mixed-file-directory/resources/organization/types/create_organization_request.py new file mode 100644 index 00000000000..30ef262b17a --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/resources/organization/types/create_organization_request.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class CreateOrganizationRequest(BaseModel): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-file-directory/resources/organization/types/organization.py b/seed/pydantic-v2/mixed-file-directory/resources/organization/types/organization.py new file mode 100644 index 00000000000..1d4ef6582a6 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/resources/organization/types/organization.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from typing import List +from resources.user.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Organization(BaseModel): + id: str + name: str + users: List[User] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/resources/metadata/types/metadata.py b/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/resources/metadata/types/metadata.py new file mode 100644 index 00000000000..ca0f5a333de --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/resources/metadata/types/metadata.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Any +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Metadata(BaseModel): + id: str + value: Any + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/types/event.py b/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/types/event.py new file mode 100644 index 00000000000..9fb77756566 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/resources/user/resources/events/types/event.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Event(BaseModel): + id: str + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-file-directory/resources/user/types/user.py b/seed/pydantic-v2/mixed-file-directory/resources/user/types/user.py new file mode 100644 index 00000000000..97d63c4723b --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/resources/user/types/user.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class User(BaseModel): + id: str + name: str + age: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/mixed-file-directory/snippet-templates.json b/seed/pydantic-v2/mixed-file-directory/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/mixed-file-directory/snippet.json b/seed/pydantic-v2/mixed-file-directory/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/mixed-file-directory/types/id.py b/seed/pydantic-v2/mixed-file-directory/types/id.py new file mode 100644 index 00000000000..3f8f15db9d4 --- /dev/null +++ b/seed/pydantic-v2/mixed-file-directory/types/id.py @@ -0,0 +1,19 @@ +from pydantic import RootModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Id(RootModel[str]): + root: str + + def get_as_str() -> UUID: + return self.root + + @staticmethod + def from_str(value: str) -> Id: + Id(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/multi-line-docs/.mock/definition/__package__.yml b/seed/pydantic-v2/multi-line-docs/.mock/definition/__package__.yml new file mode 100644 index 00000000000..6ad9eb4833f --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/.mock/definition/__package__.yml @@ -0,0 +1,19 @@ +types: + Operand: + docs: | + Tests enum name and value can be + different. + enum: + - value: ">" + name: GREATER_THAN + - value: "=" + name: EQUAL_TO + - value: "less_than" + docs: | + The name and value should be similar + are similar for less than. + examples: + - name: GreaterThan + value: ">" + - name: LessThan + value: "less_than" diff --git a/seed/pydantic-v2/multi-line-docs/.mock/definition/api.yml b/seed/pydantic-v2/multi-line-docs/.mock/definition/api.yml new file mode 100644 index 00000000000..31a2076dc87 --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/.mock/definition/api.yml @@ -0,0 +1 @@ +name: multi-line-docs diff --git a/seed/pydantic-v2/multi-line-docs/.mock/definition/user.yml b/seed/pydantic-v2/multi-line-docs/.mock/definition/user.yml new file mode 100644 index 00000000000..a7ffb021a43 --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/.mock/definition/user.yml @@ -0,0 +1,61 @@ +imports: + root: __package__.yml + +types: + User: + docs: | + A user object. This type is used throughout the following APIs: + - createUser + - getUser + properties: + id: string + name: + type: string + docs: | + The user's name. This name is unique to each user. A few examples are included below: + - Alice + - Bob + - Charlie + age: + type: optional + docs: | + The user's age. + +service: + auth: false + base-path: "" + endpoints: + getUser: + docs: | + Retrieve a user. + This endpoint is used to retrieve a user. + path: /users/{userId} + method: GET + path-parameters: + userId: + type: string + docs: | + The ID of the user to retrieve. + This ID is unique to each user. + + createUser: + docs: | + Create a new user. + This endpoint is used to create a new user. + path: /users + method: POST + request: + name: CreateUserRequest + body: + properties: + name: + type: string + docs: | + The name of the user to create. + This name is unique to each user. + age: + type: optional + docs: | + The age of the user. + This propery is not required. + response: User \ No newline at end of file diff --git a/seed/pydantic-v2/multi-line-docs/.mock/fern.config.json b/seed/pydantic-v2/multi-line-docs/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/multi-line-docs/.mock/generators.yml b/seed/pydantic-v2/multi-line-docs/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/multi-line-docs/resources/user/types/user.py b/seed/pydantic-v2/multi-line-docs/resources/user/types/user.py new file mode 100644 index 00000000000..5b01839d2ba --- /dev/null +++ b/seed/pydantic-v2/multi-line-docs/resources/user/types/user.py @@ -0,0 +1,27 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime +class User(BaseModel): +"""A user object. This type is used throughout the following APIs: + +- createUser +- getUser""" + id: str + name: str + """ + The user's name. This name is unique to each user. A few examples are included below: + + - Alice + - Bob + - Charlie + """ + age: Optional[int] = None + """ + The user's age. + """ + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/multi-line-docs/snippet-templates.json b/seed/pydantic-v2/multi-line-docs/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/multi-line-docs/snippet.json b/seed/pydantic-v2/multi-line-docs/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/api.yml b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/api.yml new file mode 100644 index 00000000000..118b0a1177e --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/api.yml @@ -0,0 +1,14 @@ +name: multi-url-environment-no-default +auth: bearer +environments: + Production: + urls: + ec2: https://ec2.aws.com + s3: https://s3.aws.com + Staging: + urls: + ec2: https://staging.ec2.aws.com + s3: https://staging.s3.aws.com +default-environment: null +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/ec2.yml b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/ec2.yml new file mode 100644 index 00000000000..a3acc4216ff --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/ec2.yml @@ -0,0 +1,16 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: true + url: ec2 + base-path: /ec2 + endpoints: + bootInstance: + auth: true + path: /boot + method: POST + request: + name: BootInstanceRequest + body: + properties: + size: string diff --git a/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/s3.yml b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/s3.yml new file mode 100644 index 00000000000..ca741b783f5 --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment-no-default/.mock/definition/s3.yml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: true + url: s3 + base-path: /s3 + endpoints: + getPresignedUrl: + auth: true + path: /presigned-url + method: POST + request: + name: GetPresignedUrlRequest + body: + properties: + s3Key: string + response: string diff --git a/seed/pydantic-v2/multi-url-environment-no-default/.mock/fern.config.json b/seed/pydantic-v2/multi-url-environment-no-default/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment-no-default/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/multi-url-environment-no-default/.mock/generators.yml b/seed/pydantic-v2/multi-url-environment-no-default/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment-no-default/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/multi-url-environment-no-default/snippet-templates.json b/seed/pydantic-v2/multi-url-environment-no-default/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/multi-url-environment-no-default/snippet.json b/seed/pydantic-v2/multi-url-environment-no-default/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/multi-url-environment/.mock/definition/api.yml b/seed/pydantic-v2/multi-url-environment/.mock/definition/api.yml new file mode 100644 index 00000000000..f362d991927 --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment/.mock/definition/api.yml @@ -0,0 +1,14 @@ +name: multi-url-environment +auth: bearer +environments: + Production: + urls: + ec2: https://ec2.aws.com + s3: https://s3.aws.com + Staging: + urls: + ec2: https://staging.ec2.aws.com + s3: https://staging.s3.aws.com +default-environment: Production +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/multi-url-environment/.mock/definition/ec2.yml b/seed/pydantic-v2/multi-url-environment/.mock/definition/ec2.yml new file mode 100644 index 00000000000..a3acc4216ff --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment/.mock/definition/ec2.yml @@ -0,0 +1,16 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: true + url: ec2 + base-path: /ec2 + endpoints: + bootInstance: + auth: true + path: /boot + method: POST + request: + name: BootInstanceRequest + body: + properties: + size: string diff --git a/seed/pydantic-v2/multi-url-environment/.mock/definition/s3.yml b/seed/pydantic-v2/multi-url-environment/.mock/definition/s3.yml new file mode 100644 index 00000000000..ca741b783f5 --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment/.mock/definition/s3.yml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: true + url: s3 + base-path: /s3 + endpoints: + getPresignedUrl: + auth: true + path: /presigned-url + method: POST + request: + name: GetPresignedUrlRequest + body: + properties: + s3Key: string + response: string diff --git a/seed/pydantic-v2/multi-url-environment/.mock/fern.config.json b/seed/pydantic-v2/multi-url-environment/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/multi-url-environment/.mock/generators.yml b/seed/pydantic-v2/multi-url-environment/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/multi-url-environment/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/multi-url-environment/snippet-templates.json b/seed/pydantic-v2/multi-url-environment/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/multi-url-environment/snippet.json b/seed/pydantic-v2/multi-url-environment/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/no-environment/.mock/definition/api.yml b/seed/pydantic-v2/no-environment/.mock/definition/api.yml new file mode 100644 index 00000000000..d47556ced41 --- /dev/null +++ b/seed/pydantic-v2/no-environment/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: no-environment +auth: bearer +error-discrimination: + strategy: status-code diff --git a/seed/pydantic-v2/no-environment/.mock/definition/dummy.yml b/seed/pydantic-v2/no-environment/.mock/definition/dummy.yml new file mode 100644 index 00000000000..e767095a9b0 --- /dev/null +++ b/seed/pydantic-v2/no-environment/.mock/definition/dummy.yml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +service: + auth: true + base-path: "" + endpoints: + getDummy: + auth: true + path: /dummy + method: GET + response: string diff --git a/seed/pydantic-v2/no-environment/.mock/fern.config.json b/seed/pydantic-v2/no-environment/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/no-environment/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/no-environment/.mock/generators.yml b/seed/pydantic-v2/no-environment/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/no-environment/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/no-environment/snippet-templates.json b/seed/pydantic-v2/no-environment/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/no-environment/snippet.json b/seed/pydantic-v2/no-environment/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/api.yml b/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/api.yml new file mode 100644 index 00000000000..e94a5d4e99d --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/api.yml @@ -0,0 +1,11 @@ +name: oauth-client-credentials-default +imports: + auth: auth.yml + +auth: OAuthScheme +auth-schemes: + OAuthScheme: + scheme: oauth + type: client-credentials + get-token: + endpoint: auth.getToken \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/auth.yml b/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/auth.yml new file mode 100644 index 00000000000..ca7f4017566 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-default/.mock/definition/auth.yml @@ -0,0 +1,23 @@ +types: + TokenResponse: + docs: | + An OAuth token response. + properties: + access_token: string + expires_in: integer + +service: + auth: false + base-path: / + endpoints: + getToken: + path: /token + method: POST + request: + name: GetTokenRequest + body: + properties: + client_id: string + client_secret: string + grant_type: literal<"client_credentials"> + response: TokenResponse \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-default/.mock/fern.config.json b/seed/pydantic-v2/oauth-client-credentials-default/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-default/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-default/.mock/generators.yml b/seed/pydantic-v2/oauth-client-credentials-default/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-default/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/oauth-client-credentials-default/resources/auth/types/token_response.py b/seed/pydantic-v2/oauth-client-credentials-default/resources/auth/types/token_response.py new file mode 100644 index 00000000000..375c3273b8d --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-default/resources/auth/types/token_response.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class TokenResponse(BaseModel): +"""An OAuth token response.""" + access_token: str + expires_in: int + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/oauth-client-credentials-default/snippet-templates.json b/seed/pydantic-v2/oauth-client-credentials-default/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-default/snippet.json b/seed/pydantic-v2/oauth-client-credentials-default/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/api.yml b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/api.yml new file mode 100644 index 00000000000..3869123994b --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/api.yml @@ -0,0 +1,16 @@ +name: oauth-client-credentials-environment-variables +imports: + auth: auth.yml + +auth: OAuthScheme +auth-schemes: + OAuthScheme: + scheme: oauth + type: client-credentials + client-id-env: CLIENT_ID + client-secret-env: CLIENT_SECRET + get-token: + endpoint: auth.getTokenWithClientCredentials + response-properties: + access-token: $response.access_token + expires-in: $response.expires_in \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/auth.yml b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/auth.yml new file mode 100644 index 00000000000..b0dc81c642a --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/definition/auth.yml @@ -0,0 +1,41 @@ +types: + TokenResponse: + docs: | + An OAuth token response. + properties: + access_token: string + expires_in: integer + refresh_token: optional + +service: + auth: false + base-path: / + endpoints: + getTokenWithClientCredentials: + path: /token + method: POST + request: + name: GetTokenRequest + body: + properties: + client_id: string + client_secret: string + audience: literal<"https://api.example.com"> + grant_type: literal<"client_credentials"> + scope: optional + response: TokenResponse + + refreshToken: + path: /token + method: POST + request: + name: RefreshTokenRequest + body: + properties: + client_id: string + client_secret: string + refresh_token: string + audience: literal<"https://api.example.com"> + grant_type: literal<"refresh_token"> + scope: optional + response: TokenResponse \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/fern.config.json b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/generators.yml b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-environment-variables/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/resources/auth/types/token_response.py b/seed/pydantic-v2/oauth-client-credentials-environment-variables/resources/auth/types/token_response.py new file mode 100644 index 00000000000..2ed020441af --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-environment-variables/resources/auth/types/token_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime +class TokenResponse(BaseModel): +"""An OAuth token response.""" + access_token: str + expires_in: int + refresh_token: Optional[str] = None + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/snippet-templates.json b/seed/pydantic-v2/oauth-client-credentials-environment-variables/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-environment-variables/snippet.json b/seed/pydantic-v2/oauth-client-credentials-environment-variables/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/api.yml b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/api.yml new file mode 100644 index 00000000000..6ce1df51a05 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/api.yml @@ -0,0 +1,14 @@ +name: oauth-client-credentials +imports: + auth: auth/__package__.yml + +auth: OAuthScheme +auth-schemes: + OAuthScheme: + scheme: oauth + type: client-credentials + get-token: + endpoint: auth.getToken + response-properties: + access-token: $response.access_token + expires-in: $response.expires_in \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/auth/__package__.yml b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/auth/__package__.yml new file mode 100644 index 00000000000..a1d4f02e92e --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/definition/auth/__package__.yml @@ -0,0 +1,26 @@ +types: + TokenResponse: + docs: | + An OAuth token response. + properties: + access_token: string + expires_in: integer + refresh_token: optional + +service: + auth: false + base-path: / + endpoints: + getToken: + path: /token + method: POST + request: + name: GetTokenRequest + body: + properties: + client_id: string + client_secret: string + audience: literal<"https://api.example.com"> + grant_type: literal<"client_credentials"> + scope: optional + response: TokenResponse \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/fern.config.json b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/generators.yml b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-nested-root/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/resources/auth/types/token_response.py b/seed/pydantic-v2/oauth-client-credentials-nested-root/resources/auth/types/token_response.py new file mode 100644 index 00000000000..2ed020441af --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials-nested-root/resources/auth/types/token_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime +class TokenResponse(BaseModel): +"""An OAuth token response.""" + access_token: str + expires_in: int + refresh_token: Optional[str] = None + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/snippet-templates.json b/seed/pydantic-v2/oauth-client-credentials-nested-root/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials-nested-root/snippet.json b/seed/pydantic-v2/oauth-client-credentials-nested-root/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials/.mock/definition/api.yml b/seed/pydantic-v2/oauth-client-credentials/.mock/definition/api.yml new file mode 100644 index 00000000000..3ca293f63ed --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials/.mock/definition/api.yml @@ -0,0 +1,14 @@ +name: oauth-client-credentials +imports: + auth: auth.yml + +auth: OAuthScheme +auth-schemes: + OAuthScheme: + scheme: oauth + type: client-credentials + get-token: + endpoint: auth.getTokenWithClientCredentials + response-properties: + access-token: $response.access_token + expires-in: $response.expires_in \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials/.mock/definition/auth.yml b/seed/pydantic-v2/oauth-client-credentials/.mock/definition/auth.yml new file mode 100644 index 00000000000..e7887dddb67 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials/.mock/definition/auth.yml @@ -0,0 +1,41 @@ +types: + TokenResponse: + docs: | + An OAuth token response. + properties: + access_token: string + expires_in: integer + refresh_token: optional + +service: + auth: false + base-path: / + endpoints: + getTokenWithClientCredentials: + path: /token + method: POST + request: + name: GetTokenRequest + body: + properties: + client_id: string + client_secret: string + audience: literal<"https://api.example.com"> + grant_type: literal<"client_credentials"> + scope: optional + response: TokenResponse + + refreshToken: + path: /token + method: POST + request: + name: RefreshTokenRequest + body: + properties: + client_id: string + client_secret: string + refresh_token: string + audience: literal<"https://api.example.com"> + grant_type: literal<"refresh_token"> + scope: optional + response: TokenResponse \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials/.mock/fern.config.json b/seed/pydantic-v2/oauth-client-credentials/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/oauth-client-credentials/.mock/generators.yml b/seed/pydantic-v2/oauth-client-credentials/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/oauth-client-credentials/resources/auth/types/token_response.py b/seed/pydantic-v2/oauth-client-credentials/resources/auth/types/token_response.py new file mode 100644 index 00000000000..2ed020441af --- /dev/null +++ b/seed/pydantic-v2/oauth-client-credentials/resources/auth/types/token_response.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime +class TokenResponse(BaseModel): +"""An OAuth token response.""" + access_token: str + expires_in: int + refresh_token: Optional[str] = None + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/oauth-client-credentials/snippet-templates.json b/seed/pydantic-v2/oauth-client-credentials/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/oauth-client-credentials/snippet.json b/seed/pydantic-v2/oauth-client-credentials/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/object/.mock/definition/__package__.yml b/seed/pydantic-v2/object/.mock/definition/__package__.yml new file mode 100644 index 00000000000..8dee80b552b --- /dev/null +++ b/seed/pydantic-v2/object/.mock/definition/__package__.yml @@ -0,0 +1,79 @@ +types: + Type: + docs: | + Exercises all of the built-in types. + properties: + one: integer + two: double + three: string + four: boolean + five: long + six: datetime + seven: date + eight: uuid + nine: base64 + ten: list + eleven: set + twelve: map + thirteen: optional + fourteen: unknown + fifteen: list> + sixteen: list> + seventeen: list> + eighteen: literal<"eighteen"> + nineteen: Name + twenty: uint + twentyone: uint64 + twentytwo: float + twentythree: bigint + examples: + - name: One + value: + one: 1 + two: 2 + three: three + four: true + five: 5 + six: 1994-01-01T01:01:01Z + seven: 1994-01-01 + eight: 7f71f677-e138-4a5c-bb01-e4453a19bfef + nine: TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu + ten: + - 10 + - 10 + eleven: + - 11 + twelve: + invalid: false + exists: true + thirteen: 13 + fourteen: {} + fifteen: + - - 15 + - 15 + - - 15 + - 15 + sixteen: + - foo: 16 + bar: 16 + seventeen: + - 244c6643-f99d-4bfc-b20d-a6518f3a4cf4 + - 07791987-dec3-43b5-8dc4-250ab5dc0478 + eighteen: eighteen + nineteen: + id: name-129fsdj9 + value: nineteen + twenty: 20 + twentyone: 21 + twentytwo: 22.22 + twentythree: "23" + + Name: + properties: + id: string + value: string + examples: + - name: One + value: + id: name-sdfg8ajk + value: name diff --git a/seed/pydantic-v2/object/.mock/definition/api.yml b/seed/pydantic-v2/object/.mock/definition/api.yml new file mode 100644 index 00000000000..a82930c145b --- /dev/null +++ b/seed/pydantic-v2/object/.mock/definition/api.yml @@ -0,0 +1 @@ +name: object diff --git a/seed/pydantic-v2/object/.mock/fern.config.json b/seed/pydantic-v2/object/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/object/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/object/.mock/generators.yml b/seed/pydantic-v2/object/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/object/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/object/snippet-templates.json b/seed/pydantic-v2/object/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/object/snippet.json b/seed/pydantic-v2/object/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/object/types/name.py b/seed/pydantic-v2/object/types/name.py new file mode 100644 index 00000000000..658a908c805 --- /dev/null +++ b/seed/pydantic-v2/object/types/name.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime +class Name(BaseModel): + id: str + value: str + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/object/types/type.py b/seed/pydantic-v2/object/types/type.py new file mode 100644 index 00000000000..fff32f433eb --- /dev/null +++ b/seed/pydantic-v2/object/types/type.py @@ -0,0 +1,37 @@ +from pydantic import BaseModel +from datetime import datetime +from uuid import UUID +from typing import List, Set, Dict, Optional, Any +from .types.name import Name +from dt import datetime +from core.datetime_utils import serialize_datetime +class Type(BaseModel): +"""Exercises all of the built-in types.""" + one: int + two: float + three: str + four: bool + five: int + six: datetime + seven: str + eight: UUID + nine: bytes + ten: List[int] + eleven: Set[float] + twelve: Dict[str, bool] + thirteen: Optional[int] = None + fourteen: Any + fifteen: List[List[int]] + sixteen: List[Dict[str, int]] + seventeen: List[Optional[UUID]] + eighteen: str + nineteen: Name + twenty: int + twentyone: int + twentytwo: float + twentythree: str + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} + diff --git a/seed/pydantic-v2/objects-with-imports/.mock/definition/__package__.yml b/seed/pydantic-v2/objects-with-imports/.mock/definition/__package__.yml new file mode 100644 index 00000000000..f3bdf68f26a --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/definition/__package__.yml @@ -0,0 +1,37 @@ +imports: + metadata: commons/metadata.yml +types: + Node: + properties: + id: string + label: optional + metadata: optional + examples: + - name: Left + value: + id: node-8dvgfja2 + label: left + metadata: + id: metadata-kjasf923 + data: + foo: bar + baz: qux + - name: Right + value: + id: node-cwda9fi2x + label: right + metadata: + id: metadata-lkasdfv9j + data: + one: two + three: four + + Tree: + properties: + nodes: optional> + examples: + - name: Root + value: + nodes: + - $Node.Left + - $Node.Right diff --git a/seed/pydantic-v2/objects-with-imports/.mock/definition/api.yml b/seed/pydantic-v2/objects-with-imports/.mock/definition/api.yml new file mode 100644 index 00000000000..de1eb78549d --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/definition/api.yml @@ -0,0 +1 @@ +name: objects-with-imports diff --git a/seed/pydantic-v2/objects-with-imports/.mock/definition/commons/metadata.yml b/seed/pydantic-v2/objects-with-imports/.mock/definition/commons/metadata.yml new file mode 100644 index 00000000000..5672f92f415 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/definition/commons/metadata.yml @@ -0,0 +1,12 @@ +types: + Metadata: + properties: + id: string + data: optional> + examples: + - name: One + value: + id: metadata-js8dg24b + data: + foo: bar + baz: qux diff --git a/seed/pydantic-v2/objects-with-imports/.mock/definition/file.yml b/seed/pydantic-v2/objects-with-imports/.mock/definition/file.yml new file mode 100644 index 00000000000..187b75e3af0 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/definition/file.yml @@ -0,0 +1,29 @@ +types: + File: + properties: + name: string + contents: string + info: FileInfo + examples: + - name: One + value: + name: file.txt + contents: ... + info: REGULAR + - name: Two + value: + name: another_file.txt + contents: ... + info: REGULAR + + FileInfo: + enum: + - value: REGULAR + docs: A regular file (e.g. foo.txt). + - value: DIRECTORY + docs: A directory (e.g. foo/). + examples: + - name: Regular + value: REGULAR + - name: Directory + value: DIRECTORY diff --git a/seed/pydantic-v2/objects-with-imports/.mock/definition/file/directory.yml b/seed/pydantic-v2/objects-with-imports/.mock/definition/file/directory.yml new file mode 100644 index 00000000000..4902de7db69 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/definition/file/directory.yml @@ -0,0 +1,18 @@ +imports: + file: ../file.yml +types: + Directory: + properties: + name: string + files: optional> + directories: optional> + examples: + - name: One + value: + name: root + files: + - $file.File.One + directories: + - name: tmp + files: + - $file.File.Two diff --git a/seed/pydantic-v2/objects-with-imports/.mock/fern.config.json b/seed/pydantic-v2/objects-with-imports/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/objects-with-imports/.mock/generators.yml b/seed/pydantic-v2/objects-with-imports/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/objects-with-imports/resources/commons/resources/metadata/types/metadata.py b/seed/pydantic-v2/objects-with-imports/resources/commons/resources/metadata/types/metadata.py new file mode 100644 index 00000000000..5588b840935 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/resources/commons/resources/metadata/types/metadata.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional, Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Metadata(BaseModel): + id: str + data: Optional[Dict[str, str]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/objects-with-imports/resources/file/resources/directory/types/directory.py b/seed/pydantic-v2/objects-with-imports/resources/file/resources/directory/types/directory.py new file mode 100644 index 00000000000..4e5a1c31024 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/resources/file/resources/directory/types/directory.py @@ -0,0 +1,17 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.file.types.file import File +from resources.file.resources.directory.types.directory import Directory +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Directory(BaseModel): + name: str + files: Optional[List[File]] = None + directories: Optional[List[Directory]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/objects-with-imports/resources/file/types/file.py b/seed/pydantic-v2/objects-with-imports/resources/file/types/file.py new file mode 100644 index 00000000000..bd6b8be92f6 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/resources/file/types/file.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from resources.file.types.file_info import FileInfo +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class File(BaseModel): + name: str + contents: str + info: FileInfo + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/objects-with-imports/snippet-templates.json b/seed/pydantic-v2/objects-with-imports/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/objects-with-imports/snippet.json b/seed/pydantic-v2/objects-with-imports/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/objects-with-imports/types/node.py b/seed/pydantic-v2/objects-with-imports/types/node.py new file mode 100644 index 00000000000..095367a74be --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/types/node.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from typing import Optional +from resources.commons.resources.metadata.types.metadata import Metadata +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Node(BaseModel): + id: str + label: Optional[str] = None + metadata: Optional[Metadata] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/objects-with-imports/types/tree.py b/seed/pydantic-v2/objects-with-imports/types/tree.py new file mode 100644 index 00000000000..76fc5aaece0 --- /dev/null +++ b/seed/pydantic-v2/objects-with-imports/types/tree.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional, List +from .types.node import Node +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Tree(BaseModel): + nodes: Optional[List[Node]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/optional/.mock/definition/api.yml b/seed/pydantic-v2/optional/.mock/definition/api.yml new file mode 100644 index 00000000000..de1eb78549d --- /dev/null +++ b/seed/pydantic-v2/optional/.mock/definition/api.yml @@ -0,0 +1 @@ +name: objects-with-imports diff --git a/seed/pydantic-v2/optional/.mock/definition/optional.yml b/seed/pydantic-v2/optional/.mock/definition/optional.yml new file mode 100644 index 00000000000..111f55357bb --- /dev/null +++ b/seed/pydantic-v2/optional/.mock/definition/optional.yml @@ -0,0 +1,11 @@ +service: + auth: false + base-path: "" + endpoints: + sendOptionalBody: + method: POST + path: /send-optional-body + request: optional> + response: + type: string + docs: Id of the created resource diff --git a/seed/pydantic-v2/optional/.mock/fern.config.json b/seed/pydantic-v2/optional/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/optional/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/optional/.mock/generators.yml b/seed/pydantic-v2/optional/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/optional/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/optional/snippet-templates.json b/seed/pydantic-v2/optional/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/optional/snippet.json b/seed/pydantic-v2/optional/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/package-yml/.mock/definition/__package__.yml b/seed/pydantic-v2/package-yml/.mock/definition/__package__.yml new file mode 100644 index 00000000000..f46211acabf --- /dev/null +++ b/seed/pydantic-v2/package-yml/.mock/definition/__package__.yml @@ -0,0 +1,23 @@ +service: + auth: false + base-path: / + endpoints: + echo: + method: POST + path: "" + request: EchoRequest + response: string + examples: + - path-parameters: + id: id-ksfd9c1 + request: + name: Hello world! + size: 20 + response: + body: Hello world! + +types: + EchoRequest: + properties: + name: string + size: integer \ No newline at end of file diff --git a/seed/pydantic-v2/package-yml/.mock/definition/api.yml b/seed/pydantic-v2/package-yml/.mock/definition/api.yml new file mode 100644 index 00000000000..eedda1ebe19 --- /dev/null +++ b/seed/pydantic-v2/package-yml/.mock/definition/api.yml @@ -0,0 +1,4 @@ +name: package-yml +base-path: /{id} +path-parameters: + id: string diff --git a/seed/pydantic-v2/package-yml/.mock/definition/service.yml b/seed/pydantic-v2/package-yml/.mock/definition/service.yml new file mode 100644 index 00000000000..3201fb14c66 --- /dev/null +++ b/seed/pydantic-v2/package-yml/.mock/definition/service.yml @@ -0,0 +1,13 @@ +service: + auth: false + base-path: / + endpoints: + nop: + method: GET + path: /{nestedId} + path-parameters: + nestedId: string + examples: + - path-parameters: + id: id-a2ijs82 + nestedId: id-219xca8 diff --git a/seed/pydantic-v2/package-yml/.mock/fern.config.json b/seed/pydantic-v2/package-yml/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/package-yml/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/package-yml/.mock/generators.yml b/seed/pydantic-v2/package-yml/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/package-yml/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/package-yml/snippet-templates.json b/seed/pydantic-v2/package-yml/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/package-yml/snippet.json b/seed/pydantic-v2/package-yml/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/package-yml/types/echo_request.py b/seed/pydantic-v2/package-yml/types/echo_request.py new file mode 100644 index 00000000000..38e1e89dd8e --- /dev/null +++ b/seed/pydantic-v2/package-yml/types/echo_request.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class EchoRequest(BaseModel): + name: str + size: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/.mock/definition/__package__.yml b/seed/pydantic-v2/pagination/.mock/definition/__package__.yml new file mode 100644 index 00000000000..54072fdf817 --- /dev/null +++ b/seed/pydantic-v2/pagination/.mock/definition/__package__.yml @@ -0,0 +1,9 @@ +types: + UsernameCursor: + properties: + cursor: UsernamePage + + UsernamePage: + properties: + after: optional + data: list \ No newline at end of file diff --git a/seed/pydantic-v2/pagination/.mock/definition/api.yml b/seed/pydantic-v2/pagination/.mock/definition/api.yml new file mode 100644 index 00000000000..9a8e8ee6796 --- /dev/null +++ b/seed/pydantic-v2/pagination/.mock/definition/api.yml @@ -0,0 +1,5 @@ +name: pagination +auth: bearer +pagination: + offset: $request.offset + results: $response.results \ No newline at end of file diff --git a/seed/pydantic-v2/pagination/.mock/definition/users.yml b/seed/pydantic-v2/pagination/.mock/definition/users.yml new file mode 100644 index 00000000000..ecde10ef707 --- /dev/null +++ b/seed/pydantic-v2/pagination/.mock/definition/users.yml @@ -0,0 +1,271 @@ +imports: + root: __package__.yml + +types: + Order: + enum: + - asc + - desc + + WithPage: + properties: + page: optional + + WithCursor: + properties: + cursor: optional + + UserListContainer: + properties: + users: list + + UserPage: + properties: + data: UserListContainer + next: optional + + UserOptionalListContainer: + properties: + users: optional> + + UserOptionalListPage: + properties: + data: UserOptionalListContainer + next: optional + + UsernameContainer: + properties: + results: list + + ListUsersExtendedResponse: + extends: + - UserPage + properties: + total_count: + type: integer + docs: The totall number of /users + + ListUsersExtendedOptionalListResponse: + extends: + - UserOptionalListPage + properties: + total_count: + type: integer + docs: The totall number of /users + + ListUsersPaginationResponse: + properties: + hasNextPage: optional + page: optional + total_count: + type: integer + docs: The totall number of /users + data: list + + Page: + properties: + page: + type: integer + docs: The current page + next: optional + per_page: integer + total_page: integer + + NextPage: + properties: + page: integer + starting_after: string + + User: + properties: + name: string + id: integer + +service: + auth: false + base-path: /users + endpoints: + listWithCursorPagination: + pagination: + cursor: $request.starting_after + next_cursor: $response.page.next.starting_after + results: $response.data + method: GET + path: "" + request: + name: ListUsersCursorPaginationRequest + query-parameters: + page: + type: optional + docs: Defaults to first page + per_page: + type: optional + docs: Defaults to per page + order: + type: optional + starting_after: + type: optional + docs: | + The cursor used for pagination in order to fetch + the next page of results. + response: ListUsersPaginationResponse + + listWithBodyCursorPagination: + pagination: + cursor: $request.pagination.cursor + next_cursor: $response.page.next.starting_after + results: $response.data + method: POST + path: "" + request: + name: ListUsersBodyCursorPaginationRequest + body: + properties: + pagination: + type: optional + docs: | + The object that contains the cursor used for pagination + in order to fetch the next page of results. + response: ListUsersPaginationResponse + + listWithOffsetPagination: + pagination: + offset: $request.page + results: $response.data + method: GET + path: "" + request: + name: ListUsersOffsetPaginationRequest + query-parameters: + page: + type: optional + docs: Defaults to first page + per_page: + type: optional + docs: Defaults to per page + order: + type: optional + starting_after: + type: optional + docs: | + The cursor used for pagination in order to fetch + the next page of results. + response: ListUsersPaginationResponse + + listWithBodyOffsetPagination: + pagination: + offset: $request.pagination.page + results: $response.data + method: POST + path: "" + request: + name: ListUsersBodyOffsetPaginationRequest + body: + properties: + pagination: + type: optional + docs: | + The object that contains the offset used for pagination + in order to fetch the next page of results. + response: ListUsersPaginationResponse + + listWithOffsetStepPagination: + pagination: + offset: $request.page + results: $response.data + step: $request.limit + method: GET + path: "" + request: + name: ListUsersOffsetStepPaginationRequest + query-parameters: + page: + type: optional + docs: Defaults to first page + limit: + type: optional + docs: | + The maxiumum number of elements to return. + This is also used as the step size in this + paginated endpoint. + order: + type: optional + response: ListUsersPaginationResponse + + listWithOffsetPaginationHasNextPage: + pagination: + offset: $request.page + results: $response.data + step: $request.limit + has-next-page: $response.hasNextPage + method: GET + path: "" + request: + name: ListWithOffsetPaginationHasNextPageRequest + query-parameters: + page: + type: optional + docs: Defaults to first page + limit: + type: optional + docs: | + The maxiumum number of elements to return. + This is also used as the step size in this + paginated endpoint. + order: + type: optional + response: ListUsersPaginationResponse + + listWithExtendedResults: + pagination: + cursor: $request.cursor + next_cursor: $response.next + results: $response.data.users + method: GET + path: "" + request: + name: ListUsersExtendedRequest + query-parameters: + cursor: optional + response: ListUsersExtendedResponse + + listWithExtendedResultsAndOptionalData: + pagination: + cursor: $request.cursor + next_cursor: $response.next + results: $response.data.users + method: GET + path: "" + request: + name: ListUsersExtendedRequestForOptionalData + query-parameters: + cursor: optional + response: ListUsersExtendedOptionalListResponse + + listUsernames: + pagination: + cursor: $request.starting_after + next_cursor: $response.cursor.after + results: $response.cursor.data + method: GET + path: "" + request: + name: ListUsernamesRequest + query-parameters: + starting_after: + type: optional + docs: | + The cursor used for pagination in order to fetch + the next page of results. + response: root.UsernameCursor + + listWithGlobalConfig: + method: GET + path: "" + pagination: true + request: + name: ListWithGlobalConfigRequest + query-parameters: + offset: + type: optional + response: UsernameContainer \ No newline at end of file diff --git a/seed/pydantic-v2/pagination/.mock/fern.config.json b/seed/pydantic-v2/pagination/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/pagination/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/pagination/.mock/generators.yml b/seed/pydantic-v2/pagination/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/pagination/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_optional_list_response.py b/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_optional_list_response.py new file mode 100644 index 00000000000..4c3fffebb73 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_optional_list_response.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from resources.users.types.user_optional_list_page import UserOptionalListPage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ListUsersExtendedOptionalListResponse(BaseModel, UserOptionalListPage): + total_count: int + """ + The totall number of /users + """ + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_response.py b/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_response.py new file mode 100644 index 00000000000..e08990da151 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/list_users_extended_response.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from resources.users.types.user_page import UserPage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ListUsersExtendedResponse(BaseModel, UserPage): + total_count: int + """ + The totall number of /users + """ + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/list_users_pagination_response.py b/seed/pydantic-v2/pagination/resources/users/types/list_users_pagination_response.py new file mode 100644 index 00000000000..73be1705ba4 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/list_users_pagination_response.py @@ -0,0 +1,21 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.users.types.page import Page +from resources.users.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class ListUsersPaginationResponse(BaseModel): + has_next_page: Optional[bool] + page: Optional[Page] = None + total_count: int + """ + The totall number of /users + """ + data: List[User] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/next_page.py b/seed/pydantic-v2/pagination/resources/users/types/next_page.py new file mode 100644 index 00000000000..c6c225a82a9 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/next_page.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NextPage(BaseModel): + page: int + starting_after: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/page.py b/seed/pydantic-v2/pagination/resources/users/types/page.py new file mode 100644 index 00000000000..9081cb99161 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/page.py @@ -0,0 +1,20 @@ +from pydantic import BaseModel +from typing import Optional +from resources.users.types.next_page import NextPage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Page(BaseModel): + page: int + """ + The current page + """ + next: Optional[NextPage] = None + per_page: int + total_page: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/user.py b/seed/pydantic-v2/pagination/resources/users/types/user.py new file mode 100644 index 00000000000..8d8d8a0a5e9 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/user.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class User(BaseModel): + name: str + id: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/user_list_container.py b/seed/pydantic-v2/pagination/resources/users/types/user_list_container.py new file mode 100644 index 00000000000..0eeee94a95b --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/user_list_container.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import List +from resources.users.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UserListContainer(BaseModel): + users: List[User] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_container.py b/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_container.py new file mode 100644 index 00000000000..b70539d4733 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_container.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional, List +from resources.users.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UserOptionalListContainer(BaseModel): + users: Optional[List[User]] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_page.py b/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_page.py new file mode 100644 index 00000000000..51c2f4f8eec --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/user_optional_list_page.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from resources.users.types.user_optional_list_container import UserOptionalListContainer +from typing import Optional +from uuid import UUID +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UserOptionalListPage(BaseModel): + data: UserOptionalListContainer + next: Optional[UUID] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/user_page.py b/seed/pydantic-v2/pagination/resources/users/types/user_page.py new file mode 100644 index 00000000000..ce44a773271 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/user_page.py @@ -0,0 +1,16 @@ +from pydantic import BaseModel +from resources.users.types.user_list_container import UserListContainer +from typing import Optional +from uuid import UUID +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UserPage(BaseModel): + data: UserListContainer + next: Optional[UUID] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/username_container.py b/seed/pydantic-v2/pagination/resources/users/types/username_container.py new file mode 100644 index 00000000000..6cb13b375f9 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/username_container.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import List +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UsernameContainer(BaseModel): + results: List[str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/with_cursor.py b/seed/pydantic-v2/pagination/resources/users/types/with_cursor.py new file mode 100644 index 00000000000..dc9217c8d72 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/with_cursor.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class WithCursor(BaseModel): + cursor: Optional[str] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/resources/users/types/with_page.py b/seed/pydantic-v2/pagination/resources/users/types/with_page.py new file mode 100644 index 00000000000..29e06706743 --- /dev/null +++ b/seed/pydantic-v2/pagination/resources/users/types/with_page.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class WithPage(BaseModel): + page: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/snippet-templates.json b/seed/pydantic-v2/pagination/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/pagination/snippet.json b/seed/pydantic-v2/pagination/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/pagination/types/username_cursor.py b/seed/pydantic-v2/pagination/types/username_cursor.py new file mode 100644 index 00000000000..1f3b22f78e1 --- /dev/null +++ b/seed/pydantic-v2/pagination/types/username_cursor.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from .types.username_page import UsernamePage +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UsernameCursor(BaseModel): + cursor: UsernamePage + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/pagination/types/username_page.py b/seed/pydantic-v2/pagination/types/username_page.py new file mode 100644 index 00000000000..09f5f74032e --- /dev/null +++ b/seed/pydantic-v2/pagination/types/username_page.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional, List +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class UsernamePage(BaseModel): + after: Optional[str] = None + data: List[str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/plain-text/.mock/definition/api.yml b/seed/pydantic-v2/plain-text/.mock/definition/api.yml new file mode 100644 index 00000000000..4ee1d9980a2 --- /dev/null +++ b/seed/pydantic-v2/plain-text/.mock/definition/api.yml @@ -0,0 +1 @@ +name: plain-text diff --git a/seed/pydantic-v2/plain-text/.mock/definition/service.yml b/seed/pydantic-v2/plain-text/.mock/definition/service.yml new file mode 100644 index 00000000000..c42c866bcc9 --- /dev/null +++ b/seed/pydantic-v2/plain-text/.mock/definition/service.yml @@ -0,0 +1,8 @@ +service: + auth: false + base-path: "" + endpoints: + getText: + path: /text + method: POST + response: text diff --git a/seed/pydantic-v2/plain-text/.mock/fern.config.json b/seed/pydantic-v2/plain-text/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/plain-text/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/plain-text/.mock/generators.yml b/seed/pydantic-v2/plain-text/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/plain-text/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/plain-text/snippet-templates.json b/seed/pydantic-v2/plain-text/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/plain-text/snippet.json b/seed/pydantic-v2/plain-text/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/query-parameters/.mock/definition/api.yml b/seed/pydantic-v2/query-parameters/.mock/definition/api.yml new file mode 100644 index 00000000000..f5aa88ee4e4 --- /dev/null +++ b/seed/pydantic-v2/query-parameters/.mock/definition/api.yml @@ -0,0 +1 @@ +name: query-parameters diff --git a/seed/pydantic-v2/query-parameters/.mock/definition/user.yml b/seed/pydantic-v2/query-parameters/.mock/definition/user.yml new file mode 100644 index 00000000000..74eb0d08526 --- /dev/null +++ b/seed/pydantic-v2/query-parameters/.mock/definition/user.yml @@ -0,0 +1,39 @@ +types: + User: + properties: + name: string + tags: list + NestedUser: + properties: + name: string + user: User + +service: + base-path: /user + auth: false + endpoints: + getUsername: + path: "" + method: GET + request: + name: GetUsersRequest + query-parameters: + limit: integer + id: uuid + date: date + deadline: datetime + bytes: base64 + user: User + userList: list + optionalDeadline: optional + keyValue: map + optionalString: optional + nestedUser: NestedUser + optionalUser: optional + excludeUser: + type: User + allow-multiple: true + filter: + type: string + allow-multiple: true + response: User diff --git a/seed/pydantic-v2/query-parameters/.mock/fern.config.json b/seed/pydantic-v2/query-parameters/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/query-parameters/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/query-parameters/.mock/generators.yml b/seed/pydantic-v2/query-parameters/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/query-parameters/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/query-parameters/resources/user/types/nested_user.py b/seed/pydantic-v2/query-parameters/resources/user/types/nested_user.py new file mode 100644 index 00000000000..5d37f8cf37e --- /dev/null +++ b/seed/pydantic-v2/query-parameters/resources/user/types/nested_user.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from resources.user.types.user import User +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class NestedUser(BaseModel): + name: str + user: User + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/query-parameters/resources/user/types/user.py b/seed/pydantic-v2/query-parameters/resources/user/types/user.py new file mode 100644 index 00000000000..c6f06633616 --- /dev/null +++ b/seed/pydantic-v2/query-parameters/resources/user/types/user.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import List +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class User(BaseModel): + name: str + tags: List[str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/query-parameters/snippet-templates.json b/seed/pydantic-v2/query-parameters/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/query-parameters/snippet.json b/seed/pydantic-v2/query-parameters/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/reserved-keywords/.mock/definition/api.yml b/seed/pydantic-v2/reserved-keywords/.mock/definition/api.yml new file mode 100644 index 00000000000..db5bb47ddd7 --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/.mock/definition/api.yml @@ -0,0 +1,5 @@ +name: nursery-api + +error-discrimination: + strategy: property + property-name: errorName diff --git a/seed/pydantic-v2/reserved-keywords/.mock/definition/package.yml b/seed/pydantic-v2/reserved-keywords/.mock/definition/package.yml new file mode 100644 index 00000000000..a2328bf1a8e --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/.mock/definition/package.yml @@ -0,0 +1,20 @@ +types: + Package: + properties: + name: string + Record: + properties: + foo: map + 3d: integer + +service: + base-path: / + auth: false + endpoints: + test: + method: POST + path: "" + request: + name: TestRequest + query-parameters: + for: string diff --git a/seed/pydantic-v2/reserved-keywords/.mock/fern.config.json b/seed/pydantic-v2/reserved-keywords/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/reserved-keywords/.mock/generators.yml b/seed/pydantic-v2/reserved-keywords/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/reserved-keywords/.mock/sdk-reserved-keywords.shot b/seed/pydantic-v2/reserved-keywords/.mock/sdk-reserved-keywords.shot new file mode 100644 index 00000000000..142f0565e78 --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/.mock/sdk-reserved-keywords.shot @@ -0,0 +1,3552 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`runGenerator reserved-keywords 1`] = ` +Array [ + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as core from \\"./core\\"; +import { Package } from \\"./api/resources/package/client/Client\\"; +export declare namespace FernApiClient { + interface Options { + environment: core.Supplier; + } + interface RequestOptions { + timeoutInSeconds?: number; + } +} +export declare class FernApiClient { + protected readonly _options: FernApiClient.Options; + constructor(_options: FernApiClient.Options); + protected _package: Package | undefined; + get package(): Package; +} +", + "name": "Client.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.FernApiClient = void 0; +const Client_1 = require(\\"./api/resources/package/client/Client\\"); +class FernApiClient { + constructor(_options) { + this._options = _options; + } + get package() { + var _a; + return ((_a = this._package) !== null && _a !== void 0 ? _a : (this._package = new Client_1.Package(this._options))); + } +} +exports.FernApiClient = FernApiClient; +", + "name": "Client.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export * from \\"./resources\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./resources\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export * as package_ from \\"./package\\"; +export * from \\"./package/types\\"; +export * from \\"./package/client/requests\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.package_ = void 0; +exports.package_ = __importStar(require(\\"./package\\")); +__exportStar(require(\\"./package/types\\"), exports); +__exportStar(require(\\"./package/client/requests\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": Array [ + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as core from \\"../../../../core\\"; +import * as FernApi from \\"../../..\\"; +export declare namespace Package { + interface Options { + environment: core.Supplier; + } + interface RequestOptions { + timeoutInSeconds?: number; + } +} +export declare class Package { + protected readonly _options: Package.Options; + constructor(_options: Package.Options); + test(request: FernApi.TestRequest, requestOptions?: Package.RequestOptions): Promise>; +} +", + "name": "Client.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { \\"default\\": mod }; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Package = void 0; +const core = __importStar(require(\\"../../../../core\\")); +const FernApi = __importStar(require(\\"../../..\\")); +const url_search_params_1 = __importDefault(require(\\"@ungap/url-search-params\\")); +class Package { + constructor(_options) { + this._options = _options; + } + test(request, requestOptions) { + return __awaiter(this, void 0, void 0, function* () { + const { for: for_ } = request; + const _queryParams = new url_search_params_1.default(); + _queryParams.append(\\"for\\", for_); + const _response = yield core.fetcher({ + url: yield core.Supplier.get(this._options.environment), + method: \\"POST\\", + headers: { + \\"X-Fern-Language\\": \\"JavaScript\\", + }, + contentType: \\"application/json\\", + queryParameters: _queryParams, + timeoutMs: (requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.timeoutInSeconds) != null ? requestOptions.timeoutInSeconds * 1000 : 60000, + }); + if (_response.ok) { + return { + ok: true, + body: undefined, + }; + } + return { + ok: false, + error: FernApi.package_.test.Error._unknown(_response.error), + }; + }); + } +} +exports.Package = Package; +", + "name": "Client.js", + "type": "file", + }, + Object { + "contents": "export * from \\"./requests\\"; +export * as test from \\"./test\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.test = void 0; +__exportStar(require(\\"./requests\\"), exports); +exports.test = __importStar(require(\\"./test\\")); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +export interface TestRequest { + for: string; +} +", + "name": "TestRequest.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "TestRequest.js", + "type": "file", + }, + Object { + "contents": "export { TestRequest } from \\"./TestRequest\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "requests", + "type": "directory", + }, + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as FernApi from \\"../../..\\"; +import * as core from \\"../../../../core\\"; +export declare type Error = FernApi.package_.test.Error._Unknown; +export declare namespace Error { + interface _Unknown extends _Utils { + errorName: void; + content: core.Fetcher.Error; + } + interface _Utils { + _visit: <_Result>(visitor: FernApi.package_.test.Error._Visitor<_Result>) => _Result; + } + interface _Visitor<_Result> { + _other: (value: core.Fetcher.Error) => _Result; + } +} +export declare const Error: { + readonly _unknown: (fetcherError: core.Fetcher.Error) => FernApi.package_.test.Error._Unknown; + readonly _visit: <_Result>(value: FernApi.package_.test.Error, visitor: FernApi.package_.test.Error._Visitor<_Result>) => _Result; +}; +", + "name": "test.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Error = void 0; +const FernApi = __importStar(require(\\"../../..\\")); +exports.Error = { + _unknown: (fetcherError) => { + return { + errorName: undefined, + content: fetcherError, + _visit: function (visitor) { + return FernApi.package_.test.Error._visit(this, visitor); + }, + }; + }, + _visit: (value, visitor) => { + switch (value.errorName) { + default: + return visitor._other(value); + } + }, +}; +", + "name": "test.js", + "type": "file", + }, + ], + "name": "client", + "type": "directory", + }, + Object { + "contents": "export * from \\"./types\\"; +export * from \\"./client\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./types\\"), exports); +__exportStar(require(\\"./client\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +export interface Package { + name: string; +} +", + "name": "Package.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "Package.js", + "type": "file", + }, + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +export interface Record_ { + foo: Record; + \\"3D\\": number; +} +", + "name": "Record_.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "Record_.js", + "type": "file", + }, + Object { + "contents": "export * from \\"./Package\\"; +export * from \\"./Record_\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./Package\\"), exports); +__exportStar(require(\\"./Record_\\"), exports); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "types", + "type": "directory", + }, + ], + "name": "package", + "type": "directory", + }, + ], + "name": "resources", + "type": "directory", + }, + ], + "name": "api", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": Array [ + Object { + "contents": "export declare type APIResponse = SuccessfulResponse | FailedResponse; +export interface SuccessfulResponse { + ok: true; + body: T; +} +export interface FailedResponse { + ok: false; + error: T; +} +", + "name": "APIResponse.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "APIResponse.js", + "type": "file", + }, + Object { + "contents": "import { default as URLSearchParams } from \\"@ungap/url-search-params\\"; +import { AxiosAdapter } from \\"axios\\"; +import { APIResponse } from \\"./APIResponse\\"; +export declare type FetchFunction = (args: Fetcher.Args) => Promise>; +export declare namespace Fetcher { + interface Args { + url: string; + method: string; + contentType?: string; + headers?: Record; + queryParameters?: URLSearchParams; + body?: unknown; + timeoutMs?: number; + withCredentials?: boolean; + responseType?: \\"json\\" | \\"blob\\"; + adapter?: AxiosAdapter; + onUploadProgress?: (event: ProgressEvent) => void; + } + type Error = FailedStatusCodeError | NonJsonError | TimeoutError | UnknownError; + interface FailedStatusCodeError { + reason: \\"status-code\\"; + statusCode: number; + body: unknown; + } + interface NonJsonError { + reason: \\"non-json\\"; + statusCode: number; + rawBody: string; + } + interface TimeoutError { + reason: \\"timeout\\"; + } + interface UnknownError { + reason: \\"unknown\\"; + errorMessage: string; + } +} +export declare const fetcher: FetchFunction; +", + "name": "Fetcher.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { \\"default\\": mod }; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.fetcher = void 0; +const axios_1 = __importDefault(require(\\"axios\\")); +const axios_retry_1 = __importDefault(require(\\"axios-retry\\")); +const INITIAL_RETRY_DELAY = 1; +const MAX_RETRY_DELAY = 60; +const MAX_RETRIES = 5; +const AXIOS = axios_1.default.create(); +function fetcherImpl(args) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + const headers = {}; + if (args.body !== undefined && args.contentType != null) { + headers[\\"Content-Type\\"] = args.contentType; + } + if (args.headers != null) { + for (const [key, value] of Object.entries(args.headers)) { + if (value != null) { + headers[key] = value; + } + } + } + (0, axios_retry_1.default)(AXIOS, { + retries: MAX_RETRIES, + retryCondition: (error) => { + return error.response != null && [500, 502, 429].includes(error.response.status); + }, + retryDelay: (count) => { + if (count == 0) { + return INITIAL_RETRY_DELAY; + } + // Apply exponential backoff, but not more than the max. + return Math.min(INITIAL_RETRY_DELAY * Math.pow(count - 1, 2), MAX_RETRY_DELAY); + }, + }); + try { + const response = yield AXIOS.request({ + url: args.url, + params: args.queryParameters, + method: args.method, + headers, + data: args.body, + validateStatus: () => true, + transformResponse: (response) => response, + timeout: args.timeoutMs, + transitional: { + clarifyTimeoutError: true, + }, + withCredentials: args.withCredentials, + adapter: args.adapter, + onUploadProgress: args.onUploadProgress, + maxBodyLength: Infinity, + maxContentLength: Infinity, + responseType: (_a = args.responseType) !== null && _a !== void 0 ? _a : \\"json\\", + }); + let body; + if (args.responseType === \\"blob\\") { + body = response.data; + } + else if (response.data != null && response.data.length > 0) { + try { + body = (_b = JSON.parse(response.data)) !== null && _b !== void 0 ? _b : undefined; + } + catch (_c) { + return { + ok: false, + error: { + reason: \\"non-json\\", + statusCode: response.status, + rawBody: response.data, + }, + }; + } + } + if (response.status >= 200 && response.status < 400) { + return { + ok: true, + body: body, + }; + } + else { + return { + ok: false, + error: { + reason: \\"status-code\\", + statusCode: response.status, + body, + }, + }; + } + } + catch (error) { + if (error.code === \\"ETIMEDOUT\\") { + return { + ok: false, + error: { + reason: \\"timeout\\", + }, + }; + } + return { + ok: false, + error: { + reason: \\"unknown\\", + errorMessage: error.message, + }, + }; + } + }); +} +exports.fetcher = fetcherImpl; +", + "name": "Fetcher.js", + "type": "file", + }, + Object { + "contents": "export declare type Supplier = T | Promise | (() => T | Promise); +export declare const Supplier: { + get: (supplier: Supplier) => Promise; +}; +", + "name": "Supplier.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Supplier = void 0; +exports.Supplier = { + get: (supplier) => __awaiter(void 0, void 0, void 0, function* () { + if (typeof supplier === \\"function\\") { + return supplier(); + } + else { + return supplier; + } + }), +}; +", + "name": "Supplier.js", + "type": "file", + }, + Object { + "contents": "export type { APIResponse } from \\"./APIResponse\\"; +export { fetcher } from \\"./Fetcher\\"; +export type { Fetcher, FetchFunction } from \\"./Fetcher\\"; +export { Supplier } from \\"./Supplier\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Supplier = exports.fetcher = void 0; +var Fetcher_1 = require(\\"./Fetcher\\"); +Object.defineProperty(exports, \\"fetcher\\", { enumerable: true, get: function () { return Fetcher_1.fetcher; } }); +var Supplier_1 = require(\\"./Supplier\\"); +Object.defineProperty(exports, \\"Supplier\\", { enumerable: true, get: function () { return Supplier_1.Supplier; } }); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "fetcher", + "type": "directory", + }, + Object { + "contents": "export * from \\"./fetcher\\"; +export * as serialization from \\"./schemas\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.serialization = void 0; +__exportStar(require(\\"./fetcher\\"), exports); +exports.serialization = __importStar(require(\\"./schemas\\")); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "import { SchemaUtils } from \\"./builders\\"; +import { MaybePromise } from \\"./utils/MaybePromise\\"; +export declare type Schema = BaseSchema & SchemaUtils; +export declare type inferRaw = S extends Schema ? Raw : never; +export declare type inferParsed = S extends Schema ? Parsed : never; +export interface BaseSchema { + parse: (raw: unknown, opts?: SchemaOptions) => MaybePromise>; + json: (parsed: unknown, opts?: SchemaOptions) => MaybePromise>; + getType: () => SchemaType | Promise; +} +export declare const SchemaType: { + readonly DATE: \\"date\\"; + readonly ENUM: \\"enum\\"; + readonly LIST: \\"list\\"; + readonly STRING_LITERAL: \\"stringLiteral\\"; + readonly OBJECT: \\"object\\"; + readonly ANY: \\"any\\"; + readonly BOOLEAN: \\"boolean\\"; + readonly NUMBER: \\"number\\"; + readonly STRING: \\"string\\"; + readonly UNKNOWN: \\"unknown\\"; + readonly RECORD: \\"record\\"; + readonly SET: \\"set\\"; + readonly UNION: \\"union\\"; + readonly UNDISCRIMINATED_UNION: \\"undiscriminatedUnion\\"; + readonly OPTIONAL: \\"optional\\"; +}; +export declare type SchemaType = typeof SchemaType[keyof typeof SchemaType]; +export declare type MaybeValid = Valid | Invalid; +export interface Valid { + ok: true; + value: T; +} +export interface Invalid { + ok: false; + errors: ValidationError[]; +} +export interface ValidationError { + path: string[]; + message: string; +} +export interface SchemaOptions { + /** + * how to handle unrecognized keys in objects + * + * @default \\"fail\\" + */ + unrecognizedObjectKeys?: \\"fail\\" | \\"passthrough\\" | \\"strip\\"; + /** + * whether to fail when an unrecognized discriminant value is + * encountered in a union + * + * @default false + */ + allowUnrecognizedUnionMembers?: boolean; + /** + * whether to fail when an unrecognized enum value is encountered + * + * @default false + */ + allowUnrecognizedEnumValues?: boolean; + /** + * whether to allow data that doesn't conform to the schema. + * invalid data is passed through without transformation. + * + * when this is enabled, .parse() and .json() will always + * return \`ok: true\`. \`.parseOrThrow()\` and \`.jsonOrThrow()\` + * will never fail. + * + * @default false + */ + skipValidation?: boolean; + /** + * each validation failure contains a \\"path\\" property, which is + * the breadcrumbs to the offending node in the JSON. you can supply + * a prefix that is prepended to all the errors' paths. this can be + * helpful for zurg's internal debug logging. + */ + breadcrumbsPrefix?: string[]; +} +", + "name": "Schema.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.SchemaType = void 0; +exports.SchemaType = { + DATE: \\"date\\", + ENUM: \\"enum\\", + LIST: \\"list\\", + STRING_LITERAL: \\"stringLiteral\\", + OBJECT: \\"object\\", + ANY: \\"any\\", + BOOLEAN: \\"boolean\\", + NUMBER: \\"number\\", + STRING: \\"string\\", + UNKNOWN: \\"unknown\\", + RECORD: \\"record\\", + SET: \\"set\\", + UNION: \\"union\\", + UNDISCRIMINATED_UNION: \\"undiscriminatedUnion\\", + OPTIONAL: \\"optional\\", +}; +", + "name": "Schema.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": Array [ + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function date(): Schema; +", + "name": "date.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.date = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +// https://stackoverflow.com/questions/12756159/regex-and-iso8601-formatted-datetime +const ISO_8601_REGEX = /^([+-]?\\\\d{4}(?!\\\\d{2}\\\\b))((-?)((0[1-9]|1[0-2])(\\\\3([12]\\\\d|0[1-9]|3[01]))?|W([0-4]\\\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\\\d|[12]\\\\d{2}|3([0-5]\\\\d|6[1-6])))([T\\\\s]((([01]\\\\d|2[0-3])((:?)[0-5]\\\\d)?|24:?00)([.,]\\\\d+(?!:))?)?(\\\\17[0-5]\\\\d([.,]\\\\d+)?)?([zZ]|([+-])([01]\\\\d|2[0-3]):?([0-5]\\\\d)?)?)?)?$/; +function date() { + const baseSchema = { + parse: (raw, { breadcrumbsPrefix = [] } = {}) => { + if (typeof raw !== \\"string\\") { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(raw, \\"string\\"), + }, + ], + }; + } + if (!ISO_8601_REGEX.test(raw)) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(raw, \\"ISO 8601 date string\\"), + }, + ], + }; + } + return { + ok: true, + value: new Date(raw), + }; + }, + json: (date, { breadcrumbsPrefix = [] } = {}) => { + if (date instanceof Date) { + return { + ok: true, + value: date.toISOString(), + }; + } + else { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(date, \\"Date object\\"), + }, + ], + }; + } + }, + getType: () => Schema_1.SchemaType.DATE, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.date = date; +", + "name": "date.js", + "type": "file", + }, + Object { + "contents": "export { date } from \\"./date\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.date = void 0; +var date_1 = require(\\"./date\\"); +Object.defineProperty(exports, \\"date\\", { enumerable: true, get: function () { return date_1.date; } }); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "date", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function enum_(values: E): Schema; +", + "name": "enum.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.enum_ = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +function enum_(values) { + const validValues = new Set(values); + const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.ENUM, (value, { allowUnrecognizedEnumValues, breadcrumbsPrefix = [] } = {}) => { + if (typeof value !== \\"string\\") { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"string\\"), + }, + ], + }; + } + if (!validValues.has(value) && !allowUnrecognizedEnumValues) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"enum\\"), + }, + ], + }; + } + return { + ok: true, + value: value, + }; + }); + return schemaCreator(); +} +exports.enum_ = enum_; +", + "name": "enum.js", + "type": "file", + }, + Object { + "contents": "export { enum_ } from \\"./enum\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.enum_ = void 0; +var enum_1 = require(\\"./enum\\"); +Object.defineProperty(exports, \\"enum_\\", { enumerable: true, get: function () { return enum_1.enum_; } }); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "enum", + "type": "directory", + }, + Object { + "contents": "export * from \\"./date\\"; +export * from \\"./enum\\"; +export * from \\"./lazy\\"; +export * from \\"./list\\"; +export * from \\"./literals\\"; +export * from \\"./object\\"; +export * from \\"./object-like\\"; +export * from \\"./primitives\\"; +export * from \\"./record\\"; +export * from \\"./schema-utils\\"; +export * from \\"./set\\"; +export * from \\"./undiscriminated-union\\"; +export * from \\"./union\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./date\\"), exports); +__exportStar(require(\\"./enum\\"), exports); +__exportStar(require(\\"./lazy\\"), exports); +__exportStar(require(\\"./list\\"), exports); +__exportStar(require(\\"./literals\\"), exports); +__exportStar(require(\\"./object\\"), exports); +__exportStar(require(\\"./object-like\\"), exports); +__exportStar(require(\\"./primitives\\"), exports); +__exportStar(require(\\"./record\\"), exports); +__exportStar(require(\\"./schema-utils\\"), exports); +__exportStar(require(\\"./set\\"), exports); +__exportStar(require(\\"./undiscriminated-union\\"), exports); +__exportStar(require(\\"./union\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export { lazy } from \\"./lazy\\"; +export type { SchemaGetter } from \\"./lazy\\"; +export { lazyObject } from \\"./lazyObject\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.lazyObject = exports.lazy = void 0; +var lazy_1 = require(\\"./lazy\\"); +Object.defineProperty(exports, \\"lazy\\", { enumerable: true, get: function () { return lazy_1.lazy; } }); +var lazyObject_1 = require(\\"./lazyObject\\"); +Object.defineProperty(exports, \\"lazyObject\\", { enumerable: true, get: function () { return lazyObject_1.lazyObject; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema, Schema } from \\"../../Schema\\"; +export declare type SchemaGetter> = () => SchemaType | Promise; +export declare function lazy(getter: SchemaGetter>): Schema; +export declare function constructLazyBaseSchema(getter: SchemaGetter>): BaseSchema; +export declare function getMemoizedSchema>(getter: SchemaGetter): Promise; +", + "name": "lazy.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.getMemoizedSchema = exports.constructLazyBaseSchema = exports.lazy = void 0; +const schema_utils_1 = require(\\"../schema-utils\\"); +function lazy(getter) { + const baseSchema = constructLazyBaseSchema(getter); + return Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.lazy = lazy; +function constructLazyBaseSchema(getter) { + return { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { return (yield getMemoizedSchema(getter)).parse(raw, opts); }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { return (yield getMemoizedSchema(getter)).json(parsed, opts); }), + getType: () => __awaiter(this, void 0, void 0, function* () { return (yield getMemoizedSchema(getter)).getType(); }), + }; +} +exports.constructLazyBaseSchema = constructLazyBaseSchema; +function getMemoizedSchema(getter) { + return __awaiter(this, void 0, void 0, function* () { + const castedGetter = getter; + if (castedGetter.__zurg_memoized == null) { + castedGetter.__zurg_memoized = yield getter(); + } + return castedGetter.__zurg_memoized; + }); +} +exports.getMemoizedSchema = getMemoizedSchema; +", + "name": "lazy.js", + "type": "file", + }, + Object { + "contents": "import { ObjectSchema } from \\"../object/types\\"; +import { SchemaGetter } from \\"./lazy\\"; +export declare function lazyObject(getter: SchemaGetter>): ObjectSchema; +", + "name": "lazyObject.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.lazyObject = void 0; +const object_1 = require(\\"../object\\"); +const object_like_1 = require(\\"../object-like\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +const lazy_1 = require(\\"./lazy\\"); +function lazyObject(getter) { + const baseSchema = Object.assign(Object.assign({}, (0, lazy_1.constructLazyBaseSchema)(getter)), { _getRawProperties: () => __awaiter(this, void 0, void 0, function* () { return (yield (0, lazy_1.getMemoizedSchema)(getter))._getRawProperties(); }), _getParsedProperties: () => __awaiter(this, void 0, void 0, function* () { return (yield (0, lazy_1.getMemoizedSchema)(getter))._getParsedProperties(); }) }); + return Object.assign(Object.assign(Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)), (0, object_1.getObjectUtils)(baseSchema)); +} +exports.lazyObject = lazyObject; +", + "name": "lazyObject.js", + "type": "file", + }, + ], + "name": "lazy", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export { list } from \\"./list\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.list = void 0; +var list_1 = require(\\"./list\\"); +Object.defineProperty(exports, \\"list\\", { enumerable: true, get: function () { return list_1.list; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function list(schema: Schema): Schema; +", + "name": "list.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.list = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function list(schema) { + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformArray(raw, (item, index) => { + var _a; + return schema.parse(item, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`[\${index}]\`] })); + }); + }), + json: (parsed, opts) => validateAndTransformArray(parsed, (item, index) => { + var _a; + return schema.json(item, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`[\${index}]\`] })); + }), + getType: () => Schema_1.SchemaType.LIST, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.list = list; +function validateAndTransformArray(value, transformItem) { + return __awaiter(this, void 0, void 0, function* () { + if (!Array.isArray(value)) { + return { + ok: false, + errors: [ + { + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"list\\"), + path: [], + }, + ], + }; + } + const maybeValidItems = yield Promise.all(value.map((item, index) => transformItem(item, index))); + return maybeValidItems.reduce((acc, item) => { + if (acc.ok && item.ok) { + return { + ok: true, + value: [...acc.value, item.value], + }; + } + const errors = []; + if (!acc.ok) { + errors.push(...acc.errors); + } + if (!item.ok) { + errors.push(...item.errors); + } + return { + ok: false, + errors, + }; + }, { ok: true, value: [] }); + }); +} +", + "name": "list.js", + "type": "file", + }, + ], + "name": "list", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export { stringLiteral } from \\"./stringLiteral\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.stringLiteral = void 0; +var stringLiteral_1 = require(\\"./stringLiteral\\"); +Object.defineProperty(exports, \\"stringLiteral\\", { enumerable: true, get: function () { return stringLiteral_1.stringLiteral; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function stringLiteral(literal: V): Schema; +", + "name": "stringLiteral.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.stringLiteral = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +function stringLiteral(literal) { + const schemaCreator = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING_LITERAL, (value, { breadcrumbsPrefix = [] } = {}) => { + if (value === literal) { + return { + ok: true, + value: literal, + }; + } + else { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \`\\"\${literal}\\"\`), + }, + ], + }; + } + }); + return schemaCreator(); +} +exports.stringLiteral = stringLiteral; +", + "name": "stringLiteral.js", + "type": "file", + }, + ], + "name": "literals", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export { getObjectUtils, object } from \\"./object\\"; +export { objectWithoutOptionalProperties } from \\"./objectWithoutOptionalProperties\\"; +export type { inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas, inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas, } from \\"./objectWithoutOptionalProperties\\"; +export { isProperty, property } from \\"./property\\"; +export type { Property } from \\"./property\\"; +export type { BaseObjectSchema, inferObjectSchemaFromPropertySchemas, inferParsedObject, inferParsedObjectFromPropertySchemas, inferParsedPropertySchema, inferRawKey, inferRawObject, inferRawObjectFromPropertySchemas, inferRawPropertySchema, ObjectSchema, ObjectUtils, PropertySchemas, } from \\"./types\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.property = exports.isProperty = exports.objectWithoutOptionalProperties = exports.object = exports.getObjectUtils = void 0; +var object_1 = require(\\"./object\\"); +Object.defineProperty(exports, \\"getObjectUtils\\", { enumerable: true, get: function () { return object_1.getObjectUtils; } }); +Object.defineProperty(exports, \\"object\\", { enumerable: true, get: function () { return object_1.object; } }); +var objectWithoutOptionalProperties_1 = require(\\"./objectWithoutOptionalProperties\\"); +Object.defineProperty(exports, \\"objectWithoutOptionalProperties\\", { enumerable: true, get: function () { return objectWithoutOptionalProperties_1.objectWithoutOptionalProperties; } }); +var property_1 = require(\\"./property\\"); +Object.defineProperty(exports, \\"isProperty\\", { enumerable: true, get: function () { return property_1.isProperty; } }); +Object.defineProperty(exports, \\"property\\", { enumerable: true, get: function () { return property_1.property; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { BaseObjectSchema, inferObjectSchemaFromPropertySchemas, ObjectUtils, PropertySchemas } from \\"./types\\"; +export declare function object>(schemas: T): inferObjectSchemaFromPropertySchemas; +export declare function getObjectUtils(schema: BaseObjectSchema): ObjectUtils; +", + "name": "object.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.getObjectUtils = exports.object = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const entries_1 = require(\\"../../utils/entries\\"); +const filterObject_1 = require(\\"../../utils/filterObject\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const isPlainObject_1 = require(\\"../../utils/isPlainObject\\"); +const keys_1 = require(\\"../../utils/keys\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const partition_1 = require(\\"../../utils/partition\\"); +const object_like_1 = require(\\"../object-like\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +const property_1 = require(\\"./property\\"); +function object(schemas) { + const baseSchema = { + _getRawProperties: () => Promise.resolve(Object.entries(schemas).map(([parsedKey, propertySchema]) => (0, property_1.isProperty)(propertySchema) ? propertySchema.rawKey : parsedKey)), + _getParsedProperties: () => Promise.resolve((0, keys_1.keys)(schemas)), + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + const rawKeyToProperty = {}; + const requiredKeys = []; + for (const [parsedKey, schemaOrObjectProperty] of (0, entries_1.entries)(schemas)) { + const rawKey = (0, property_1.isProperty)(schemaOrObjectProperty) ? schemaOrObjectProperty.rawKey : parsedKey; + const valueSchema = (0, property_1.isProperty)(schemaOrObjectProperty) + ? schemaOrObjectProperty.valueSchema + : schemaOrObjectProperty; + const property = { + rawKey, + parsedKey: parsedKey, + valueSchema, + }; + rawKeyToProperty[rawKey] = property; + if (yield isSchemaRequired(valueSchema)) { + requiredKeys.push(rawKey); + } + } + return validateAndTransformObject({ + value: raw, + requiredKeys, + getProperty: (rawKey) => { + const property = rawKeyToProperty[rawKey]; + if (property == null) { + return undefined; + } + return { + transformedKey: property.parsedKey, + transform: (propertyValue) => { + var _a; + return property.valueSchema.parse(propertyValue, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), rawKey] })); + }, + }; + }, + unrecognizedObjectKeys: opts === null || opts === void 0 ? void 0 : opts.unrecognizedObjectKeys, + skipValidation: opts === null || opts === void 0 ? void 0 : opts.skipValidation, + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + const requiredKeys = []; + for (const [parsedKey, schemaOrObjectProperty] of (0, entries_1.entries)(schemas)) { + const valueSchema = (0, property_1.isProperty)(schemaOrObjectProperty) + ? schemaOrObjectProperty.valueSchema + : schemaOrObjectProperty; + if (yield isSchemaRequired(valueSchema)) { + requiredKeys.push(parsedKey); + } + } + return validateAndTransformObject({ + value: parsed, + requiredKeys, + getProperty: (parsedKey) => { + const property = schemas[parsedKey]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (property == null) { + return undefined; + } + if ((0, property_1.isProperty)(property)) { + return { + transformedKey: property.rawKey, + transform: (propertyValue) => { + var _a; + return property.valueSchema.json(propertyValue, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), parsedKey] })); + }, + }; + } + else { + return { + transformedKey: parsedKey, + transform: (propertyValue) => { + var _a; + return property.json(propertyValue, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), parsedKey] })); + }, + }; + } + }, + unrecognizedObjectKeys: opts === null || opts === void 0 ? void 0 : opts.unrecognizedObjectKeys, + skipValidation: opts === null || opts === void 0 ? void 0 : opts.skipValidation, + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + getType: () => Schema_1.SchemaType.OBJECT, + }; + return Object.assign(Object.assign(Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)), getObjectUtils(baseSchema)); +} +exports.object = object; +function validateAndTransformObject({ value, requiredKeys, getProperty, unrecognizedObjectKeys = \\"fail\\", skipValidation = false, breadcrumbsPrefix = [], }) { + return __awaiter(this, void 0, void 0, function* () { + if (!(0, isPlainObject_1.isPlainObject)(value)) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"object\\"), + }, + ], + }; + } + const missingRequiredKeys = new Set(requiredKeys); + const errors = []; + const transformed = {}; + for (const [preTransformedKey, preTransformedItemValue] of Object.entries(value)) { + const property = getProperty(preTransformedKey); + if (property != null) { + missingRequiredKeys.delete(preTransformedKey); + const value = yield property.transform(preTransformedItemValue); + if (value.ok) { + transformed[property.transformedKey] = value.value; + } + else { + transformed[preTransformedKey] = preTransformedItemValue; + errors.push(...value.errors); + } + } + else { + switch (unrecognizedObjectKeys) { + case \\"fail\\": + errors.push({ + path: [...breadcrumbsPrefix, preTransformedKey], + message: \`Unexpected key \\"\${preTransformedKey}\\"\`, + }); + break; + case \\"strip\\": + break; + case \\"passthrough\\": + transformed[preTransformedKey] = preTransformedItemValue; + break; + } + } + } + errors.push(...requiredKeys + .filter((key) => missingRequiredKeys.has(key)) + .map((key) => ({ + path: breadcrumbsPrefix, + message: \`Missing required key \\"\${key}\\"\`, + }))); + if (errors.length === 0 || skipValidation) { + return { + ok: true, + value: transformed, + }; + } + else { + return { + ok: false, + errors, + }; + } + }); +} +function getObjectUtils(schema) { + return { + extend: (extension) => { + const baseSchema = { + _getParsedProperties: () => __awaiter(this, void 0, void 0, function* () { + return [ + ...(yield schema._getParsedProperties()), + ...(yield extension._getParsedProperties()), + ]; + }), + _getRawProperties: () => __awaiter(this, void 0, void 0, function* () { + return [ + ...(yield schema._getRawProperties()), + ...(yield extension._getRawProperties()), + ]; + }), + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformExtendedObject({ + extensionKeys: yield extension._getRawProperties(), + value: raw, + transformBase: (rawBase) => schema.parse(rawBase, opts), + transformExtension: (rawExtension) => extension.parse(rawExtension, opts), + }); + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformExtendedObject({ + extensionKeys: yield extension._getParsedProperties(), + value: parsed, + transformBase: (parsedBase) => schema.json(parsedBase, opts), + transformExtension: (parsedExtension) => extension.json(parsedExtension, opts), + }); + }), + getType: () => Schema_1.SchemaType.OBJECT, + }; + return Object.assign(Object.assign(Object.assign(Object.assign({}, baseSchema), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)), getObjectUtils(baseSchema)); + }, + }; +} +exports.getObjectUtils = getObjectUtils; +function validateAndTransformExtendedObject({ extensionKeys, value, transformBase, transformExtension, }) { + return __awaiter(this, void 0, void 0, function* () { + const extensionPropertiesSet = new Set(extensionKeys); + const [extensionProperties, baseProperties] = (0, partition_1.partition)((0, keys_1.keys)(value), (key) => extensionPropertiesSet.has(key)); + const transformedBase = yield transformBase((0, filterObject_1.filterObject)(value, baseProperties)); + const transformedExtension = yield transformExtension((0, filterObject_1.filterObject)(value, extensionProperties)); + if (transformedBase.ok && transformedExtension.ok) { + return { + ok: true, + value: Object.assign(Object.assign({}, transformedBase.value), transformedExtension.value), + }; + } + else { + return { + ok: false, + errors: [ + ...(transformedBase.ok ? [] : transformedBase.errors), + ...(transformedExtension.ok ? [] : transformedExtension.errors), + ], + }; + } + }); +} +function isSchemaRequired(schema) { + return __awaiter(this, void 0, void 0, function* () { + return !(yield isSchemaOptional(schema)); + }); +} +function isSchemaOptional(schema) { + return __awaiter(this, void 0, void 0, function* () { + switch (yield schema.getType()) { + case Schema_1.SchemaType.ANY: + case Schema_1.SchemaType.UNKNOWN: + case Schema_1.SchemaType.OPTIONAL: + return true; + default: + return false; + } + }); +} +", + "name": "object.js", + "type": "file", + }, + Object { + "contents": "import { inferParsedPropertySchema, inferRawObjectFromPropertySchemas, ObjectSchema, PropertySchemas } from \\"./types\\"; +export declare function objectWithoutOptionalProperties>(schemas: T): inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas; +export declare type inferObjectWithoutOptionalPropertiesSchemaFromPropertySchemas> = ObjectSchema, inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas>; +export declare type inferParsedObjectWithoutOptionalPropertiesFromPropertySchemas> = { + [K in keyof T]: inferParsedPropertySchema; +}; +", + "name": "objectWithoutOptionalProperties.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.objectWithoutOptionalProperties = void 0; +const object_1 = require(\\"./object\\"); +function objectWithoutOptionalProperties(schemas) { + return (0, object_1.object)(schemas); +} +exports.objectWithoutOptionalProperties = objectWithoutOptionalProperties; +", + "name": "objectWithoutOptionalProperties.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function property(rawKey: RawKey, valueSchema: Schema): Property; +export interface Property { + rawKey: RawKey; + valueSchema: Schema; + isProperty: true; +} +export declare function isProperty>(maybeProperty: unknown): maybeProperty is O; +", + "name": "property.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.isProperty = exports.property = void 0; +function property(rawKey, valueSchema) { + return { + rawKey, + valueSchema, + isProperty: true, + }; +} +exports.property = property; +function isProperty(maybeProperty) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return maybeProperty.isProperty; +} +exports.isProperty = isProperty; +", + "name": "property.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema, inferParsed, inferRaw, Schema } from \\"../../Schema\\"; +import { addQuestionMarksToNullableProperties } from \\"../../utils/addQuestionMarksToNullableProperties\\"; +import { ObjectLikeUtils } from \\"../object-like\\"; +import { SchemaUtils } from \\"../schema-utils\\"; +import { Property } from \\"./property\\"; +export declare type ObjectSchema = BaseObjectSchema & ObjectLikeUtils & ObjectUtils & SchemaUtils; +export interface BaseObjectSchema extends BaseSchema { + _getRawProperties: () => Promise<(keyof Raw)[]>; + _getParsedProperties: () => Promise<(keyof Parsed)[]>; +} +export interface ObjectUtils { + extend: (schemas: ObjectSchema) => ObjectSchema; +} +export declare type inferRawObject> = O extends ObjectSchema ? Raw : never; +export declare type inferParsedObject> = O extends ObjectSchema ? Parsed : never; +export declare type inferObjectSchemaFromPropertySchemas> = ObjectSchema, inferParsedObjectFromPropertySchemas>; +export declare type inferRawObjectFromPropertySchemas> = addQuestionMarksToNullableProperties<{ + [ParsedKey in keyof T as inferRawKey]: inferRawPropertySchema; +}>; +export declare type inferParsedObjectFromPropertySchemas> = addQuestionMarksToNullableProperties<{ + [K in keyof T]: inferParsedPropertySchema; +}>; +export declare type PropertySchemas = Record | Schema>; +export declare type inferRawPropertySchema

| Schema> = P extends Property ? Raw : P extends Schema ? inferRaw

: never; +export declare type inferParsedPropertySchema

| Schema> = P extends Property ? Parsed : P extends Schema ? inferParsed

: never; +export declare type inferRawKey | Schema> = P extends Property ? Raw : ParsedKey; +", + "name": "types.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "types.js", + "type": "file", + }, + ], + "name": "object", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "import { BaseSchema } from \\"../../Schema\\"; +import { ObjectLikeSchema, ObjectLikeUtils } from \\"./types\\"; +export declare function getObjectLikeUtils(schema: BaseSchema): ObjectLikeUtils; +/** + * object-like utils are defined in one file to resolve issues with circular imports + */ +export declare function withParsedProperties(objectLike: BaseSchema, properties: { + [K in keyof Properties]: Properties[K] | ((parsed: ParsedObjectShape) => Properties[K]); +}): ObjectLikeSchema; +", + "name": "getObjectLikeUtils.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.withParsedProperties = exports.getObjectLikeUtils = void 0; +const filterObject_1 = require(\\"../../utils/filterObject\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const isPlainObject_1 = require(\\"../../utils/isPlainObject\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function getObjectLikeUtils(schema) { + return { + withParsedProperties: (properties) => withParsedProperties(schema, properties), + }; +} +exports.getObjectLikeUtils = getObjectLikeUtils; +/** + * object-like utils are defined in one file to resolve issues with circular imports + */ +function withParsedProperties(objectLike, properties) { + const objectSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + const parsedObject = yield objectLike.parse(raw, opts); + if (!parsedObject.ok) { + return parsedObject; + } + const additionalProperties = Object.entries(properties).reduce((processed, [key, value]) => { + return Object.assign(Object.assign({}, processed), { [key]: typeof value === \\"function\\" ? value(parsedObject.value) : value }); + }, {}); + return { + ok: true, + value: Object.assign(Object.assign({}, parsedObject.value), additionalProperties), + }; + }), + json: (parsed, opts) => { + var _a; + if (!(0, isPlainObject_1.isPlainObject)(parsed)) { + return { + ok: false, + errors: [ + { + path: (_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : [], + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(parsed, \\"object\\"), + }, + ], + }; + } + // strip out added properties + const addedPropertyKeys = new Set(Object.keys(properties)); + const parsedWithoutAddedProperties = (0, filterObject_1.filterObject)(parsed, Object.keys(parsed).filter((key) => !addedPropertyKeys.has(key))); + return objectLike.json(parsedWithoutAddedProperties, opts); + }, + getType: () => objectLike.getType(), + }; + return Object.assign(Object.assign(Object.assign({}, objectSchema), (0, schema_utils_1.getSchemaUtils)(objectSchema)), getObjectLikeUtils(objectSchema)); +} +exports.withParsedProperties = withParsedProperties; +", + "name": "getObjectLikeUtils.js", + "type": "file", + }, + Object { + "contents": "export { getObjectLikeUtils, withParsedProperties } from \\"./getObjectLikeUtils\\"; +export type { ObjectLikeSchema, ObjectLikeUtils } from \\"./types\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.withParsedProperties = exports.getObjectLikeUtils = void 0; +var getObjectLikeUtils_1 = require(\\"./getObjectLikeUtils\\"); +Object.defineProperty(exports, \\"getObjectLikeUtils\\", { enumerable: true, get: function () { return getObjectLikeUtils_1.getObjectLikeUtils; } }); +Object.defineProperty(exports, \\"withParsedProperties\\", { enumerable: true, get: function () { return getObjectLikeUtils_1.withParsedProperties; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema, Schema } from \\"../../Schema\\"; +export declare type ObjectLikeSchema = Schema & BaseSchema & ObjectLikeUtils; +export interface ObjectLikeUtils { + withParsedProperties: >(properties: { + [K in keyof T]: T[K] | ((parsed: Parsed) => T[K]); + }) => ObjectLikeSchema; +} +", + "name": "types.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "types.js", + "type": "file", + }, + ], + "name": "object-like", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export declare const any: () => import(\\"../../Schema\\").Schema; +", + "name": "any.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.any = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +exports.any = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.ANY, (value) => ({ ok: true, value })); +", + "name": "any.js", + "type": "file", + }, + Object { + "contents": "export declare const boolean: () => import(\\"../../Schema\\").Schema; +", + "name": "boolean.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.boolean = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +exports.boolean = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.BOOLEAN, (value, { breadcrumbsPrefix = [] } = {}) => { + if (typeof value === \\"boolean\\") { + return { + ok: true, + value, + }; + } + else { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"boolean\\"), + }, + ], + }; + } +}); +", + "name": "boolean.js", + "type": "file", + }, + Object { + "contents": "export { any } from \\"./any\\"; +export { boolean } from \\"./boolean\\"; +export { number } from \\"./number\\"; +export { string } from \\"./string\\"; +export { unknown } from \\"./unknown\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.unknown = exports.string = exports.number = exports.boolean = exports.any = void 0; +var any_1 = require(\\"./any\\"); +Object.defineProperty(exports, \\"any\\", { enumerable: true, get: function () { return any_1.any; } }); +var boolean_1 = require(\\"./boolean\\"); +Object.defineProperty(exports, \\"boolean\\", { enumerable: true, get: function () { return boolean_1.boolean; } }); +var number_1 = require(\\"./number\\"); +Object.defineProperty(exports, \\"number\\", { enumerable: true, get: function () { return number_1.number; } }); +var string_1 = require(\\"./string\\"); +Object.defineProperty(exports, \\"string\\", { enumerable: true, get: function () { return string_1.string; } }); +var unknown_1 = require(\\"./unknown\\"); +Object.defineProperty(exports, \\"unknown\\", { enumerable: true, get: function () { return unknown_1.unknown; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "export declare const number: () => import(\\"../../Schema\\").Schema; +", + "name": "number.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.number = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +exports.number = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.NUMBER, (value, { breadcrumbsPrefix = [] } = {}) => { + if (typeof value === \\"number\\") { + return { + ok: true, + value, + }; + } + else { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"number\\"), + }, + ], + }; + } +}); +", + "name": "number.js", + "type": "file", + }, + Object { + "contents": "export declare const string: () => import(\\"../../Schema\\").Schema; +", + "name": "string.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.string = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +exports.string = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.STRING, (value, { breadcrumbsPrefix = [] } = {}) => { + if (typeof value === \\"string\\") { + return { + ok: true, + value, + }; + } + else { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"string\\"), + }, + ], + }; + } +}); +", + "name": "string.js", + "type": "file", + }, + Object { + "contents": "export declare const unknown: () => import(\\"../../Schema\\").Schema; +", + "name": "unknown.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.unknown = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const createIdentitySchemaCreator_1 = require(\\"../../utils/createIdentitySchemaCreator\\"); +exports.unknown = (0, createIdentitySchemaCreator_1.createIdentitySchemaCreator)(Schema_1.SchemaType.UNKNOWN, (value) => ({ ok: true, value })); +", + "name": "unknown.js", + "type": "file", + }, + ], + "name": "primitives", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export { record } from \\"./record\\"; +export type { BaseRecordSchema, RecordSchema } from \\"./types\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.record = void 0; +var record_1 = require(\\"./record\\"); +Object.defineProperty(exports, \\"record\\", { enumerable: true, get: function () { return record_1.record; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +import { RecordSchema } from \\"./types\\"; +export declare function record(keySchema: Schema, valueSchema: Schema): RecordSchema; +", + "name": "record.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.record = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const entries_1 = require(\\"../../utils/entries\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const isPlainObject_1 = require(\\"../../utils/isPlainObject\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function record(keySchema, valueSchema) { + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformRecord({ + value: raw, + isKeyNumeric: (yield keySchema.getType()) === Schema_1.SchemaType.NUMBER, + transformKey: (key) => { + var _a; + return keySchema.parse(key, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`\${key} (key)\`] })); + }, + transformValue: (value, key) => { + var _a; + return valueSchema.parse(value, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`\${key}\`] })); + }, + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformRecord({ + value: parsed, + isKeyNumeric: (yield keySchema.getType()) === Schema_1.SchemaType.NUMBER, + transformKey: (key) => { + var _a; + return keySchema.json(key, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`\${key} (key)\`] })); + }, + transformValue: (value, key) => { + var _a; + return valueSchema.json(value, Object.assign(Object.assign({}, opts), { breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), \`\${key}\`] })); + }, + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + getType: () => Schema_1.SchemaType.RECORD, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.record = record; +function validateAndTransformRecord({ value, isKeyNumeric, transformKey, transformValue, breadcrumbsPrefix = [], }) { + return __awaiter(this, void 0, void 0, function* () { + if (!(0, isPlainObject_1.isPlainObject)(value)) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"object\\"), + }, + ], + }; + } + return (0, entries_1.entries)(value).reduce((accPromise, [stringKey, value]) => __awaiter(this, void 0, void 0, function* () { + // skip nullish keys + if (value == null) { + return accPromise; + } + const acc = yield accPromise; + let key = stringKey; + if (isKeyNumeric) { + const numberKey = stringKey.length > 0 ? Number(stringKey) : NaN; + if (!isNaN(numberKey)) { + key = numberKey; + } + } + const transformedKey = yield transformKey(key); + const transformedValue = yield transformValue(value, key); + if (acc.ok && transformedKey.ok && transformedValue.ok) { + return { + ok: true, + value: Object.assign(Object.assign({}, acc.value), { [transformedKey.value]: transformedValue.value }), + }; + } + const errors = []; + if (!acc.ok) { + errors.push(...acc.errors); + } + if (!transformedKey.ok) { + errors.push(...transformedKey.errors); + } + if (!transformedValue.ok) { + errors.push(...transformedValue.errors); + } + return { + ok: false, + errors, + }; + }), Promise.resolve({ ok: true, value: {} })); + }); +} +", + "name": "record.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema } from \\"../../Schema\\"; +import { SchemaUtils } from \\"../schema-utils\\"; +export declare type RecordSchema = BaseRecordSchema & SchemaUtils, Record>; +export declare type BaseRecordSchema = BaseSchema, Record>; +", + "name": "types.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "types.js", + "type": "file", + }, + ], + "name": "record", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "import { ValidationError } from \\"../../Schema\\"; +export declare class JsonError extends Error { + readonly errors: ValidationError[]; + constructor(errors: ValidationError[]); +} +", + "name": "JsonError.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.JsonError = void 0; +const stringifyValidationErrors_1 = require(\\"./stringifyValidationErrors\\"); +class JsonError extends Error { + constructor(errors) { + super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join(\\"; \\")); + this.errors = errors; + Object.setPrototypeOf(this, JsonError.prototype); + } +} +exports.JsonError = JsonError; +", + "name": "JsonError.js", + "type": "file", + }, + Object { + "contents": "import { ValidationError } from \\"../../Schema\\"; +export declare class ParseError extends Error { + readonly errors: ValidationError[]; + constructor(errors: ValidationError[]); +} +", + "name": "ParseError.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.ParseError = void 0; +const stringifyValidationErrors_1 = require(\\"./stringifyValidationErrors\\"); +class ParseError extends Error { + constructor(errors) { + super(errors.map(stringifyValidationErrors_1.stringifyValidationError).join(\\"; \\")); + this.errors = errors; + Object.setPrototypeOf(this, ParseError.prototype); + } +} +exports.ParseError = ParseError; +", + "name": "ParseError.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema, Schema, SchemaOptions } from \\"../../Schema\\"; +export interface SchemaUtils { + optional: () => Schema; + transform: (transformer: SchemaTransformer) => Schema; + parseOrThrow: (raw: unknown, opts?: SchemaOptions) => Promise; + jsonOrThrow: (raw: unknown, opts?: SchemaOptions) => Promise; +} +export interface SchemaTransformer { + transform: (parsed: Parsed) => Transformed; + untransform: (transformed: any) => Parsed; +} +export declare function getSchemaUtils(schema: BaseSchema): SchemaUtils; +/** + * schema utils are defined in one file to resolve issues with circular imports + */ +export declare function optional(schema: BaseSchema): Schema; +export declare function transform(schema: BaseSchema, transformer: SchemaTransformer): Schema; +", + "name": "getSchemaUtils.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.transform = exports.optional = exports.getSchemaUtils = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const JsonError_1 = require(\\"./JsonError\\"); +const ParseError_1 = require(\\"./ParseError\\"); +function getSchemaUtils(schema) { + return { + optional: () => optional(schema), + transform: (transformer) => transform(schema, transformer), + parseOrThrow: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + const parsed = yield schema.parse(raw, opts); + if (parsed.ok) { + return parsed.value; + } + throw new ParseError_1.ParseError(parsed.errors); + }), + jsonOrThrow: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + const raw = yield schema.json(parsed, opts); + if (raw.ok) { + return raw.value; + } + throw new JsonError_1.JsonError(raw.errors); + }), + }; +} +exports.getSchemaUtils = getSchemaUtils; +/** + * schema utils are defined in one file to resolve issues with circular imports + */ +function optional(schema) { + const baseSchema = { + parse: (raw, opts) => { + if (raw == null) { + return { + ok: true, + value: undefined, + }; + } + return schema.parse(raw, opts); + }, + json: (parsed, opts) => { + if (parsed == null) { + return { + ok: true, + value: null, + }; + } + return schema.json(parsed, opts); + }, + getType: () => Schema_1.SchemaType.OPTIONAL, + }; + return Object.assign(Object.assign({}, baseSchema), getSchemaUtils(baseSchema)); +} +exports.optional = optional; +function transform(schema, transformer) { + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + const parsed = yield schema.parse(raw, opts); + if (!parsed.ok) { + return parsed; + } + return { + ok: true, + value: transformer.transform(parsed.value), + }; + }), + json: (transformed, opts) => __awaiter(this, void 0, void 0, function* () { + const parsed = yield transformer.untransform(transformed); + return schema.json(parsed, opts); + }), + getType: () => schema.getType(), + }; + return Object.assign(Object.assign({}, baseSchema), getSchemaUtils(baseSchema)); +} +exports.transform = transform; +", + "name": "getSchemaUtils.js", + "type": "file", + }, + Object { + "contents": "export { getSchemaUtils, optional, transform } from \\"./getSchemaUtils\\"; +export type { SchemaUtils } from \\"./getSchemaUtils\\"; +export { JsonError } from \\"./JsonError\\"; +export { ParseError } from \\"./ParseError\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.ParseError = exports.JsonError = exports.transform = exports.optional = exports.getSchemaUtils = void 0; +var getSchemaUtils_1 = require(\\"./getSchemaUtils\\"); +Object.defineProperty(exports, \\"getSchemaUtils\\", { enumerable: true, get: function () { return getSchemaUtils_1.getSchemaUtils; } }); +Object.defineProperty(exports, \\"optional\\", { enumerable: true, get: function () { return getSchemaUtils_1.optional; } }); +Object.defineProperty(exports, \\"transform\\", { enumerable: true, get: function () { return getSchemaUtils_1.transform; } }); +var JsonError_1 = require(\\"./JsonError\\"); +Object.defineProperty(exports, \\"JsonError\\", { enumerable: true, get: function () { return JsonError_1.JsonError; } }); +var ParseError_1 = require(\\"./ParseError\\"); +Object.defineProperty(exports, \\"ParseError\\", { enumerable: true, get: function () { return ParseError_1.ParseError; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { ValidationError } from \\"../../Schema\\"; +export declare function stringifyValidationError(error: ValidationError): string; +", + "name": "stringifyValidationErrors.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.stringifyValidationError = void 0; +function stringifyValidationError(error) { + if (error.path.length === 0) { + return error.message; + } + return \`\${error.path.join(\\" -> \\")}: \${error.message}\`; +} +exports.stringifyValidationError = stringifyValidationError; +", + "name": "stringifyValidationErrors.js", + "type": "file", + }, + ], + "name": "schema-utils", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export { set } from \\"./set\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.set = void 0; +var set_1 = require(\\"./set\\"); +Object.defineProperty(exports, \\"set\\", { enumerable: true, get: function () { return set_1.set; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +export declare function set(schema: Schema): Schema>; +", + "name": "set.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.set = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const list_1 = require(\\"../list\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function set(schema) { + const listSchema = (0, list_1.list)(schema); + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + const parsedList = yield listSchema.parse(raw, opts); + if (parsedList.ok) { + return { + ok: true, + value: new Set(parsedList.value), + }; + } + else { + return parsedList; + } + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + var _a; + if (!(parsed instanceof Set)) { + return { + ok: false, + errors: [ + { + path: (_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : [], + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(parsed, \\"Set\\"), + }, + ], + }; + } + const jsonList = yield listSchema.json([...parsed], opts); + return jsonList; + }), + getType: () => Schema_1.SchemaType.SET, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.set = set; +", + "name": "set.js", + "type": "file", + }, + ], + "name": "set", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export type { inferParsedUnidiscriminatedUnionSchema, inferRawUnidiscriminatedUnionSchema, UndiscriminatedUnionSchema, } from \\"./types\\"; +export { undiscriminatedUnion } from \\"./undiscriminatedUnion\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.undiscriminatedUnion = void 0; +var undiscriminatedUnion_1 = require(\\"./undiscriminatedUnion\\"); +Object.defineProperty(exports, \\"undiscriminatedUnion\\", { enumerable: true, get: function () { return undiscriminatedUnion_1.undiscriminatedUnion; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { inferParsed, inferRaw, Schema } from \\"../../Schema\\"; +export declare type UndiscriminatedUnionSchema = Schema, inferParsedUnidiscriminatedUnionSchema>; +export declare type inferRawUnidiscriminatedUnionSchema = inferRaw; +export declare type inferParsedUnidiscriminatedUnionSchema = inferParsed; +", + "name": "types.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "types.js", + "type": "file", + }, + Object { + "contents": "import { Schema } from \\"../../Schema\\"; +import { inferParsedUnidiscriminatedUnionSchema, inferRawUnidiscriminatedUnionSchema } from \\"./types\\"; +export declare function undiscriminatedUnion, ...Schema[]]>(schemas: Schemas): Schema, inferParsedUnidiscriminatedUnionSchema>; +", + "name": "undiscriminatedUnion.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.undiscriminatedUnion = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function undiscriminatedUnion(schemas) { + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformUndiscriminatedUnion((schema, opts) => schema.parse(raw, opts), schemas, opts); + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + return validateAndTransformUndiscriminatedUnion((schema, opts) => schema.json(parsed, opts), schemas, opts); + }), + getType: () => Schema_1.SchemaType.UNDISCRIMINATED_UNION, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); +} +exports.undiscriminatedUnion = undiscriminatedUnion; +function validateAndTransformUndiscriminatedUnion(transform, schemas, opts) { + return __awaiter(this, void 0, void 0, function* () { + const errors = []; + for (const [index, schema] of schemas.entries()) { + const transformed = yield transform(schema, Object.assign(Object.assign({}, opts), { skipValidation: false })); + if (transformed.ok) { + return transformed; + } + else { + for (const error of transformed.errors) { + errors.push({ + path: error.path, + message: \`[Variant \${index}] \${error.message}\`, + }); + } + } + } + return { + ok: false, + errors, + }; + }); +} +", + "name": "undiscriminatedUnion.js", + "type": "file", + }, + ], + "name": "undiscriminated-union", + "type": "directory", + }, + Object { + "contents": Array [ + Object { + "contents": "export declare function discriminant(parsedDiscriminant: ParsedDiscriminant, rawDiscriminant: RawDiscriminant): Discriminant; +export interface Discriminant { + parsedDiscriminant: ParsedDiscriminant; + rawDiscriminant: RawDiscriminant; +} +", + "name": "discriminant.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.discriminant = void 0; +function discriminant(parsedDiscriminant, rawDiscriminant) { + return { + parsedDiscriminant, + rawDiscriminant, + }; +} +exports.discriminant = discriminant; +", + "name": "discriminant.js", + "type": "file", + }, + Object { + "contents": "export { discriminant } from \\"./discriminant\\"; +export type { Discriminant } from \\"./discriminant\\"; +export type { inferParsedDiscriminant, inferParsedUnion, inferRawDiscriminant, inferRawUnion, UnionSubtypes, } from \\"./types\\"; +export { union } from \\"./union\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.union = exports.discriminant = void 0; +var discriminant_1 = require(\\"./discriminant\\"); +Object.defineProperty(exports, \\"discriminant\\", { enumerable: true, get: function () { return discriminant_1.discriminant; } }); +var union_1 = require(\\"./union\\"); +Object.defineProperty(exports, \\"union\\", { enumerable: true, get: function () { return union_1.union; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": "import { inferParsedObject, inferRawObject, ObjectSchema } from \\"../object\\"; +import { Discriminant } from \\"./discriminant\\"; +export declare type UnionSubtypes = { + [K in DiscriminantValues]: ObjectSchema; +}; +export declare type inferRawUnion, U extends UnionSubtypes> = { + [K in keyof U]: Record, K> & inferRawObject; +}[keyof U]; +export declare type inferParsedUnion, U extends UnionSubtypes> = { + [K in keyof U]: Record, K> & inferParsedObject; +}[keyof U]; +export declare type inferRawDiscriminant> = D extends string ? D : D extends Discriminant ? Raw : never; +export declare type inferParsedDiscriminant> = D extends string ? D : D extends Discriminant ? Parsed : never; +", + "name": "types.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "types.js", + "type": "file", + }, + Object { + "contents": "import { ObjectLikeSchema } from \\"../object-like\\"; +import { Discriminant } from \\"./discriminant\\"; +import { inferParsedUnion, inferRawUnion, UnionSubtypes } from \\"./types\\"; +export declare function union, U extends UnionSubtypes>(discriminant: D, union: U): ObjectLikeSchema, inferParsedUnion>; +", + "name": "union.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === \\"function\\") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.union = void 0; +const Schema_1 = require(\\"../../Schema\\"); +const getErrorMessageForIncorrectType_1 = require(\\"../../utils/getErrorMessageForIncorrectType\\"); +const isPlainObject_1 = require(\\"../../utils/isPlainObject\\"); +const keys_1 = require(\\"../../utils/keys\\"); +const maybeSkipValidation_1 = require(\\"../../utils/maybeSkipValidation\\"); +const enum_1 = require(\\"../enum\\"); +const object_like_1 = require(\\"../object-like\\"); +const schema_utils_1 = require(\\"../schema-utils\\"); +function union(discriminant, union) { + const rawDiscriminant = typeof discriminant === \\"string\\" ? discriminant : discriminant.rawDiscriminant; + const parsedDiscriminant = typeof discriminant === \\"string\\" + ? discriminant + : discriminant.parsedDiscriminant; + const discriminantValueSchema = (0, enum_1.enum_)((0, keys_1.keys)(union)); + const baseSchema = { + parse: (raw, opts) => __awaiter(this, void 0, void 0, function* () { + return transformAndValidateUnion({ + value: raw, + discriminant: rawDiscriminant, + transformedDiscriminant: parsedDiscriminant, + transformDiscriminantValue: (discriminantValue) => { + var _a; + return discriminantValueSchema.parse(discriminantValue, { + allowUnrecognizedEnumValues: opts === null || opts === void 0 ? void 0 : opts.allowUnrecognizedUnionMembers, + breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), rawDiscriminant], + }); + }, + getAdditionalPropertiesSchema: (discriminantValue) => union[discriminantValue], + allowUnrecognizedUnionMembers: opts === null || opts === void 0 ? void 0 : opts.allowUnrecognizedUnionMembers, + transformAdditionalProperties: (additionalProperties, additionalPropertiesSchema) => additionalPropertiesSchema.parse(additionalProperties, opts), + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + json: (parsed, opts) => __awaiter(this, void 0, void 0, function* () { + return transformAndValidateUnion({ + value: parsed, + discriminant: parsedDiscriminant, + transformedDiscriminant: rawDiscriminant, + transformDiscriminantValue: (discriminantValue) => { + var _a; + return discriminantValueSchema.json(discriminantValue, { + allowUnrecognizedEnumValues: opts === null || opts === void 0 ? void 0 : opts.allowUnrecognizedUnionMembers, + breadcrumbsPrefix: [...((_a = opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix) !== null && _a !== void 0 ? _a : []), parsedDiscriminant], + }); + }, + getAdditionalPropertiesSchema: (discriminantValue) => union[discriminantValue], + allowUnrecognizedUnionMembers: opts === null || opts === void 0 ? void 0 : opts.allowUnrecognizedUnionMembers, + transformAdditionalProperties: (additionalProperties, additionalPropertiesSchema) => additionalPropertiesSchema.json(additionalProperties, opts), + breadcrumbsPrefix: opts === null || opts === void 0 ? void 0 : opts.breadcrumbsPrefix, + }); + }), + getType: () => Schema_1.SchemaType.UNION, + }; + return Object.assign(Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)), (0, object_like_1.getObjectLikeUtils)(baseSchema)); +} +exports.union = union; +function transformAndValidateUnion({ value, discriminant, transformedDiscriminant, transformDiscriminantValue, getAdditionalPropertiesSchema, allowUnrecognizedUnionMembers = false, transformAdditionalProperties, breadcrumbsPrefix = [], }) { + return __awaiter(this, void 0, void 0, function* () { + if (!(0, isPlainObject_1.isPlainObject)(value)) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: (0, getErrorMessageForIncorrectType_1.getErrorMessageForIncorrectType)(value, \\"object\\"), + }, + ], + }; + } + const _a = value, _b = discriminant, discriminantValue = _a[_b], additionalProperties = __rest(_a, [typeof _b === \\"symbol\\" ? _b : _b + \\"\\"]); + if (discriminantValue == null) { + return { + ok: false, + errors: [ + { + path: breadcrumbsPrefix, + message: \`Missing discriminant (\\"\${discriminant}\\")\`, + }, + ], + }; + } + const transformedDiscriminantValue = yield transformDiscriminantValue(discriminantValue); + if (!transformedDiscriminantValue.ok) { + return { + ok: false, + errors: transformedDiscriminantValue.errors, + }; + } + const additionalPropertiesSchema = getAdditionalPropertiesSchema(transformedDiscriminantValue.value); + if (additionalPropertiesSchema == null) { + if (allowUnrecognizedUnionMembers) { + return { + ok: true, + value: Object.assign({ [transformedDiscriminant]: transformedDiscriminantValue.value }, additionalProperties), + }; + } + else { + return { + ok: false, + errors: [ + { + path: [...breadcrumbsPrefix, discriminant], + message: \\"Unexpected discriminant value\\", + }, + ], + }; + } + } + const transformedAdditionalProperties = yield transformAdditionalProperties(additionalProperties, additionalPropertiesSchema); + if (!transformedAdditionalProperties.ok) { + return transformedAdditionalProperties; + } + return { + ok: true, + value: Object.assign({ [transformedDiscriminant]: discriminantValue }, transformedAdditionalProperties.value), + }; + }); +} +", + "name": "union.js", + "type": "file", + }, + ], + "name": "union", + "type": "directory", + }, + ], + "name": "builders", + "type": "directory", + }, + Object { + "contents": "export * from \\"./builders\\"; +export type { inferParsed, inferRaw, Schema, SchemaOptions } from \\"./Schema\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./builders\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export declare type MaybePromise = T | Promise; +", + "name": "MaybePromise.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "MaybePromise.js", + "type": "file", + }, + Object { + "contents": "export declare type addQuestionMarksToNullableProperties = { + [K in OptionalKeys]?: T[K]; +} & Pick>; +export declare type OptionalKeys = { + [K in keyof T]-?: undefined extends T[K] ? K : null extends T[K] ? K : 1 extends (any extends T[K] ? 0 : 1) ? never : K; +}[keyof T]; +export declare type RequiredKeys = Exclude>; +", + "name": "addQuestionMarksToNullableProperties.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +", + "name": "addQuestionMarksToNullableProperties.js", + "type": "file", + }, + Object { + "contents": "import { MaybeValid, Schema, SchemaOptions, SchemaType } from \\"../Schema\\"; +export declare function createIdentitySchemaCreator(schemaType: SchemaType, validate: (value: unknown, opts?: SchemaOptions) => MaybeValid): () => Schema; +", + "name": "createIdentitySchemaCreator.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.createIdentitySchemaCreator = void 0; +const schema_utils_1 = require(\\"../builders/schema-utils\\"); +const maybeSkipValidation_1 = require(\\"./maybeSkipValidation\\"); +function createIdentitySchemaCreator(schemaType, validate) { + return () => { + const baseSchema = { + parse: validate, + json: validate, + getType: () => schemaType, + }; + return Object.assign(Object.assign({}, (0, maybeSkipValidation_1.maybeSkipValidation)(baseSchema)), (0, schema_utils_1.getSchemaUtils)(baseSchema)); + }; +} +exports.createIdentitySchemaCreator = createIdentitySchemaCreator; +", + "name": "createIdentitySchemaCreator.js", + "type": "file", + }, + Object { + "contents": "export declare function entries(object: T): [keyof T, T[keyof T]][]; +", + "name": "entries.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.entries = void 0; +function entries(object) { + return Object.entries(object); +} +exports.entries = entries; +", + "name": "entries.js", + "type": "file", + }, + Object { + "contents": "export declare function filterObject(obj: T, keysToInclude: K[]): Pick; +", + "name": "filterObject.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.filterObject = void 0; +function filterObject(obj, keysToInclude) { + const keysToIncludeSet = new Set(keysToInclude); + return Object.entries(obj).reduce((acc, [key, value]) => { + if (keysToIncludeSet.has(key)) { + acc[key] = value; + } + return acc; + // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter + }, {}); +} +exports.filterObject = filterObject; +", + "name": "filterObject.js", + "type": "file", + }, + Object { + "contents": "export declare function getErrorMessageForIncorrectType(value: unknown, expectedType: string): string; +", + "name": "getErrorMessageForIncorrectType.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.getErrorMessageForIncorrectType = void 0; +function getErrorMessageForIncorrectType(value, expectedType) { + return \`Expected \${expectedType}. Received \${getTypeAsString(value)}.\`; +} +exports.getErrorMessageForIncorrectType = getErrorMessageForIncorrectType; +function getTypeAsString(value) { + if (Array.isArray(value)) { + return \\"list\\"; + } + if (value === null) { + return \\"null\\"; + } + switch (typeof value) { + case \\"string\\": + return \`\\"\${value}\\"\`; + case \\"number\\": + case \\"boolean\\": + case \\"undefined\\": + return \`\${value}\`; + } + return typeof value; +} +", + "name": "getErrorMessageForIncorrectType.js", + "type": "file", + }, + Object { + "contents": "export declare function isPlainObject(value: unknown): value is Record; +", + "name": "isPlainObject.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.isPlainObject = void 0; +// borrowed from https://github.com/lodash/lodash/blob/master/isPlainObject.js +function isPlainObject(value) { + if (typeof value !== \\"object\\" || value === null) { + return false; + } + if (Object.getPrototypeOf(value) === null) { + return true; + } + let proto = value; + while (Object.getPrototypeOf(proto) !== null) { + proto = Object.getPrototypeOf(proto); + } + return Object.getPrototypeOf(value) === proto; +} +exports.isPlainObject = isPlainObject; +", + "name": "isPlainObject.js", + "type": "file", + }, + Object { + "contents": "export declare function keys(object: T): (keyof T)[]; +", + "name": "keys.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.keys = void 0; +function keys(object) { + return Object.keys(object); +} +exports.keys = keys; +", + "name": "keys.js", + "type": "file", + }, + Object { + "contents": "import { BaseSchema } from \\"../Schema\\"; +export declare function maybeSkipValidation, Raw, Parsed>(schema: S): S; +", + "name": "maybeSkipValidation.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator[\\"throw\\"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.maybeSkipValidation = void 0; +function maybeSkipValidation(schema) { + return Object.assign(Object.assign({}, schema), { json: transformAndMaybeSkipValidation(schema.json), parse: transformAndMaybeSkipValidation(schema.parse) }); +} +exports.maybeSkipValidation = maybeSkipValidation; +function transformAndMaybeSkipValidation(transform) { + return (value, opts) => __awaiter(this, void 0, void 0, function* () { + const transformed = yield transform(value, opts); + const { skipValidation = false } = opts !== null && opts !== void 0 ? opts : {}; + if (!transformed.ok && skipValidation) { + // eslint-disable-next-line no-console + console.warn([ + \\"Failed to validate.\\", + ...transformed.errors.map((error) => \\" - \\" + + (error.path.length > 0 ? \`\${error.path.join(\\".\\")}: \${error.message}\` : error.message)), + ].join(\\"\\\\n\\")); + return { + ok: true, + value: value, + }; + } + else { + return transformed; + } + }); +} +", + "name": "maybeSkipValidation.js", + "type": "file", + }, + Object { + "contents": "export declare function partition(items: readonly T[], predicate: (item: T) => boolean): [T[], T[]]; +", + "name": "partition.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.partition = void 0; +function partition(items, predicate) { + const trueItems = [], falseItems = []; + for (const item of items) { + if (predicate(item)) { + trueItems.push(item); + } + else { + falseItems.push(item); + } + } + return [trueItems, falseItems]; +} +exports.partition = partition; +", + "name": "partition.js", + "type": "file", + }, + ], + "name": "utils", + "type": "directory", + }, + ], + "name": "schemas", + "type": "directory", + }, + ], + "name": "core", + "type": "directory", + }, + Object { + "contents": "export * as FernApi from \\"./api\\"; +export { FernApiClient } from \\"./Client\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.FernApiClient = exports.FernApi = void 0; +exports.FernApi = __importStar(require(\\"./api\\")); +var Client_1 = require(\\"./Client\\"); +Object.defineProperty(exports, \\"FernApiClient\\", { enumerable: true, get: function () { return Client_1.FernApiClient; } }); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export * from \\"./resources\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./resources\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export * as package_ from \\"./package\\"; +export * from \\"./package/types\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.package_ = void 0; +exports.package_ = __importStar(require(\\"./package\\")); +__exportStar(require(\\"./package/types\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "export * from \\"./types\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./types\\"), exports); +", + "name": "index.js", + "type": "file", + }, + Object { + "contents": Array [ + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as serializers from \\"../../..\\"; +import * as FernApi from \\"../../../../api\\"; +import * as core from \\"../../../../core\\"; +export declare const Package: core.serialization.ObjectSchema; +export declare namespace Package { + interface Raw { + name: string; + } +} +", + "name": "Package.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Package = void 0; +const core = __importStar(require(\\"../../../../core\\")); +exports.Package = core.serialization.object({ + name: core.serialization.string(), +}); +", + "name": "Package.js", + "type": "file", + }, + Object { + "contents": "/** + * This file was auto-generated by Fern from our API Definition. + */ +import * as serializers from \\"../../..\\"; +import * as FernApi from \\"../../../../api\\"; +import * as core from \\"../../../../core\\"; +export declare const Record_: core.serialization.ObjectSchema; +export declare namespace Record_ { + interface Raw { + foo: Record; + \\"3d\\": number; + } +} +", + "name": "Record_.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +/** + * This file was auto-generated by Fern from our API Definition. + */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, \\"default\\", { enumerable: true, value: v }); +}) : function(o, v) { + o[\\"default\\"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== \\"default\\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +exports.Record_ = void 0; +const core = __importStar(require(\\"../../../../core\\")); +exports.Record_ = core.serialization.object({ + foo: core.serialization.record(core.serialization.string(), core.serialization.string()), + \\"3D\\": core.serialization.property(\\"3d\\", core.serialization.number()), +}); +", + "name": "Record_.js", + "type": "file", + }, + Object { + "contents": "export * from \\"./Package\\"; +export * from \\"./Record_\\"; +", + "name": "index.d.ts", + "type": "file", + }, + Object { + "contents": "\\"use strict\\"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || (\\"get\\" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== \\"default\\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, \\"__esModule\\", { value: true }); +__exportStar(require(\\"./Package\\"), exports); +__exportStar(require(\\"./Record_\\"), exports); +", + "name": "index.js", + "type": "file", + }, + ], + "name": "types", + "type": "directory", + }, + ], + "name": "package", + "type": "directory", + }, + ], + "name": "resources", + "type": "directory", + }, + ], + "name": "serialization", + "type": "directory", + }, +] +`; diff --git a/seed/pydantic-v2/reserved-keywords/resources/package/types/package.py b/seed/pydantic-v2/reserved-keywords/resources/package/types/package.py new file mode 100644 index 00000000000..1223115d21c --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/resources/package/types/package.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Package(BaseModel): + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/reserved-keywords/resources/package/types/record.py b/seed/pydantic-v2/reserved-keywords/resources/package/types/record.py new file mode 100644 index 00000000000..93e110c1d4c --- /dev/null +++ b/seed/pydantic-v2/reserved-keywords/resources/package/types/record.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Record(BaseModel): + foo: Dict[str, str] + _3_d: int + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/reserved-keywords/snippet-templates.json b/seed/pydantic-v2/reserved-keywords/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/reserved-keywords/snippet.json b/seed/pydantic-v2/reserved-keywords/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/response-property/.mock/definition/__package__.yml b/seed/pydantic-v2/response-property/.mock/definition/__package__.yml new file mode 100644 index 00000000000..708a5a1139d --- /dev/null +++ b/seed/pydantic-v2/response-property/.mock/definition/__package__.yml @@ -0,0 +1,10 @@ +types: + StringResponse: + properties: + data: string + + OptionalStringResponse: optional + + WithMetadata: + properties: + metadata: map diff --git a/seed/pydantic-v2/response-property/.mock/definition/api.yml b/seed/pydantic-v2/response-property/.mock/definition/api.yml new file mode 100644 index 00000000000..4a1bb4a3045 --- /dev/null +++ b/seed/pydantic-v2/response-property/.mock/definition/api.yml @@ -0,0 +1 @@ +name: response-property diff --git a/seed/pydantic-v2/response-property/.mock/definition/service.yml b/seed/pydantic-v2/response-property/.mock/definition/service.yml new file mode 100644 index 00000000000..15de6ab767f --- /dev/null +++ b/seed/pydantic-v2/response-property/.mock/definition/service.yml @@ -0,0 +1,81 @@ +imports: + root: __package__.yml + +types: + WithDocs: + properties: + docs: string + + OptionalWithDocs: optional + + Movie: + properties: + id: string + name: string + + Response: + extends: + - root.WithMetadata + - WithDocs + properties: + data: Movie + +service: + auth: false + base-path: "" + endpoints: + getMovie: + method: POST + path: /movie + request: string + response: + type: Response + property: data + + getMovieDocs: + method: POST + path: /movie + request: string + response: + type: Response + property: docs + + getMovieName: + method: POST + path: /movie + request: string + response: + type: root.StringResponse + property: data + + getMovieMetadata: + method: POST + path: /movie + request: string + response: + type: Response + property: metadata + + getOptionalMovie: + method: POST + path: /movie + request: string + response: + type: optional + property: data + + getOptionalMovieDocs: + method: POST + path: /movie + request: string + response: + type: OptionalWithDocs + property: docs + + getOptionalMovieName: + method: POST + path: /movie + request: string + response: + type: root.OptionalStringResponse + property: data diff --git a/seed/pydantic-v2/response-property/.mock/fern.config.json b/seed/pydantic-v2/response-property/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/response-property/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/response-property/.mock/generators.yml b/seed/pydantic-v2/response-property/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/response-property/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/response-property/resources/service/types/movie.py b/seed/pydantic-v2/response-property/resources/service/types/movie.py new file mode 100644 index 00000000000..b1806ef94cc --- /dev/null +++ b/seed/pydantic-v2/response-property/resources/service/types/movie.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Movie(BaseModel): + id: str + name: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/resources/service/types/optional_with_docs.py b/seed/pydantic-v2/response-property/resources/service/types/optional_with_docs.py new file mode 100644 index 00000000000..a8a0f9f2542 --- /dev/null +++ b/seed/pydantic-v2/response-property/resources/service/types/optional_with_docs.py @@ -0,0 +1,21 @@ +from pydantic import RootModel +from typing import Optional +from resources.service.types.with_docs import WithDocs +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class OptionalWithDocs(RootModel[Optional[WithDocs]]): + root: Optional[WithDocs] + + def get_as_with_docs() -> UUID: + return self.root + + @staticmethod + def from_with_docs(value: Optional[WithDocs]) -> OptionalWithDocs: + OptionalWithDocs(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/resources/service/types/response.py b/seed/pydantic-v2/response-property/resources/service/types/response.py new file mode 100644 index 00000000000..50225536f27 --- /dev/null +++ b/seed/pydantic-v2/response-property/resources/service/types/response.py @@ -0,0 +1,15 @@ +from pydantic import BaseModel +from types.with_metadata import WithMetadata +from resources.service.types.with_docs import WithDocs +from resources.service.types.movie import Movie +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class Response(BaseModel, WithMetadata, WithDocs): + data: Movie + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/resources/service/types/with_docs.py b/seed/pydantic-v2/response-property/resources/service/types/with_docs.py new file mode 100644 index 00000000000..55d9de87abb --- /dev/null +++ b/seed/pydantic-v2/response-property/resources/service/types/with_docs.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class WithDocs(BaseModel): + docs: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/snippet-templates.json b/seed/pydantic-v2/response-property/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/response-property/snippet.json b/seed/pydantic-v2/response-property/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/response-property/types/optional_string_response.py b/seed/pydantic-v2/response-property/types/optional_string_response.py new file mode 100644 index 00000000000..4191594f14d --- /dev/null +++ b/seed/pydantic-v2/response-property/types/optional_string_response.py @@ -0,0 +1,21 @@ +from pydantic import RootModel +from typing import Optional +from .types.string_response import StringResponse +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class OptionalStringResponse(RootModel[Optional[StringResponse]]): + root: Optional[StringResponse] + + def get_as_string_response() -> UUID: + return self.root + + @staticmethod + def from_string_response(value: Optional[StringResponse]) -> OptionalStringResponse: + OptionalStringResponse(root=value) + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/types/string_response.py b/seed/pydantic-v2/response-property/types/string_response.py new file mode 100644 index 00000000000..4eb29ff8d54 --- /dev/null +++ b/seed/pydantic-v2/response-property/types/string_response.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class StringResponse(BaseModel): + data: str + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/response-property/types/with_metadata.py b/seed/pydantic-v2/response-property/types/with_metadata.py new file mode 100644 index 00000000000..48878a3d87d --- /dev/null +++ b/seed/pydantic-v2/response-property/types/with_metadata.py @@ -0,0 +1,13 @@ +from pydantic import BaseModel +from typing import Dict +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class WithMetadata(BaseModel): + metadata: Dict[str, str] + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/seed.yml b/seed/pydantic-v2/seed.yml new file mode 100644 index 00000000000..30f68bb552e --- /dev/null +++ b/seed/pydantic-v2/seed.yml @@ -0,0 +1,11 @@ +irVersion: v53 +displayName: Pydantic Model +image: fernapi/fern-pydantic-model-v2 +test: + docker: + image: fernapi/fern-pydantic-model-v2:latest + command: pnpm --filter @fern-api/fern-pydantic-model dockerTagLatest + +language: python +generatorType: Model +defaultOutputMode: local_files diff --git a/seed/pydantic-v2/server-sent-event-examples/.mock/definition/api.yml b/seed/pydantic-v2/server-sent-event-examples/.mock/definition/api.yml new file mode 100644 index 00000000000..80e84c41785 --- /dev/null +++ b/seed/pydantic-v2/server-sent-event-examples/.mock/definition/api.yml @@ -0,0 +1 @@ +name: server-sent-events diff --git a/seed/pydantic-v2/server-sent-event-examples/.mock/definition/completions.yml b/seed/pydantic-v2/server-sent-event-examples/.mock/definition/completions.yml new file mode 100644 index 00000000000..09a88253331 --- /dev/null +++ b/seed/pydantic-v2/server-sent-event-examples/.mock/definition/completions.yml @@ -0,0 +1,36 @@ +types: + StreamedCompletion: + properties: + delta: string + tokens: optional + +service: + auth: false + base-path: "" + endpoints: + stream: + method: POST + path: /stream + request: + name: StreamCompletionRequest + body: + properties: + query: string + response-stream: + type: StreamedCompletion + format: sse + terminator: "[[DONE]]" + examples: + - name: "Stream completions" + request: + query: "foo" + response: + stream: + - event: discriminant-1 + data: + delta: "foo" + tokens: 1 + - event: discriminant-2 + data: + delta: "bar" + tokens: 2 diff --git a/seed/pydantic-v2/server-sent-event-examples/.mock/fern.config.json b/seed/pydantic-v2/server-sent-event-examples/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/server-sent-event-examples/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/server-sent-event-examples/.mock/generators.yml b/seed/pydantic-v2/server-sent-event-examples/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/server-sent-event-examples/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/server-sent-event-examples/resources/completions/types/streamed_completion.py b/seed/pydantic-v2/server-sent-event-examples/resources/completions/types/streamed_completion.py new file mode 100644 index 00000000000..eab550662ab --- /dev/null +++ b/seed/pydantic-v2/server-sent-event-examples/resources/completions/types/streamed_completion.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class StreamedCompletion(BaseModel): + delta: str + tokens: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/server-sent-event-examples/snippet-templates.json b/seed/pydantic-v2/server-sent-event-examples/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/server-sent-event-examples/snippet.json b/seed/pydantic-v2/server-sent-event-examples/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/server-sent-events/.mock/definition/api.yml b/seed/pydantic-v2/server-sent-events/.mock/definition/api.yml new file mode 100644 index 00000000000..80e84c41785 --- /dev/null +++ b/seed/pydantic-v2/server-sent-events/.mock/definition/api.yml @@ -0,0 +1 @@ +name: server-sent-events diff --git a/seed/pydantic-v2/server-sent-events/.mock/definition/completions.yml b/seed/pydantic-v2/server-sent-events/.mock/definition/completions.yml new file mode 100644 index 00000000000..d1748fad19e --- /dev/null +++ b/seed/pydantic-v2/server-sent-events/.mock/definition/completions.yml @@ -0,0 +1,22 @@ +types: + StreamedCompletion: + properties: + delta: string + tokens: optional + +service: + auth: false + base-path: "" + endpoints: + stream: + method: POST + path: /stream + request: + name: StreamCompletionRequest + body: + properties: + query: string + response-stream: + type: StreamedCompletion + format: sse + terminator: "[[DONE]]" diff --git a/seed/pydantic-v2/server-sent-events/.mock/fern.config.json b/seed/pydantic-v2/server-sent-events/.mock/fern.config.json new file mode 100644 index 00000000000..4c8e54ac313 --- /dev/null +++ b/seed/pydantic-v2/server-sent-events/.mock/fern.config.json @@ -0,0 +1 @@ +{"organization": "fern-test", "version": "*"} \ No newline at end of file diff --git a/seed/pydantic-v2/server-sent-events/.mock/generators.yml b/seed/pydantic-v2/server-sent-events/.mock/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/seed/pydantic-v2/server-sent-events/.mock/generators.yml @@ -0,0 +1 @@ +{} diff --git a/seed/pydantic-v2/server-sent-events/resources/completions/types/streamed_completion.py b/seed/pydantic-v2/server-sent-events/resources/completions/types/streamed_completion.py new file mode 100644 index 00000000000..eab550662ab --- /dev/null +++ b/seed/pydantic-v2/server-sent-events/resources/completions/types/streamed_completion.py @@ -0,0 +1,14 @@ +from pydantic import BaseModel +from typing import Optional +from dt import datetime +from core.datetime_utils import serialize_datetime + + +class StreamedCompletion(BaseModel): + delta: str + tokens: Optional[int] = None + + class Config: + frozen = True + smart_union = True + json_encoders = {datetime: serialize_datetime} diff --git a/seed/pydantic-v2/server-sent-events/snippet-templates.json b/seed/pydantic-v2/server-sent-events/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/server-sent-events/snippet.json b/seed/pydantic-v2/server-sent-events/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/pydantic-v2/simple-fhir/.mock/definition/__package__.yml b/seed/pydantic-v2/simple-fhir/.mock/definition/__package__.yml new file mode 100644 index 00000000000..0821c83ceac --- /dev/null +++ b/seed/pydantic-v2/simple-fhir/.mock/definition/__package__.yml @@ -0,0 +1,58 @@ +service: + auth: false + base-path: "" + endpoints: + getAccount: + method: GET + path: /account/{account_id} + path-parameters: + account_id: string + response: Account + +types: + Memo: + properties: + description: string + account: optional + + BaseResource: + properties: + id: string + related_resources: list + memo: Memo + + ResourceList: + discriminated: false + union: + - Account + - Patient + - Practitioner + - Script + + Account: + extends: BaseResource + properties: + resource_type: literal<"Account"> + name: string + patient: optional + practitioner: optional + + Patient: + extends: BaseResource + properties: + resource_type: literal<"Patient"> + name: string + scripts: list