infrawrench-sdk 1.35.0 → 1.37.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: 21301af50899b2c30d5076532d9a6be413e675f4afb0a6a7fe02d3b95ecb5872
4
- data.tar.gz: 1961c2a7ae9ad910d12006e9f3195b1d312ec2d85f842021c615437ad90806b2
3
+ metadata.gz: 0f11289beb11fa6b4a5c0e9c7c4f8f9e419991a78ff4133eae4b42577ccfa327
4
+ data.tar.gz: f71bf753dbbab92d81a6d2404e0c6cd6610782dd2a70fc6f282c911870dd1809
5
5
  SHA512:
6
- metadata.gz: 4cbe76a752bb89558ad82455f76d4a230108c3c66bb6c7b34ae48bfeb5584f62dc9cca931a3a8f20d7445b3803e01fc2c6d93ee0b78488edc19e26a3c91b7f0d
7
- data.tar.gz: c0ba333ab61770f2750a7c87843f4b5a7792f76888456576d1d5e9e92b5f95621009c7fb11a6933d7095de610ab4b13c9254864b9e76cdd0b21f679d5dbb6cf7
6
+ metadata.gz: 3052007764473ba1d6bd04a1dea4691d692a80ee30d44b9d9885436d07f1e18b5dad89e5dd419bef80e6b345fdbf6fda82cc970d431fb9473c3ea1ea94fa8f9e
7
+ data.tar.gz: 6db99b1494f0d66e8b0e3c1dc3bda095d05f77cff10a3ebffa1cdba3c752c50950f6c73357a661d697e8b84f7bfcace74612f8ba4caf494f80fa52199528c745
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.35.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.37.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
- 724 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 734 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.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.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.35.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v1.35.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.37.0)."
21
+ spec.description = "Generated Ruby client for the Infrawrench API (v1.37.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.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -1871,6 +1871,125 @@ module Infrawrench
1871
1871
  end
1872
1872
  end
1873
1873
 
