infrawrench-sdk 1.1.0 → 1.2.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: 44bdb9fdba2323135ddce49dcf7722b06efd664d30ddf5059eb926272b4bfcd3
4
+ data.tar.gz: c42f98392e673f3a5b1a8e6a17566374c5ed41eb38aa841deb13fd60070371ca
5
5
  SHA512:
6
- metadata.gz: cbb962bad4e5a7296e2727918d559b22a70ac2bdec5d94726fbaec8207972a563ec134307510943065baf3f5e526178a0fa475c99978ac23c53a60e2f46a6d56
7
- data.tar.gz: 261dbe50ecf45be5b3aff912293f2662774ded53666d150ec5e350e54695903fec2f95087e4e86af3ca515bcd5ad9f84e0ef970f82bf1cfa8f15185d2673d02e
6
+ metadata.gz: 532efd679fa7560bf54a06fc1fd2f32fe335171c84782d621cced4cefe50618453947e2084626fd2afc70b880dbb9f0428339926ba59541c3558aa885e5ce594
7
+ data.tar.gz: 3fe95ccc73285960fd722fa4e1fef67b3d70dcc35acb2891addc4fb49817e7060f300313afd7a7ad58ddfb73b43d9481d12903625128d1d85d3814106fcd360a
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.2.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
+ 435 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.2.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.2.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.2.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.2.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.2.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.2.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -2001,6 +2001,124 @@ module Infrawrench
2001
2001
  end
2002
2002
  end
2003
2003
 
2004
+ # `client.config`
2005
+ class ConfigNamespace
2006
+ # @api private
2007
+ # @param transport [Transport]
2008
+ def initialize(transport)
2009
+ @transport = transport
2010
+ end
2011
+
2012
+ # Apply a configuration document
2013
+ #
2014
+ # Applies the document in a single transaction and returns the plan that was
2015
+ # executed — all or nothing, so a failure never leaves the organization
2016
+ # halfway between two configurations.
2017
+ #
2018
+ # Requires the write permission of every section the document carries, so
2019
+ # this cannot be used to reach past a role that withholds one.
2020
+ #
2021
+ # _Requires permission: `config:write`._
2022
+ #
2023
+ # POST /api/org/{orgId}/config/apply
2024
+ #
2025
+ # Raises on 400: Bad request
2026
+ #
2027
+ # Raises on 402: Payment required — the organization's plan does not include
2028
+ # this
2029
+ #
2030
+ # Raises on 403: Forbidden
2031
+ #
2032
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2033
+ # constructed with.
2034
+ # @param body [Hash] Request body, shaped as `OrgConfigRequest`.
2035
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2036
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigApplyResult` — see
2037
+ # `sig/infrawrench/sdk.rbs`.
2038
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2039
+ def apply(body:, org_id: nil, request_options: nil)
2040
+ @transport.request(
2041
+ http_method: "POST",
2042
+ path: "/api/org/{orgId}/config/apply",
2043
+ path_params: { "orgId" => org_id },
2044
+ body: body,
2045
+ request_options: request_options
2046
+ )
2047
+ end
2048
+
2049
+ # Export the organization's configuration as one document
2050
+ #
2051
+ # Dashboards, workflows, custom graphs, budgets, metric alerts, synthetic
2052
+ # probes, cost centres, the tag policy and the org-wide alert settings,
2053
+ # addressed by stable keys rather than row ids so the result applies to any
2054
+ # organization.
2055
+ #
2056
+ # Credentials, accounts, resources and workflow signing secrets are never
2057
+ # included. Ordering is stable, so re-exporting an unchanged organization
2058
+ # produces the same bytes — commit it to git and the diff is the change.
2059
+ #
2060
+ # Requires the read permission of every section exported; it refuses rather
2061
+ # than silently omitting one, because a partial document applied in
2062
+ # `replace` mode would delete what the exporter could not see.
2063
+ #
2064
+ # _Requires permission: `config:read`._
2065
+ #
2066
+ # GET /api/org/{orgId}/config/export
2067
+ #
2068
+ # Raises on 400: Bad request
2069
+ #
2070
+ # Raises on 403: Forbidden
2071
+ #
2072
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2073
+ # constructed with.
2074
+ # @param sections [String, nil] Comma-separated subset of sections to export. Defaults to
2075
+ # all of: budgets, customGraphs, workflows, dashboards, metricAlerts, probes, costCentres,
2076
+ # tagPolicy, alertSettings.
2077
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2078
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigDocument` — see `sig/infrawrench/sdk.rbs`.
2079
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2080
+ def export(org_id: nil, sections: nil, request_options: nil)
2081
+ @transport.request(
2082
+ http_method: "GET",
2083
+ path: "/api/org/{orgId}/config/export",
2084
+ path_params: { "orgId" => org_id },
2085
+ query: { "sections" => sections },
2086
+ request_options: request_options
2087
+ )
2088
+ end
2089
+
2090
+ # Preview what applying a document would do
2091
+ #
2092
+ # The dry run: validates the document, resolves its cross-references against
2093
+ # this organization, and returns the create/update/delete/unchanged plan
2094
+ # without writing anything. Read-only, so a reviewer with read access can
2095
+ # run it on a pull request.
2096
+ #
2097
+ # _Requires permission: `config:read`._
2098
+ #
2099
+ # POST /api/org/{orgId}/config/plan
2100
+ #
2101
+ # Raises on 400: Bad request
2102
+ #
2103
+ # Raises on 403: Forbidden
2104
+ #
2105
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
2106
+ # constructed with.
2107
+ # @param body [Hash] Request body, shaped as `OrgConfigRequest`.
2108
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
2109
+ # @return [Hash] Parsed JSON, shaped as `OrgConfigPlan` — see `sig/infrawrench/sdk.rbs`.
2110
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
2111
+ def plan(body:, org_id: nil, request_options: nil)
2112
+ @transport.request(
2113
+ http_method: "POST",
2114
+ path: "/api/org/{orgId}/config/plan",
2115
+ path_params: { "orgId" => org_id },
2116
+ body: body,
2117
+ request_options: request_options
2118
+ )
2119
+ end
2120
+ end
2121
+
2004
2122
  # `client.connect`
