noresponse 2.0.17 → 2.0.18

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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/integrations.rb +1156 -0
  3. data/lib/no_response/models/operations/createintegration_response.rb +32 -0
  4. data/lib/no_response/models/operations/createintegration_response.rbi +20 -0
  5. data/lib/no_response/models/operations/deleteintegration_request.rb +33 -0
  6. data/lib/no_response/models/operations/deleteintegration_request.rbi +14 -0
  7. data/lib/no_response/models/operations/deleteintegration_response.rb +28 -0
  8. data/lib/no_response/models/operations/deleteintegration_response.rbi +14 -0
  9. data/lib/no_response/models/operations/listintegrations_response.rb +32 -0
  10. data/lib/no_response/models/operations/listintegrations_response.rbi +20 -0
  11. data/lib/no_response/models/operations/rotateintegrationsecret_request.rb +37 -0
  12. data/lib/no_response/models/operations/rotateintegrationsecret_request.rbi +20 -0
  13. data/lib/no_response/models/operations/rotateintegrationsecret_response.rb +32 -0
  14. data/lib/no_response/models/operations/rotateintegrationsecret_response.rbi +20 -0
  15. data/lib/no_response/models/operations.rb +6 -0
  16. data/lib/no_response/models/shared/conflicterrorcode.rb +1 -0
  17. data/lib/no_response/models/shared/integration.rb +112 -0
  18. data/lib/no_response/models/shared/integration.rbi +56 -0
  19. data/lib/no_response/models/shared/integrationhookpoint.rb +19 -0
  20. data/lib/no_response/models/shared/integrationhookpoint.rbi +9 -0
  21. data/lib/no_response/models/shared/integrationlist.rb +32 -0
  22. data/lib/no_response/models/shared/integrationlist.rbi +14 -0
  23. data/lib/no_response/models/shared/integrationplatform.rb +19 -0
  24. data/lib/no_response/models/shared/integrationplatform.rbi +9 -0
  25. data/lib/no_response/models/shared/integrationrequest.rb +62 -0
  26. data/lib/no_response/models/shared/integrationrequest.rbi +26 -0
  27. data/lib/no_response/models/shared/integrationrotationrequest.rb +33 -0
  28. data/lib/no_response/models/shared/integrationrotationrequest.rbi +14 -0
  29. data/lib/no_response/models/shared/scope.rb +1 -0
  30. data/lib/no_response/models/shared.rb +6 -0
  31. data/lib/no_response/noresponseclient.rb +2 -1
  32. data/lib/no_response/sdkconfiguration.rb +2 -2
  33. data/lib/noresponse.rb +1 -0
  34. metadata +26 -1
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class CreateIntegrationResponse
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
13
+
14
+ field :result, Models::Shared::Integration, {}
15
+
16
+ sig { params(headers: T::Hash[Symbol, T::Array[::String]], result: Models::Shared::Integration).void }
17
+ def initialize(headers:, result:)
18
+ @headers = headers
19
+ @result = result
20
+ end
21
+
22
+ sig { params(other: T.untyped).returns(T::Boolean) }
23
+ def ==(other)
24
+ return false unless other.is_a?(self.class)
25
+ return false unless @headers == other.headers
26
+ return false unless @result == other.result
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::CreateIntegrationResponse
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::CreateIntegrationResponse
9
+ def headers
10
+ end
11
+
12
+ def headers=(str_)
13
+ end
14
+
15
+ def result
16
+ end
17
+
18
+ def result=(str_)
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class DeleteIntegrationRequest
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Path segment, matched case-sensitively. A value that does not match the integration_id shape, or another tenant's id, answers 404.
13
+ field(
14
+ :integration_id,
15
+ ::String,
16
+ {'path_param': {'field_name': "integration_id", 'style': "simple", 'explode': false}}
17
+ )
18
+
19
+ sig { params(integration_id: ::String).void }
20
+ def initialize(integration_id:)
21
+ @integration_id = integration_id
22
+ end
23
+
24
+ sig { params(other: T.untyped).returns(T::Boolean) }
25
+ def ==(other)
26
+ return false unless other.is_a?(self.class)
27
+ return false unless @integration_id == other.integration_id
28
+ true
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,14 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::DeleteIntegrationRequest
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::DeleteIntegrationRequest
9
+ def integration_id
10
+ end
11
+
12
+ def integration_id=(str_)
13
+ end
14
+ end
@@ -0,0 +1,28 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class DeleteIntegrationResponse
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
13
+
14
+ sig { params(headers: T::Hash[Symbol, T::Array[::String]]).void }
15
+ def initialize(headers:)
16
+ @headers = headers
17
+ end
18
+
19
+ sig { params(other: T.untyped).returns(T::Boolean) }
20
+ def ==(other)
21
+ return false unless other.is_a?(self.class)
22
+ return false unless @headers == other.headers
23
+ true
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::DeleteIntegrationResponse
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::DeleteIntegrationResponse
9
+ def headers
10
+ end
11
+
12
+ def headers=(str_)
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class ListIntegrationsResponse
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
13
+
14
+ field :result, Models::Shared::IntegrationList, {}
15
+
16
+ sig { params(headers: T::Hash[Symbol, T::Array[::String]], result: Models::Shared::IntegrationList).void }
17
+ def initialize(headers:, result:)
18
+ @headers = headers
19
+ @result = result
20
+ end
21
+
22
+ sig { params(other: T.untyped).returns(T::Boolean) }
23
+ def ==(other)
24
+ return false unless other.is_a?(self.class)
25
+ return false unless @headers == other.headers
26
+ return false unless @result == other.result
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::ListIntegrationsResponse
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::ListIntegrationsResponse
9
+ def headers
10
+ end
11
+
12
+ def headers=(str_)
13
+ end
14
+
15
+ def result
16
+ end
17
+
18
+ def result=(str_)
19
+ end
20
+ end
@@ -0,0 +1,37 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class RotateIntegrationSecretRequest
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Path segment, matched case-sensitively. A value that does not match the integration_id shape, or another tenant's id, answers 404.
13
+ field(
14
+ :integration_id,
15
+ ::String,
16
+ {'path_param': {'field_name': "integration_id", 'style': "simple", 'explode': false}}
17
+ )
18
+
19
+ field :body, Models::Shared::IntegrationRotationRequest, {'request': {'media_type': "application/json"}}
20
+
21
+ sig { params(integration_id: ::String, body: Models::Shared::IntegrationRotationRequest).void }
22
+ def initialize(integration_id:, body:)
23
+ @integration_id = integration_id
24
+ @body = body
25
+ end
26
+
27
+ sig { params(other: T.untyped).returns(T::Boolean) }
28
+ def ==(other)
29
+ return false unless other.is_a?(self.class)
30
+ return false unless @integration_id == other.integration_id
31
+ return false unless @body == other.body
32
+ true
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::RotateIntegrationSecretRequest
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::RotateIntegrationSecretRequest
9
+ def integration_id
10
+ end
11
+
12
+ def integration_id=(str_)
13
+ end
14
+
15
+ def body
16
+ end
17
+
18
+ def body=(str_)
19
+ end
20
+ end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Operations
7
+
8
+ class RotateIntegrationSecretResponse
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :headers, Crystalline::Hash.new(Symbol, Crystalline::Array.new(::String))
13
+
14
+ field :result, Models::Shared::Integration, {}
15
+
16
+ sig { params(headers: T::Hash[Symbol, T::Array[::String]], result: Models::Shared::Integration).void }
17
+ def initialize(headers:, result:)
18
+ @headers = headers
19
+ @result = result
20
+ end
21
+
22
+ sig { params(other: T.untyped).returns(T::Boolean) }
23
+ def ==(other)
24
+ return false unless other.is_a?(self.class)
25
+ return false unless @headers == other.headers
26
+ return false unless @result == other.result
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Operations::RotateIntegrationSecretResponse
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Operations::RotateIntegrationSecretResponse
9
+ def headers
10
+ end
11
+
12
+ def headers=(str_)
13
+ end
14
+
15
+ def result
16
+ end
17
+
18
+ def result=(str_)
19
+ end
20
+ end
@@ -6,12 +6,18 @@ module NoResponse
6
6
  module Operations
