noresponse 8.1.2 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/no_response/accounts.rb +2068 -0
  3. data/lib/no_response/assessments.rb +890 -0
  4. data/lib/no_response/lists.rb +2 -2
  5. data/lib/no_response/models/operations/associatecredential_request.rb +33 -0
  6. data/lib/no_response/models/operations/associatecredential_request.rbi +20 -0
  7. data/lib/no_response/models/operations/associatecredential_response.rb +34 -0
  8. data/lib/no_response/models/operations/associatecredential_response.rbi +20 -0
  9. data/lib/no_response/models/operations/bindprovisionalaccount_request.rb +37 -0
  10. data/lib/no_response/models/operations/bindprovisionalaccount_request.rbi +20 -0
  11. data/lib/no_response/models/operations/bindprovisionalaccount_response.rb +32 -0
  12. data/lib/no_response/models/operations/bindprovisionalaccount_response.rbi +20 -0
  13. data/lib/no_response/models/operations/exportaccount_request.rb +37 -0
  14. data/lib/no_response/models/operations/exportaccount_request.rbi +20 -0
  15. data/lib/no_response/models/operations/exportaccount_response.rb +32 -0
  16. data/lib/no_response/models/operations/exportaccount_response.rbi +20 -0
  17. data/lib/no_response/models/operations/getaccountdecision_request.rb +37 -0
  18. data/lib/no_response/models/operations/getaccountdecision_request.rbi +20 -0
  19. data/lib/no_response/models/operations/getaccountdecision_response.rb +34 -0
  20. data/lib/no_response/models/operations/getaccountdecision_response.rbi +20 -0
  21. data/lib/no_response/models/operations/getassessmentversion_request.rb +48 -0
  22. data/lib/no_response/models/operations/getassessmentversion_request.rbi +26 -0
  23. data/lib/no_response/models/operations/getassessmentversion_response.rb +32 -0
  24. data/lib/no_response/models/operations/getassessmentversion_response.rbi +20 -0
  25. data/lib/no_response/models/operations/listaccountcredentials_request.rb +45 -0
  26. data/lib/no_response/models/operations/listaccountcredentials_request.rbi +26 -0
  27. data/lib/no_response/models/operations/listaccountcredentials_response.rb +32 -0
  28. data/lib/no_response/models/operations/listaccountcredentials_response.rbi +20 -0
  29. data/lib/no_response/models/operations/listaccountoutcomes_request.rb +45 -0
  30. data/lib/no_response/models/operations/listaccountoutcomes_request.rbi +26 -0
  31. data/lib/no_response/models/operations/listaccountoutcomes_response.rb +32 -0
  32. data/lib/no_response/models/operations/listaccountoutcomes_response.rbi +20 -0
  33. data/lib/no_response/models/operations/listrequestdiagnostics_request.rb +84 -0
  34. data/lib/no_response/models/operations/listrequestdiagnostics_request.rbi +50 -0
  35. data/lib/no_response/models/operations/listrequestdiagnostics_response.rb +34 -0
  36. data/lib/no_response/models/operations/listrequestdiagnostics_response.rbi +20 -0
  37. data/lib/no_response/models/operations/recordaccountoutcome_request.rb +48 -0
  38. data/lib/no_response/models/operations/recordaccountoutcome_request.rbi +26 -0
  39. data/lib/no_response/models/operations/recordaccountoutcome_response.rb +32 -0
  40. data/lib/no_response/models/operations/recordaccountoutcome_response.rbi +20 -0
  41. data/lib/no_response/models/operations/retireaccountcredential_request.rb +37 -0
  42. data/lib/no_response/models/operations/retireaccountcredential_request.rbi +20 -0
  43. data/lib/no_response/models/operations/retireaccountcredential_response.rb +34 -0
  44. data/lib/no_response/models/operations/retireaccountcredential_response.rbi +20 -0
  45. data/lib/no_response/models/operations/searchassessments_response.rb +32 -0
  46. data/lib/no_response/models/operations/searchassessments_response.rbi +20 -0
  47. data/lib/no_response/models/operations.rb +21 -0
  48. data/lib/no_response/models/shared/accountbinding.rb +83 -0
  49. data/lib/no_response/models/shared/accountbinding.rbi +44 -0
  50. data/lib/no_response/models/shared/accountbindingactor.rb +40 -0
  51. data/lib/no_response/models/shared/accountbindingactor.rbi +20 -0
  52. data/lib/no_response/models/shared/accountbindingrequest.rb +33 -0
  53. data/lib/no_response/models/shared/accountbindingrequest.rbi +14 -0
  54. data/lib/no_response/models/shared/accountdecisionsnapshot.rb +94 -0
  55. data/lib/no_response/models/shared/accountdecisionsnapshot.rbi +44 -0
  56. data/lib/no_response/models/shared/accountexport.rb +178 -0
  57. data/lib/no_response/models/shared/accountexport.rbi +92 -0
  58. data/lib/no_response/models/shared/accountoutcome.rb +152 -0
  59. data/lib/no_response/models/shared/accountoutcome.rbi +80 -0
  60. data/lib/no_response/models/shared/accountoutcomeactor.rb +40 -0
  61. data/lib/no_response/models/shared/accountoutcomeactor.rbi +20 -0
  62. data/lib/no_response/models/shared/accountoutcomepage.rb +65 -0
  63. data/lib/no_response/models/shared/accountoutcomepage.rbi +32 -0
  64. data/lib/no_response/models/shared/accountoutcomerequest.rb +71 -0
  65. data/lib/no_response/models/shared/accountoutcomerequest.rbi +32 -0
  66. data/lib/no_response/models/shared/assessmentrevision.rb +101 -0
  67. data/lib/no_response/models/shared/assessmentrevision.rbi +44 -0
  68. data/lib/no_response/models/shared/assessmentsearchpage.rb +68 -0
  69. data/lib/no_response/models/shared/assessmentsearchpage.rbi +32 -0
  70. data/lib/no_response/models/shared/assessmentsearchrequest.rb +146 -0
  71. data/lib/no_response/models/shared/assessmentsearchrequest.rbi +68 -0
  72. data/lib/no_response/models/shared/conflicterrorcode.rb +4 -0
  73. data/lib/no_response/models/shared/credentialassociation.rb +78 -0
  74. data/lib/no_response/models/shared/credentialassociation.rbi +44 -0
  75. data/lib/no_response/models/shared/credentialassociationactor.rb +40 -0
  76. data/lib/no_response/models/shared/credentialassociationactor.rbi +20 -0
  77. data/lib/no_response/models/shared/credentialassociationretiredby.rb +40 -0
  78. data/lib/no_response/models/shared/credentialassociationretiredby.rbi +20 -0
  79. data/lib/no_response/models/shared/credentialpage.rb +56 -0
  80. data/lib/no_response/models/shared/credentialpage.rbi +26 -0
  81. data/lib/no_response/models/shared/credentialrequest.rb +32 -0
  82. data/lib/no_response/models/shared/credentialrequest.rbi +14 -0
  83. data/lib/no_response/models/shared/decision.rb +18 -0
  84. data/lib/no_response/models/shared/decision.rbi +9 -0
  85. data/lib/no_response/models/shared/decisionreceipt.rb +112 -0
  86. data/lib/no_response/models/shared/decisionreceipt.rbi +50 -0
  87. data/lib/no_response/models/shared/exclusion.rb +23 -0
  88. data/lib/no_response/models/shared/exclusion.rbi +9 -0
  89. data/lib/no_response/models/shared/exportassessmentoutcome.rb +85 -0
  90. data/lib/no_response/models/shared/exportassessmentoutcome.rbi +44 -0
  91. data/lib/no_response/models/shared/reasoncode.rb +1 -0
  92. data/lib/no_response/models/shared/requestdiagnostic.rb +145 -0
  93. data/lib/no_response/models/shared/requestdiagnostic.rbi +80 -0
  94. data/lib/no_response/models/shared/requestdiagnosticpage.rb +40 -0
  95. data/lib/no_response/models/shared/requestdiagnosticpage.rbi +20 -0
  96. data/lib/no_response/models/shared.rb +23 -0
  97. data/lib/no_response/noresponseclient.rb +12 -1
  98. data/lib/no_response/requests.rb +320 -0
  99. data/lib/no_response/sdkconfiguration.rb +2 -2
  100. data/lib/noresponse.rb +1 -0
  101. metadata +91 -2
