Skip to content

CLI

Speakeasy Terraform provider support matrix

Provider components
Resource schemas
Speakeasy extension
x-speakeasy-entity-operation: MyEntity#create
Full 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#read
Full 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#create
Full 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#read
Full 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#update
Full 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#delete
Full 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-validators
Full 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-modifiers
Full 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.
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: string
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: number
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: integer
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: boolean
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: object
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: null
Speakeasy 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: array
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: array, minItems: N
Speakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure the Terraform ListAttribute has N items set.
JSON Schema type: array, maxItems: J
Speakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure the Terraform ListAttribute has J items set.
JSON Schema type: array, uniqueItems: true
Speakeasy 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: float
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: number, format: double
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: integer, format: int32
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: integer, format: int64
Speakeasy support
✅ Full support
Comments & limitations
JSON Schema type: string, format: date
Speakeasy 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-time
Speakeasy support
✅ Full support
Comments & limitations
A plan validator is added to ensure that this string value is RFC 3339-compatible.
JSON Schema format: binary
Speakeasy support
✅ Full support
Comments & limitations
Accessible as a string attribute.
JSON Schema nullable: true
Speakeasy support
✅ Full support
Comments & limitations
Combined into Required or Optional Terraform attribute modifiers.
JSON Schema additionalProperties: true
Speakeasy 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: true
Speakeasy support
✅ Full support
Comments & limitations
OpenAPI writeOnly: true
Speakeasy 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 serialization
Speakeasy 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: string
JSON Schema additions
Notes
Terraform framework type
schema.StringAttribute
type: number
JSON Schema additions
Notes
Terraform framework type
schema.NumberAttribute
type: integer
JSON Schema additions
Notes
Terraform framework type
schema.Int64Attribute
type: boolean
JSON Schema additions
Notes
Terraform framework type
schema.BoolAttribute
type: array
JSON Schema additions
Notes
A ListAttribute is used when items has the primitive type.
Terraform framework type
schema.ListAttribute or schema.ListNestedAttribute
type: array
JSON Schema additions
format: set
Notes
A SetAttribute is used when items has the primitive type.
Terraform framework type
schema.SetAttribute or schema.SetNestedAttribute
type: object
JSON Schema additions
properties: {...}
Notes
Terraform framework type
schema.SingleNestedAttribute
type: object
JSON Schema additions
additionalProperties: {...}
Notes
A MapAttribute is used when additionalProperties has the primitive type.
Terraform framework type
schema.MapAttribute or schema.MapNestedAttribute
type: null
JSON Schema additions
N/A
Notes
Element ignored
Terraform framework type
JSON Schema subschema type
oneOf
Handling
A schema.SingleNestedAttribute is created with one key for each oneOf child. Plan validator ensures that only one subattribute is used.
Full docs
anyOf
Handling
Considered the same as oneOf. Speakeasy does not strictly enforce this subschema type in production environments.
Full docs
allOf
Handling
Merges all subschemas. When the subschemas are objects, it creates a composite object with properties from all child schemas.
Full docs