2005
2123
  class ConnectNamespace
2006
2124
  # @api private
@@ -9312,6 +9430,8 @@ module Infrawrench
9312
9430
  attr_reader :change_freezes
9313
9431
  # @return [ChangesNamespace] `client.changes`
9314
9432
  attr_reader :changes
9433
+ # @return [ConfigNamespace] `client.config`
9434
+ attr_reader :config
9315
9435
  # @return [ConnectNamespace] `client.connect`
9316
9436
  attr_reader :connect
9317
9437
  # @return [CostCentresNamespace] `client.cost_centres`
@@ -9426,6 +9546,7 @@ module Infrawrench
9426
9546
  @budgets = BudgetsNamespace.new(@transport)
9427
9547
  @change_freezes = ChangeFreezesNamespace.new(@transport)
9428
9548
  @changes = ChangesNamespace.new(@transport)
9549
+ @config = ConfigNamespace.new(@transport)
9429
9550
  @connect = ConnectNamespace.new(@transport)
9430
9551
  @cost_centres = CostCentresNamespace.new(@transport)
9431
9552
  @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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.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.2.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -2005,6 +2005,234 @@ module Infrawrench
2005
2005
  # Spec schema: `Ok`.
2006
2006
  type ok = { "ok" => bool }
2007
2007
 