7
7
  autoload :CreateAssessmentRequest, "no_response/models/operations/createassessment_request.rb"
8
8
  autoload :CreateAssessmentResponse, "no_response/models/operations/createassessment_response.rb"
9
+ autoload :CreateIntegrationResponse, "no_response/models/operations/createintegration_response.rb"
10
+ autoload :DeleteIntegrationRequest, "no_response/models/operations/deleteintegration_request.rb"
11
+ autoload :DeleteIntegrationResponse, "no_response/models/operations/deleteintegration_response.rb"
9
12
  autoload :GetAssessmentRequest, "no_response/models/operations/getassessment_request.rb"
10
13
  autoload :GetAssessmentResponse, "no_response/models/operations/getassessment_response.rb"
14
+ autoload :ListIntegrationsResponse, "no_response/models/operations/listintegrations_response.rb"
11
15
  autoload :QueryAccountAssessmentsResponse, "no_response/models/operations/queryaccountassessments_response.rb"
12
16
  autoload :RecordAssessmentOutcomeRequest, "no_response/models/operations/recordassessmentoutcome_request.rb"
13
17
  autoload :RecordAssessmentOutcomeResponse, "no_response/models/operations/recordassessmentoutcome_response.rb"
14
18
  autoload :RotateApiKeyResponse, "no_response/models/operations/rotateapikey_response.rb"