1874
+ # `client.backups.drills`
1875
+ class BackupsDrillsNamespace
1876
+ # @api private
1877
+ # @param transport [Transport]
1878
+ def initialize(transport)
1879
+ @transport = transport
1880
+ end
1881
+
1882
+ # Record a restore drill
1883
+ #
1884
+ # A `verified` drill **must** carry the measured time: an RPO comes from the
1885
+ # backup, and an RTO can only come from somebody with a stopwatch — that
1886
+ # number is the entire point of the exercise. A `blocked` drill must not
1887
+ # carry one, because it never started.
1888
+ #
1889
+ # Takes `resources:write`, not a settings permission: recording a drill is
1890
+ # reporting what you did, and the person who spent Saturday restoring a
1891
+ # database is rarely the person who set the recovery objective.
1892
+ #
1893
+ # POST /api/org/{orgId}/backups/drills
1894
+ #
1895
+ # Raises on 400: Bad request
1896
+ #
1897
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1898
+ # constructed with.
1899
+ # @param body [Hash, nil] Request body, shaped as `RestoreDrillCreate`.
1900
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1901
+ # @return [Hash] Parsed JSON, shaped as `RestoreDrill` — see `sig/infrawrench/sdk.rbs`.
1902
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1903
+ def create(org_id: nil, body: nil, request_options: nil)
1904
+ @transport.request(
1905
+ http_method: "POST",
1906
+ path: "/api/org/{orgId}/backups/drills",
1907
+ path_params: { "orgId" => org_id },
1908
+ body: body,
1909
+ request_options: request_options
1910
+ )
1911
+ end
1912
+
1913
+ # Delete a recorded drill
1914
+ #
1915
+ # For one recorded against the wrong resource or the wrong date. Audited —
1916
+ # deleting evidence that a restore failed is exactly the edit a reviewer
1917
+ # would want to know about.
1918
+ #
1919
+ # DELETE /api/org/{orgId}/backups/drills/{drillId}
1920
+ #
1921
+ # Raises on 404: Not found
1922
+ #
1923
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1924
+ # constructed with.
1925
+ # @param drill_id [String]
1926
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1927
+ # @return [nil] This endpoint returns no content.
1928
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1929
+ def delete(drill_id:, org_id: nil, request_options: nil)
1930
+ @transport.request(
1931
+ http_method: "DELETE",
1932
+ path: "/api/org/{orgId}/backups/drills/{drillId}",
1933
+ path_params: { "orgId" => org_id, "drillId" => drill_id },
1934
+ accept: :empty,
1935
+ request_options: request_options
1936
+ )
1937
+ end
1938
+
1939
+ # Where every protected resource stands on restore
1940
+ #
1941
+ # Backup coverage answers 'is there a backup'. This answers 'does it
1942
+ # restore, and how long does it take' — a different question, and the one
1943
+ # routinely answered wrongly on the day.
1944
+ #
1945
+ # A drill is a **record that somebody tried**, not an automated restore:
1946
+ # restoring a customer's database unattended costs real money, can collide
1947
+ # with production, and cannot be generically verified. What the product can
1948
+ # do is make the exercise scheduled, recorded and visible when it lapses.
1949
+ #
1950
+ # GET /api/org/{orgId}/backups/drills
1951
+ #
1952
+ # Raises on 400: Bad request
1953
+ #
1954
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1955
+ # constructed with.
1956
+ # @param valid_days [Integer, nil] How long a verified drill counts for. Defaults to 180
1957
+ # days.
1958
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1959
+ # @return [Hash] Parsed JSON, shaped as `DrillCoverageResponse` — see
1960
+ # `sig/infrawrench/sdk.rbs`.
1961
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1962
+ def get(org_id: nil, valid_days: nil, request_options: nil)
1963
+ @transport.request(
1964
+ http_method: "GET",
1965
+ path: "/api/org/{orgId}/backups/drills",
1966
+ path_params: { "orgId" => org_id },
1967
+ query: { "validDays" => valid_days },
1968
+ request_options: request_options
1969
+ )
1970
+ end
1971
+
1972
+ # List recorded restore drills
1973
+ #
1974
+ # GET /api/org/{orgId}/backups/drills/log
1975
+ #
1976
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1977
+ # constructed with.
1978
+ # @param resource_id [String, nil]
1979
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1980
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1981
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1982
+ def log(org_id: nil, resource_id: nil, request_options: nil)
1983
+ @transport.request(
1984
+ http_method: "GET",
1985
+ path: "/api/org/{orgId}/backups/drills/log",
1986
+ path_params: { "orgId" => org_id },
1987
+ query: { "resourceId" => resource_id },
1988
+ request_options: request_options
1989
+ )
1990
+ end
1991
+ end
1992
+
1874
1993
  # `client.backups.policies`
1875
1994
  class BackupsPoliciesNamespace
1876
1995
  # @api private
@@ -1988,6 +2107,8 @@ module Infrawrench
1988
2107
 
1989
2108
  # `client.backups`
1990
2109
  class BackupsNamespace
2110
+ # @return [BackupsDrillsNamespace] `client.backups.drills`
2111
+ attr_reader :drills
1991
2112
  # @return [BackupsPoliciesNamespace] `client.backups.policies`
1992
2113
  attr_reader :policies
1993
2114
 
@@ -1995,6 +2116,7 @@ module Infrawrench
1995
2116
  # @param transport [Transport]
1996
2117
  def initialize(transport)
1997
2118
  @transport = transport
2119
+ @drills = BackupsDrillsNamespace.new(@transport)
1998
2120
  @policies = BackupsPoliciesNamespace.new(@transport)
1999
2121
  end
2000
2122
 
@@ -11791,6 +11913,189 @@ module Infrawrench
11791
11913
  end
11792
11914
  end
11793
11915
 