@@ -4,6 +4,10 @@
4
4
  module NoResponse
5
5
  module Models
6
6
  module Operations
7
+ autoload :AssociateCredentialRequest, "no_response/models/operations/associatecredential_request.rb"
8
+ autoload :AssociateCredentialResponse, "no_response/models/operations/associatecredential_response.rb"
9
+ autoload :BindProvisionalAccountRequest, "no_response/models/operations/bindprovisionalaccount_request.rb"
10
+ autoload :BindProvisionalAccountResponse, "no_response/models/operations/bindprovisionalaccount_response.rb"
7
11
  autoload :CreateAssessmentRequest, "no_response/models/operations/createassessment_request.rb"
8
12
  autoload :CreateAssessmentResponse, "no_response/models/operations/createassessment_response.rb"
9
13
  autoload :CreateIntegrationResponse, "no_response/models/operations/createintegration_response.rb"
@@ -22,14 +26,24 @@ module NoResponse
22
26
  autoload :DeleteListEntryResponse, "no_response/models/operations/deletelistentry_response.rb"
23
27
  autoload :DeleteWebhookEndpointRequest, "no_response/models/operations/deletewebhookendpoint_request.rb"
24
28
  autoload :DeleteWebhookEndpointResponse, "no_response/models/operations/deletewebhookendpoint_response.rb"
