infrawrench-sdk 1.1.0 → 1.3.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: b139d5dedc215d6acda15293d9e7e7680368622ca2ec6eb9214f525965eac59c
4
- data.tar.gz: 3318c1b9597fdcfbaf0b20db678894475c4ce6410775dc6ebf84cac42cf35844
3
+ metadata.gz: e41f651da8ba97002c46fc9a3f0aea2aa5d7a99c70d991dadd001bd42d3cbe5d
4
+ data.tar.gz: 6b44b5672b49038b13bc4f69dcc006c4c0dd174e49fedc3ac017e1038819a9bb
5
5
  SHA512:
6
- metadata.gz: cbb962bad4e5a7296e2727918d559b22a70ac2bdec5d94726fbaec8207972a563ec134307510943065baf3f5e526178a0fa475c99978ac23c53a60e2f46a6d56
7
- data.tar.gz: 261dbe50ecf45be5b3aff912293f2662774ded53666d150ec5e350e54695903fec2f95087e4e86af3ca515bcd5ad9f84e0ef970f82bf1cfa8f15185d2673d02e
6
+ metadata.gz: 40ed6ddd9ca198c2d09d28272d84cc2246ce270890561eaf8205bcca83ce8546cc0d74a93eec1b2452c0fbb22f4c1c0a3e274ebd786472707600902aae5669bb
7
+ data.tar.gz: b50431ce75e7fa595c10c2c5391cee2c63566f613584fe3f471388cde6e9439e17b0706b0464347399e99642954e521ae486d18512202c92c2e64939d956e091
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.1.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.3.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
- 417 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 437 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.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.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.1.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.1.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.3.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.3.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.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -572,6 +572,29 @@ module Infrawrench
572
572
  )
573
573
  end
574
574
 
575
+ # Generate Terraform HCL for the account's stored inventory
576
+ #
577
+ # _Requires permission: `resources:read`._
578
+ #
579
+ # GET /api/org/{orgId}/accounts/{id}/export-terraform
580
+ #
581
+ # Raises on 404: Not found
582
+ #
583
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
584
+ # constructed with.
585
+ # @param id [String]
586
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
587
+ # @return [Hash] Parsed JSON, shaped as `TerraformExport` — see `sig/infrawrench/sdk.rbs`.
588
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
589
+ def export_terraform(id:, org_id: nil, request_options: nil)
590
+ @transport.request(
591
+ http_method: "GET",
592
+ path: "/api/org/{orgId}/accounts/{id}/export-terraform",
593
+ path_params: { "orgId" => org_id, "id" => id },
594
+ request_options: request_options
595
+ )
596
+ end
597
+
575
598
  # List accounts in this organization
576
599
  #
577
600
  # _Requires permission: `accounts:read`._
@@ -2001,6 +2024,124 @@ module Infrawrench
2001
2024
  end
2002
2025
  end
2003
2026
 