11916
+ # `client.query_monitors.get`
11917
+ class QueryMonitorsGetNamespace
11918
+ # @api private
11919
+ # @param transport [Transport]
11920
+ def initialize(transport)
11921
+ @transport = transport
11922
+ end
11923
+
11924
+ # List query monitors
11925
+ #
11926
+ # GET /api/org/{orgId}/query-monitors
11927
+ #
11928
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11929
+ # constructed with.
11930
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11931
+ # @return [Hash] Parsed JSON, shaped as `QueryMonitorList` — see `sig/infrawrench/sdk.rbs`.
11932
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11933
+ def get(org_id: nil, request_options: nil)
11934
+ @transport.request(
11935
+ http_method: "GET",
11936
+ path: "/api/org/{orgId}/query-monitors",
11937
+ path_params: { "orgId" => org_id },
11938
+ request_options: request_options
11939
+ )
11940
+ end
11941
+
11942
+ # Get one query monitor
11943
+ #
11944
+ # GET /api/org/{orgId}/query-monitors/{monitorId}
11945
+ #
11946
+ # Raises on 404: Not found
11947
+ #
11948
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11949
+ # constructed with.
11950
+ # @param monitor_id [String]
11951
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
11952
+ # @return [Hash] Parsed JSON, shaped as `QueryMonitor` — see `sig/infrawrench/sdk.rbs`.
11953
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
11954
+ def get_org_org_id_query_monitors_monitor_id(monitor_id:, org_id: nil, request_options: nil)
11955
+ @transport.request(
11956
+ http_method: "GET",
11957
+ path: "/api/org/{orgId}/query-monitors/{monitorId}",
11958
+ path_params: { "orgId" => org_id, "monitorId" => monitor_id },
11959
+ request_options: request_options
11960
+ )
11961
+ end
11962
+ end
11963
+
11964
+ # `client.query_monitors`
11965
+ class QueryMonitorsNamespace
11966
+ # @return [QueryMonitorsGetNamespace] `client.query_monitors.get`
11967
+ attr_reader :get
11968
+
11969
+ # @api private
11970
+ # @param transport [Transport]
11971
+ def initialize(transport)
11972
+ @transport = transport
11973
+ @get = QueryMonitorsGetNamespace.new(@transport)
11974
+ end
11975
+
11976
+ # Create a query monitor
11977
+ #
11978
+ # A monitor may only run `select`, `with`, `show` or `explain`, and only a
11979
+ # **single** statement. That is a deliberate allowlist of leading keywords
11980
+ # rather than a denylist of dangerous ones: a denylist has to be right about
11981
+ # every dialect's spelling of every destructive verb, forever, and only has
11982
+ # to be wrong once. Comments are stripped before the check, so `--
11983
+ # harmless\nDROP TABLE x` is rejected, and `SELECT 1; DROP TABLE x` is
11984
+ # rejected by the single-statement rule.
11985
+ #
11986
+ # Takes `resources:execute`, like the SQL editor: saving a monitor arranges
11987
+ # for a query to run against a customer database on a schedule, forever,
11988
+ # which is a strictly larger act than running one while watching it.
11989
+ #
11990
+ # POST /api/org/{orgId}/query-monitors
11991
+ #
11992
+ # Raises on 400: Bad request
11993
+ #
11994
+ # Raises on 404: Not found
11995
+ #
11996
+ # Raises on 409: Conflict
11997
+ #
11998
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
11999
+ # constructed with.
12000
+ # @param body [Hash, nil] Request body, shaped as `QueryMonitorCreate`.
12001
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12002
+ # @return [Hash] Parsed JSON, shaped as `QueryMonitor` — see `sig/infrawrench/sdk.rbs`.
12003
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12004
+ def create(org_id: nil, body: nil, request_options: nil)
12005
+ @transport.request(
12006
+ http_method: "POST",
12007
+ path: "/api/org/{orgId}/query-monitors",
12008
+ path_params: { "orgId" => org_id },
12009
+ body: body,
12010
+ request_options: request_options
12011
+ )
12012
+ end
12013
+
12014
+ # Delete a query monitor
12015
+ #
12016
+ # DELETE /api/org/{orgId}/query-monitors/{monitorId}
12017
+ #
12018
+ # Raises on 404: Not found
12019
+ #
12020
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12021
+ # constructed with.
12022
+ # @param monitor_id [String]
12023
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12024
+ # @return [nil] This endpoint returns no content.
12025
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12026
+ def delete(monitor_id:, org_id: nil, request_options: nil)
12027
+ @transport.request(
12028
+ http_method: "DELETE",
12029
+ path: "/api/org/{orgId}/query-monitors/{monitorId}",
12030
+ path_params: { "orgId" => org_id, "monitorId" => monitor_id },
12031
+ accept: :empty,
12032
+ request_options: request_options
12033
+ )
12034
+ end
12035
+
12036
+ # Run a query once without saving it
12037
+ #
12038
+ # The editor's 'try it' button. Goes through the same read-only guard as a
12039
+ # scheduled run — a query that could not be saved as a monitor must not be
12040
+ # runnable through the monitor's own preview — and applies the threshold, so
12041
+ # the answer says whether it *would* be breaching rather than leaving the
12042
+ # reader to compare two numbers.
12043
+ #
12044
+ # POST /api/org/{orgId}/query-monitors/test
12045
+ #
12046
+ # Raises on 400: Bad request
12047
+ #
12048
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12049
+ # constructed with.
12050
+ # @param body [Hash, nil] Request body, shaped as `QueryMonitorCreate`.
12051
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12052
+ # @return [Hash] Parsed JSON, shaped as `QueryMonitorTestResult` — see
12053
+ # `sig/infrawrench/sdk.rbs`.
12054
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12055
+ def test(org_id: nil, body: nil, request_options: nil)
12056
+ @transport.request(
12057
+ http_method: "POST",
12058
+ path: "/api/org/{orgId}/query-monitors/test",
12059
+ path_params: { "orgId" => org_id },
12060
+ body: body,
12061
+ request_options: request_options
12062
+ )
12063
+ end
12064
+
12065
+ # Edit a query monitor
12066
+ #
12067
+ # Omitted fields are left alone and the result is validated after merging.
12068
+ # Changing the query, the mode, the operator or the threshold **re-arms**
12069
+ # the monitor: the stored breach streak was accumulated against a different
12070
+ # question, and carrying it forward would fire an alert on the first run of
12071
+ # a rule nobody has tested.
12072
+ #
12073
+ # PATCH /api/org/{orgId}/query-monitors/{monitorId}
12074
+ #
12075
+ # Raises on 400: Bad request
12076
+ #
12077
+ # Raises on 404: Not found
12078
+ #
12079
+ # Raises on 409: Conflict
12080
+ #
12081
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
12082
+ # constructed with.
12083
+ # @param monitor_id [String]
12084
+ # @param body [Hash, nil] Request body, shaped as `QueryMonitorUpdate`.
12085
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
12086
+ # @return [Hash] Parsed JSON, shaped as `QueryMonitor` — see `sig/infrawrench/sdk.rbs`.
12087
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
12088
+ def update(monitor_id:, org_id: nil, body: nil, request_options: nil)
12089
+ @transport.request(
12090
+ http_method: "PATCH",
12091
+ path: "/api/org/{orgId}/query-monitors/{monitorId}",
12092
+ path_params: { "orgId" => org_id, "monitorId" => monitor_id },
12093
+ body: body,
12094
+ request_options: request_options
12095
+ )
12096
+ end
12097
+ end
12098
+
11794
12099
  # `client.quotas.settings`