29
+ autoload :ExportAccountRequest, "no_response/models/operations/exportaccount_request.rb"
30
+ autoload :ExportAccountResponse, "no_response/models/operations/exportaccount_response.rb"
31
+ autoload :GetAccountDecisionRequest, "no_response/models/operations/getaccountdecision_request.rb"
32
+ autoload :GetAccountDecisionResponse, "no_response/models/operations/getaccountdecision_response.rb"
25
33
  autoload :GetAccountRequest, "no_response/models/operations/getaccount_request.rb"
26
34
  autoload :GetAccountResponse, "no_response/models/operations/getaccount_response.rb"
35
+ autoload :GetAssessmentVersionRequest, "no_response/models/operations/getassessmentversion_request.rb"
36
+ autoload :GetAssessmentVersionResponse, "no_response/models/operations/getassessmentversion_response.rb"
27
37
  autoload :GetAssessmentRequest, "no_response/models/operations/getassessment_request.rb"
28
38
  autoload :GetAssessmentResponse, "no_response/models/operations/getassessment_response.rb"
29
39
  autoload :GetSettingsRequest, "no_response/models/operations/getsettings_request.rb"
30
40
  autoload :GetSettingsResponse, "no_response/models/operations/getsettings_response.rb"
31
41
  autoload :ListAccountAssessmentsRequest, "no_response/models/operations/listaccountassessments_request.rb"
32
42
  autoload :ListAccountAssessmentsResponse, "no_response/models/operations/listaccountassessments_response.rb"
43
+ autoload :ListAccountCredentialsRequest, "no_response/models/operations/listaccountcredentials_request.rb"
44
+ autoload :ListAccountCredentialsResponse, "no_response/models/operations/listaccountcredentials_response.rb"
45
+ autoload :ListAccountOutcomesRequest, "no_response/models/operations/listaccountoutcomes_request.rb"
46
+ autoload :ListAccountOutcomesResponse, "no_response/models/operations/listaccountoutcomes_response.rb"
33
47
  autoload :ListAccountsRequest, "no_response/models/operations/listaccounts_request.rb"
34
48
  autoload :ListAccountsResponse, "no_response/models/operations/listaccounts_response.rb"