2008
+ # Org-wide notification tuning. Cooldown claims (`lastNotifiedAt`,
2009
+ # `lastSentWeekStart`) are deliberately absent: they are poller state, and
2010
+ # resetting one from an apply would re-open a quiet period and page people
2011
+ # twice.
2012
+ #
2013
+ # Spec schema: `OrgConfigAlertSettings`.
2014
+ type org_config_alert_settings = {
2015
+ ?"costAnomaly" => {
2016
+ "sigmas" => Numeric,
2017
+ "minDeltaCents" => Integer,
2018
+ "newSourceMinCents" => Integer,
2019
+ "smsAlerts" => "off" | "new_source" | "all"
2020
+ },
2021
+ ?"drift" => {
2022
+ "notifyCreated" => bool,
2023
+ "notifyUpdated" => bool,
2024
+ "notifyDeleted" => bool,
2025
+ "cooldownMinutes" => Integer,
2026
+ "minChanges" => Integer,
2027
+ "accounts" => Array[String]
2028
+ },
2029
+ ?"expiry" => { "enabled" => bool, "leadDays" => Integer },
2030
+ ?"posture" => { "enabled" => bool },
2031
+ ?"digest" => {
2032
+ "enabled" => bool,
2033
+ "timezone" => String,
2034
+ "sendDay" => Integer,
2035
+ "sendHour" => Integer,
2036
+ "narrativeEnabled" => bool,
2037
+ "recipients" => Array[String]
2038
+ }
2039
+ }
2040
+
2041
+ # Spec schema: `OrgConfigApplyResult`.
2042
+ type org_config_apply_result = org_config_plan & { "applied" => bool }
2043
+
2044
+ # Spec schema: `OrgConfigBudget`.
2045
+ type org_config_budget = {
2046
+ "key" => String,
2047
+ "name" => String,
2048
+ "amountCents" => Integer,
2049
+ ?"currency" => String,
2050
+ ?"filters" => Array[org_config_cost_filter],
2051
+ "thresholds" => Array[{ "type" => "actual" | "forecast", "percent" => Integer }]
2052
+ }
2053
+
2054
+ # Spec schema: `OrgConfigChange`.
2055
+ type org_config_change = {
2056
+ "section" => org_config_section,
2057
+ "key" => String,
2058
+ "name" => String,
2059
+ "action" => "create" | "update" | "delete" | "unchanged",
2060
+ ?"fields" => Array[String]
2061
+ }
2062
+
2063
+ # Spec schema: `OrgConfigCostCentre`.
2064
+ type org_config_cost_centre = {
2065
+ "key" => String,
2066
+ "name" => String,
2067
+ ?"description" => String | nil,
2068
+ ?"rules" => Array[{
2069
+ "priority" => Integer,
2070
+ ?"match" => {
2071
+ ?"tagKey" => String,
2072
+ ?"tagValue" => String,
2073
+ ?"account" => String,
2074
+ ?"pluginId" => String,
2075
+ ?"service" => String
2076
+ }
2077
+ }]
2078
+ }
2079
+
2080
+ # Spec schema: `OrgConfigCostFilter`.
2081
+ type org_config_cost_filter = {
2082
+ "dimension" => String,
2083
+ "op" => "in" | "not_in",
2084
+ "values" => Array[String],
2085
+ ?"tagKey" => String
2086
+ }
2087
+
2088
+ # Spec schema: `OrgConfigCustomGraph`.
2089
+ type org_config_custom_graph = { "key" => String, "name" => String, ?"description" => String | nil, "source" => String }
2090
+
2091
+ # Spec schema: `OrgConfigDashboard`.
2092
+ type org_config_dashboard = {
2093
+ "key" => String,
2094
+ "name" => String,
2095
+ ?"isDefault" => bool,
2096
+ ?"cards" => Array[org_config_dashboard_card]
2097
+ }
2098
+
2099
+ # One card. Position is the index in the dashboard's `cards` array — the grid
2100
+ # order all three card kinds share.
2101
+ #
2102
+ # Spec schema: `OrgConfigDashboardCard`.
2103
+ type org_config_dashboard_card = {
2104
+ "kind" => "widget",
2105
+ "widgetKind" => "cost_graph" | "budget" | "custom_graph",
2106
+ ?"title" => String,
2107
+ ?"config" => json_object,
2108
+ ?"budgetKey" => String,
2109
+ ?"graphKey" => String,
2110
+ ?"width" => Integer,
2111
+ ?"height" => Integer
2112
+ }
2113
+ | { "kind" => "workflow", "workflowKey" => String }
2114
+ | {
2115
+ "kind" => "resource",
2116
+ "pluginId" => String,
2117
+ "resourceTypeId" => String,
2118
+ "externalId" => String,
2119
+ "account" => String,
2120
+ ?"width" => Integer,
2121
+ ?"height" => Integer
2122
+ }
2123
+
2124
+ # An organization's configuration. Every section is optional — a document that
2125
+ # omits one leaves it entirely alone, in both apply modes.
2126
+ #
2127
+ # Spec schema: `OrgConfigDocument`.
2128
+ type org_config_document = {
2129
+ ?"version" => Integer,
2130
+ ?"exportedAt" => String,
2131
+ ?"exportedFrom" => { "organizationId" => String, "organizationName" => String },
2132
+ ?"budgets" => Array[org_config_budget],
2133
+ ?"customGraphs" => Array[org_config_custom_graph],
2134
+ ?"workflows" => Array[org_config_workflow],
2135
+ ?"dashboards" => Array[org_config_dashboard],
2136
+ ?"metricAlerts" => Array[org_config_metric_alert],
2137
+ ?"probes" => Array[org_config_probe],
2138
+ ?"costCentres" => Array[org_config_cost_centre],
2139
+ ?"tagPolicy" => {
2140
+ "requiredTags" => Array[{ "key" => String, ?"allowedValues" => Array[String] }],
2141
+ "enforceOnCreate" => bool
2142
+ },
2143
+ ?"alertSettings" => org_config_alert_settings
2144
+ }
2145
+
2146
+ # Spec schema: `OrgConfigMetricAlert`.
2147
+ type org_config_metric_alert = {
2148
+ "key" => String,
2149
+ "name" => String,
2150
+ ?"pluginId" => String | nil,
2151
+ ?"resourceTypeId" => String | nil,
2152
+ ?"tagKey" => String | nil,
2153
+ ?"tagValue" => String | nil,
2154
+ "metricKey" => String,
2155
+ "comparator" => ">" | ">=" | "<" | "<=",
2156
+ "threshold" => Numeric,
2157
+ ?"forMinutes" => Integer,
2158
+ ?"cooldownMinutes" => Integer,
2159
+ ?"enabled" => bool
2160
+ }
2161
+
2162
+ # Spec schema: `OrgConfigPlan`.
2163
+ type org_config_plan = {
2164
+ "mode" => "merge" | "replace",
2165
+ "changes" => Array[org_config_change],
2166
+ "unresolved" => Array[org_config_unresolved],
2167
+ "counts" => { "create" => Integer, "update" => Integer, "delete" => Integer, "unchanged" => Integer }
2168
+ }
2169
+
2170
+ # Spec schema: `OrgConfigProbe`.
2171
+ type org_config_probe = {
2172
+ "key" => String,
2173
+ "name" => String,
2174
+ "url" => String,
2175
+ ?"method" => String,
2176
+ ?"intervalSeconds" => Integer,
2177
+ ?"timeoutMs" => Integer,
2178
+ ?"failureThreshold" => Integer,
2179
+ ?"enabled" => bool
2180
+ }
2181
+
2182
+ # Spec schema: `OrgConfigRequest`.
2183
+ type org_config_request = { "document" => org_config_document, ?"mode" => "merge" | "replace" }
2184
+
2185
+ # Spec schema: `OrgConfigSection`.
2186
+ type org_config_section = "budgets"
2187
+ | "customGraphs"
2188
+ | "workflows"
2189
+ | "dashboards"
2190
+ | "metricAlerts"
2191
+ | "probes"
2192
+ | "costCentres"
2193
+ | "tagPolicy"
2194
+ | "alertSettings"
2195
+
2196
+ # Something the document asked for that this organization could not satisfy —
2197
+ # a pin for a resource nobody has synced, an account name that does not exist
2198
+ # here. Not fatal: the affected card, clause or deletion is dropped and the
2199
+ # rest of the document still applies.
2200
+ #
2201
+ # Spec schema: `OrgConfigUnresolved`.
2202
+ type org_config_unresolved = { "section" => org_config_section, "key" => String, "detail" => String }
2203
+
2204
+ # A workflow. The git-webhook signing secret is deliberately absent — it is
2205
+ # write-only, so a document can neither leak nor set one.
2206
+ #
2207
+ # Spec schema: `OrgConfigWorkflow`.
2208
+ type org_config_workflow = {
2209
+ "key" => String,
2210
+ "name" => String,
2211
+ ?"description" => String | nil,
2212
+ "source" => String,
2213
+ ?"trigger" => org_config_workflow_trigger,
2214
+ ?"metrics" => Array[{ "key" => String, "label" => String, ?"unit" => String | nil, ?"type" => String }],
2215
+ ?"enabled" => bool
2216
+ }
2217
+
2218
+ # Spec schema: `OrgConfigWorkflowTrigger`.
2219
+ type org_config_workflow_trigger = { "kind" => "manual" }
2220
+ | { "kind" => "cron", "expression" => String, ?"timezone" => String }
2221
+ | {
2222
+ "kind" => "git",
2223
+ ?"provider" => String,
2224
+ ?"repo" => String,
2225
+ ?"branch" => String,
2226
+ ?"events" => Array[String],
2227
+ ?"installationId" => Integer
2228
+ }
2229
+ | {
2230
+ "kind" => "budget",
2231
+ "budgetKey" => String,
2232
+ ?"percent" => Numeric,
2233
+ ?"metric" => "actual" | "forecast"
2234
+ }
2235
+
2008
2236
  # Spec schema: `OrgMember`.
