# List of Speakeasy extensions
Source: https://speakeasy.com/docs/speakeasy-reference/extensions

import { Table } from "@/mdx/components";



<Table 
  data={[
    { extension: "x-speakeasy-name-override", description: "Use it globally to change method names or inline to change the name of a method, parameter, or class." },
    { extension: "x-speakeasy-model-namespace", description: "Place generated models in a specific namespace to avoid naming conflicts when merging multiple OpenAPI documents with identically named schemas." },
    { extension: "x-speakeasy-group", description: "Defines custom namespaces when adding this property to any operation in the OpenAPI spec. If added, the tags for that method will be ignored" },
    { extension: "x-speakeasy-ignore", description: "Exclude certain methods from your SDK with this extension." },
    { extension: "x-speakeasy-include", description: "Can be used to force the generation of an unused or orphaned schema from the `components` section inside the main document." },
    { extension: "x-speakeasy-enums", description: "Use this extension to control generated enum members by providing alternative names for each value in the enum field. The recommended map format prevents length mismatch errors that can occur with the array format." },
    { extension: "x-speakeasy-enum-descriptions", description: "Add descriptions to enum values that appear as JSDoc comments in generated SDK code, providing IDE hints and documentation. Supports both array and map formats." },
    { extension: "x-speakeasy-enum-format", description: "Customize how the enum type is generated for the schema, either `enum` for a native enum type or `union` for a union of values." },
    { extension: "x-speakeasy-retries", description: "Enable retries globally or on a per-request basis. A backoff strategy is applied to specified status codes." },
    { extension: "x-speakeasy-pagination", description: "Use to customize offset- or cursor-based pagination rules for each API operation." },
    { extension: "x-speakeasy-usage-example", description: "Feature a method in your SDK's `README.md` by adding this property to the method." },
    { extension: "x-speakeasy-example", description: "The OpenAPI specification doesn't allow example values for `securityscheme` property. Using this extension overcomes this limitation." },
    { extension: "x-speakeasy-docs", description: "Configure comments that only show up in the SDK for a single language." },
    { extension: "x-speakeasy-globals", description: "Define parameters that can be configured globally on the main SDK instance and populated automatically for any operations that use them." },
    { extension: "x-speakeasy-globals-hidden", description: "Define parameters that can be configured globally on the main SDK instance but are not shown in the matching method's signature." },
    { extension: "x-speakeasy-errors", description: "Apply this extension at the level of `paths`, `path` `item`, or `operation` in the document to override the default error-handling behavior of the SDKs." },
    { extension: "x-speakeasy-error-message", description: "Used to mark a field in an error response as containing the error message to use." },
    { extension: "x-speakeasy-server-id", description: "Enable users to pick a server when instantiating the SDK. Use this extension to define an ID for each server in the `servers` array in the OpenAPI spec." },
    { extension: "x-speakeasy-deprecation-message", description: "Allows you to add a message to deprecated operations, parameters, and schemas." },
    { extension: "x-speakeasy-deprecation-replacement", description: "Allows you to specify an alternate operation to use in place of a deprecated operation." },
    { extension: "x-speakeasy-type-override", description: "Use this to override a schema's type, forcing it to be handled as `any` to accept arbitrary data." },
    { extension: "x-speakeasy-max-method-params", description: "Allows you to set the maximum number of parameters that can be passed to a method. If the number of parameters exceeds this value, a request object will be used." },
    { extension: "x-speakeasy-mcp", description: "Customize how API operations are exposed as MCP tools with properties for disabled, name, title, scopes, description, and behavioral hints (destructiveHint, idempotentHint, openWorldHint, readOnlyHint)." },
    { extension: "x-speakeasy-overridable-scopes", description: "Allow end users to override OAuth 2.0 scopes at runtime for the `clientCredentials` flow by adding an optional `scopes` field to the security model." },
    { extension: "x-speakeasy-param-encoding-override", description: "When set with a value of `allowReserved`, path parameters will appear in a request URL with reserved characters `:/?#[]@!$&'()*+,;=` unencoded." },
    { extension: "x-speakeasy-token-endpoint-additional-properties", description: "Define additional properties for OAuth token endpoint requests, allowing generated SDKs to handle custom fields like audience parameters." }
  ]}
  columns={[
    { key: "extension", header: "Extension" },
    { key: "description", header: "Description" }
  ]}
