Speakeasy Logo
Skip to Content

Customize imports

Speakeasy allows customization of the paths for generated models and model imports.

By default, Speakeasy uses an OpenAPI-based naming scheme for the namespaces models are bucketed into, for example:

Components

Models generated from components are placed in the models/components directory, or the target language idiomatic equivalent.

Operations

Models generated from operations are placed in the models/operations directory, or the target language idiomatic equivalent.

Errors

Models that are used in error status codes are placed in the models/errors directory (or the idiomatic equivalent for the target language).

Customize import paths

imports

Customize where path models are generated to and imported from by modifying the configuration in the gen.yaml file.

Configuration like what is shown will result in a file structure as above.

option

The option key determines the type of bucketing scheme that is used for the models.

Only openapi is currently supported. This will bucket models into components, operations, errors, callbacks, and webhooks directories.

paths

The paths section contains a map of bucket names to paths relative to the root of the generated SDK.

  • shared refers to the models generated from the components section of the OpenAPI specification. (Note: shared is a legacy name for the bucket, retained for backward compatibility.)
  • operations refers to the models generated for the request and responses of operations in the OpenAPI specification.
  • errors refers to the models generated for schemas referenced in error status codes responses.
  • callbacks refers to models generated for schemas within the callbacks section of an operation.
  • webhooks refers to models generated from the webhooks section of an OpenAPI 3.1 document.

You can customize these paths to any path that exists relative to the root of the SDK.

Different buckets can also be configured to use the same path, for example:

This will result in all models being generated to the models directory. The generator will then resolve any class name conflicts by prefixing or suffixing class names to ensure they are unique.

Customize global imports

You can configure the generator to work with a global import path for all models.

For example:

Instead of:

You will configure global imports slightly differently for different languages:


Last updated on