CLI
Speakeasy Terraform provider support matrix
Provider components
Section titled “Provider components”Provider components
Resource schemas
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#createFull docs
Speakeasy generation
Hoists and merges JSON Schemas associated with all create, read, update, and delete operations appropriately.
Data source schemas
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#readFull docs
Speakeasy generation
Hoists and merges JSON Schemas associated with all read operations into a single data source.
Create methods
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#createFull docs
Speakeasy generation
Speakeasy generates platform connector logic to invoke all API requests and save responses to the Terraform state.
Read methods
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#readFull docs
Speakeasy generation
Speakeasy generates platform connector logic to invoke all API requests and save responses to the Terraform state. Also invoked in
CREATE and UPDATE methods for additional data calls, enabling drift detection and import.Update methods
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#updateFull docs
Speakeasy generation
Speakeasy generates platform connector logic to invoke all API requests and save responses to the Terraform state. Plan modifiers force resource recreation when needed.
Delete methods
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#deleteFull docs
Speakeasy generation
Speakeasy generates platform connector logic to invoke all API requests and save responses to the Terraform state.
Plan validators
Speakeasy extension
x-speakeasy-plan-validatorsFull docs
Speakeasy generation
Generated when using restricted OpenAPI data types (for example, JSON fields, date fields). Also generated for specific Speakeasy extensions.
Plan modifiers
Speakeasy extension
x-speakeasy-plan-modifiersFull docs
Speakeasy generation
Ensures API and
terraform state and terraform plan commands have appropriate semantics, such as diff-detection.Resource imports
Speakeasy extension
n/a
Full docs
Speakeasy generation
Each
resource will be inserted into the provider resource list.Supported OpenAPI semantics
Section titled “Supported OpenAPI semantics”OpenAPI semantics
Resource schemas (const)
Speakeasy support
✅ Full support
Comments & limitations
When an attribute in an OpenAPI document is specified as
const, it is removed from a Terraform schema and automatically included in requests or assumed in responses.Resource schemas (default)
Speakeasy support
✅ Full support
Comments & limitations
When an attribute specifies a default value, this value will be used whenever that attribute is not explicitly set, ensuring consistency and reliability.
Server configuration
Speakeasy support
✅ Full support
Comments & limitations
The provider includes a
server_url variable, allowing it to be used with any API server. By default, this variable is set to the first entry in the servers field of the OpenAPI document.Global authentication
Speakeasy support
✅ Full support
Comments & limitations
All authentication mechanisms that rely on static authorization are supported, with their values automatically configurable in the provider settings.
Query parameter serialization
Speakeasy support
✅ Full support
Comments & limitations
All query parameter attributes will be available as resource or data source attributes in a Terraform-native format. Might require remapping through
x-speakeasy-match.Request headers
Speakeasy support
✅ Full support
Comments & limitations
All request attributes will be available as resource or data source attributes in a Terraform-native format.
Multiple API requests in one CRUD step
Speakeasy support
✅ Full support
Comments & limitations
For example,
create requires two API calls.JSON Schema
type: stringSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: numberSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: integerSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: booleanSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: objectSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: nullSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
required: [requiredPropertyA, ...]Speakeasy support
✅ Full support
Comments & limitations
Combined into
Required or Optional Terraform attribute modifiers.JSON Schema
enum: [...values...]Speakeasy support
✅ Full support
Comments & limitations
A plan validator is added to assert that only one of the predefined values is set.
JSON Schema
type: arraySpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: array, minItems: NSpeakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure the Terraform
ListAttribute has N items set.JSON Schema
type: array, maxItems: JSpeakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure the Terraform
ListAttribute has J items set.JSON Schema
type: array, uniqueItems: trueSpeakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure the Terraform
ListAttribute has all items as unique values.JSON Schema
type: number, format: floatSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: number, format: doubleSpeakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: integer, format: int32Speakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: integer, format: int64Speakeasy support
✅ Full support
Comments & limitations
JSON Schema
type: string, format: dateSpeakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure that this string value is set to a date in the YYYY-MM-DD format.
JSON Schema
type: string, format: date-timeSpeakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure that this string value is RFC 3339-compatible.
JSON Schema
format: binarySpeakeasy support
✅ Full support
Comments & limitations
Accessible as a string attribute.
JSON Schema
nullable: trueSpeakeasy support
✅ Full support
Comments & limitations
Combined into
Required or Optional Terraform attribute modifiers.JSON Schema
additionalProperties: trueSpeakeasy support
✅ Full support
Comments & limitations
A free-form object without
additionalProperties: true is treated as an empty object.JSON Schema
additionalProperties: ${JSON Schema}Speakeasy support
✅ Full support
Comments & limitations
Full support for defining schemas for additional properties.
JSON Schema
oneOf: [${JSON Schema}, ...]Speakeasy support
✅ Full support
Comments & limitations
Represented as a nested object with one child attribute for each
oneOf subschema. A plan validator is added that asserts only one child attribute can be set.JSON Schema
anyOf: [${JSON Schema}, ...]Speakeasy support
✅ Full support
Comments & limitations
Considered the same as
oneOf.JSON Schema
allOf: [${JSON Schema}, ...]Speakeasy support
✅ Full support
Comments & limitations
Constructs an "uber-type" by merging the superset of all subschemas.
JSON Schema "Any" Type
Speakeasy support
✅ Full support
Comments & limitations
Requires the
x-speakeasy-type-override: any annotation. Used as an escape hatch.OpenAPI
readOnly: trueSpeakeasy support
✅ Full support
Comments & limitations
OpenAPI
writeOnly: trueSpeakeasy support
✅ Full support
Comments & limitations
Example generation
Speakeasy support
✅ Full support
Comments & limitations
Propagates
example and examples into generated Terraform resource examples. Uses a type-appropriate value for other cases.Operation-specific authentication
Speakeasy support
⚠️ Partial support
Comments & limitations
Speakeasy doesn't support overriding global authentication on specific operations without advanced techniques like monkey patching.
label or matrix path param serializationSpeakeasy support
⚠️ No support
Comments & limitations
Remapping may be required through
x-speakeasy-match.XML request body serialization
Speakeasy support
⚠️ Partial support
Comments & limitations
Full support for JSON data types but no support for XML.
XML response body deserialization
Speakeasy support
⚠️ Partial support
Comments & limitations
Full support for JSON data types but no support for XML response bodies.
Circular references
Speakeasy support
⚠️ Partial support
Comments & limitations
x-speakeasy-type-override: any enables setting attributes with jsonencode(...arbitrary data...).Lists of lists of primitives
Speakeasy support
⚠️ Partial support
Comments & limitations
x-speakeasy-type-override: any enables setting lists of lists, but Terraform's ListAttribute only supports primitive types.Terraform framework types from JSON Schema types
Section titled “Terraform framework types from JSON Schema types”JSON Schema type
type: stringJSON Schema additions
Notes
Terraform framework type
schema.StringAttributetype: numberJSON Schema additions
Notes
Terraform framework type
schema.NumberAttributetype: integerJSON Schema additions
Notes
Terraform framework type
schema.Int64Attributetype: booleanJSON Schema additions
Notes
Terraform framework type
schema.BoolAttributetype: arrayJSON Schema additions
Notes
A
ListAttribute is used when items has the primitive type.Terraform framework type
schema.ListAttribute or schema.ListNestedAttributetype: arrayJSON Schema additions
format: setNotes
A
SetAttribute is used when items has the primitive type.Terraform framework type
schema.SetAttribute or schema.SetNestedAttributetype: objectJSON Schema additions
properties: {...}Notes
Terraform framework type
schema.SingleNestedAttributetype: objectJSON Schema additions
additionalProperties: {...}Notes
A
MapAttribute is used when additionalProperties has the primitive type.Terraform framework type
schema.MapAttribute or schema.MapNestedAttributetype: nullJSON Schema additions
N/A
Notes
Element ignored
Terraform framework type
JSON Schema subschema handling
Section titled “JSON Schema subschema handling”JSON Schema subschema type
oneOfHandling
A
schema.SingleNestedAttribute is created with one key for each oneOf child. Plan validator ensures that only one subattribute is used.Full docs
anyOfHandling
Considered the same as
oneOf. Speakeasy does not strictly enforce this subschema type in production environments.Full docs
allOfHandling
Merges all subschemas. When the subschemas are objects, it creates a composite object with properties from all child schemas.
Full docs