11795
12100
  class QuotasSettingsNamespace
11796
12101
  # @api private
@@ -15910,10 +16215,10 @@ module Infrawrench
15910
16215
  # no trend and no breakdown — those belong on the page you open when you do
15911
16216
  # walk over.
15912
16217
  #
15913
- # Three sources — declared incidents, synthetic probes and account sync
15914
- # health — each guarded independently, because a television that goes blank
15915
- # because one query threw is showing nothing to a room that was relying on
15916
- # it.
16218
+ # Four sources — declared incidents, synthetic probes, query monitors and
16219
+ # account sync health — each guarded independently, because a television
16220
+ # that goes blank because one query threw is showing nothing to a room that
16221
+ # was relying on it.
15917
16222
  #
15918
16223
  # Session-authenticated on purpose: unlike the calendar feed or a public
15919
16224
  # status page, this carries incident titles, probe names and account names,
@@ -16539,6 +16844,8 @@ module Infrawrench
16539
16844
  attr_reader :probes
16540
16845
  # @return [ProfileNamespace] `client.profile`
16541
16846
  attr_reader :profile
16847
+ # @return [QueryMonitorsNamespace] `client.query_monitors`
16848
+ attr_reader :query_monitors
16542
16849
  # @return [QuotasNamespace] `client.quotas`