35
49
  autoload :ListIntegrationsResponse, "no_response/models/operations/listintegrations_response.rb"
@@ -37,10 +51,14 @@ module NoResponse
37
51
  autoload :ListKeysResponse, "no_response/models/operations/listkeys_response.rb"
38
52
  autoload :ListListEntriesRequest, "no_response/models/operations/listlistentries_request.rb"
39
53
  autoload :ListListEntriesResponse, "no_response/models/operations/listlistentries_response.rb"
54
+ autoload :ListRequestDiagnosticsRequest, "no_response/models/operations/listrequestdiagnostics_request.rb"
55
+ autoload :ListRequestDiagnosticsResponse, "no_response/models/operations/listrequestdiagnostics_response.rb"
40
56
  autoload :ListWebhookDeliveriesRequest, "no_response/models/operations/listwebhookdeliveries_request.rb"
41
57
  autoload :ListWebhookDeliveriesResponse, "no_response/models/operations/listwebhookdeliveries_response.rb"
42
58
  autoload :ListWebhookEndpointsResponse, "no_response/models/operations/listwebhookendpoints_response.rb"
43
59
  autoload :QueryAccountAssessmentsResponse, "no_response/models/operations/queryaccountassessments_response.rb"
60
+ autoload :RecordAccountOutcomeRequest, "no_response/models/operations/recordaccountoutcome_request.rb"
61
+ autoload :RecordAccountOutcomeResponse, "no_response/models/operations/recordaccountoutcome_response.rb"
44
62
  autoload :RecordAssessmentOutcomeRequest, "no_response/models/operations/recordassessmentoutcome_request.rb"
45
63
  autoload :RecordAssessmentOutcomeResponse, "no_response/models/operations/recordassessmentoutcome_response.rb"
46
64
  autoload :RecordEnforcementRequest, "no_response/models/operations/recordenforcement_request.rb"
@@ -49,6 +67,8 @@ module NoResponse
49
67
  autoload :RecordKeyUsageResponse, "no_response/models/operations/recordkeyusage_response.rb"
50
68
  autoload :ReplayWebhookDeliveryRequest, "no_response/models/operations/replaywebhookdelivery_request.rb"
51
69
  autoload :ReplayWebhookDeliveryResponse, "no_response/models/operations/replaywebhookdelivery_response.rb"
70
+ autoload :RetireAccountCredentialRequest, "no_response/models/operations/retireaccountcredential_request.rb"
71
+ autoload :RetireAccountCredentialResponse, "no_response/models/operations/retireaccountcredential_response.rb"
52
72
  autoload :RevokeKeyRequest, "no_response/models/operations/revokekey_request.rb"
53
73
  autoload :RevokeKeyResponse, "no_response/models/operations/revokekey_response.rb"
54
74
  autoload :RotateApiKeyResponse, "no_response/models/operations/rotateapikey_response.rb"
@@ -56,6 +76,7 @@ module NoResponse
56
76
  autoload :RotateIntegrationSecretResponse, "no_response/models/operations/rotateintegrationsecret_response.rb"
57
77
  autoload :RotateWebhookSigningKeyRequest, "no_response/models/operations/rotatewebhooksigningkey_request.rb"
58
78
  autoload :RotateWebhookSigningKeyResponse, "no_response/models/operations/rotatewebhooksigningkey_response.rb"
79
+ autoload :SearchAssessmentsResponse, "no_response/models/operations/searchassessments_response.rb"
59
80
  autoload :SendWebhookTestEventRequest, "no_response/models/operations/sendwebhooktestevent_request.rb"
60
81
  autoload :SendWebhookTestEventResponse, "no_response/models/operations/sendwebhooktestevent_response.rb"
61
82
  autoload :UpdateSettingsRequest, "no_response/models/operations/updatesettings_request.rb"
