infrawrench-sdk 1.19.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8c13955007c104a26094f09c6b0f8e78248c945e6495c5352539c87fe356bb4
4
- data.tar.gz: a7be9b98ed78ff3e0662f5ca6162c1d1012806f360566a2b6778a1a470deb5c5
3
+ metadata.gz: 9862e7d44b95bc0794e298c73ff379546de05a7481dc7f9965e1de260c1eb14b
4
+ data.tar.gz: 6c9ca9ecdb8b203159c5e92555db87a3d439d7084f3ff2bfe2b14cd59d69700d
5
5
  SHA512:
6
- metadata.gz: 1392500234ef4cbcab3e12991e2f7ff7399c9d8238e43505f5c110e61d184bb3cf43b44dd166ef63e0ff5cdd28582463eb99a0c4303f36e1d4f7d1b2ab300622
7
- data.tar.gz: 56ceb83f3f133c285f9ffa3848e4202df1abeddaa642c8e9f37a2fc0b0ec58fcfca753bd5c33c6b3a20933dbf10f20962e16abf9fd3b433ba28e3c8331ca7ccc
6
+ metadata.gz: ba1721493b342779182cdd239ea06d82ccf42cda13fa0dfc46a3c98b0e47a482de057f30c8362a528c505268808a4a4d072080771bf05c3eb08667ba1d62d531
7
+ data.tar.gz: a9e63a70297fe0508c9e0abdd9732d9453b5231c6616700f654c29609fd9a26fed0342d60acd2901deacfcf73de4c03cc77d6539fe7481da54f1608b81fb040c
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # infrawrench-sdk
2
2
 
3
- Generated Ruby client for the Infrawrench API (API version `1.19.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.21.0`).
4
4
 
5
5
  **Do not edit this gem by hand** — it is regenerated from `openapi.json` and is
6
6
  not checked into the repository. Run