16543
16850
  attr_reader :quotas
16544
16851
  # @return [ResourcesNamespace] `client.resources`
@@ -16666,6 +16973,7 @@ module Infrawrench
16666
16973
  @posture = PostureNamespace.new(@transport)
16667
16974
  @probes = ProbesNamespace.new(@transport)
16668
16975
  @profile = ProfileNamespace.new(@transport)
16976
+ @query_monitors = QueryMonitorsNamespace.new(@transport)
16669
16977
  @quotas = QuotasNamespace.new(@transport)
16670
16978
  @resources = ResourcesNamespace.new(@transport)
16671
16979
  @rightsizing = RightsizingNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.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.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.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.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.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.35.0"
18
+ VERSION = "1.37.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v1.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.37.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.35.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.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.35.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.37.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.35.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.37.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -2855,6 +2855,41 @@ module Infrawrench
2855
2855
  ?"accountIds" => Array[String]
2856
2856
  }
2857
2857
 
2858
+ # Spec schema: `DrillCoverageResponse`.
2859
+ type drill_coverage_response = {
2860
+ "rows" => Array[drill_coverage_row],
2861
+ "summary" => drill_summary,
2862
+ "validDays" => Integer,
2863
+ "orphanedDrills" => Array[restore_drill],
2864
+ "generatedAt" => String
2865
+ }
2866
+
2867
+ # Spec schema: `DrillCoverageRow`.
2868
+ type drill_coverage_row = {
2869
+ "resourceId" => String,
2870
+ "resourceName" => String | nil,
2871
+ "accountId" => String | nil,
2872
+ "accountName" => String | nil,
2873
+ "resourceTypeId" => String | nil,
2874
+ "standing" => "verified" | "stale" | "failed" | "never",
2875
+ "lastDrillAt" => String | nil,
2876
+ "lastOutcome" => "verified" | "restored-unverified" | "failed" | "blocked" | nil,
2877
+ "lastVerifiedAt" => String | nil,
2878
+ "verifiedRtoMinutes" => Integer | nil,
2879
+ "daysUntilStale" => Integer | nil
2880
+ }
2881
+
2882
+ # Spec schema: `DrillSummary`.
2883
+ type drill_summary = {
2884
+ "eligibleCount" => Integer,
2885
+ "verifiedCount" => Integer,
2886
+ "staleCount" => Integer,
2887
+ "failedCount" => Integer,
2888
+ "neverCount" => Integer,
2889
+ "worstRtoMinutes" => Integer | nil,
2890
+ "medianRtoMinutes" => Integer | nil
2891
+ }
2892
+
2858
2893
  # Spec schema: `EditableField`.
2859
2894
  type editable_field = {
2860
2895
  "key" => String,
@@ -5272,6 +5307,78 @@ module Infrawrench
5272
5307
  ?"accountId" => String
5273
5308
  }
5274
5309
 
