infrawrench-sdk 0.44.0 → 1.1.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: 8f5dfafa6b96212083edc49351fd3ca496d1a818f8b5f2fd0e216f5976eb5ba9
4
- data.tar.gz: 385ece28397adb31bb938363fd233189b00a403920d88a6a7cdc58ffc9bbbae4
3
+ metadata.gz: b139d5dedc215d6acda15293d9e7e7680368622ca2ec6eb9214f525965eac59c
4
+ data.tar.gz: 3318c1b9597fdcfbaf0b20db678894475c4ce6410775dc6ebf84cac42cf35844
5
5
  SHA512:
6
- metadata.gz: a4b4548e3d276d10f97a7eadc8207740be2074ca395ed9e353c59d624d6cbd07e3867b44907223986626dd7e97ec9bb57afd39a65332c16f1eae88729d5de69f
7
- data.tar.gz: a887d736ae783d6b565190c6b910f373baaf8f34c0a47a459c2b616cd9798862e5d355de4218701f5314492c75d54f17706709ddbdfc455be6034c51201ba182
6
+ metadata.gz: cbb962bad4e5a7296e2727918d559b22a70ac2bdec5d94726fbaec8207972a563ec134307510943065baf3f5e526178a0fa475c99978ac23c53a60e2f46a6d56
7
+ data.tar.gz: 261dbe50ecf45be5b3aff912293f2662774ded53666d150ec5e350e54695903fec2f95087e4e86af3ca515bcd5ad9f84e0ef970f82bf1cfa8f15185d2673d02e
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # infrawrench-sdk
2
2
 