@@ -41,7 +41,7 @@ Every method takes an optional trailing `request_options:` hash (`:headers`,
41
41
  Responses are the plain `Hash`/`Array` that `JSON.parse` returns, with String
42
42
  keys spelled exactly as the wire spells them. There are no model classes — see
43
43
  [`sig/infrawrench/sdk.rbs`](./sig/infrawrench/sdk.rbs) for the shape of every one of the
44
- 625 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 654 schemas, as RBS type aliases that steep and TypeProf can read.
45
45
 
46
46
  Non-2xx responses raise `Infrawrench::ApiError`, which carries `#status`,
47
47
  the parsed `#body`, and the machine-readable `#code` when the API sends one —
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -17,8 +17,8 @@ require_relative "lib/infrawrench/version"
17
17
  Gem::Specification.new do |spec|
18
18
  spec.name = "infrawrench-sdk"
19
19
  spec.version = Infrawrench::VERSION
20
- spec.summary = "Generated Ruby client for the Infrawrench API (v1.19.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.19.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
20
+ spec.summary = "Generated Ruby client for the Infrawrench API (v1.21.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.21.0). Covers the published API surface only — operations marked x-internal in the spec are not generated. No runtime dependencies."
22
22
  spec.authors = ["Infrawrench LLC", "Astrid Gealer"]
23
23
  spec.email = ["astrid@infrawrench.com"]
24
24
  spec.homepage = "https://infrawrench.com/docs/team-and-billing/client-sdks"
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -6873,6 +6873,475 @@ module Infrawrench
6873
6873
  end
6874
6874
  end
6875
6875
 
6876
+ # `client.environments.instances`
6877
+ class EnvironmentsInstancesNamespace
6878
+ # @api private
6879
+ # @param transport [Transport]
6880
+ def initialize(transport)
6881
+ @transport = transport
6882
+ end
6883
+
6884
+ # Forget a torn-down environment
6885
+ #
6886
+ # Removes the record. Refuses while the instance still owns resources — the
6887
+ # row is the only thing that knows they exist. Audit-logged.
6888
+ #
6889
+ # _Requires permission: `resources:write`._
6890
+ #
6891
+ # DELETE /api/org/{orgId}/environments/instances/{instanceId}
6892
+ #
6893
+ # Raises on 404: Not found
6894
+ #
6895
+ # Raises on 409: The environment is still live — tear it down first
6896
+ #
6897
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
6898
+ # constructed with.
6899
+ # @param instance_id [String]
6900
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
6901
+ # @return [nil] This endpoint returns no content.
6902
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
6903
+ def delete(instance_id:, org_id: nil, request_options: nil)
6904
+ @transport.request(
6905
+ http_method: "DELETE",
6906
+ path: "/api/org/{orgId}/environments/instances/{instanceId}",
6907
+ path_params: { "orgId" => org_id, "instanceId" => instance_id },
6908
+ accept: :empty,
6909
+ request_options: request_options
6910
+ )
6911
+ end
6912
+
6913
+ # List environment instances
6914
+ #
6915
+ # Newest first. Reading this also reconciles instances past their deadline
6916
+ # against what the lease pass already deleted, so an environment whose
6917
+ # resources are all gone stops reporting itself as running.
6918
+ #
6919
+ # _Requires permission: `resources:read`._
6920
+ #
6921
+ # GET /api/org/{orgId}/environments/instances
6922
+ #
6923
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
6924
+ # constructed with.
6925
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
6926
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentInstanceList` — see
6927
+ # `sig/infrawrench/sdk.rbs`.
6928
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
6929
+ def get(org_id: nil, request_options: nil)
6930
+ @transport.request(
6931
+ http_method: "GET",
6932
+ path: "/api/org/{orgId}/environments/instances",
6933
+ path_params: { "orgId" => org_id },
6934
+ request_options: request_options
6935
+ )
6936
+ end
6937
+
6938
+ # Get an environment instance
6939
+ #
6940
+ # _Requires permission: `resources:read`._
6941
+ #
6942
+ # GET /api/org/{orgId}/environments/instances/{instanceId}
6943
+ #
6944
+ # Raises on 404: Not found
6945
+ #
6946
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
6947
+ # constructed with.
6948
+ # @param instance_id [String]
6949
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
6950
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentInstance` — see
6951
+ # `sig/infrawrench/sdk.rbs`.
6952
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
6953
+ def get_org_org_id_environments_instances_instance_id(
6954
+ instance_id:,
6955
+ org_id: nil,
6956
+ request_options: nil
6957
+ )
6958
+ @transport.request(
6959
+ http_method: "GET",
6960
+ path: "/api/org/{orgId}/environments/instances/{instanceId}",
6961
+ path_params: { "orgId" => org_id, "instanceId" => instance_id },
6962
+ request_options: request_options
6963
+ )
6964
+ end
6965
+
6966
+ # Tear an environment down now
6967
+ #
6968
+ # Deletes every created member through the ordinary `deleteResource` path,
6969
+ # in reverse creation order. Idempotent: a member already gone, a resource
6970
+ # the provider answers 404 for, and an instance already torn down all
6971
+ # succeed quietly, so this is safe to retry. Blocked by an active change
6972
+ # freeze. Audit-logged.
6973
+ #
6974
+ # _Requires permission: `resources:delete`._
6975
+ #
6976
+ # POST /api/org/{orgId}/environments/instances/{instanceId}/teardown
6977
+ #
6978
+ # Raises on 404: Not found
6979
+ #
6980
+ # Raises on 423: Blocked by an active change freeze. Retry with the
6981
+ # `x-change-freeze-override: true` header if you hold `freezes:override`;
6982
+ # both blocks and overrides are audit-logged.
6983
+ #
6984
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
6985
+ # constructed with.
6986
+ # @param instance_id [String]
6987
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
6988
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentInstance` — see
6989
+ # `sig/infrawrench/sdk.rbs`.
6990
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
6991
+ def teardown(instance_id:, org_id: nil, request_options: nil)
6992
+ @transport.request(
6993
+ http_method: "POST",
6994
+ path: "/api/org/{orgId}/environments/instances/{instanceId}/teardown",
6995
+ path_params: { "orgId" => org_id, "instanceId" => instance_id },
6996
+ request_options: request_options
6997
+ )
6998
+ end
6999
+ end
7000
+
7001
+ # `client.environments.settings`
7002
+ class EnvironmentsSettingsNamespace
7003
+ # @api private
7004
+ # @param transport [Transport]
7005
+ def initialize(transport)
7006
+ @transport = transport
7007
+ end
7008
+
7009
+ # Get the organization's environment TTL rails
7010
+ #
7011
+ # The longest TTL an instantiation may ask for and the TTL the form
7012
+ # pre-fills. Absent settings normalize into the shipped defaults (168h /
7013
+ # 24h).
7014
+ #
7015
+ # _Requires permission: `resources:read`._
7016
+ #
7017
+ # GET /api/org/{orgId}/environments/settings
7018
+ #
7019
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7020
+ # constructed with.
7021
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7022
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentSettings` — see
7023
+ # `sig/infrawrench/sdk.rbs`.
7024
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7025
+ def get(org_id: nil, request_options: nil)
7026
+ @transport.request(
7027
+ http_method: "GET",
7028
+ path: "/api/org/{orgId}/environments/settings",
7029
+ path_params: { "orgId" => org_id },
7030
+ request_options: request_options
7031
+ )
7032
+ end
7033
+
7034
+ # Set the organization's environment TTL rails
7035
+ #
7036
+ # `org:settings:write`, not `resources:write` — this is a governance
7037
+ # decision about how long the organization is willing to pay for a throwaway
7038
+ # environment. Clamped to a 720-hour ceiling; the default is clamped to the
7039
+ # maximum. Audit-logged.
7040
+ #
7041
+ # _Requires permission: `org:settings:write`._
7042
+ #
7043
+ # PUT /api/org/{orgId}/environments/settings
7044
+ #
7045
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7046
+ # constructed with.
7047
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentSettings`.
7048
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7049
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentSettings` — see
7050
+ # `sig/infrawrench/sdk.rbs`.
7051
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7052
+ def update(org_id: nil, body: nil, request_options: nil)
7053
+ @transport.request(
7054
+ http_method: "PUT",
7055
+ path: "/api/org/{orgId}/environments/settings",
7056
+ path_params: { "orgId" => org_id },
7057
+ body: body,
7058
+ request_options: request_options
7059
+ )
7060
+ end
7061
+ end
7062
+
7063
+ # `client.environments.templates`
7064
+ class EnvironmentsTemplatesNamespace
7065
+ # @api private
7066
+ # @param transport [Transport]
7067
+ def initialize(transport)
7068
+ @transport = transport
7069
+ end
7070
+
7071
+ # Create an environment template
7072
+ #
7073
+ # Save a capture draft as a template. Member keys must be unique, every
7074
+ # parameter and member reference must resolve, and the members must be
7075
+ # orderable — a dependency cycle is rejected here rather than half-way
7076
+ # through an apply. Audit-logged.
7077
+ #
7078
+ # _Requires permission: `resources:write`._
7079
+ #
7080
+ # POST /api/org/{orgId}/environments/templates
7081
+ #
7082
+ # Raises on 400: Bad request
7083
+ #
7084
+ # Raises on 409: A template with that name already exists
7085
+ #
7086
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7087
+ # constructed with.
7088
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentTemplateInput`.
7089
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7090
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentTemplate` — see
7091
+ # `sig/infrawrench/sdk.rbs`.
7092
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7093
+ def create(org_id: nil, body: nil, request_options: nil)
7094
+ @transport.request(
7095
+ http_method: "POST",
7096
+ path: "/api/org/{orgId}/environments/templates",
7097
+ path_params: { "orgId" => org_id },
7098
+ body: body,
7099
+ request_options: request_options
7100
+ )
7101
+ end
7102
+
7103
+ # Delete an environment template
7104
+ #
7105
+ # Live instances keep running and keep their TTL — they own real resources,
7106
+ # and the template is only where they came from. Their `templateId` becomes
7107
+ # null; the denormalized `templateName` is what the surface reads.
7108
+ # Audit-logged.
7109
+ #
7110
+ # _Requires permission: `resources:write`._
7111
+ #
7112
+ # DELETE /api/org/{orgId}/environments/templates/{templateId}
7113
+ #
7114
+ # Raises on 404: Not found
7115
+ #
7116
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7117
+ # constructed with.
7118
+ # @param template_id [String]
7119
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7120
+ # @return [nil] This endpoint returns no content.
7121
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7122
+ def delete(template_id:, org_id: nil, request_options: nil)
7123
+ @transport.request(
7124
+ http_method: "DELETE",
7125
+ path: "/api/org/{orgId}/environments/templates/{templateId}",
7126
+ path_params: { "orgId" => org_id, "templateId" => template_id },
7127
+ accept: :empty,
7128
+ request_options: request_options
7129
+ )
7130
+ end
7131
+
7132
+ # Price an instantiation before it runs
7133
+ #
7134
+ # Runs each member's create fields through the plugin's own `estimateCost`.
7135
+ # A member the plugin cannot price is counted in `unpricedCount` and makes
7136
+ # the total `partial` — `null` is never rounded to zero.
7137
+ #
7138
+ # _Requires permission: `resources:read`._
7139
+ #
7140
+ # POST /api/org/{orgId}/environments/templates/{templateId}/estimate
7141
+ #
7142
+ # Raises on 400: Bad request
7143
+ #
7144
+ # Raises on 404: Not found
7145
+ #
7146
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7147
+ # constructed with.
7148
+ # @param template_id [String]
7149
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentEstimateRequest`.
7150
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7151
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentCostEstimate` — see
7152
+ # `sig/infrawrench/sdk.rbs`.
7153
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7154
+ def estimate(template_id:, org_id: nil, body: nil, request_options: nil)
7155
+ @transport.request(
7156
+ http_method: "POST",
7157
+ path: "/api/org/{orgId}/environments/templates/{templateId}/estimate",
7158
+ path_params: { "orgId" => org_id, "templateId" => template_id },
7159
+ body: body,
7160
+ request_options: request_options
7161
+ )
7162
+ end
7163
+
7164
+ # List environment templates
7165
+ #
7166
+ # _Requires permission: `resources:read`._
7167
+ #
7168
+ # GET /api/org/{orgId}/environments/templates
7169
+ #
7170
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7171
+ # constructed with.
7172
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7173
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentTemplateList` — see
7174
+ # `sig/infrawrench/sdk.rbs`.
7175
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7176
+ def get(org_id: nil, request_options: nil)
7177
+ @transport.request(
7178
+ http_method: "GET",
7179
+ path: "/api/org/{orgId}/environments/templates",
7180
+ path_params: { "orgId" => org_id },
7181
+ request_options: request_options
7182
+ )
7183
+ end
7184
+
7185
+ # Get an environment template
7186
+ #
7187
+ # _Requires permission: `resources:read`._
7188
+ #
7189
+ # GET /api/org/{orgId}/environments/templates/{templateId}
7190
+ #
7191
+ # Raises on 404: Not found
7192
+ #
7193
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7194
+ # constructed with.
7195
+ # @param template_id [String]
7196
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7197
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentTemplate` — see
7198
+ # `sig/infrawrench/sdk.rbs`.
7199
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7200
+ def get_org_org_id_environments_templates_template_id(
7201
+ template_id:,
7202
+ org_id: nil,
7203
+ request_options: nil
7204
+ )
7205
+ @transport.request(
7206
+ http_method: "GET",
7207
+ path: "/api/org/{orgId}/environments/templates/{templateId}",
7208
+ path_params: { "orgId" => org_id, "templateId" => template_id },
7209
+ request_options: request_options
7210
+ )
7211
+ end
7212
+
7213
+ # Stamp out an environment
7214
+ #
7215
+ # Creates the template's resources in dependency order through the ordinary
7216
+ # `createResource` path, name-prefixed per instance, and attaches an
7217
+ # auto-delete lease to each so expiry runs through the existing lease pass.
7218
+ # `ttlHours` is **required**. Requires `resources:write` **and**
7219
+ # `resources:delete` (the lease is a standing deletion, the same rule `POST
7220
+ # /leases` applies), and is blocked by an active change freeze. A create
7221
+ # that fails part-way returns a `partial` instance whose created members are
7222
+ # recorded and tearable-down, never an error with orphaned resources behind
7223
+ # it. Audit-logged.
7224
+ #
7225
+ # _Requires permission: `resources:write`._
7226
+ #
7227
+ # POST /api/org/{orgId}/environments/templates/{templateId}/instantiate
7228
+ #
7229
+ # Raises on 400: Bad request
7230
+ #
7231
+ # Raises on 404: Not found
7232
+ #
7233
+ # Raises on 409: The organization is at its live-environment limit
7234
+ #
7235
+ # Raises on 423: Blocked by an active change freeze. Retry with the
7236
+ # `x-change-freeze-override: true` header if you hold `freezes:override`;
7237
+ # both blocks and overrides are audit-logged.
7238
+ #
7239
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7240
+ # constructed with.
7241
+ # @param template_id [String]
7242
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentInstantiateRequest`.
7243
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7244
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentInstance` — see
7245
+ # `sig/infrawrench/sdk.rbs`.
7246
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7247
+ def instantiate(template_id:, org_id: nil, body: nil, request_options: nil)
7248
+ @transport.request(
7249
+ http_method: "POST",
7250
+ path: "/api/org/{orgId}/environments/templates/{templateId}/instantiate",
7251
+ path_params: { "orgId" => org_id, "templateId" => template_id },
7252
+ body: body,
7253
+ request_options: request_options
7254
+ )
7255
+ end
7256
+
7257
+ # Replace an environment template
7258
+ #
7259
+ # The whole document is replaced. Live instances are unaffected.
7260
+ # Audit-logged.
7261
+ #
7262
+ # _Requires permission: `resources:write`._
7263
+ #
7264
+ # PUT /api/org/{orgId}/environments/templates/{templateId}
7265
+ #
7266
+ # Raises on 400: Bad request
7267
+ #
7268
+ # Raises on 404: Not found
7269
+ #
7270
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7271
+ # constructed with.
7272
+ # @param template_id [String]
7273
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentTemplateInput`.
7274
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7275
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentTemplate` — see
7276
+ # `sig/infrawrench/sdk.rbs`.
7277
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7278
+ def update(template_id:, org_id: nil, body: nil, request_options: nil)
7279
+ @transport.request(
7280
+ http_method: "PUT",
7281
+ path: "/api/org/{orgId}/environments/templates/{templateId}",
7282
+ path_params: { "orgId" => org_id, "templateId" => template_id },
7283
+ body: body,
7284
+ request_options: request_options
7285
+ )
7286
+ end
7287
+ end
7288
+
7289
+ # `client.environments`
7290
+ class EnvironmentsNamespace
7291
+ # @return [EnvironmentsInstancesNamespace] `client.environments.instances`
7292
+ attr_reader :instances
7293
+ # @return [EnvironmentsSettingsNamespace] `client.environments.settings`
7294
+ attr_reader :settings
7295
+ # @return [EnvironmentsTemplatesNamespace] `client.environments.templates`
7296
+ attr_reader :templates
7297
+
7298
+ # @api private
7299
+ # @param transport [Transport]
7300
+ def initialize(transport)
7301
+ @transport = transport
7302
+ @instances = EnvironmentsInstancesNamespace.new(@transport)
7303
+ @settings = EnvironmentsSettingsNamespace.new(@transport)
7304
+ @templates = EnvironmentsTemplatesNamespace.new(@transport)
7305
+ end
7306
+
7307
+ # Preview a template capture
7308
+ #
7309
+ # Turn a selection of live resources into a draft template. **Persists
7310
+ # nothing** — the editor shows the draft so the user can choose which fields
7311
+ # to vary before saving. The shape of every member comes from the plugin's
7312
+ # own `getCreateConfig`: a captured value with no matching create field is
7313
+ # dropped, and a resource type the plugin cannot create is reported in
7314
+ # `skipped` with a reason rather than silently omitted. Recorded output
7315
+ # references whose target is also in the selection are preserved as `output`
7316
+ # field values; a value that is exactly another selected resource's external
7317
+ # id becomes a `member-id`.
7318
+ #
7319
+ # _Requires permission: `resources:read`._
7320
+ #
7321
+ # POST /api/org/{orgId}/environments/capture
7322
+ #
7323
+ # Raises on 400: Bad request
7324
+ #
7325
+ # Raises on 404: Not found
7326
+ #
7327
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7328
+ # constructed with.
7329
+ # @param body [Hash, nil] Request body, shaped as `EnvironmentCaptureRequest`.
7330
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7331
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentCaptureDraft` — see
7332
+ # `sig/infrawrench/sdk.rbs`.
7333
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7334
+ def capture(org_id: nil, body: nil, request_options: nil)
7335
+ @transport.request(
7336
+ http_method: "POST",
7337
+ path: "/api/org/{orgId}/environments/capture",
7338
+ path_params: { "orgId" => org_id },
7339
+ body: body,
7340
+ request_options: request_options
7341
+ )
7342
+ end
7343
+ end
7344
+
6876
7345
  # `client.expiring.settings`
6877
7346
  class ExpiringSettingsNamespace
6878
7347
  # @api private
@@ -6978,6 +7447,192 @@ module Infrawrench
6978
7447
  end
6979
7448
  end
6980
7449
 
7450
+ # `client.iac.states`
7451
+ class IacStatesNamespace
7452
+ # @api private
7453
+ # @param transport [Transport]
7454
+ def initialize(transport)
7455
+ @transport = transport
7456
+ end
7457
+
7458
+ # Upload a Terraform state document
7459
+ #
7460
+ # Parses a `.tfstate` (format version 4) or `terraform show -json` output
7461
+ # (format_version 1.x) and records the resource instances it contains.
7462
+ # Attributes the state marks sensitive are dropped before anything is
7463
+ # written. The format version is checked, not assumed: an unsupported
7464
+ # version is a 400 rather than a partial read.
7465
+ #
7466
+ # POST /api/org/{orgId}/iac/states
7467
+ #
7468
+ # Raises on 400: Bad request
7469
+ #
7470
+ # Raises on 404: Not found
7471
+ #
7472
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7473
+ # constructed with.
7474
+ # @param body [Hash, nil] Request body, shaped as `IacStateUploadRequest`.
7475
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7476
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
7477
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7478
+ def create(org_id: nil, body: nil, request_options: nil)
7479
+ @transport.request(
7480
+ http_method: "POST",
7481
+ path: "/api/org/{orgId}/iac/states",
7482
+ path_params: { "orgId" => org_id },
7483
+ body: body,
7484
+ request_options: request_options
7485
+ )
7486
+ end
7487
+
7488
+ # Delete an uploaded state document
7489
+ #
7490
+ # DELETE /api/org/{orgId}/iac/states/{stateId}
7491
+ #
7492
+ # Raises on 404: Not found
7493
+ #
7494
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7495
+ # constructed with.
7496
+ # @param state_id [String]
7497
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7498
+ # @return [nil] This endpoint returns no content.
7499
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7500
+ def delete(state_id:, org_id: nil, request_options: nil)
7501
+ @transport.request(
7502
+ http_method: "DELETE",
7503
+ path: "/api/org/{orgId}/iac/states/{stateId}",
7504
+ path_params: { "orgId" => org_id, "stateId" => state_id },
7505
+ accept: :empty,
7506
+ request_options: request_options
7507
+ )
7508
+ end
7509
+
7510
+ # List uploaded Terraform state documents
7511
+ #
7512
+ # Every state document the organization has uploaded, newest first. The
7513
+ # documents themselves are never stored — only the parsed, redacted
7514
+ # projection.
7515
+ #
7516
+ # GET /api/org/{orgId}/iac/states
7517
+ #
7518
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7519
+ # constructed with.
7520
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7521
+ # @return [Hash] Parsed JSON, shaped as `IacStateListResponse` — see
7522
+ # `sig/infrawrench/sdk.rbs`.
7523
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7524
+ def get(org_id: nil, request_options: nil)
7525
+ @transport.request(
7526
+ http_method: "GET",
7527
+ path: "/api/org/{orgId}/iac/states",
7528
+ path_params: { "orgId" => org_id },
7529
+ request_options: request_options
7530
+ )
7531
+ end
7532
+ end
7533
+
7534
+ # `client.iac`
7535
+ class IacNamespace
7536
+ # @return [IacStatesNamespace] `client.iac.states`
7537
+ attr_reader :states
7538
+
7539
+ # @api private
7540
+ # @param transport [Transport]
7541
+ def initialize(transport)
7542
+ @transport = transport
7543
+ @states = IacStatesNamespace.new(@transport)
7544
+ end
7545
+
7546
+ # Generate Terraform import blocks for unmanaged resources
7547
+ #
7548
+ # Terraform 1.5+ `import` blocks plus the matching resource stanzas,
7549
+ # generated by the same plugin export mappers and HCL serializer that back
7550
+ # "Export to Terraform…". Resources no plugin can express are returned in
7551
+ # `unsupported` with a reason, never dropped.
7552
+ #
7553
+ # POST /api/org/{orgId}/iac/import-plan
7554
+ #
7555
+ # Raises on 400: Bad request
7556
+ #
7557
+ # Raises on 404: Not found
7558
+ #
7559
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7560
+ # constructed with.
7561
+ # @param body [Hash, nil] Request body, shaped as `IacImportPlanRequest`.
7562
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7563
+ # @return [Hash] Parsed JSON, shaped as `IacImportPlanResponse` — see
7564
+ # `sig/infrawrench/sdk.rbs`.
7565
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7566
+ def import_plan(org_id: nil, body: nil, request_options: nil)
7567
+ @transport.request(
7568
+ http_method: "POST",
7569
+ path: "/api/org/{orgId}/iac/import-plan",
7570
+ path_params: { "orgId" => org_id },
7571
+ body: body,
7572
+ request_options: request_options
7573
+ )
7574
+ end
7575
+
7576
+ # Classify inventory against a state document
7577
+ #
7578
+ # Every synced resource classified as managed, drifted or unmanaged against
7579
+ # one uploaded state, plus state entries with no inventory match. Unmanaged
7580
+ # resources carry the ownership and first-seen join that answers "who made
7581
+ # this by hand, and when".
7582
+ #
7583
+ # GET /api/org/{orgId}/iac/reconciliation
7584
+ #
7585
+ # Raises on 400: Bad request
7586
+ #
7587
+ # Raises on 404: Not found
7588
+ #
7589
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7590
+ # constructed with.
7591
+ # @param state_id [String]
7592
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7593
+ # @return [Hash] Parsed JSON, shaped as `IacReconciliationResponse` — see
7594
+ # `sig/infrawrench/sdk.rbs`.
7595
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7596
+ def reconciliation(state_id:, org_id: nil, request_options: nil)
7597
+ @transport.request(
7598
+ http_method: "GET",
7599
+ path: "/api/org/{orgId}/iac/reconciliation",
7600
+ path_params: { "orgId" => org_id },
7601
+ query: { "stateId" => state_id },
7602
+ request_options: request_options
7603
+ )
7604
+ end
7605
+
7606
+ # IaC status for one resource
7607
+ #
7608
+ # The managed/unmanaged badge for a resource detail page, computed against
7609
+ # the newest state document. `status` is null when the organization has
7610
+ # uploaded none — absence of a state is not evidence of ClickOps. A query
7611
+ # parameter rather than a path segment because composite resource ids
7612
+ # contain slashes.
7613
+ #
7614
+ # GET /api/org/{orgId}/iac/resource
7615
+ #
7616
+ # Raises on 400: Bad request
7617
+ #
7618
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
7619
+ # constructed with.
7620
+ # @param resource_id [String]
7621
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
7622
+ # @return [Hash] Parsed JSON, shaped as `IacResourceStatusResponse` — see
7623
+ # `sig/infrawrench/sdk.rbs`.
7624
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
7625
+ def resource(resource_id:, org_id: nil, request_options: nil)
7626
+ @transport.request(
7627
+ http_method: "GET",
7628
+ path: "/api/org/{orgId}/iac/resource",
7629
+ path_params: { "orgId" => org_id },
7630
+ query: { "resourceId" => resource_id },
7631
+ request_options: request_options
7632
+ )
7633
+ end
7634
+ end
7635
+
6981
7636
  # `client.incidents.get`
6982
7637
  class IncidentsGetNamespace
6983
7638
  # @api private
@@ -14217,8 +14872,12 @@ module Infrawrench
14217
14872
  attr_reader :docker
14218
14873
  # @return [EnvironmentDiffNamespace] `client.environment_diff`
14219
14874
  attr_reader :environment_diff
14875
+ # @return [EnvironmentsNamespace] `client.environments`
14876
+ attr_reader :environments
14220
14877
  # @return [ExpiringNamespace] `client.expiring`
14221
14878
  attr_reader :expiring
14879
+ # @return [IacNamespace] `client.iac`
14880
+ attr_reader :iac
14222
14881
  # @return [IncidentsNamespace] `client.incidents`
14223
14882
  attr_reader :incidents
14224
14883
  # @return [InvitationsNamespace] `client.invitations`
@@ -14351,7 +15010,9 @@ module Infrawrench
14351
15010
  @dns = DnsNamespace.new(@transport)
14352
15011
  @docker = DockerNamespace.new(@transport)
14353
15012
  @environment_diff = EnvironmentDiffNamespace.new(@transport)
15013
+ @environments = EnvironmentsNamespace.new(@transport)
14354
15014
  @expiring = ExpiringNamespace.new(@transport)
15015
+ @iac = IacNamespace.new(@transport)
14355
15016
  @incidents = IncidentsNamespace.new(@transport)
14356
15017
  @invitations = InvitationsNamespace.new(@transport)
14357
15018
  @invoices = InvoicesNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -15,5 +15,5 @@
15
15
  # Kept in its own file so the gemspec can read the version without loading the
16
16
  # client — a gemspec that pulls in net/http is a gemspec that can fail to parse.
17
17
  module Infrawrench
18
- VERSION = "1.19.0"
18
+ VERSION = "1.21.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
4
4
  # https://github.com/Infrawrench/Infrawrench
5
5
  #
6
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1,7 +1,7 @@
1
- # infrawrench-sdk v1.19.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.21.0 | MIT | Copyright (c) 2026 Infrawrench LLC
2
2
  # https://github.com/Infrawrench/Infrawrench
3
3
  #
4
- # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.19.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.21.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -435,8 +435,6 @@ module Infrawrench
435
435
  | "logMatchAlerts"
436
436
  | "postureAlerts"
437
437
  | "probeAlerts"
438
- | "quotaAlerts"
439
- | "incidentAlerts"
440
438
  | "weeklyDigest"
441
439
 
442
440
  # Spec schema: `AllocationRule`.
@@ -2711,6 +2709,47 @@ module Infrawrench
2711
2709
  "notifiedAt" => String | nil
2712
2710
  }
2713
2711
 
2712
+ # Spec schema: `EnvironmentCaptureDraft`.
2713
+ type environment_capture_draft = {
2714
+ "members" => Array[environment_capture_draft_member],
2715
+ "suggestedParameters" => Array[environment_parameter],
2716
+ "skipped" => Array[{ "resourceId" => String, "displayName" => String, "reason" => String }]
2717
+ }
2718
+
2719
+ # Spec schema: `EnvironmentCaptureDraftMember`.
2720
+ type environment_capture_draft_member = environment_template_member
2721
+ & {
2722
+ "fieldMeta" => Hash[String, {
2723
+ "label" => String,
2724
+ "kind" => String,
2725
+ "required" => bool,
2726
+ ?"options" => Array[{ "id" => String, "label" => String }],
2727
+ "parameterisable" => bool
2728
+ }]
2729
+ }
2730
+
2731
+ # Spec schema: `EnvironmentCaptureRequest`.
2732
+ type environment_capture_request = {
2733
+ ?"resourceIds" => Array[String],
2734
+ ?"accountId" => String,
2735
+ ?"tagKey" => String,
2736
+ ?"tagValue" => String
2737
+ }
2738
+
2739
+ # Spec schema: `EnvironmentCostEstimate`.
2740
+ type environment_cost_estimate = {
2741
+ "monthlyAmount" => Numeric | nil,
2742
+ "currency" => String | nil,
2743
+ "partial" => bool,
2744
+ "unpricedCount" => Integer,
2745
+ "members" => Array[{
2746
+ "memberKey" => String,
2747
+ "displayName" => String,
2748
+ "monthlyAmount" => Numeric | nil,
2749
+ "currency" => String | nil
2750
+ }]
2751
+ }
2752
+
2714
2753
  # Spec schema: `EnvironmentDiffEntry`.
2715
2754
  type environment_diff_entry = {
2716
2755
  "key" => String,
@@ -2782,6 +2821,125 @@ module Infrawrench
2782
2821
  # Spec schema: `EnvironmentDiffUnavailableType`.
2783
2822
  type environment_diff_unavailable_type = { "resourceTypeId" => String, "resourceTypeName" => String, "message" => String }
2784
2823
 
2824
+ # Spec schema: `EnvironmentEstimateRequest`.
2825
+ type environment_estimate_request = { ?"parameters" => Hash[String, String], ?"accountOverrides" => Hash[String, String] }
2826
+
2827
+ # Spec schema: `EnvironmentInstance`.
2828
+ type environment_instance = {
2829
+ "id" => String,
2830
+ "templateId" => String | nil,
2831
+ "templateName" => String,
2832
+ "name" => String,
2833
+ "namePrefix" => String,
2834
+ "parameters" => Hash[String, String],
2835
+ "status" => "creating" | "active" | "partial" | "tearing-down" | "deleted" | "failed",
2836
+ "expiresAt" => String,
2837
+ "error" => String | nil,
2838
+ "members" => Array[environment_instance_member],
2839
+ "createdAt" => String,
2840
+ "updatedAt" => String,
2841
+ "completedAt" => String | nil
2842
+ }
2843
+
2844
+ # Spec schema: `EnvironmentInstanceConflict`.
2845
+ type environment_instance_conflict = { "error" => String }
2846
+
2847
+ # Spec schema: `EnvironmentInstanceList`.
2848
+ type environment_instance_list = { "instances" => Array[environment_instance] }
2849
+
2850
+ # Spec schema: `EnvironmentInstanceMember`.
2851
+ type environment_instance_member = {
2852
+ "id" => String,
2853
+ "memberKey" => String,
2854
+ "pluginId" => plugin_id,
2855
+ "resourceTypeId" => String,
2856
+ "accountId" => String,
2857
+ "resourceId" => String | nil,
2858
+ "externalId" => String | nil,
2859
+ "displayName" => String,
2860
+ "status" => "pending" | "created" | "failed" | "deleted",
2861
+ "error" => String | nil,
2862
+ "leaseId" => String | nil,
2863
+ "position" => Integer
2864
+ }
2865
+
2866
+ # Spec schema: `EnvironmentInstantiateRequest`.
2867
+ type environment_instantiate_request = {
2868
+ "name" => String,
2869
+ ?"parameters" => Hash[String, String],
2870
+ "ttlHours" => Numeric,
2871
+ ?"accountOverrides" => Hash[String, String],
2872
+ ?"note" => String
2873
+ }
2874
+
2875
+ # Spec schema: `EnvironmentParameter`.
2876
+ type environment_parameter = {
2877
+ "key" => String,
2878
+ "label" => String,
2879
+ "type" => "string" | "number" | "select",
2880
+ "required" => bool,
2881
+ ?"defaultValue" => String,
2882
+ ?"options" => Array[{ "id" => String, "label" => String }],
2883
+ ?"description" => String
2884
+ }
2885
+
2886
+ # Spec schema: `EnvironmentSettings`.
2887
+ type environment_settings = { "maxTtlHours" => Integer, "defaultTtlHours" => Integer }
2888
+
2889
+ # Spec schema: `EnvironmentStillLive`.
2890
+ type environment_still_live = { "error" => String }
2891
+
2892
+ # Spec schema: `EnvironmentTemplate`.
2893
+ type environment_template = {
2894
+ "id" => String,
2895
+ "name" => String,
2896
+ "description" => String | nil,
2897
+ "parameters" => Array[environment_parameter],
2898
+ "members" => Array[environment_template_member],
2899
+ "createdAt" => String,
2900
+ "updatedAt" => String,
2901
+ ?"activeInstanceCount" => Integer
2902
+ }
2903
+
2904
+ # Spec schema: `EnvironmentTemplateConflict`.
2905
+ type environment_template_conflict = { "error" => String }
2906
+
2907
+ # What a captured create-form field is filled with at instantiation. `literal`
2908
+ # is the captured value; `parameter` is a field the user chose to vary;
2909
+ # `output` is another member's resolved output (a connection string, an IP —
2910
+ # the captured half of an output reference); `member-id` is another member's
2911
+ # provider-side id.
2912
+ #
2913
+ # Spec schema: `EnvironmentTemplateFieldValue`.
2914
+ type environment_template_field_value = { "kind" => "literal", "value" => String }
2915
+ | { "kind" => "parameter", "parameter" => String }
2916
+ | { "kind" => "output", "member" => String, "outputKey" => String }
2917
+ | { "kind" => "member-id", "member" => String }
2918
+
2919
+ # Spec schema: `EnvironmentTemplateInput`.
2920
+ type environment_template_input = {
2921
+ "name" => String,
2922
+ ?"description" => String | nil,
2923
+ "parameters" => Array[environment_parameter],
2924
+ "members" => Array[environment_template_member]
2925
+ }
2926
+
2927
+ # Spec schema: `EnvironmentTemplateList`.
2928
+ type environment_template_list = { "templates" => Array[environment_template] }
2929
+
2930
+ # Spec schema: `EnvironmentTemplateMember`.
2931
+ type environment_template_member = {
2932
+ "key" => String,
2933
+ "pluginId" => plugin_id,
2934
+ "resourceTypeId" => String,
2935
+ "accountId" => String,
2936
+ "sourceName" => String,
2937
+ ?"sourceResourceId" => String,
2938
+ ?"nameFieldKey" => String,
2939
+ ?"parentMember" => String,
2940
+ "fields" => Hash[String, environment_template_field_value]
2941
+ }
2942
+
2785
2943
  # Spec schema: `Error`.
2786
2944
  type error = { "error" => String }
2787
2945
 
@@ -2935,6 +3093,99 @@ module Infrawrench
2935
3093
  "counts" => { "high" => Integer, "medium" => Integer, "low" => Integer, "total" => Integer }
2936
3094
  }
2937
3095
 
3096
+ # Spec schema: `IacFieldChange`.
3097
+ type iac_field_change = { "field" => String, ?"from" => untyped, ?"to" => untyped }
3098
+
3099
+ # Spec schema: `IacImportPlanRequest`.
3100
+ type iac_import_plan_request = { "resourceIds" => Array[String] }
3101
+
3102
+ # Spec schema: `IacImportPlanResponse`.
3103
+ type iac_import_plan_response = {
3104
+ "hcl" => String,
3105
+ "exported" => Array[{ "resourceId" => String, "address" => String, "importId" => String | nil }],
3106
+ "unsupported" => Array[{ "resourceId" => String, "displayName" => String, "reason" => String }]
3107
+ }
3108
+
3109
+ # Spec schema: `IacReconciledResource`.
3110
+ type iac_reconciled_resource = {
3111
+ "resourceId" => String,
3112
+ "pluginId" => plugin_id,
3113
+ "resourceTypeId" => String,
3114
+ "accountId" => String,
3115
+ "displayName" => String,
3116
+ "externalId" => String | nil,
3117
+ "status" => "managed" | "drifted" | "unmanaged",
3118
+ "terraformType" => String | nil,
3119
+ "terraformAddress" => String | nil,
3120
+ "matchedBy" => "import-id" | "external-id" | "identifier" | nil,
3121
+ "drift" => Array[iac_field_change],
3122
+ "unmappableReason" => String | nil,
3123
+ "owner" => Hash[String, untyped] | nil,
3124
+ "firstSeenAt" => String | nil
3125
+ }
3126
+
3127
+ # Spec schema: `IacReconciliationResponse`.
3128
+ type iac_reconciliation_response = {
3129
+ "state" => iac_state,
3130
+ "resources" => Array[iac_reconciled_resource],
3131
+ "stateOnly" => Array[iac_state_only_resource],
3132
+ "summary" => {
3133
+ "inventoryTotal" => Integer,
3134
+ "managed" => Integer,
3135
+ "drifted" => Integer,
3136
+ "unmanaged" => Integer,
3137
+ "stateOnly" => Integer,
3138
+ "undiffable" => Integer,
3139
+ "stateResources" => Integer,
3140
+ "dataSourcesIgnored" => Integer
3141
+ },
3142
+ "underivable" => Array[{ "pluginId" => plugin_id, "resourceTypeId" => String, "reason" => String }]
3143
+ }
3144
+
3145
+ # Spec schema: `IacResourceStatusResponse`.
3146
+ type iac_resource_status_response = {
3147
+ "status" => "managed" | "drifted" | "unmanaged" | nil,
3148
+ "stateId" => String | nil,
3149
+ "stateLabel" => String | nil,
3150
+ "terraformAddress" => String | nil,
3151
+ "driftFieldCount" => Integer
3152
+ }
3153
+
3154
+ # Spec schema: `IacState`.
3155
+ type iac_state = {
3156
+ "id" => String,
3157
+ "label" => String,
3158
+ "accountId" => String | nil,
3159
+ "accountName" => String | nil,
3160
+ "format" => "tfstate" | "show-json",
3161
+ "formatVersion" => String,
3162
+ "terraformVersion" => String | nil,
3163
+ "serial" => Integer | nil,
3164
+ "lineage" => String | nil,
3165
+ "resourceCount" => Integer,
3166
+ "dataSourceCount" => Integer,
3167
+ "redactedAttributeCount" => Integer,
3168
+ "parseWarnings" => Array[String],
3169
+ "uploadedByUserId" => String | nil,
3170
+ "uploadedByName" => String | nil,
3171
+ "createdAt" => String
3172
+ }
3173
+
3174
+ # Spec schema: `IacStateListResponse`.
3175
+ type iac_state_list_response = { "states" => Array[iac_state] }
3176
+
3177
+ # Spec schema: `IacStateOnlyResource`.
3178
+ type iac_state_only_resource = {
3179
+ "address" => String,
3180
+ "terraformType" => String,
3181
+ "identifiers" => Array[String],
3182
+ "candidates" => Array[{ "pluginId" => plugin_id, "resourceTypeId" => String }],
3183
+ "reason" => "no-inventory-match" | "unknown-terraform-type"
3184
+ }
3185
+
3186
+ # Spec schema: `IacStateUploadRequest`.
3187
+ type iac_state_upload_request = { "label" => String, ?"accountId" => String | nil, "document" => String }
3188
+
2938
3189
  # Spec schema: `ImportSshKeyRequest`.
2939
3190
  type import_ssh_key_request = { "name" => String, "publicKey" => String }
2940
3191
 
@@ -4307,6 +4558,8 @@ module Infrawrench
4307
4558
  | "tag-policy:override"
4308
4559
  | "config:read"
4309
4560
  | "config:write"
4561
+ | "iac:read"
4562
+ | "iac:write"
4310
4563
  | "audit:read"
4311
4564
  | "access:read"
4312
4565
  | "access:request"
@@ -6214,7 +6467,9 @@ module Infrawrench
6214
6467
  | "access-review"
6215
6468
  | "backups"
6216
6469
  | "dns"
6470
+ | "iac"
6217
6471
  | "environment-diff"
6472
+ | "environments"
6218
6473
  | "ssh-fanout"
6219
6474
  | "metric-alerts"
6220
6475
  | "probes"
@@ -6974,6 +7229,39 @@ module Infrawrench
6974
7229
  def get: (a: String, b: String, ?org_id: String?, ?resource_type_id: String?, ?include_identity_fields: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> environment_diff_response
6975
7230
  end
6976
7231
 
7232
+ class EnvironmentsInstancesNamespace
7233
+ def initialize: (Transport) -> void
7234
+ def delete: (instance_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
7235
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_instance_list
7236
+ def get_org_org_id_environments_instances_instance_id: (instance_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_instance
7237
+ def teardown: (instance_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_instance
7238
+ end
7239
+
7240
+ class EnvironmentsSettingsNamespace
7241
+ def initialize: (Transport) -> void
7242
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_settings
7243
+ def update: (?org_id: String?, ?body: environment_settings?, ?request_options: Hash[Symbol, untyped]?) -> environment_settings
7244
+ end
7245
+
7246
+ class EnvironmentsTemplatesNamespace
7247
+ def initialize: (Transport) -> void
7248
+ def create: (?org_id: String?, ?body: environment_template_input?, ?request_options: Hash[Symbol, untyped]?) -> environment_template
7249
+ def delete: (template_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
7250
+ def estimate: (template_id: String, ?org_id: String?, ?body: environment_estimate_request?, ?request_options: Hash[Symbol, untyped]?) -> environment_cost_estimate
7251
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_template_list
7252
+ def get_org_org_id_environments_templates_template_id: (template_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> environment_template
7253
+ def instantiate: (template_id: String, ?org_id: String?, ?body: environment_instantiate_request?, ?request_options: Hash[Symbol, untyped]?) -> environment_instance
7254
+ def update: (template_id: String, ?org_id: String?, ?body: environment_template_input?, ?request_options: Hash[Symbol, untyped]?) -> environment_template
7255
+ end
7256
+
7257
+ class EnvironmentsNamespace
7258
+ attr_reader instances: EnvironmentsInstancesNamespace
7259
+ attr_reader settings: EnvironmentsSettingsNamespace
7260
+ attr_reader templates: EnvironmentsTemplatesNamespace
7261
+ def initialize: (Transport) -> void
7262
+ def capture: (?org_id: String?, ?body: environment_capture_request?, ?request_options: Hash[Symbol, untyped]?) -> environment_capture_draft
7263
+ end
7264
+
6977
7265
  class ExpiringSettingsNamespace
6978
7266
  def initialize: (Transport) -> void
6979
7267
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> expiry_alert_settings
@@ -6986,6 +7274,21 @@ module Infrawrench
6986
7274
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> expiry_list_response
6987
7275
  end
6988
7276
 
7277
+ class IacStatesNamespace
7278
+ def initialize: (Transport) -> void
7279
+ def create: (?org_id: String?, ?body: iac_state_upload_request?, ?request_options: Hash[Symbol, untyped]?) -> { "state" => iac_state }
7280
+ def delete: (state_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
7281
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> iac_state_list_response
7282
+ end
7283
+
7284
+ class IacNamespace
7285
+ attr_reader states: IacStatesNamespace
7286
+ def initialize: (Transport) -> void
7287
+ def import_plan: (?org_id: String?, ?body: iac_import_plan_request?, ?request_options: Hash[Symbol, untyped]?) -> iac_import_plan_response
7288
+ def reconciliation: (state_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> iac_reconciliation_response
7289
+ def resource: (resource_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> iac_resource_status_response
7290
+ end
7291
+
6989
7292
  class IncidentsGetNamespace
6990
7293
  def initialize: (Transport) -> void
6991
7294
  def get: (?org_id: String?, ?status: String?, ?request_options: Hash[Symbol, untyped]?) -> incident_list
@@ -7548,7 +7851,9 @@ module Infrawrench
7548
7851
  attr_reader dns: DnsNamespace
7549
7852
  attr_reader docker: DockerNamespace
7550
7853
  attr_reader environment_diff: EnvironmentDiffNamespace
7854
+ attr_reader environments: EnvironmentsNamespace
7551
7855
  attr_reader expiring: ExpiringNamespace
7856
+ attr_reader iac: IacNamespace
7552
7857
  attr_reader incidents: IncidentsNamespace
7553
7858
  attr_reader invitations: InvitationsNamespace
7554
7859
  attr_reader invoices: InvoicesNamespace
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infrawrench-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.0
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infrawrench LLC
@@ -11,7 +11,7 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2026-08-12 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.19.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.21.0). Covers the published
15
15
  API surface only — operations marked x-internal in the spec are not generated. No
16
16
  runtime dependencies.
17
17
  email:
@@ -58,5 +58,5 @@ requirements: []
58
58
  rubygems_version: 3.5.22
59
59
  signing_key:
60
60
  specification_version: 4
61
- summary: Generated Ruby client for the Infrawrench API (v1.19.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.21.0).
62
62
  test_files: []