5310
+ # Spec schema: `QueryMonitor`.
5311
+ type query_monitor = {
5312
+ "id" => String,
5313
+ "name" => String,
5314
+ "description" => String | nil,
5315
+ "accountId" => String,
5316
+ "accountName" => String | nil,
5317
+ "resourceId" => String | nil,
5318
+ "resourceTypeId" => String | nil,
5319
+ "resourceName" => String | nil,
5320
+ "sql" => String,
5321
+ "mode" => "scalar" | "rowCount",
5322
+ "operator" => "gt" | "gte" | "lt" | "lte" | "eq" | "neq",
5323
+ "threshold" => Numeric,
5324
+ "intervalMinutes" => Integer,
5325
+ "consecutiveBreaches" => Integer,
5326
+ "enabled" => bool,
5327
+ "state" => "ok" | "breaching" | "unknown",
5328
+ "lastValue" => Numeric | nil,
5329
+ "lastRunAt" => String | nil,
5330
+ "lastError" => String | nil,
5331
+ "breachStreak" => Integer,
5332
+ "lastAlertedAt" => String | nil,
5333
+ "createdByUserId" => String | nil,
5334
+ "createdAt" => String,
5335
+ "updatedAt" => String
5336
+ }
5337
+
5338
+ # Spec schema: `QueryMonitorCreate`.
5339
+ type query_monitor_create = {
5340
+ "name" => String,
5341
+ ?"description" => String | nil,
5342
+ "accountId" => String,
5343
+ ?"resourceId" => String | nil,
5344
+ ?"resourceTypeId" => String | nil,
5345
+ "sql" => String,
5346
+ "mode" => "scalar" | "rowCount",
5347
+ "operator" => "gt" | "gte" | "lt" | "lte" | "eq" | "neq",
5348
+ "threshold" => Numeric,
5349
+ "intervalMinutes" => Integer,
5350
+ ?"consecutiveBreaches" => Integer,
5351
+ ?"enabled" => bool
5352
+ }
5353
+
5354
+ # Spec schema: `QueryMonitorList`.
5355
+ type query_monitor_list = { "monitors" => Array[query_monitor] }
5356
+
5357
+ # Spec schema: `QueryMonitorTestResult`.
5358
+ type query_monitor_test_result = {
5359
+ "value" => Numeric | nil,
5360
+ "state" => "ok" | "breaching" | "unknown",
5361
+ "error" => String | nil,
5362
+ "durationMs" => Integer,
5363
+ "rows" => Array[Hash[String, untyped]]
5364
+ }
5365
+
5366
+ # Spec schema: `QueryMonitorUpdate`.
5367
+ type query_monitor_update = {
5368
+ ?"name" => String,
5369
+ ?"description" => String | nil,
5370
+ ?"accountId" => String,
5371
+ ?"resourceId" => String | nil,
5372
+ ?"resourceTypeId" => String | nil,
5373
+ ?"sql" => String,
5374
+ ?"mode" => "scalar" | "rowCount",
5375
+ ?"operator" => "gt" | "gte" | "lt" | "lte" | "eq" | "neq",
5376
+ ?"threshold" => Numeric,
5377
+ ?"intervalMinutes" => Integer,
5378
+ ?"consecutiveBreaches" => Integer,
5379
+ ?"enabled" => bool
5380
+ }
5381
+
5275
5382
  # A recurring local-time window during which the rule holds its alerts. Held,
5276
5383
  # not dropped — a held alert is queued and delivered when the window closes.
5277
5384
  #
@@ -6004,6 +6111,33 @@ module Infrawrench
6004
6111
  ?"schedulable" => bool
6005
6112
  }
6006
6113
 
6114
+ # Spec schema: `RestoreDrill`.
6115
+ type restore_drill = {
6116
+ "id" => String,
6117
+ "resourceId" => String,
6118
+ "resourceName" => String | nil,
6119
+ "accountId" => String | nil,
6120
+ "accountName" => String | nil,
6121
+ "performedAt" => String,
6122
+ "outcome" => "verified" | "restored-unverified" | "failed" | "blocked",
6123
+ "rtoMinutes" => Integer | nil,
6124
+ "restoredFrom" => String | nil,
6125
+ "notes" => String | nil,
6126
+ "performedByUserId" => String | nil,
6127
+ "performedByName" => String | nil,
6128
+ "createdAt" => String
6129
+ }
6130
+
6131
+ # Spec schema: `RestoreDrillCreate`.
6132
+ type restore_drill_create = {
6133
+ "resourceId" => String,
6134
+ "performedAt" => String,
6135
+ "outcome" => "verified" | "restored-unverified" | "failed" | "blocked",
6136
+ ?"rtoMinutes" => Integer | nil,
6137
+ ?"restoredFrom" => String | nil,
6138
+ ?"notes" => String | nil
6139
+ }
6140
+
6007
6141
  # Spec schema: `RevertApplyResponse`.