3
- Generated Ruby client for the Infrawrench API (API version `0.44.0`).
3
+ Generated Ruby client for the Infrawrench API (API version `1.1.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
- 399 schemas, as RBS type aliases that steep and TypeProf can read.
44
+ 417 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 v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.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 (v0.44.0)."
21
- spec.description = "Generated Ruby client for the Infrawrench API (v0.44.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.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."
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 v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.0).
7
7
  #
8
8
  # DO NOT EDIT. Regenerate with:
9
9
  # pnpm --filter @infrawrench/web generate:sdk
@@ -882,6 +882,185 @@ module Infrawrench
882
882
  end
883
883
  end
884
884
 
885
+ # `client.alert_rules.deliveries`
886
+ class AlertRulesDeliveriesNamespace
887
+ # @api private
888
+ # @param transport [Transport]
889
+ def initialize(transport)
890
+ @transport = transport
891
+ end
892
+
893
+ # Acknowledge an alert, cancelling its escalation
894
+ #
895
+ # A conditional update: only a delivery still in `awaiting_ack` can move, so
896
+ # two people pressing at once produce one acknowledgement and an alert that
897
+ # already escalated cannot be retroactively silenced.
898
+ #
899
+ # POST /api/org/{orgId}/alert-rules/deliveries/{id}/ack
900
+ #
901
+ # Raises on 401: Unauthenticated
902
+ #
903
+ # Raises on 403: Forbidden
904
+ #
905
+ # Raises on 404: Not found
906
+ #
907
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
908
+ # constructed with.
909
+ # @param id [String]
910
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
911
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
912
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
913
+ def ack(id:, org_id: nil, request_options: nil)
914
+ @transport.request(
915
+ http_method: "POST",
916
+ path: "/api/org/{orgId}/alert-rules/deliveries/{id}/ack",
917
+ path_params: { "orgId" => org_id, "id" => id },
918
+ request_options: request_options
919
+ )
920
+ end
921
+
922
+ # Drop held or awaiting-acknowledgement deliveries
923
+ #
924
+ # POST /api/org/{orgId}/alert-rules/deliveries/cancel
925
+ #
926
+ # Raises on 400: Bad request
927
+ #
928
+ # Raises on 403: Forbidden
929
+ #
930
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
931
+ # constructed with.
932
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
933
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
934
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
935
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
936
+ def cancel(org_id: nil, body: nil, request_options: nil)
937
+ @transport.request(
938
+ http_method: "POST",
939
+ path: "/api/org/{orgId}/alert-rules/deliveries/cancel",
940
+ path_params: { "orgId" => org_id },
941
+ body: body,
942
+ request_options: request_options
943
+ )
944
+ end
945
+
946
+ # List recent held and escalating alerts
947
+ #
948
+ # Only alerts a rule created follow-up work for appear here: one held by
949
+ # quiet hours, or one waiting on an acknowledgement. An alert that went
950
+ # straight out leaves no row.
951
+ #
952
+ # GET /api/org/{orgId}/alert-rules/deliveries
953
+ #
954
+ # Raises on 403: Forbidden
955
+ #
956
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
957
+ # constructed with.
958
+ # @param limit [Integer, nil]
959
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
960
+ # @return [Array<Hash>] Parsed JSON, shaped as `Array<AlertDelivery>` — see
961
+ # `sig/infrawrench/sdk.rbs`.
962
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
963
+ def list(org_id: nil, limit: nil, request_options: nil)
964
+ @transport.request(
965
+ http_method: "GET",
966
+ path: "/api/org/{orgId}/alert-rules/deliveries",
967
+ path_params: { "orgId" => org_id },
968
+ query: { "limit" => limit },
969
+ request_options: request_options
970
+ )
971
+ end
972
+ end
973
+
974
+ # `client.alert_rules`
975
+ class AlertRulesNamespace
976
+ # @return [AlertRulesDeliveriesNamespace] `client.alert_rules.deliveries`
977
+ attr_reader :deliveries
978
+
979
+ # @api private
980
+ # @param transport [Transport]
981
+ def initialize(transport)
982
+ @transport = transport
983
+ @deliveries = AlertRulesDeliveriesNamespace.new(@transport)
984
+ end
985
+
986
+ # Persist the default rule so it can be edited
987
+ #
988
+ # A no-op when the organization already has rules.
989
+ #
990
+ # POST /api/org/{orgId}/alert-rules/adopt-defaults
991
+ #
992
+ # Raises on 403: Forbidden
993
+ #
994
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
995
+ # constructed with.
996
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
997
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
998
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
999
+ def adopt_defaults(org_id: nil, request_options: nil)
1000
+ @transport.request(
1001
+ http_method: "POST",
1002
+ path: "/api/org/{orgId}/alert-rules/adopt-defaults",
1003
+ path_params: { "orgId" => org_id },
1004
+ request_options: request_options
1005
+ )
1006
+ end
1007
+
1008
+ # Get the organization's alert routing rules
1009
+ #
1010
+ # Returns the rules in evaluation order, plus the channels and accounts a
1011
+ # rule can name so a client can render destinations by name. An organization
1012
+ # that has saved no rules gets the synthesized default with `usingDefaults:
1013
+ # true`.
1014
+ #
1015
+ # GET /api/org/{orgId}/alert-rules
1016
+ #
1017
+ # Raises on 403: Forbidden
1018
+ #
1019
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1020
+ # constructed with.
1021
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1022
+ # @return [Hash] Parsed JSON, shaped as `AlertRulesResponse` — see
1023
+ # `sig/infrawrench/sdk.rbs`.
1024
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1025
+ def get(org_id: nil, request_options: nil)
1026
+ @transport.request(
1027
+ http_method: "GET",
1028
+ path: "/api/org/{orgId}/alert-rules",
1029
+ path_params: { "orgId" => org_id },
1030
+ request_options: request_options
1031
+ )
1032
+ end
1033
+
1034
+ # Replace the organization's alert routing rules
1035
+ #
1036
+ # Whole-list replacement in one transaction. Order is part of the meaning —
1037
+ # a rule is only correct relative to the ones above it — so a reorder
1038
+ # applied as several requests would leave a window in which alerts route
1039
+ # somewhere nobody asked for. Positions are re-derived from array order.
1040
+ #
1041
+ # PUT /api/org/{orgId}/alert-rules
1042
+ #
1043
+ # Raises on 400: Bad request
1044
+ #
1045
+ # Raises on 403: Forbidden
1046
+ #
1047
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
1048
+ # constructed with.
1049
+ # @param body [Hash, nil] Request body, shaped as `Hash`.
1050
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
1051
+ # @return [Hash] Parsed JSON, shaped as `Hash` — see `sig/infrawrench/sdk.rbs`.
1052
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
1053
+ def update(org_id: nil, body: nil, request_options: nil)
1054
+ @transport.request(
1055
+ http_method: "PUT",
1056
+ path: "/api/org/{orgId}/alert-rules",
1057
+ path_params: { "orgId" => org_id },
1058
+ body: body,
1059
+ request_options: request_options
1060
+ )
1061
+ end
1062
+ end
1063
+
885
1064
  # `client.api_keys`
886
1065
  class ApiKeysNamespace
887
1066
  # @api private
@@ -3884,6 +4063,74 @@ module Infrawrench
3884
4063
  end
3885
4064
  end
3886
4065
 
4066
+ # `client.environment_diff`
4067
+ class EnvironmentDiffNamespace
4068
+ # @api private
4069
+ # @param transport [Transport]
4070
+ def initialize(transport)
4071
+ @transport = transport
4072
+ end
4073
+
4074
+ # Compare two accounts' resource inventories
4075
+ #
4076
+ # Compares two accounts of the same provider — typically staging against
4077
+ # production — over already-synced state: which resource types exist in one
4078
+ # and not the other, the per-type count deltas, and the fields on which two
4079
+ # corresponding resources disagree (instance class, engine version, feature
4080
+ # flags).
4081
+ #
4082
+ # Resources are paired by resource type plus name with environment words
4083
+ # removed, so `api-staging` lines up with `api-prod` without any naming
4084
+ # convention to configure. By default the comparison hides divergences that
4085
+ # are artefacts of being two different resources — ids, links, network
4086
+ # addresses and timestamps — because every resource has different ones; pass
4087
+ # `includeIdentityFields=true` to see them.
4088
+ #
4089
+ # Read-only and cheap: no provider API calls are made, so results reflect
4090
+ # the last sync.
4091
+ #
4092
+ # _Requires permission: `resources:read`._
4093
+ #
4094
+ # GET /api/org/{orgId}/environment-diff
4095
+ #
4096
+ # Raises on 400: Bad request
4097
+ #
4098
+ # Raises on 404: Not found
4099
+ #
4100
+ # @param org_id [String, nil] Organization id. Defaults to the `org_id` the client was
4101
+ # constructed with.
4102
+ # @param a [String] Baseline account id — by convention the environment that works.
4103
+ # @param b [String] Compared account id. Must differ from `a` and use the same provider.
4104
+ # @param resource_type_id [String, nil] Compare one resource type only.
4105
+ # @param include_identity_fields [String, nil] Compare identity and timestamp fields too,
4106
+ # instead of filtering them out.
4107
+ # @param request_options [Hash, nil] Per-call `:headers`, `:timeout` and `:open_timeout`.
4108
+ # @return [Hash] Parsed JSON, shaped as `EnvironmentDiffResponse` — see
4109
+ # `sig/infrawrench/sdk.rbs`.
4110
+ # @raise [Infrawrench::ApiError] On any non-2xx response.
4111
+ def get(
4112
+ a:,
4113
+ b:,
4114
+ org_id: nil,
4115
+ resource_type_id: nil,
4116
+ include_identity_fields: nil,
4117
+ request_options: nil
4118
+ )
4119
+ @transport.request(
4120
+ http_method: "GET",
4121
+ path: "/api/org/{orgId}/environment-diff",
4122
+ path_params: { "orgId" => org_id },
4123
+ query: {
4124
+ "a" => a,
4125
+ "b" => b,
4126
+ "resourceTypeId" => resource_type_id,
4127
+ "includeIdentityFields" => include_identity_fields
4128
+ },
4129
+ request_options: request_options
4130
+ )
4131
+ end
4132
+ end
4133
+
3887
4134
  # `client.expiring.settings`
3888
4135
  class ExpiringSettingsNamespace
3889
4136
  # @api private
@@ -4708,10 +4955,11 @@ module Infrawrench
4708
4955
  @transport = transport
4709
4956
  end
4710
4957
 
4711
- # Route alerts to a Teams channel
4958
+ # Connect a Teams channel as an alert destination
4712
4959
  #
4713
4960
  # Adds a channel by webhook URL, or updates the one already holding that
4714
- # URL. Each trigger defaults to enabled. Responds 400 when the URL is not
4961
+ # URL. Which alerts reach it is decided by /alert-rules connecting a
4962
+ # channel routes nothing to it on its own. Responds 400 when the URL is not
4715
4963
  # https or its host is not Microsoft-operated.
4716
4964
  #
4717
4965
  # POST /api/org/{orgId}/msteams/webhooks
@@ -4734,7 +4982,7 @@ module Infrawrench
4734
4982
  )