2009
2237
  type org_member = {
2010
2238
  "id" => String,
@@ -2215,6 +2443,8 @@ module Infrawrench
2215
2443
  | "freezes:write"
2216
2444
  | "freezes:override"
2217
2445
  | "tag-policy:override"
2446
+ | "config:read"
2447
+ | "config:write"
2218
2448
  | "audit:read"
2219
2449
  | "access:read"
2220
2450
  | "access:request"
@@ -4140,6 +4370,13 @@ module Infrawrench
4140
4370
  def resource: (resource_id: String, ?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> resource_change_list_response
4141
4371
  end
4142
4372
 
4373
+ class ConfigNamespace
4374
+ def initialize: (Transport) -> void
4375
+ def apply: (body: org_config_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_apply_result
4376
+ def export: (?org_id: String?, ?sections: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_document
4377
+ def plan: (body: org_config_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> org_config_plan
4378
+ end
4379
+
4143
4380
  class ConnectNamespace
4144
4381
  def initialize: (Transport) -> void
4145
4382
  def env_deploy: (body: connect_env_deploy_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> ok
@@ -4713,6 +4950,7 @@ module Infrawrench
4713
4950
  attr_reader budgets: BudgetsNamespace
4714
4951
  attr_reader change_freezes: ChangeFreezesNamespace
4715
4952
  attr_reader changes: ChangesNamespace
4953
+ attr_reader config: ConfigNamespace
4716
4954
  attr_reader connect: ConnectNamespace
4717
4955
  attr_reader cost_centres: CostCentresNamespace
4718
4956
  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.2.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-09 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.2.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.2.0).
62
62
  test_files: []