19
+ autoload :RotateIntegrationSecretRequest, "no_response/models/operations/rotateintegrationsecret_request.rb"
20
+ autoload :RotateIntegrationSecretResponse, "no_response/models/operations/rotateintegrationsecret_response.rb"
15
21
  end
16
22
  end
17
23
  end
@@ -10,6 +10,7 @@ module NoResponse
10
10
  enums do
11
11
  IDEMPOTENCY_KEY_REUSED = new("idempotency_key_reused")
12
12
  KEY_ROTATION_IN_PROGRESS = new("key_rotation_in_progress")
13
+ TOO_MANY_INTEGRATIONS = new("too_many_integrations")
13
14
  end
14
15
 
15
16
  open!
@@ -0,0 +1,112 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # A hosted provider integration. Point the provider at url: a WorkOS user registration or authentication Action, or the NoResponse Auth0 Action, which sends secret as a bearer token. The answer allows or denies the event: deny only when the assessment's risk.block is true, and allow on every failure, so a fault on the NoResponse side lets the user through. secret is present only in the answers of POST /v1/integrations and POST /v1/integrations/{integration_id}/rotate for an Auth0 integration, and is not returned again.
8
+ class Integration
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Opaque, server-assigned integration id: int_ and a 26-character Crockford base32 ULID. Another tenant's integration id answers 404.
13
+ field(
14
+ :integration_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("integration_id"), required: true}}
17
+ )
18
+ # The authentication provider that calls the endpoint.
19
+ field(
20
+ :platform,
21
+ Models::Shared::IntegrationPlatform,
22
+ {
23
+ 'format_json': {
24
+ 'letter_case': ::NoResponse::Utils.field_name("platform"),
25
+ required: true,
26
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::IntegrationPlatform, false)
27
+ }
28
+ }
29
+ )
30
+ # Each hook point at most once.
31
+ field(
32
+ :hook_points,
33
+ Crystalline::Array.new(Models::Shared::IntegrationHookPoint),
34
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("hook_points"), required: true}}
35
+ )
36
+ # The hosted endpoint, https://api.noresponse.org/hooks/{integration_id} in production.
37
+ field :url, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("url"), required: true}}
38
+
39
+ field(
40
+ :created_at,
41
+ ::String,
42
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
43
+ )
44
+ # Auth0 only, and only when it is created or rotated: the shared secret the Auth0 Action sends as Authorization: Bearer <secret>. nri_ and 43 unpadded base64url characters (32 random bytes). Store it as an Auth0 Action secret.
45
+ field(
46
+ :secret,
47
+ Crystalline::Nilable.new(::String),
48
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("secret")}}
49
+ )
50
+ # When the secret was last rotated; absent until the first rotation.
51
+ field(
52
+ :rotated_at,
53
+ Crystalline::Nilable.new(::String),
54
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("rotated_at")}}
55
+ )
56
+ # After a rotation, when the replaced secret stops being accepted; absent when no replaced secret is still accepted.
57
+ field(
58
+ :previous_secret_expires_at,
59
+ Crystalline::Nilable.new(::String),
60
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("previous_secret_expires_at")}}
61
+ )
62
+
63
+ sig {
64
+ params(
65
+ integration_id: ::String,
66
+ platform: Models::Shared::IntegrationPlatform,
67
+ hook_points: T::Array[Models::Shared::IntegrationHookPoint],
68
+ url: ::String,
69
+ created_at: ::String,
70
+ secret: T.nilable(::String),
71
+ rotated_at: T.nilable(::String),
72
+ previous_secret_expires_at: T.nilable(::String)
73
+ )
74
+ .void
75
+ }
76
+ def initialize(
77
+ integration_id:,
78
+ platform:,
79
+ hook_points:,
80
+ url:,
81
+ created_at:,
82
+ secret: nil,
83
+ rotated_at: nil,
84
+ previous_secret_expires_at: nil
85
+ )
86
+ @integration_id = integration_id
87
+ @platform = platform
88
+ @hook_points = hook_points
89
+ @url = url
90
+ @created_at = created_at
91
+ @secret = secret
92
+ @rotated_at = rotated_at
93
+ @previous_secret_expires_at = previous_secret_expires_at
94
+ end
95
+
96
+ sig { params(other: T.untyped).returns(T::Boolean) }
97
+ def ==(other)
98
+ return false unless other.is_a?(self.class)
99
+ return false unless @integration_id == other.integration_id
100
+ return false unless @platform == other.platform
101
+ return false unless @hook_points == other.hook_points
102
+ return false unless @url == other.url
103
+ return false unless @created_at == other.created_at
104
+ return false unless @secret == other.secret
105
+ return false unless @rotated_at == other.rotated_at
106
+ return false unless @previous_secret_expires_at == other.previous_secret_expires_at
107
+ true
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Integration
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Integration
9
+ def integration_id
10
+ end
11
+
12
+ def integration_id=(str_)
13
+ end
14
+
15
+ def platform
16
+ end
17
+
18
+ def platform=(str_)
19
+ end
20
+
21
+ def hook_points
22
+ end
23
+
24
+ def hook_points=(str_)
25
+ end
26
+
27
+ def url
28
+ end
29
+
30
+ def url=(str_)
31
+ end
32
+
33
+ def created_at
34
+ end
35
+
36
+ def created_at=(str_)
37
+ end
38
+
39
+ def secret
40
+ end
41
+
42
+ def secret=(str_)
43
+ end
44
+
45
+ def rotated_at
46
+ end
47
+
48
+ def rotated_at=(str_)
49
+ end
50
+
51
+ def previous_secret_expires_at
52
+ end
53
+
54
+ def previous_secret_expires_at=(str_)
55
+ end
56
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # IntegrationHookPoint - pre_registration runs before the user exists; post_login runs after a successful sign-in.
8
+ class IntegrationHookPoint
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ PRE_REGISTRATION = new("pre_registration")
12
+ POST_LOGIN = new("post_login")
13
+ end
14
+
15
+ open!
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IntegrationHookPoint
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IntegrationHookPoint
9
+ end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # GET /v1/integrations: every integration of the tenant, oldest first, at most 10. No secret is ever listed.
8
+ class IntegrationList
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field(
13
+ :items,
14
+ Crystalline::Array.new(Models::Shared::Integration),
15
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("items"), required: true}}
16
+ )
17
+
18
+ sig { params(items: T::Array[Models::Shared::Integration]).void }
19
+ def initialize(items:)
20
+ @items = items
21
+ end
22
+
23
+ sig { params(other: T.untyped).returns(T::Boolean) }
24
+ def ==(other)
25
+ return false unless other.is_a?(self.class)
26
+ return false unless @items == other.items
27
+ true
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,14 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IntegrationList
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IntegrationList
9
+ def items
10
+ end
11
+
12
+ def items=(str_)
13
+ end
14
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # IntegrationPlatform - The authentication provider that calls the endpoint.
8
+ class IntegrationPlatform
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ WORKOS = new("workos")
12
+ AUTH0 = new("auth0")
13
+ end
14
+
15
+ open!
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::IntegrationPlatform
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::IntegrationPlatform
9
+ end