4735
4983
  end
4736
4984
 
4737
- # Stop routing alerts to a Teams channel
4985
+ # Disconnect a Teams channel
4738
4986
  #
4739
4987
  # DELETE /api/org/{orgId}/msteams/webhooks/{id}
4740
4988
  #
@@ -4755,7 +5003,7 @@ module Infrawrench
4755
5003
  )
4756
5004
  end
4757
5005
 
4758
- # Rename a Teams channel or change which alerts it receives
5006
+ # Rename a Teams channel
4759
5007
  #
4760
5008
  # The webhook URL is immutable — remove the channel and re-add it to change
4761
5009
  # it.
@@ -4798,8 +5046,8 @@ module Infrawrench
4798
5046
 
4799
5047
  # List the organization's Teams channels
4800
5048
  #
4801
- # Returns the Teams channels alerts are routed to and which triggers each
4802
- # takes. Webhook URLs are never included.
5049
+ # Returns the Teams channels alerts can be routed to. Which alerts reach
5050
+ # each one is decided by /alert-rules. Webhook URLs are never included.
4803
5051
  #
4804
5052
  # GET /api/org/{orgId}/msteams/status
4805
5053
  #
@@ -4819,9 +5067,9 @@ module Infrawrench
4819
5067
 
4820
5068
  # Post a test card to every configured Teams channel
4821
5069
  #
4822
- # Ignores trigger opt-ins — every channel gets the test. Fails with the
4823
- # error Microsoft returned when nothing could be delivered (HTTP 404 usually
4824
- # means the Workflow was deleted or turned off).
5070
+ # Ignores routing rules — every channel gets the test. Fails with the error
5071
+ # Microsoft returned when nothing could be delivered (HTTP 404 usually means
5072
+ # the Workflow was deleted or turned off).
4825
5073
  #