/>

You can use `x-speakeasy-extension-rewrite` to map any extension from the wider OpenAPI ecosystem or another vendor to the equivalent Speakeasy extension. This allows you to use your existing OpenAPI spec without needing to make changes to it, if necessary.

```yaml
openapi: 3.1.0
info:
  title: My API
  version: 1.0.0
x-speakeasy-extension-rewrite:
  x-speakeasy-enums: x-enum-varnames # Maps x-enum-varnames used by the OSS generator to x-speakeasy-enums which has the same functionality
```

## Terraform-specific extensions

<Table 
  data={[
    { extension: "x-speakeasy-conflicts-with", description: "Indicate conflicting properties to prevent incompatible combinations in Terraform configurations." },
    { extension: "x-speakeasy-entity", description: "Map API entities to Terraform resources by annotating objects in your OpenAPI spec as entities in the Terraform provider." },
    { extension: "x-speakeasy-entity-operation", description: "Specify CRUD operations for API endpoints to map to Terraform resources, such as create, read, update, or delete operations." },
    { extension: "x-speakeasy-entity-version", description: "Specify the version of a Terraform resource to support state migrations for breaking schema type changes. Use sparingly - not needed for adding/removing attributes." },
    { extension: "x-speakeasy-name-override", description: "Remap API properties to Terraform attribute names while keeping API data handling intact." },
    { extension: "x-speakeasy-param-force-new", description: "Force resource recreation in Terraform when certain property values change." },
    { extension: "x-speakeasy-param-computed", description: "Force a property to be computed in resource schemas, causing Terraform to allow unknown values after apply. Explicitly setting to false will always respect configuration values when sending API request data, however the API must never change the value as compared to the configuration on create/update." },
    { extension: "x-speakeasy-param-optional", description: "Force a property to be optional, overriding the required attribute in JSON Schema specifications." },
    { extension: "x-speakeasy-param-readonly", description: "Mark properties as read-only in Terraform, preventing modifications by the user." },
    { extension: "x-speakeasy-param-sensitive", description: "Hide sensitive properties from Terraform console output for security purposes." },
    { extension: "x-speakeasy-param-suppress-computed-diff", description: "Mark that the property will never change value after create. Use to reduce known after apply (unknown value) output in managed resource update plans." },
    { extension: "x-speakeasy-plan-modifiers", description: "Add custom plan modification logic to Terraform plan operations for advanced default values or resource replacement logic." },
    { extension: "x-speakeasy-plan-validators", description: "Add custom validation logic to Terraform plan operations to ensure configurations meet predefined criteria before execution." },
    { extension: "x-speakeasy-required-with", description: "Indicate mutually necessary properties to prevent incompatible Terraform configurations." },
    { extension: "x-speakeasy-soft-delete-property", description: "Automatically cause managed resource state removal and recreation in plans if property is not null, such as a 'deleted' property." },
    { extension: "x-speakeasy-terraform-alias-to", description: "Remap API response data to another property." },
    { extension: "x-speakeasy-terraform-custom-type", description: "Use a terraform-plugin-framework custom type instead of a base type." },
    { extension: "x-speakeasy-terraform-ignore", description: "Use this extension to exclude properties from Terraform state management." },
    { extension: "x-speakeasy-terraform-plan-only", description: "Ensure that only values from the Terraform plan are used during updates, overriding prior state or default values." },
    { extension: "x-speakeasy-type-override", description: "Allows the conversion of an attribute to a JSON string, accommodating dynamic structures in Terraform configurations." },
    { extension: "x-speakeasy-wrapped-attribute", description: "Enables additional API operation data to be placed under a specifically named attribute." },
    { extension: "x-speakeasy-xor-with", description: "Indicate mutually exclusive properties to prevent incompatible combinations in Terraform configurations." },
    { extension: "x-speakeasy-match", description: "Adjusts an API parameter name to align with a Terraform state property." }
  ]}
  columns={[
    { key: "extension", header: "Terraform extension" },
    { key: "description", header: "Description" }
  ]}
/>