@@ -0,0 +1,83 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Binding appends an assessment revision and preserves earlier versions. Continuations use the same assessment. Erasing either the provisional or canonical name erases the canonical account, including the bound assessment.
8
+ class AccountBinding
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Opaque, server-assigned assessment id: 'asm_' and a 26-character Crockford base32 ULID. Unique within the workspace; another workspace's assessment id answers 404.
13
+ field(
14
+ :assessment_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
17
+ )
18
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
19
+ field(
20
+ :provisional_account_id,
21
+ ::String,
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("provisional_account_id"), required: true}}
23
+ )
24
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
25
+ field(
26
+ :account_id,
27
+ ::String,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("account_id"), required: true}}
29
+ )
30
+ # Monotonic revision of this assessment. 1 on the synchronous answer; each material change while the assessment is served (an async continuation settling a source, a change of recommendation, confidence or status) increments it. Expiry does not increment it: an expired assessment is gone, not revised, and the expiry webhook carries the last served version.
31
+ field(
32
+ :assessment_version,
33
+ ::Integer,
34
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_version"), required: true}}
35
+ )
36
+
37
+ field(
38
+ :created_at,
39
+ ::String,
40
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("created_at"), required: true}}
41
+ )
42
+
43
+ field(
44
+ :actor,
45
+ Models::Shared::AccountBindingActor,
46
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("actor"), required: true}}
47
+ )
48
+
49
+ sig {
50
+ params(
51
+ assessment_id: ::String,
52
+ provisional_account_id: ::String,
53
+ account_id: ::String,
54
+ assessment_version: ::Integer,
55
+ created_at: ::String,
56
+ actor: Models::Shared::AccountBindingActor
57
+ )
58
+ .void
59
+ }
60
+ def initialize(assessment_id:, provisional_account_id:, account_id:, assessment_version:, created_at:, actor:)
61
+ @assessment_id = assessment_id
62
+ @provisional_account_id = provisional_account_id
63
+ @account_id = account_id
64
+ @assessment_version = assessment_version
65
+ @created_at = created_at
66
+ @actor = actor
67
+ end
68
+
69
+ sig { params(other: T.untyped).returns(T::Boolean) }
70
+ def ==(other)
71
+ return false unless other.is_a?(self.class)
72
+ return false unless @assessment_id == other.assessment_id
73
+ return false unless @provisional_account_id == other.provisional_account_id
74
+ return false unless @account_id == other.account_id
75
+ return false unless @assessment_version == other.assessment_version
76
+ return false unless @created_at == other.created_at
77
+ return false unless @actor == other.actor
78
+ true
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AccountBinding
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AccountBinding
9
+ def assessment_id
10
+ end
11
+
12
+ def assessment_id=(str_)
13
+ end
14
+
15
+ def provisional_account_id
16
+ end
17
+
18
+ def provisional_account_id=(str_)
19
+ end
20
+
21
+ def account_id
22
+ end
23
+
24
+ def account_id=(str_)
25
+ end
26
+
27
+ def assessment_version
28
+ end
29
+
30
+ def assessment_version=(str_)
31
+ end
32
+
33
+ def created_at
34
+ end
35
+
36
+ def created_at=(str_)
37
+ end
38
+
39
+ def actor
40
+ end
41
+
42
+ def actor=(str_)
43
+ end
44
+ end
@@ -0,0 +1,40 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class AccountBindingActor
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field(
13
+ :key_id,
14
+ ::String,
15
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("key_id"), required: true}}
16
+ )
17
+
18
+ field :type, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("type"), required: true}}
19
+
20
+ sig { params(key_id: ::String, type: ::String).void }
21
+ def initialize(key_id:, type: "api_key")
22
+ @key_id = key_id
23
+ unless type == "api_key"
24
+ raise ArgumentError, "Invalid value for type"
25
+ end
26
+
27
+ @type = "api_key"
28
+ end
29
+
30
+ sig { params(other: T.untyped).returns(T::Boolean) }
31
+ def ==(other)
32
+ return false unless other.is_a?(self.class)
33
+ return false unless @key_id == other.key_id
34
+ return false unless @type == other.type
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AccountBindingActor
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AccountBindingActor
9
+ def key_id
10
+ end
11
+
12
+ def key_id=(str_)
13
+ end
14
+
15
+ def type
16
+ end
17
+
18
+ def type=(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 Shared
7
+ # One-time association to an opaque stable customer account. The assessment is its natural idempotency key. Repeating the same binding returns its first receipt; a conflicting target is refused. No arbitrary account merging.
8
+ class AccountBindingRequest
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
+ field(
14
+ :account_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("account_id"), required: true}}
17
+ )
18
+
19
+ sig { params(account_id: ::String).void }
20
+ def initialize(account_id:)
21
+ @account_id = account_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 @account_id == other.account_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::Shared::AccountBindingRequest
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AccountBindingRequest
9
+ def account_id
10
+ end
11
+
12
+ def account_id=(str_)
13
+ end
14
+ end
@@ -0,0 +1,94 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Retrieve the account decision at one recorded risk version. The answer uses the original assessment and account-specific risk inputs. Earlier versions that were not captured return 404. The assessment version, policy version and account calculation version identify the decision.
8
+ class AccountDecisionSnapshot
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Body of the 200 answer to GET /v1/accounts/{account_id}: the one current risk of one of the calling workspace's accounts. It is the risk of the account's latest assessment that has a decision (status complete or partial), by created_at and then assessment_id, scored exactly as GET /v1/assessments/{assessment_id} scores that assessment, plus the account's own reason shared_api_key when a key issued to the account was used from many IP addresses or countries (POST /v1/key_usage/batches). Its assessments are the account's history (GET /v1/accounts/{account_id}/assessments).
13
+ field(
14
+ :account,
15
+ Models::Shared::Account,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("account"), required: true}}
17
+ )
18
+ # Monotonic revision of this assessment. 1 on the synchronous answer; each material change while the assessment is served (an async continuation settling a source, a change of recommendation, confidence or status) increments it. Expiry does not increment it: an expired assessment is gone, not revised, and the expiry webhook carries the last served version.
19
+ field(
20
+ :assessment_version,
21
+ ::Integer,
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_version"), required: true}}
23
+ )
24
+ # Version of the hand-authored heuristic policy that produced the recommendation, for example 'risk-2026-10.7'. A workspace threshold override adds a +t<N> suffix, e.g. 'risk-2026-10.7+t3'.
25
+ field(
26
+ :policy_version,
27
+ ::String,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("policy_version"), required: true}}
29
+ )
30
+
31
+ field(
32
+ :changed_at,
33
+ ::String,
34
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("changed_at"), required: true}}
35
+ )
36
+
37
+ field(
38
+ :overlay_version,
39
+ ::Integer,
40
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("overlay_version"), required: true}}
41
+ )
42
+ # Opaque, server-assigned id of one recorded outcome: 'out_' and a 26-character Crockford base32 ULID. Unique within the workspace.
43
+ field(
44
+ :feedback_outcome_id,
45
+ Crystalline::Nilable.new(::String),
46
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("feedback_outcome_id")}}
47
+ )
48
+
49
+ sig {
50
+ params(
51
+ account: Models::Shared::Account,
52
+ assessment_version: ::Integer,
53
+ policy_version: ::String,
54
+ changed_at: ::String,
55
+ overlay_version: ::Integer,
56
+ feedback_outcome_id: T.nilable(::String)
57
+ )
58
+ .void
59
+ }
60
+ def initialize(
61
+ account:,
62
+ assessment_version:,
63
+ policy_version:,
64
+ changed_at:,
65
+ overlay_version: 1,
66
+ feedback_outcome_id: nil
67
+ )
68
+ @account = account
69
+ @assessment_version = assessment_version
70
+ @policy_version = policy_version
71
+ @changed_at = changed_at
72
+ unless overlay_version == 1
73
+ raise ArgumentError, "Invalid value for overlay_version"
74
+ end
75
+
76
+ @overlay_version = 1
77
+ @feedback_outcome_id = feedback_outcome_id
78
+ end
79
+
80
+ sig { params(other: T.untyped).returns(T::Boolean) }
81
+ def ==(other)
82
+ return false unless other.is_a?(self.class)
83
+ return false unless @account == other.account
84
+ return false unless @assessment_version == other.assessment_version
85
+ return false unless @policy_version == other.policy_version
86
+ return false unless @changed_at == other.changed_at
87
+ return false unless @overlay_version == other.overlay_version
88
+ return false unless @feedback_outcome_id == other.feedback_outcome_id
89
+ true
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::AccountDecisionSnapshot
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::AccountDecisionSnapshot
9
+ def account
10
+ end
11
+
12
+ def account=(str_)
13
+ end
14
+
15
+ def assessment_version
16
+ end
17
+
18
+ def assessment_version=(str_)
19
+ end
20
+
21
+ def policy_version
22
+ end
23
+
24
+ def policy_version=(str_)
25
+ end
26
+
27
+ def changed_at
28
+ end
29
+
30
+ def changed_at=(str_)
31
+ end
32
+
33
+ def overlay_version
34
+ end
35
+
36
+ def overlay_version=(str_)
37
+ end
38
+
39
+ def feedback_outcome_id
40
+ end
41
+
42
+ def feedback_outcome_id=(str_)
43
+ end
44
+ end
@@ -0,0 +1,178 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Retrieve one consistent snapshot of retained customer-accessible records, including assessment revisions, account decisions, feedback, key associations, enforcements and request diagnostics. Secrets, restricted source information, other customers' data and legacy free-text notes are excluded. The same standard/detailed permissions apply. An export exceeding 10000 records or 8 MiB returns export_too_large without a partial result. Historical decisions that were not captured are identified as an exclusion.
8
+ class AccountExport
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Your own opaque identifier for the account being checked, scoped to your workspace. Use an id you mint, with no direct identifier (email, phone, name or national id) in it. '|' is accepted so an Auth0 user id such as 'auth0|64abc' passes unchanged; '@', '+', '$' and whitespace are refused by the pattern, as is an exact-shape JWT; a hex digest such as a SHA-256 is allowed, because hashing an internal id is a common pseudonymous scheme. A value such as '07700900123' or 'jane.doe.gmail.com' cannot be told apart from an opaque id. It travels in bodies, and in a URL only as the path segment of GET /v1/accounts/{account_id} and its /assessments. An assessment requested by a provider hook at pre_registration, which has no account yet, carries the server-issued account_id pre: followed by its assessment_id.
13
+ field(
14
+ :account_id,
15
+ ::String,
16
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("account_id"), required: true}}
17
+ )
18
+
19
+ field(
20
+ :exported_at,
21
+ ::String,
22
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("exported_at"), required: true}}
23
+ )
24
+
25
+ field(
26
+ :current_risk_version,
27
+ ::Integer,
28
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("current_risk_version"), required: true}}
29
+ )
30
+
31
+ field(
32
+ :assessments,
33
+ Crystalline::Array.new(Models::Shared::AssessmentRevision),
34
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessments"), required: true}}
35
+ )
36
+
37
+ field(
38
+ :decisions,
39
+ Crystalline::Array.new(Models::Shared::AccountDecisionSnapshot),
40
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("decisions"), required: true}}
41
+ )
42
+
43
+ field(
44
+ :outcomes,
45
+ Crystalline::Array.new(Models::Shared::AccountOutcome),
46
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("outcomes"), required: true}}
47
+ )
48
+
49
+ field(
50
+ :assessment_outcomes,
51
+ Crystalline::Array.new(Models::Shared::ExportAssessmentOutcome),
52
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_outcomes"), required: true}}
53
+ )
54
+
55
+ field(
56
+ :credentials,
57
+ Crystalline::Array.new(Models::Shared::CredentialAssociation),
58
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("credentials"), required: true}}
59
+ )
60
+
61
+ field(
62
+ :bindings,
63
+ Crystalline::Array.new(Models::Shared::AccountBinding),
64
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("bindings"), required: true}}
65
+ )
66
+
67
+ field(
68
+ :enforcements,
69
+ Crystalline::Array.new(Models::Shared::Enforcement),
70
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("enforcements"), required: true}}
71
+ )
72
+
73
+ field(
74
+ :requests,
75
+ Crystalline::Array.new(Models::Shared::RequestDiagnostic),
76
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("requests"), required: true}}
77
+ )
78
+
79
+ field(
80
+ :exclusions,
81
+ Crystalline::Array.new(Models::Shared::Exclusion),
82
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("exclusions"), required: true}}
83
+ )
84
+ # Version of the body shape.
85
+ field(
86
+ :schema_version,
87
+ ::String,
88
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("schema_version"), required: true}}
89
+ )
90
+
91
+ field(
92
+ :complete,
93
+ Crystalline::Boolean.new,
94
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("complete"), required: true}}
95
+ )
96
+
97
+ sig {
98
+ params(
99
+ account_id: ::String,
100
+ exported_at: ::String,
101
+ current_risk_version: ::Integer,
102
+ assessments: T::Array[Models::Shared::AssessmentRevision],
103
+ decisions: T::Array[Models::Shared::AccountDecisionSnapshot],
104
+ outcomes: T::Array[Models::Shared::AccountOutcome],
105
+ assessment_outcomes: T::Array[Models::Shared::ExportAssessmentOutcome],
106
+ credentials: T::Array[Models::Shared::CredentialAssociation],
107
+ bindings: T::Array[Models::Shared::AccountBinding],
108
+ enforcements: T::Array[Models::Shared::Enforcement],
109
+ requests: T::Array[Models::Shared::RequestDiagnostic],
110
+ exclusions: T::Array[Models::Shared::Exclusion],
111
+ schema_version: ::String,
112
+ complete: T::Boolean
113
+ )
114
+ .void
115
+ }
116
+ def initialize(
117
+ account_id:,
118
+ exported_at:,
119
+ current_risk_version:,
120
+ assessments:,
121
+ decisions:,
122
+ outcomes:,
123
+ assessment_outcomes:,
124
+ credentials:,
125
+ bindings:,
126
+ enforcements:,
127
+ requests:,
128
+ exclusions:,
129
+ schema_version: "1",
130
+ complete: true
131
+ )
132
+ @account_id = account_id
133
+ @exported_at = exported_at
134
+ @current_risk_version = current_risk_version
135
+ @assessments = assessments
136
+ @decisions = decisions
137
+ @outcomes = outcomes
138
+ @assessment_outcomes = assessment_outcomes
139
+ @credentials = credentials
140
+ @bindings = bindings
141
+ @enforcements = enforcements
142
+ @requests = requests
143
+ @exclusions = exclusions
144
+ unless schema_version == "1"
145
+ raise ArgumentError, "Invalid value for schema_version"
146
+ end
147
+
148
+ @schema_version = "1"
149
+ unless complete == true
150
+ raise ArgumentError, "Invalid value for complete"
151
+ end
152
+
153
+ @complete = true
154
+ end
155
+
156
+ sig { params(other: T.untyped).returns(T::Boolean) }
157
+ def ==(other)
158
+ return false unless other.is_a?(self.class)
159
+ return false unless @account_id == other.account_id
160
+ return false unless @exported_at == other.exported_at
161
+ return false unless @current_risk_version == other.current_risk_version
162
+ return false unless @assessments == other.assessments
163
+ return false unless @decisions == other.decisions
164
+ return false unless @outcomes == other.outcomes
165
+ return false unless @assessment_outcomes == other.assessment_outcomes
166
+ return false unless @credentials == other.credentials
167
+ return false unless @bindings == other.bindings
168
+ return false unless @enforcements == other.enforcements
169
+ return false unless @requests == other.requests
170
+ return false unless @exclusions == other.exclusions
171
+ return false unless @schema_version == other.schema_version
172
+ return false unless @complete == other.complete
173
+ true
174
+ end
175
+ end
176
+ end
177
+ end
178
+ end