4826
5074
  # POST /api/org/{orgId}/msteams/test
4827
5075
  #
@@ -7326,10 +7574,13 @@ module Infrawrench
7326
7574
  @transport = transport
7327
7575
  end
7328
7576
 
7329
- # Route alerts to a Slack channel
7577
+ # Connect a Slack channel as an alert destination
7330
7578
  #
7331
- # Adds a channel, or updates the trigger opt-ins of one already added. Each
7332
- # trigger defaults to enabled.
7579
+ # Adds a channel as a possible destination, or refreshes the cached name of
7580
+ # one already added. Which alerts reach it is decided by /alert-rules; an
7581
+ # organization with no rules falls back to the default (everything except
7582
+ # drift, everywhere), so a freshly added channel starts receiving alerts
7583
+ # without a second step.
7333
7584
  #
7334
7585
  # POST /api/org/{orgId}/slack/channels
7335
7586
  #
@@ -7353,7 +7604,7 @@ module Infrawrench
7353
7604
  )
7354
7605
  end
7355
7606
 
7356
- # Stop routing alerts to a channel
7607
+ # Disconnect a channel
7357
7608
  #
7358
7609
  # DELETE /api/org/{orgId}/slack/channels/{id}
7359
7610
  #
@@ -7374,7 +7625,7 @@ module Infrawrench
7374
7625
  )
7375
7626
  end
7376
7627
 
7377
- # Change which alerts a channel receives
7628
+ # Refresh a channel's cached name
7378
7629
  #
7379
7630
  # PATCH /api/org/{orgId}/slack/channels/{id}
7380
7631
  #
@@ -7518,9 +7769,9 @@ module Infrawrench
7518
7769
 
7519
7770
  # Post a test message to every configured channel
7520
7771
  #
7521
- # Ignores trigger opt-ins — every channel gets the test. Fails with the
7522
- # Slack error when nothing could be delivered (`not_in_channel` means the
7523
- # bot needs inviting to a private channel).
7772
+ # Ignores routing rules — every channel gets the test. Fails with the Slack
7773
+ # error when nothing could be delivered (`not_in_channel` means the bot
7774
+ # needs inviting to a private channel).
7524
7775
  #
7525
7776
  # POST /api/org/{orgId}/slack/test
7526
7777
  #
@@ -9039,6 +9290,8 @@ module Infrawrench
9039
9290
  attr_reader :accounts
9040
9291
  # @return [AgentsNamespace] `client.agents`
9041
9292
  attr_reader :agents
9293
+ # @return [AlertRulesNamespace] `client.alert_rules`
9294
+ attr_reader :alert_rules
9042
9295
  # @return [ApiKeysNamespace] `client.api_keys`
9043
9296
  attr_reader :api_keys
9044
9297
  # @return [ArtifactsNamespace] `client.artifacts`
@@ -9083,6 +9336,8 @@ module Infrawrench
9083
9336
  attr_reader :dns
9084
9337
  # @return [DockerNamespace] `client.docker`
9085
9338
  attr_reader :docker
9339
+ # @return [EnvironmentDiffNamespace] `client.environment_diff`
9340
+ attr_reader :environment_diff
9086
9341
  # @return [ExpiringNamespace] `client.expiring`
9087
9342
  attr_reader :expiring
9088
9343
  # @return [InvitationsNamespace] `client.invitations`
@@ -9160,6 +9415,7 @@ module Infrawrench
9160
9415
  @access_requests = AccessRequestsNamespace.new(@transport)
9161
9416
  @accounts = AccountsNamespace.new(@transport)
9162
9417
  @agents = AgentsNamespace.new(@transport)
9418
+ @alert_rules = AlertRulesNamespace.new(@transport)
9163
9419
  @api_keys = ApiKeysNamespace.new(@transport)
9164
9420
  @artifacts = ArtifactsNamespace.new(@transport)
9165
9421
  @associations = AssociationsNamespace.new(@transport)
@@ -9182,6 +9438,7 @@ module Infrawrench
9182
9438
  @digest = DigestNamespace.new(@transport)
9183
9439
  @dns = DnsNamespace.new(@transport)
9184
9440
  @docker = DockerNamespace.new(@transport)
9441
+ @environment_diff = EnvironmentDiffNamespace.new(@transport)
9185
9442
  @expiring = ExpiringNamespace.new(@transport)
9186
9443
  @invitations = InvitationsNamespace.new(@transport)
9187
9444
  @kv = KvNamespace.new(@transport)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.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 v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.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 v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.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 = "0.44.0"
18
+ VERSION = "1.1.0"
19
19
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # infrawrench-sdk v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
3
+ # infrawrench-sdk v1.1.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 0.44.0).
6
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.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 v0.44.0 | MIT | Copyright (c) 2026 Infrawrench LLC
1
+ # infrawrench-sdk v1.1.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 0.44.0).
4
+ # Generated from the Infrawrench API OpenAPI 3.1 spec (API version 1.1.0).
5
5
  #