2027
+ # `client.config`
2028
+ class ConfigNamespace
2029
+ # @api private
2030
+ # @param transport [Transport]
2031
+ def initialize(transport)
2032
+ @transport = transport
2033
+ end
2034
+
2035
+ # Apply a configuration document
2036
+ #
2037
+ # Applies the document in a single transaction and returns the plan that was
2038
+ # executed — all or nothing, so a failure never leaves the organization
2039
+ # halfway between two configurations.
2040
+ #
2041
+ # Requires the write permission of every section the document carries, so
2042
+ # this cannot be used to reach past a role that withholds one.
2043
+ #
2044
+ # _Requires permission: `config:write`._
2045
+ #
2046
+ # POST /api/org/{orgId}/config/apply
2047
+ #
2048
+ # Raises on 400: Bad request
2049
+ #
2050
+ # Raises on 402: Payment required — the organization's plan does not include
2051
+ # this
2052
+ #
2053
+ # Raises on 403: Forbidden
2054
+ #
2055
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2056
+ # constructed with.
2057
+ # @param body [Hash] Request body, shaped as `OrgConfigRequest`.
2058
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2059
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigApplyResult` — see
2060
+ # `sig/infrawrench/sdk.rbs`.
2061
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2062
+ def apply(body:, org_id: nil, request_options: nil)
2063
+ @transport.request(
2064
+ http_method: "POST",
2065
+ path: "/api/org/{orgId}/config/apply",
2066
+ path_params: { "orgId" => org_id },
2067
+ body: body,
2068
+ request_options: request_options
2069
+ )
2070
+ end
2071
+
2072
+ # Export the organization's configuration as one document
2073
+ #
2074
+ # Dashboards, workflows, custom graphs, budgets, metric alerts, synthetic
2075
+ # probes, cost centres, the tag policy and the org-wide alert settings,
2076
+ # addressed by stable keys rather than row ids so the result applies to any
2077
+ # organization.
2078
+ #
2079
+ # Credentials, accounts, resources and workflow signing secrets are never
2080
+ # included. Ordering is stable, so re-exporting an unchanged organization
2081
+ # produces the same bytes — commit it to git and the diff is the change.
2082
+ #
2083
+ # Requires the read permission of every section exported; it refuses rather
2084
+ # than silently omitting one, because a partial document applied in
2085
+ # `replace` mode would delete what the exporter could not see.
2086
+ #
2087
+ # _Requires permission: `config:read`._
2088
+ #
2089
+ # GET /api/org/{orgId}/config/export
2090
+ #
2091
+ # Raises on 400: Bad request
2092
+ #
2093
+ # Raises on 403: Forbidden
2094
+ #
2095
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2096
+ # constructed with.
2097
+ # @param sections [String, nil] Comma-separated subset of sections to export. Defaults to
2098
+ # all of: budgets, customGraphs, workflows, dashboards, metricAlerts, probes, costCentres,
2099
+ # tagPolicy, alertSettings.
2100
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2101
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigDocument` — see `sig/infrawrench/sdk.rbs`.
2102
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2103
+ def export(org_id: nil, sections: nil, request_options: nil)
2104
+ @transport.request(
2105
+ http_method: "GET",
2106
+ path: "/api/org/{orgId}/config/export",
2107
+ path_params: { "orgId" => org_id },
2108
+ query: { "sections" => sections },
2109
+ request_options: request_options
2110
+ )
2111
+ end
2112
+
2113
+ # Preview what applying a document would do
2114
+ #
2115
+ # The dry run: validates the document, resolves its cross-references against
2116
+ # this organization, and returns the create/update/delete/unchanged plan
2117
+ # without writing anything. Read-only, so a reviewer with read access can
2118
+ # run it on a pull request.
2119
+ #
2120
+ # _Requires permission: `config:read`._
2121
+ #
2122
+ # POST /api/org/{orgId}/config/plan
2123
+ #
2124
+ # Raises on 400: Bad request
2125
+ #
2126
+ # Raises on 403: Forbidden
2127
+ #
2128
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2129
+ # constructed with.
2130
+ # @param body [Hash] Request body, shaped as `OrgConfigRequest`.
2131
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2132
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigPlan` — see `sig/infrawrench/sdk.rbs`.
2133
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2134
+ def plan(body:, org_id: nil, request_options: nil)
2135
+ @transport.request(
2136
+ http_method: "POST",
2137
+ path: "/api/org/{orgId}/config/plan",
2138
+ path_params: { "orgId" => org_id },
2139
+ body: body,
2140
+ request_options: request_options
2141
+ )
2142
+ end
2143
+ end
2144
+
2004
2145
  # `client.connect`
2005
2146
  class ConnectNamespace
2006
2147
  # @api private
@@ -6694,6 +6835,35 @@ module Infrawrench
6694
6835
  )
6695
6836
  end
6696
6837
 
6838
+ # Generate Terraform HCL for a resource (and its direct children) from
6839
+ # stored state
6840
+ #
6841
+ # _Requires permission: `resources:read`._
6842
+ #
6843
+ # POST /api/org/{orgId}/resources/{pluginId}/{typeId}/export-terraform
6844
+ #
6845
+ # Raises on 400: Bad request
6846
+ #
6847
+ # Raises on 404: Not found
6848
+ #
6849
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
6850
+ # constructed with.
6851
+ # @param plugin_id [String]
6852
+ # @param type_id [String]
6853
+ # @param body [Hash] Request body, shaped as `ExportTerraformRequest`.
6854
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
6855
+ # @return [Hash] Parsed JSON, shaped as `TerraformExport` — see `sig/infrawrench/sdk.rbs`.
6856
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
6857
+ def export_terraform(plugin_id:, type_id:, body:, org_id: nil, request_options: nil)
6858
+ @transport.request(
6859
+ http_method: "POST",
6860
+ path: "/api/org/{orgId}/resources/{pluginId}/{typeId}/export-terraform",
6861
+ path_params: { "orgId" => org_id, "pluginId" => plugin_id, "typeId" => type_id },
6862
+ body: body,
6863
+ request_options: request_options
6864
+ )
6865
+ end
6866
+
6697
6867
  # Execute an in-form field action (e.g. generate an IAM role)
6698
6868
  #
6699
6869
  # Calls the plugin's `executeFieldAction`. Returns `{ value }` to assign to
@@ -9312,6 +9482,8 @@ module Infrawrench
9312
9482
  attr_reader :change_freezes
9313
9483
  # @return [ChangesNamespace] `client.changes`
9314
9484
  attr_reader :changes
9485
+ # @return [ConfigNamespace] `client.config`
9486
+ attr_reader :config
9315
9487
  # @return [ConnectNamespace] `client.connect`
9316
9488
  attr_reader :connect
9317
9489
  # @return [CostCentresNamespace] `client.cost_centres`
@@ -9426,6 +9598,7 @@ module Infrawrench
9426
9598
  @budgets = BudgetsNamespace.new(@transport)
9427
9599
  @change_freezes = ChangeFreezesNamespace.new(@transport)
9428
9600
  @changes = ChangesNamespace.new(@transport)
9601
+ @config = ConfigNamespace.new(@transport)
9429
9602
  @connect = ConnectNamespace.new(@transport)
9430
9603
  @cost_centres = CostCentresNamespace.new(@transport)
9431
9604
  @costs = CostsNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.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.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.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.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.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.1.0"
18
+ VERSION = "1.3.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.3.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.1.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.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.1.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.3.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.1.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.3.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1566,6 +1566,9 @@ module Infrawrench
1566
1566
  ?"parentResourceId" => resource_id
1567
1567
  }
1568
1568
 
1569
+ # Spec schema: `ExportTerraformRequest`.
1570
+ type export_terraform_request = { "resourceId" => resource_id, "accountId" => String }
1571
+
1569
1572
  # Spec schema: `FieldActionRequest`.
1570
1573
  type field_action_request = {
1571
1574
  "accountId" => String,
@@ -2005,6 +2008,234 @@ module Infrawrench
2005
2008
  # Spec schema: `Ok`.
2006
2009
  type ok = { "ok" => bool }
2007
2010
 
2011
+ # Org-wide notification tuning. Cooldown claims (`lastNotifiedAt`,
2012
+ # `lastSentWeekStart`) are deliberately absent: they are poller state, and
2013
+ # resetting one from an apply would re-open a quiet period and page people
2014
+ # twice.
2015
+ #
2016
+ # Spec schema: `OrgConfigAlertSettings`.
2017
+ type org_config_alert_settings = {
2018
+ ?"costAnomaly" => {
2019
+ "sigmas" => Numeric,
2020
+ "minDeltaCents" => Integer,
2021
+ "newSourceMinCents" => Integer,
2022
+ "smsAlerts" => "off" | "new_source" | "all"
2023
+ },
2024
+ ?"drift" => {
2025
+ "notifyCreated" => bool,
2026
+ "notifyUpdated" => bool,
2027
+ "notifyDeleted" => bool,
2028
+ "cooldownMinutes" => Integer,
2029
+ "minChanges" => Integer,
2030
+ "accounts" => Array[String]
2031
+ },
2032
+ ?"expiry" => { "enabled" => bool, "leadDays" => Integer },
2033
+ ?"posture" => { "enabled" => bool },
2034
+ ?"digest" => {
2035
+ "enabled" => bool,
2036
+ "timezone" => String,
2037
+ "sendDay" => Integer,
2038
+ "sendHour" => Integer,
2039
+ "narrativeEnabled" => bool,
2040
+ "recipients" => Array[String]
2041
+ }
2042
+ }
2043
+
2044
+ # Spec schema: `OrgConfigApplyResult`.
2045
+ type org_config_apply_result = org_config_plan & { "applied" => bool }
2046
+
2047
+ # Spec schema: `OrgConfigBudget`.
2048
+ type org_config_budget = {
2049
+ "key" => String,
2050
+ "name" => String,
2051
+ "amountCents" => Integer,
2052
+ ?"currency" => String,
2053
+ ?"filters" => Array[org_config_cost_filter],
2054
+ "thresholds" => Array[{ "type" => "actual" | "forecast", "percent" => Integer }]
2055
+ }
2056
+
2057
+ # Spec schema: `OrgConfigChange`.
2058
+ type org_config_change = {
2059
+ "section" => org_config_section,
2060
+ "key" => String,
2061
+ "name" => String,
2062
+ "action" => "create" | "update" | "delete" | "unchanged",
2063
+ ?"fields" => Array[String]
2064
+ }
2065
+
2066
+ # Spec schema: `OrgConfigCostCentre`.
2067
+ type org_config_cost_centre = {
2068
+ "key" => String,
2069
+ "name" => String,
2070
+ ?"description" => String | nil,
2071
+ ?"rules" => Array[{
2072
+ "priority" => Integer,
2073
+ ?"match" => {
2074
+ ?"tagKey" => String,
2075
+ ?"tagValue" => String,
2076
+ ?"account" => String,
2077
+ ?"pluginId" => String,
2078
+ ?"service" => String
2079
+ }
2080
+ }]
2081
+ }
2082
+
2083
+ # Spec schema: `OrgConfigCostFilter`.
2084
+ type org_config_cost_filter = {
2085
+ "dimension" => String,
2086
+ "op" => "in" | "not_in",
2087
+ "values" => Array[String],
2088
+ ?"tagKey" => String
2089
+ }
2090
+
2091
+ # Spec schema: `OrgConfigCustomGraph`.
2092
+ type org_config_custom_graph = { "key" => String, "name" => String, ?"description" => String | nil, "source" => String }
2093
+
2094
+ # Spec schema: `OrgConfigDashboard`.
2095
+ type org_config_dashboard = {
2096
+ "key" => String,
2097
+ "name" => String,
2098
+ ?"isDefault" => bool,
2099
+ ?"cards" => Array[org_config_dashboard_card]
2100
+ }
2101
+
2102
+ # One card. Position is the index in the dashboard's `cards` array — the grid
2103
+ # order all three card kinds share.
2104
+ #
2105
+ # Spec schema: `OrgConfigDashboardCard`.
2106
+ type org_config_dashboard_card = {
2107
+ "kind" => "widget",
2108
+ "widgetKind" => "cost_graph" | "cost_report" | "budget" | "custom_graph",
2109
+ ?"title" => String,
2110
+ ?"config" => json_object,
2111
+ ?"budgetKey" => String,
2112
+ ?"graphKey" => String,
2113
+ ?"width" => Integer,
2114
+ ?"height" => Integer
2115
+ }
2116
+ | { "kind" => "workflow", "workflowKey" => String }
2117
+ | {
2118
+ "kind" => "resource",
2119
+ "pluginId" => String,
2120
+ "resourceTypeId" => String,
2121
+ "externalId" => String,
2122
+ "account" => String,
2123
+ ?"width" => Integer,
2124
+ ?"height" => Integer
2125
+ }
2126
+
2127
+ # An organization's configuration. Every section is optional — a document that
2128
+ # omits one leaves it entirely alone, in both apply modes.
2129
+ #
2130
+ # Spec schema: `OrgConfigDocument`.
2131
+ type org_config_document = {
2132
+ ?"version" => Integer,
2133
+ ?"exportedAt" => String,
2134
+ ?"exportedFrom" => { "organizationId" => String, "organizationName" => String },
2135
+ ?"budgets" => Array[org_config_budget],
2136
+ ?"customGraphs" => Array[org_config_custom_graph],
2137
+ ?"workflows" => Array[org_config_workflow],
2138
+ ?"dashboards" => Array[org_config_dashboard],
2139
+ ?"metricAlerts" => Array[org_config_metric_alert],
2140
+ ?"probes" => Array[org_config_probe],
2141
+ ?"costCentres" => Array[org_config_cost_centre],
2142
+ ?"tagPolicy" => {
2143
+ "requiredTags" => Array[{ "key" => String, ?"allowedValues" => Array[String] }],
2144
+ "enforceOnCreate" => bool
2145
+ },
2146
+ ?"alertSettings" => org_config_alert_settings
2147
+ }
2148
+
2149
+ # Spec schema: `OrgConfigMetricAlert`.
2150
+ type org_config_metric_alert = {
2151
+ "key" => String,
2152
+ "name" => String,
2153
+ ?"pluginId" => String | nil,
2154
+ ?"resourceTypeId" => String | nil,
2155
+ ?"tagKey" => String | nil,
2156
+ ?"tagValue" => String | nil,
2157
+ "metricKey" => String,
2158
+ "comparator" => ">" | ">=" | "<" | "<=",
2159
+ "threshold" => Numeric,
2160
+ ?"forMinutes" => Integer,
2161
+ ?"cooldownMinutes" => Integer,
2162
+ ?"enabled" => bool
2163
+ }
2164
+
2165
+ # Spec schema: `OrgConfigPlan`.
2166
+ type org_config_plan = {
2167
+ "mode" => "merge" | "replace",
2168
+ "changes" => Array[org_config_change],
2169
+ "unresolved" => Array[org_config_unresolved],
2170
+ "counts" => { "create" => Integer, "update" => Integer, "delete" => Integer, "unchanged" => Integer }
2171
+ }
2172
+
2173
+ # Spec schema: `OrgConfigProbe`.
2174
+ type org_config_probe = {
2175
+ "key" => String,
2176
+ "name" => String,
2177
+ "url" => String,
2178
+ ?"method" => String,
2179
+ ?"intervalSeconds" => Integer,
2180
+ ?"timeoutMs" => Integer,
2181
+ ?"failureThreshold" => Integer,
2182
+ ?"enabled" => bool
2183
+ }
2184
+
2185
+ # Spec schema: `OrgConfigRequest`.
2186
+ type org_config_request = { "document" => org_config_document, ?"mode" => "merge" | "replace" }
2187
+
2188
+ # Spec schema: `OrgConfigSection`.
2189
+ type org_config_section = "budgets"
2190
+ | "customGraphs"
2191
+ | "workflows"
2192
+ | "dashboards"
2193
+ | "metricAlerts"
2194
+ | "probes"
2195
+ | "costCentres"
2196
+ | "tagPolicy"
2197
+ | "alertSettings"
2198
+
2199
+ # Something the document asked for that this organization could not satisfy —
2200
+ # a pin for a resource nobody has synced, an account name that does not exist
2201
+ # here. Not fatal: the affected card, clause or deletion is dropped and the
2202
+ # rest of the document still applies.
2203
+ #
2204
+ # Spec schema: `OrgConfigUnresolved`.
2205
+ type org_config_unresolved = { "section" => org_config_section, "key" => String, "detail" => String }
2206
+
2207
+ # A workflow. The git-webhook signing secret is deliberately absent — it is
2208
+ # write-only, so a document can neither leak nor set one.
2209
+ #
2210
+ # Spec schema: `OrgConfigWorkflow`.
2211
+ type org_config_workflow = {
2212
+ "key" => String,
2213
+ "name" => String,
2214
+ ?"description" => String | nil,
2215
+ "source" => String,
2216
+ ?"trigger" => org_config_workflow_trigger,
2217
+ ?"metrics" => Array[{ "key" => String, "label" => String, ?"unit" => String | nil, ?"type" => String }],
2218
+ ?"enabled" => bool
2219
+ }
2220
+
2221
+ # Spec schema: `OrgConfigWorkflowTrigger`.
2222
+ type org_config_workflow_trigger = { "kind" => "manual" }
2223
+ | { "kind" => "cron", "expression" => String, ?"timezone" => String }
2224
+ | {
2225
+ "kind" => "git",
2226
+ ?"provider" => String,
2227
+ ?"repo" => String,
2228
+ ?"branch" => String,
2229
+ ?"events" => Array[String],
2230
+ ?"installationId" => Integer
2231
+ }
2232
+ | {
2233
+ "kind" => "budget",
2234
+ "budgetKey" => String,
2235
+ ?"percent" => Numeric,
2236
+ ?"metric" => "actual" | "forecast"
2237
+ }
2238
+
2008
2239
  # Spec schema: `OrgMember`.
2009
2240
  type org_member = {
2010
2241
  "id" => String,
@@ -2215,6 +2446,8 @@ module Infrawrench
2215
2446
  | "freezes:write"
2216
2447
  | "freezes:override"
2217
2448
  | "tag-policy:override"
2449
+ | "config:read"
2450
+ | "config:write"
2218
2451
  | "audit:read"
2219
2452
  | "access:read"
2220
2453
  | "access:request"
@@ -2671,6 +2904,7 @@ module Infrawrench
2671
2904
  "canEdit" => bool,
2672
2905
  "editableFields" => Array[editable_field],
2673
2906
  "credentialFormats" => Array[credential_format],
2907
+ "supportsTerraformExport" => bool,
2674
2908
  "hasManifestEditor" => bool,
2675
2909
  "hasSecretVersions" => bool,
2676
2910
  "resourceDisplayName" => String,
@@ -3856,6 +4090,26 @@ module Infrawrench
3856
4090
  ?"allowedValues" => Array[String]
3857
4091
  }
3858
4092
 
4093
+ # Spec schema: `TerraformExport`.
4094
+ type terraform_export = {
4095
+ "hcl" => String,
4096
+ "exported" => Array[{
4097
+ "id" => resource_id,
4098
+ "displayName" => String,
4099
+ "pluginId" => String,
4100
+ "resourceTypeId" => String,
4101
+ "address" => String,
4102
+ ?"importId" => String
4103
+ }],
4104
+ "unsupported" => Array[{
4105
+ "id" => resource_id,
4106
+ "displayName" => String,
4107
+ "pluginId" => String,
4108
+ "resourceTypeId" => String,
4109
+ "reason" => String
4110
+ }]
4111
+ }
4112
+
3859
4113
  # Spec schema: `TotpEnrollment`.
3860
4114
  type totp_enrollment = {
3861
4115
  "factorId" => String,
@@ -4014,6 +4268,7 @@ module Infrawrench
4014
4268
  def create: (body: (create_account_request & { ?"pluginId" => plugin_id }), ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> create_account_response
4015
4269
  def delete: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
4016
4270
  def detail: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> account_detail
4271
+ def export_terraform: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> terraform_export
4017
4272
  def list: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[account]
4018
4273
  def resources: (id: String, ?org_id: String?, ?top_level_only: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> Array[resource]
4019
4274
  def sync: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> sync_response
@@ -4140,6 +4395,13 @@ module Infrawrench
4140
4395
  def resource: (resource_id: String, ?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> resource_change_list_response
4141
4396
  end
4142
4397
 
4398
+ class ConfigNamespace
4399
+ def initialize: (Transport) -> void
4400
+ def apply: (body: org_config_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_apply_result
4401
+ def export: (?org_id: String?, ?sections: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_document
4402
+ def plan: (body: org_config_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_plan
4403
+ end
4404
+
4143
4405
  class ConnectNamespace
4144
4406
  def initialize: (Transport) -> void
4145
4407
  def env_deploy: (body: connect_env_deploy_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
@@ -4497,6 +4759,7 @@ module Infrawrench
4497
4759
  def describe: (plugin_id: plugin_id, type_id: resource_type_id, body: describe_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> describe_response
4498
4760
  def detail: (plugin_id: plugin_id, type_id: resource_type_id, resource_id: resource_id, ?org_id: String?, ?account_id: String?, ?parent_resource_id: resource_id?, ?include_peer_panes: "true" | "false"?, ?request_options: Hash[Symbol, untyped]?) -> resource_detail
4499
4761
  def export_credential: (plugin_id: plugin_id, type_id: resource_type_id, body: export_credential_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> credential_export
4762
+ def export_terraform: (plugin_id: plugin_id, type_id: resource_type_id, body: export_terraform_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> terraform_export
4500
4763
  def field_action: (body: field_action_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> field_action_response
4501
4764
  def import_yaml: (plugin_id: plugin_id, body: import_yaml_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> json_object
4502
4765
  def invoke_action: (body: invoke_action_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
@@ -4713,6 +4976,7 @@ module Infrawrench
4713
4976
  attr_reader budgets: BudgetsNamespace
4714
4977
  attr_reader change_freezes: ChangeFreezesNamespace
4715
4978
  attr_reader changes: ChangesNamespace
4979
+ attr_reader config: ConfigNamespace
4716
4980
  attr_reader connect: ConnectNamespace
4717
4981
  attr_reader cost_centres: CostCentresNamespace
4718
4982
  attr_reader costs: CostsNamespace
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.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Infrawrench LLC
@@ -9,9 +9,9 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-08-08 00:00:00.000000000 Z
12
+ date: 2026-08-10 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.1.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.3.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.1.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.3.0).
62
62
  test_files: []