6008
6142
  type revert_apply_response = {
6009
6143
  "changeId" => String,
@@ -6949,6 +7083,7 @@ module Infrawrench
6949
7083
  | "wallboard"
6950
7084
  | "calendar"
6951
7085
  | "runbooks"
7086
+ | "query-monitors"
6952
7087
  | "dns"
6953
7088
  | "iac"
6954
7089
  | "environment-diff"
@@ -7411,6 +7546,14 @@ module Infrawrench
7411
7546
  def orgs: (?request_options: Hash[Symbol, untyped]?) -> Array[org_membership]
7412
7547
  end
7413
7548
 
7549
+ class BackupsDrillsNamespace
7550
+ def initialize: (Transport) -> void
7551
+ def create: (?org_id: String?, ?body: restore_drill_create?, ?request_options: Hash[Symbol, untyped]?) -> restore_drill
7552
+ def delete: (drill_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
7553
+ def get: (?org_id: String?, ?valid_days: Integer?, ?request_options: Hash[Symbol, untyped]?) -> drill_coverage_response
7554
+ def log: (?org_id: String?, ?resource_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "drills" => Array[restore_drill] }
7555
+ end
7556
+
7414
7557
  class BackupsPoliciesNamespace
7415
7558
  def initialize: (Transport) -> void
7416
7559
  def create: (?org_id: String?, ?body: backup_policy_create?, ?request_options: Hash[Symbol, untyped]?) -> backup_policy
@@ -7420,6 +7563,7 @@ module Infrawrench
7420
7563
  end
7421
7564
 
7422
7565
  class BackupsNamespace
7566
+ attr_reader drills: BackupsDrillsNamespace
7423
7567
  attr_reader policies: BackupsPoliciesNamespace
7424
7568
  def initialize: (Transport) -> void
7425
7569
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> backup_coverage_response
@@ -8166,6 +8310,21 @@ module Infrawrench
8166
8310
  def update: (?body: { ?"firstName" => String, ?"lastName" => String }?, ?request_options: Hash[Symbol, untyped]?) -> profile_summary
8167
8311
  end
8168
8312
 
8313
+ class QueryMonitorsGetNamespace
8314
+ def initialize: (Transport) -> void
8315
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> query_monitor_list
8316
+ def get_org_org_id_query_monitors_monitor_id: (monitor_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> query_monitor
8317
+ end
8318
+
8319
+ class QueryMonitorsNamespace
8320
+ attr_reader get: QueryMonitorsGetNamespace
8321
+ def initialize: (Transport) -> void
8322
+ def create: (?org_id: String?, ?body: query_monitor_create?, ?request_options: Hash[Symbol, untyped]?) -> query_monitor
8323
+ def delete: (monitor_id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> nil
8324
+ def test: (?org_id: String?, ?body: query_monitor_create?, ?request_options: Hash[Symbol, untyped]?) -> query_monitor_test_result
8325
+ def update: (monitor_id: String, ?org_id: String?, ?body: query_monitor_update?, ?request_options: Hash[Symbol, untyped]?) -> query_monitor
8326
+ end
8327
+
8169
8328
  class QuotasSettingsNamespace
8170
8329
  def initialize: (Transport) -> void
8171
8330
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> quota_alert_settings
@@ -8575,6 +8734,7 @@ module Infrawrench
8575
8734
  attr_reader posture: PostureNamespace
8576
8735
  attr_reader probes: ProbesNamespace
8577
8736
  attr_reader profile: ProfileNamespace
8737
+ attr_reader query_monitors: QueryMonitorsNamespace
8578
8738
  attr_reader quotas: QuotasNamespace
8579
8739
  attr_reader resources: ResourcesNamespace
8580
8740
  attr_reader rightsizing: RightsizingNamespace
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.35.0
4
+ version: 1.37.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-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v1.35.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.37.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.35.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.37.0).
62
62
  test_files: []