6
6
  # DO NOT EDIT. Regenerate with:
7
7
  # pnpm --filter @infrawrench/web generate:sdk
@@ -230,6 +230,101 @@ module Infrawrench
230
230
  "hiddenFieldKeys" => Array[String]
231
231
  }
232
232
 
233
+ # One clause of a rule. A rule matches when every condition matches; 'or' is
234
+ # expressed by writing a second rule. A condition on a fact the alert does not
235
+ # carry never matches — in either direction, so `accountId notIn [x]` does not
236
+ # match an alert with no account.
237
+ #
238
+ # Spec schema: `AlertCondition`.
239
+ type alert_condition = { "field" => "trigger", "op" => "in" | "notIn", "values" => Array[alert_trigger] }
240
+ | { "field" => "severity", "op" => "gte" | "eq", "severity" => alert_severity }
241
+ | { "field" => "accountId", "op" => "in" | "notIn", "values" => Array[String] }
242
+ | { "field" => "pluginId", "op" => "in" | "notIn", "values" => Array[String] }
243
+ | { "field" => "resourceTypeId", "op" => "in" | "notIn", "values" => Array[String] }
244
+ | { "field" => "amountCents", "op" => "gte" | "lt", "cents" => Integer }
245
+ | { "field" => "key", "op" => "contains" | "notContains" | "eq", "value" => String }
246
+ | { "field" => "text", "op" => "contains" | "notContains", "value" => String }
247
+
248
+ # Spec schema: `AlertDelivery`.
249
+ type alert_delivery = {
250
+ "id" => String,
251
+ "trigger" => alert_trigger,
252
+ "severity" => alert_severity,
253
+ "title" => String,
254
+ "body" => String,
255
+ "ruleName" => String | nil,
256
+ "state" => "held" | "awaiting_ack" | "sent" | "acknowledged" | "escalated" | "expired",
257
+ "createdAt" => String,
258
+ "deliverAfter" => String | nil,
259
+ "escalateAt" => String | nil,
260
+ "acknowledgedAt" => String | nil,
261
+ "acknowledgedByUserId" => String | nil
262
+ }
263
+
264
+ # One place a matched alert goes. `push` reaches the organization's phones,
265
+ # still filtered by each member's own mutes — an organization rule decides
266
+ # whether the org is told, a member decides whether their phone rings.
267
+ #
268
+ # Spec schema: `AlertDestination`.
269
+ type alert_destination = { "kind" => "push" }
270
+ | { "kind" => "slack", "channelId" => String }
271
+ | { "kind" => "msteams", "webhookId" => String }
272
+
273
+ # Spec schema: `AlertRule`.
274
+ type alert_rule = {
275
+ "id" => String,
276
+ "name" => String,
277
+ "enabled" => bool,
278
+ "position" => Integer,
279
+ "conditions" => Array[alert_condition],
280
+ "destinations" => Array[alert_destination],
281
+ "continueOnMatch" => bool,
282
+ "quietHours" => quiet_hours,
283
+ "escalation" => escalation_policy
284
+ }
285
+
286
+ # Spec schema: `AlertRuleInput`.
287
+ type alert_rule_input = {
288
+ ?"id" => String,
289
+ "name" => String,
290
+ ?"enabled" => bool,
291
+ ?"conditions" => Array[alert_condition],
292
+ ?"destinations" => Array[alert_destination],
293
+ ?"continueOnMatch" => bool,
294
+ ?"quietHours" => quiet_hours,
295
+ ?"escalation" => escalation_policy
296
+ }
297
+
298
+ # Spec schema: `AlertRulesResponse`.
299
+ type alert_rules_response = {
300
+ "rules" => Array[alert_rule],
301
+ "usingDefaults" => bool,
302
+ "slackChannels" => Array[{ "id" => String, "name" => String, "isPrivate" => bool }],
303
+ "msTeamsWebhooks" => Array[{ "id" => String, "label" => String }],
304
+ "accounts" => Array[{ "id" => String, "displayName" => String, "pluginId" => String }]
305
+ }
306
+
307
+ # Alert severity, ordered info < warning < critical.
308
+ #
309
+ # Spec schema: `AlertSeverity`.
310
+ type alert_severity = "info" | "warning" | "critical"
311
+
312
+ # A kind of alert that can be routed.
313
+ #
314
+ # Spec schema: `AlertTrigger`.
315
+ type alert_trigger = "syncIncidents"
316
+ | "budgetAlerts"
317
+ | "anomalyAlerts"
318
+ | "metricAlerts"
319
+ | "resourceDrift"
320
+ | "workflowPages"
321
+ | "providerIncidents"
322
+ | "expiryAlerts"
323
+ | "logMatchAlerts"
324
+ | "postureAlerts"
325
+ | "probeAlerts"
326
+ | "weeklyDigest"
327
+
233
328
  # Spec schema: `AllocationRule`.
234
329
  type allocation_rule = {
235
330
  "id" => String,
@@ -1329,9 +1424,87 @@ module Infrawrench
1329
1424
  ?"enumValues" => Array[String]
1330
1425
  }
1331
1426
 
1427
+ # Spec schema: `EnvironmentDiffEntry`.
1428
+ type environment_diff_entry = {
1429
+ "key" => String,
1430
+ "resourceTypeId" => String,
1431
+ "resourceTypeName" => String,
1432
+ "status" => "only-in-a" | "only-in-b" | "changed",
1433
+ "a" => environment_diff_resource_ref,
1434
+ "b" => environment_diff_resource_ref & untyped,
1435
+ "changes" => Array[environment_diff_field_change],
1436
+ "suppressedCount" => Integer
1437
+ }
1438
+
1439
+ # Spec schema: `EnvironmentDiffFieldChange`.
1440
+ type environment_diff_field_change = { "field" => String, ?"a" => untyped, ?"b" => untyped }
1441
+
1442
+ # Null when the resource exists only on B.
1443
+ #
1444
+ # Spec schema: `EnvironmentDiffResourceRef`.
1445
+ type environment_diff_resource_ref = {
1446
+ "resourceId" => String,
1447
+ "accountId" => String,
1448
+ "displayName" => String,
1449
+ "externalId" => String | nil
1450
+ }
1451
+ | nil
1452
+
1453
+ # Spec schema: `EnvironmentDiffResponse`.
1454
+ type environment_diff_response = {
1455
+ "a" => environment_diff_side_summary,
1456
+ "b" => environment_diff_side_summary,
1457
+ "pluginId" => plugin_id,
1458
+ "pluginName" => String,
1459
+ "types" => Array[environment_diff_type_summary],
1460
+ "entries" => Array[environment_diff_entry],
1461
+ "totals" => environment_diff_totals,
1462
+ "unavailableTypes" => Array[environment_diff_unavailable_type],
1463
+ "includeIdentityFields" => bool,
1464
+ "generatedAt" => String
1465
+ }
1466
+
1467
+ # Spec schema: `EnvironmentDiffSideSummary`.
1468
+ type environment_diff_side_summary = { "accountId" => String, "accountName" => String, "resourceCount" => Integer }
1469
+
1470
+ # Spec schema: `EnvironmentDiffTotals`.
1471
+ type environment_diff_totals = {
1472
+ "onlyInA" => Integer,
1473
+ "onlyInB" => Integer,
1474
+ "changed" => Integer,
1475
+ "identical" => Integer,
1476
+ "typesOnlyInA" => Integer,
1477
+ "typesOnlyInB" => Integer,
1478
+ "suppressedFieldChanges" => Integer
1479
+ }
1480
+
1481
+ # Spec schema: `EnvironmentDiffTypeSummary`.
1482
+ type environment_diff_type_summary = {
1483
+ "resourceTypeId" => String,
1484
+ "resourceTypeName" => String,
1485
+ "countA" => Integer,
1486
+ "countB" => Integer,
1487
+ "delta" => Integer,
1488
+ "onlyInA" => Integer,
1489
+ "onlyInB" => Integer,
1490
+ "changed" => Integer,
1491
+ "identical" => Integer,
1492
+ "missingFrom" => "a" | "b" | nil
1493
+ }
1494
+
1495
+ # Spec schema: `EnvironmentDiffUnavailableType`.
1496
+ type environment_diff_unavailable_type = { "resourceTypeId" => String, "resourceTypeName" => String, "message" => String }
1497
+
1332
1498
  # Spec schema: `Error`.
1333
1499
  type error = { "error" => String }
1334
1500
 
1501
+ # Notify these destinations too if nobody acknowledges within afterMinutes.
1502
+ # Acknowledgement comes from the button on the Slack message, so an alert
1503
+ # routed only to Teams or push will always escalate.
1504
+ #
1505
+ # Spec schema: `EscalationPolicy`.
1506
+ type escalation_policy = { "afterMinutes" => Integer, "destinations" => Array[alert_destination] } | nil
1507
+
1335
1508
  # Spec schema: `ExpiryAlertSettings`.
1336
1509
  type expiry_alert_settings = { "enabled" => bool, "leadDays" => Integer, "lastNotifiedAt" => String | nil }
1337
1510
 
@@ -1810,58 +1983,13 @@ module Infrawrench
1810
1983
  type ms_teams_status = { "webhooks" => Array[ms_teams_webhook] }
1811
1984
 
1812
1985
  # Spec schema: `MsTeamsWebhook`.
1813
- type ms_teams_webhook = {
1814
- "id" => String,
1815
- "label" => String,
1816
- "urlHint" => String,
1817
- "syncIncidents" => bool,
1818
- "budgetAlerts" => bool,
1819
- "anomalyAlerts" => bool,
1820
- "metricAlerts" => bool,
1821
- "resourceDrift" => bool,
1822
- "workflowPages" => bool,
1823
- "providerIncidents" => bool,
1824
- "expiryAlerts" => bool,
1825
- "logMatchAlerts" => bool,
1826
- "postureAlerts" => bool,
1827
- "probeAlerts" => bool,
1828
- "weeklyDigest" => bool
1829
- }
1986
+ type ms_teams_webhook = { "id" => String, "label" => String, "urlHint" => String }
1830
1987
 
1831
1988
  # Spec schema: `MsTeamsWebhookCreate`.
1832
- type ms_teams_webhook_create = {
1833
- "label" => String,
1834
- "url" => String,
1835
- ?"syncIncidents" => bool,
1836
- ?"budgetAlerts" => bool,
1837
- ?"anomalyAlerts" => bool,
1838
- ?"metricAlerts" => bool,
1839
- ?"resourceDrift" => bool,
1840
- ?"workflowPages" => bool,
1841
- ?"providerIncidents" => bool,
1842
- ?"expiryAlerts" => bool,
1843
- ?"logMatchAlerts" => bool,
1844
- ?"postureAlerts" => bool,
1845
- ?"probeAlerts" => bool,
1846
- ?"weeklyDigest" => bool
1847
- }
1989
+ type ms_teams_webhook_create = { "label" => String, "url" => String }
1848
1990
 
1849
1991
  # Spec schema: `MsTeamsWebhookUpdate`.
1850
- type ms_teams_webhook_update = {
1851
- ?"label" => String,
1852
- ?"syncIncidents" => bool,
1853
- ?"budgetAlerts" => bool,
1854
- ?"anomalyAlerts" => bool,
1855
- ?"metricAlerts" => bool,
1856
- ?"resourceDrift" => bool,
1857
- ?"workflowPages" => bool,
1858
- ?"providerIncidents" => bool,
1859
- ?"expiryAlerts" => bool,
1860
- ?"logMatchAlerts" => bool,
1861
- ?"postureAlerts" => bool,
1862
- ?"probeAlerts" => bool,
1863
- ?"weeklyDigest" => bool
1864
- }
1992
+ type ms_teams_webhook_update = { "label" => String }
1865
1993
 
1866
1994
  # Spec schema: `NoSqlCommandRequest`.
1867
1995
  type no_sql_command_request = {
@@ -2460,6 +2588,19 @@ module Infrawrench
2460
2588
  ?"accountId" => String
2461
2589
  }
2462
2590
 
2591
+ # A recurring local-time window during which the rule holds its alerts. Held,
2592
+ # not dropped — a held alert is queued and delivered when the window closes.
2593
+ #
2594
+ # Spec schema: `QuietHours`.
2595
+ type quiet_hours = {
2596
+ "timezone" => String,
2597
+ "startMinute" => Integer,
2598
+ "endMinute" => Integer,
2599
+ "days" => Array[Integer],
2600
+ "urgentOverride" => alert_severity & (String | nil)
2601
+ }
2602
+ | nil
2603
+
2463
2604
  # Spec schema: `ReauthenticationRequired`.
2464
2605
  type reauthentication_required = { "error" => String, "code" => "reauthentication_required" }
2465
2606
 
@@ -3267,19 +3408,7 @@ module Infrawrench
3267
3408
  "installationId" => String,
3268
3409
  "channelId" => String,
3269
3410
  "channelName" => String,
3270
- "isPrivate" => bool,
3271
- "syncIncidents" => bool,
3272
- "budgetAlerts" => bool,
3273
- "anomalyAlerts" => bool,
3274
- "metricAlerts" => bool,
3275
- "resourceDrift" => bool,
3276
- "workflowPages" => bool,
3277
- "providerIncidents" => bool,
3278
- "expiryAlerts" => bool,
3279
- "logMatchAlerts" => bool,
3280
- "postureAlerts" => bool,
3281
- "probeAlerts" => bool,
3282
- "weeklyDigest" => bool
3411
+ "isPrivate" => bool
3283
3412
  }
3284
3413
 
3285
3414
  # Spec schema: `SlackChannelCreate`.
@@ -3287,36 +3416,11 @@ module Infrawrench
3287
3416
  "installationId" => String,
3288
3417
  "channelId" => String,
3289
3418
  "channelName" => String,
3290
- ?"isPrivate" => bool,
3291
- ?"syncIncidents" => bool,
3292
- ?"budgetAlerts" => bool,
3293
- ?"anomalyAlerts" => bool,
3294
- ?"metricAlerts" => bool,
3295
- ?"resourceDrift" => bool,
3296
- ?"workflowPages" => bool,
3297
- ?"providerIncidents" => bool,
3298
- ?"expiryAlerts" => bool,
3299
- ?"logMatchAlerts" => bool,
3300
- ?"postureAlerts" => bool,
3301
- ?"probeAlerts" => bool,
3302
- ?"weeklyDigest" => bool
3419
+ ?"isPrivate" => bool
3303
3420
  }
3304
3421
 
3305
3422
  # Spec schema: `SlackChannelUpdate`.
3306
- type slack_channel_update = {
3307
- ?"syncIncidents" => bool,
3308
- ?"budgetAlerts" => bool,
3309
- ?"anomalyAlerts" => bool,
3310
- ?"metricAlerts" => bool,
3311
- ?"resourceDrift" => bool,
3312
- ?"workflowPages" => bool,
3313
- ?"providerIncidents" => bool,
3314
- ?"expiryAlerts" => bool,
3315
- ?"logMatchAlerts" => bool,
3316
- ?"postureAlerts" => bool,
3317
- ?"probeAlerts" => bool,
3318
- ?"weeklyDigest" => bool
3319
- }
3423
+ type slack_channel_update = { "channelName" => String }
3320
3424
 
3321
3425
  # Spec schema: `SlackInstallation`.
3322
3426
  type slack_installation = { "id" => String, "teamId" => String, "teamName" => String | nil }
@@ -3716,6 +3820,7 @@ module Infrawrench
3716
3820
  | "expiring"
3717
3821
  | "posture"
3718
3822
  | "dns"
3823
+ | "environment-diff"
3719
3824
  | "ssh-fanout"
3720
3825
  | "metric-alerts"
3721
3826
  | "probes"
@@ -3937,6 +4042,21 @@ module Infrawrench
3937
4042
  def accounts: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> Array[agent_vm_account]
3938
4043
  end
3939
4044
 
4045
+ class AlertRulesDeliveriesNamespace
4046
+ def initialize: (Transport) -> void
4047
+ def ack: (id: String, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "acknowledged" => bool, ?"alreadyAcknowledgedBy" => String | nil, ?"reason" => "not_pending" | "already_escalated" | "already_acknowledged", ?"title" => String }
4048
+ def cancel: (?org_id: String?, ?body: { "ids" => Array[String] }?, ?request_options: Hash[Symbol, untyped]?) -> { "cancelled" => Integer }
4049
+ def list: (?org_id: String?, ?limit: Integer?, ?request_options: Hash[Symbol, untyped]?) -> Array[alert_delivery]
4050
+ end
4051
+
4052
+ class AlertRulesNamespace
4053
+ attr_reader deliveries: AlertRulesDeliveriesNamespace
4054
+ def initialize: (Transport) -> void
4055
+ def adopt_defaults: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> { "rules" => Array[alert_rule], "adopted" => bool }
4056
+ def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> alert_rules_response
4057
+ def update: (?org_id: String?, ?body: { "rules" => Array[alert_rule_input] }?, ?request_options: Hash[Symbol, untyped]?) -> { "rules" => Array[alert_rule] }
4058
+ end
4059
+
3940
4060
  class ApiKeysNamespace
3941
4061
  def initialize: (Transport) -> void
3942
4062
  def create: (body: create_api_key_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> created_api_key
@@ -4177,6 +4297,11 @@ module Infrawrench
4177
4297
  def command: (body: docker_command_request, ?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> docker_command_response
4178
4298
  end
4179
4299
 
4300
+ class EnvironmentDiffNamespace
4301
+ def initialize: (Transport) -> void
4302
+ 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
4303
+ end
4304
+
4180
4305
  class ExpiringSettingsNamespace
4181
4306
  def initialize: (Transport) -> void
4182
4307
  def get: (?org_id: String?, ?request_options: Hash[Symbol, untyped]?) -> expiry_alert_settings
@@ -4577,6 +4702,7 @@ module Infrawrench
4577
4702
  attr_reader access_requests: AccessRequestsNamespace
4578
4703
  attr_reader accounts: AccountsNamespace
4579
4704
  attr_reader agents: AgentsNamespace
4705
+ attr_reader alert_rules: AlertRulesNamespace
4580
4706
  attr_reader api_keys: ApiKeysNamespace
4581
4707
  attr_reader artifacts: ArtifactsNamespace
4582
4708
  attr_reader associations: AssociationsNamespace
@@ -4599,6 +4725,7 @@ module Infrawrench
4599
4725
  attr_reader digest: DigestNamespace
4600
4726
  attr_reader dns: DnsNamespace
4601
4727
  attr_reader docker: DockerNamespace
4728
+ attr_reader environment_diff: EnvironmentDiffNamespace
4602
4729
  attr_reader expiring: ExpiringNamespace
4603
4730
  attr_reader invitations: InvitationsNamespace
4604
4731
  attr_reader kv: KvNamespace
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: 0.44.0
4
+ version: 1.1.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-08 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Generated Ruby client for the Infrawrench API (v0.44.0). Covers the published
14
+ description: Generated Ruby client for the Infrawrench API (v1.1.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 (v0.44.0).
61
+ summary: Generated Ruby client for the Infrawrench API (v1.1.0).
62
62
  test_files: []