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
@@ -0,0 +1,26 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::CredentialPage
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::CredentialPage
9
+ def account_id
10
+ end
11
+
12
+ def account_id=(str_)
13
+ end
14
+
15
+ def items
16
+ end
17
+
18
+ def items=(str_)
19
+ end
20
+
21
+ def next_cursor
22
+ end
23
+
24
+ def next_cursor=(str_)
25
+ end
26
+ end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Associate the SHA-256 of a high-entropy key issued by your service. Send the hash instead of the key. Repeating a hash returns its original association, including its retirement state. A hash associated with another account returns a conflict.
8
+ class CredentialRequest
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field(
13
+ :sha256,
14
+ ::String,
15
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("sha256"), required: true}}
16
+ )
17
+
18
+ sig { params(sha256: ::String).void }
19
+ def initialize(sha256:)
20
+ @sha256 = sha256
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 @sha256 == other.sha256
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::CredentialRequest
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::CredentialRequest
9
+ def sha256
10
+ end
11
+
12
+ def sha256=(str_)
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Decision - The decision of the assessment's latest stored revision: block when its stored risk.block is true, otherwise its recommendation. This is not the account's current decision or held-admission state. Combined with recommendation using AND.
8
+ class Decision < T::Enum
9
+ enums do
10
+ ALLOW = new("allow")
11
+ STEP_UP = new("step_up")
12
+ REVIEW = new("review")
13
+ BLOCK = new("block")
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Decision
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Decision
9
+ end
@@ -0,0 +1,112 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # The decision prepared for one HTTP attempt. Its account field preserves the account decision returned for that attempt, even after subsequent changes.
8
+ class DecisionReceipt
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
+ # 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
+ # The event an assessment is made for: account_creation (a user creates an account), login (a user returns to an existing account) or purchase (a payment or a credit grant). The account's risk is reported with the decision for this flow.
25
+ field(
26
+ :flow,
27
+ Models::Shared::Flow,
28
+ {
29
+ 'format_json': {
30
+ 'letter_case': ::NoResponse::Utils.field_name("flow"),
31
+ required: true,
32
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Flow, false)
33
+ }
34
+ }
35
+ )
36
+ # complete: final; nothing is still running. A lane that failed or missed its 10 s deadline stays listed in incomplete_sources, and confidence is lower. partial: a recommendation exists and at least one lane is still running or did not settle (see incomplete_sources). pending: nothing usable before the deadline; no recommendation yet, poll or wait for the webhook.
37
+ field(
38
+ :status,
39
+ Models::Shared::Status,
40
+ {
41
+ 'format_json': {
42
+ 'letter_case': ::NoResponse::Utils.field_name("status"),
43
+ required: true,
44
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Status, false)
45
+ }
46
+ }
47
+ )
48
+ # 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'.
49
+ field(
50
+ :policy_version,
51
+ Crystalline::Nilable.new(::String),
52
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("policy_version")}}
53
+ )
54
+
55
+ field(
56
+ :score,
57
+ Crystalline::Nilable.new(::Integer),
58
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("score")}}
59
+ )
60
+ # 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).
61
+ field(
62
+ :account,
63
+ Crystalline::Nilable.new(Models::Shared::Account),
64
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("account")}}
65
+ )
66
+
67
+ sig {
68
+ params(
69
+ assessment_id: ::String,
70
+ assessment_version: ::Integer,
71
+ flow: Models::Shared::Flow,
72
+ status: Models::Shared::Status,
73
+ policy_version: T.nilable(::String),
74
+ score: T.nilable(::Integer),
75
+ account: T.nilable(Models::Shared::Account)
76
+ )
77
+ .void
78
+ }
79
+ def initialize(
80
+ assessment_id:,
81
+ assessment_version:,
82
+ flow:,
83
+ status:,
84
+ policy_version: nil,
85
+ score: nil,
86
+ account: nil
87
+ )
88
+ @assessment_id = assessment_id
89
+ @assessment_version = assessment_version
90
+ @flow = flow
91
+ @status = status
92
+ @policy_version = policy_version
93
+ @score = score
94
+ @account = account
95
+ end
96
+
97
+ sig { params(other: T.untyped).returns(T::Boolean) }
98
+ def ==(other)
99
+ return false unless other.is_a?(self.class)
100
+ return false unless @assessment_id == other.assessment_id
101
+ return false unless @assessment_version == other.assessment_version
102
+ return false unless @flow == other.flow
103
+ return false unless @status == other.status
104
+ return false unless @policy_version == other.policy_version
105
+ return false unless @score == other.score
106
+ return false unless @account == other.account
107
+ true
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,50 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::DecisionReceipt
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::DecisionReceipt
9
+ def assessment_id
10
+ end
11
+
12
+ def assessment_id=(str_)
13
+ end
14
+
15
+ def assessment_version
16
+ end
17
+
18
+ def assessment_version=(str_)
19
+ end
20
+
21
+ def flow
22
+ end
23
+
24
+ def flow=(str_)
25
+ end
26
+
27
+ def status
28
+ end
29
+
30
+ def status=(str_)
31
+ end
32
+
33
+ def policy_version
34
+ end
35
+
36
+ def policy_version=(str_)
37
+ end
38
+
39
+ def score
40
+ end
41
+
42
+ def score=(str_)
43
+ end
44
+
45
+ def account
46
+ end
47
+
48
+ def account=(str_)
49
+ end
50
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+
8
+ class Exclusion
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ EXPIRED_OR_ERASED_RECORDS = new("expired_or_erased_records")
12
+ SECRETS_AND_CREDENTIAL_DIGESTS = new("secrets_and_credential_digests")
13
+ PRIVATE_SOURCE_AND_WORK_PAYLOADS = new("private_source_and_work_payloads")
14
+ CROSS_CUSTOMER_DATA = new("cross_customer_data")
15
+ LEGACY_OUTCOME_NOTES = new("legacy_outcome_notes")
16
+ UNCAPTURED_HISTORICAL_DECISIONS = new("uncaptured_historical_decisions")
17
+ end
18
+
19
+ open!
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Exclusion
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Exclusion
9
+ end
@@ -0,0 +1,85 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Structured fields of a retained per-assessment outcome. Legacy notes remain private as promised by the existing outcome contract.
8
+ class ExportAssessmentOutcome
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # Opaque, server-assigned id of one recorded outcome: 'out_' and a 26-character Crockford base32 ULID. Unique within the workspace.
13
+ field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
14
+ # Opaque, server-assigned assessment id: 'asm_' and a 26-character Crockford base32 ULID. Unique within the workspace; another workspace's assessment id answers 404.
15
+ field(
16
+ :assessment_id,
17
+ ::String,
18
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("assessment_id"), required: true}}
19
+ )
20
+ # What the provider later learned about the assessed account. confirmed_abuse, account_takeover and chargeback report abuse; false_positive and legitimate withdraw an earlier abuse report of this workspace for the assessment; unknown is recorded only. Outcomes are append-only and the latest one recorded for an assessment wins.
21
+ field(
22
+ :outcome,
23
+ Models::Shared::Outcome,
24
+ {
25
+ 'format_json': {
26
+ 'letter_case': ::NoResponse::Utils.field_name("outcome"),
27
+ required: true,
28
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Outcome, false)
29
+ }
30
+ }
31
+ )
32
+
33
+ field(
34
+ :observed_at,
35
+ ::String,
36
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("observed_at"), required: true}}
37
+ )
38
+
39
+ field(
40
+ :received_at,
41
+ ::String,
42
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("received_at"), required: true}}
43
+ )
44
+ # Your own opaque reference for the outcome, such as a case or ticket id. Stored as given and not interpreted; keep direct identifiers out of it.
45
+ field(
46
+ :external_ref,
47
+ Crystalline::Nilable.new(::String),
48
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("external_ref")}}
49
+ )
50
+
51
+ sig {
52
+ params(
53
+ id: ::String,
54
+ assessment_id: ::String,
55
+ outcome: Models::Shared::Outcome,
56
+ observed_at: ::String,
57
+ received_at: ::String,
58
+ external_ref: T.nilable(::String)
59
+ )
60
+ .void
61
+ }
62
+ def initialize(id:, assessment_id:, outcome:, observed_at:, received_at:, external_ref: nil)
63
+ @id = id
64
+ @assessment_id = assessment_id
65
+ @outcome = outcome
66
+ @observed_at = observed_at
67
+ @received_at = received_at
68
+ @external_ref = external_ref
69
+ end
70
+
71
+ sig { params(other: T.untyped).returns(T::Boolean) }
72
+ def ==(other)
73
+ return false unless other.is_a?(self.class)
74
+ return false unless @id == other.id
75
+ return false unless @assessment_id == other.assessment_id
76
+ return false unless @outcome == other.outcome
77
+ return false unless @observed_at == other.observed_at
78
+ return false unless @received_at == other.received_at
79
+ return false unless @external_ref == other.external_ref
80
+ true
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,44 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ExportAssessmentOutcome
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ExportAssessmentOutcome
9
+ def id
10
+ end
11
+
12
+ def id=(str_)
13
+ end
14
+
15
+ def assessment_id
16
+ end
17
+
18
+ def assessment_id=(str_)
19
+ end
20
+
21
+ def outcome
22
+ end
23
+
24
+ def outcome=(str_)
25
+ end
26
+
27
+ def observed_at
28
+ end
29
+
30
+ def observed_at=(str_)
31
+ end
32
+
33
+ def received_at
34
+ end
35
+
36
+ def received_at=(str_)
37
+ end
38
+
39
+ def external_ref
40
+ end
41
+
42
+ def external_ref=(str_)
43
+ end
44
+ end
@@ -57,6 +57,7 @@ module NoResponse
57
57
  BREACH_SHARED_IP = new("breach_shared_ip")
58
58
  NATIONALITY_MISMATCH = new("nationality_mismatch")
59
59
  MINOR_IDENTITY = new("minor_identity")
60
+ REPORTED_ACCOUNT_ABUSE = new("reported_account_abuse")
60
61
  end
61
62
 
62
63
  open!
@@ -0,0 +1,145 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # One authenticated HTTP attempt. An attempt id is independent of the caller correlation id. No raw body, path parameter, credential or source payload is retained. write_complete means the server wrote/flushed its response, not proof the client processed it. Collection is bounded best effort; ii_signup_request_diagnostic_failures_total exposes gaps. Retained for seven days or the shorter environment retention.
8
+ class RequestDiagnostic
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :id, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("id"), required: true}}
13
+
14
+ field(
15
+ :request_id,
16
+ ::String,
17
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("request_id"), required: true}}
18
+ )
19
+
20
+ field(
21
+ :route,
22
+ ::String,
23
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("route"), required: true}}
24
+ )
25
+
26
+ field(
27
+ :http_status,
28
+ ::Integer,
29
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("http_status"), required: true}}
30
+ )
31
+
32
+ field(
33
+ :duration_ms,
34
+ ::Integer,
35
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("duration_ms"), required: true}}
36
+ )
37
+
38
+ field(
39
+ :started_at,
40
+ ::String,
41
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("started_at"), required: true}}
42
+ )
43
+
44
+ field(
45
+ :completed_at,
46
+ ::String,
47
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("completed_at"), required: true}}
48
+ )
49
+
50
+ field(
51
+ :expires_at,
52
+ ::String,
53
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("expires_at"), required: true}}
54
+ )
55
+
56
+ field(
57
+ :idempotent_replayed,
58
+ Crystalline::Boolean.new,
59
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("idempotent_replayed"), required: true}}
60
+ )
61
+
62
+ field(
63
+ :write_complete,
64
+ Crystalline::Boolean.new,
65
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("write_complete"), required: true}}
66
+ )
67
+
68
+ field(
69
+ :error_code,
70
+ Crystalline::Nilable.new(::String),
71
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("error_code")}}
72
+ )
73
+ # The decision prepared for one HTTP attempt. Its account field preserves the account decision returned for that attempt, even after subsequent changes.
74
+ field(
75
+ :decision,
76
+ Crystalline::Nilable.new(Models::Shared::DecisionReceipt),
77
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("decision")}}
78
+ )
79
+
80
+ sig {
81
+ params(
82
+ id: ::String,
83
+ request_id: ::String,
84
+ route: ::String,
85
+ http_status: ::Integer,
86
+ duration_ms: ::Integer,
87
+ started_at: ::String,
88
+ completed_at: ::String,
89
+ expires_at: ::String,
90
+ idempotent_replayed: T::Boolean,
91
+ write_complete: T::Boolean,
92
+ error_code: T.nilable(::String),
93
+ decision: T.nilable(Models::Shared::DecisionReceipt)
94
+ )
95
+ .void
96
+ }
97
+ def initialize(
98
+ id:,
99
+ request_id:,
100
+ route:,
101
+ http_status:,
102
+ duration_ms:,
103
+ started_at:,
104
+ completed_at:,
105
+ expires_at:,
106
+ idempotent_replayed:,
107
+ write_complete:,
108
+ error_code: nil,
109
+ decision: nil
110
+ )
111
+ @id = id
112
+ @request_id = request_id
113
+ @route = route
114
+ @http_status = http_status
115
+ @duration_ms = duration_ms
116
+ @started_at = started_at
117
+ @completed_at = completed_at
118
+ @expires_at = expires_at
119
+ @idempotent_replayed = idempotent_replayed
120
+ @write_complete = write_complete
121
+ @error_code = error_code
122
+ @decision = decision
123
+ end
124
+
125
+ sig { params(other: T.untyped).returns(T::Boolean) }
126
+ def ==(other)
127
+ return false unless other.is_a?(self.class)
128
+ return false unless @id == other.id
129
+ return false unless @request_id == other.request_id
130
+ return false unless @route == other.route
131
+ return false unless @http_status == other.http_status
132
+ return false unless @duration_ms == other.duration_ms
133
+ return false unless @started_at == other.started_at
134
+ return false unless @completed_at == other.completed_at
135
+ return false unless @expires_at == other.expires_at
136
+ return false unless @idempotent_replayed == other.idempotent_replayed
137
+ return false unless @write_complete == other.write_complete
138
+ return false unless @error_code == other.error_code
139
+ return false unless @decision == other.decision
140
+ true
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,80 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::RequestDiagnostic
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::RequestDiagnostic
9
+ def id
10
+ end
11
+
12
+ def id=(str_)
13
+ end
14
+
15
+ def request_id
16
+ end
17
+
18
+ def request_id=(str_)
19
+ end
20
+
21
+ def route
22
+ end
23
+
24
+ def route=(str_)
25
+ end
26
+
27
+ def http_status
28
+ end
29
+
30
+ def http_status=(str_)
31
+ end
32
+
33
+ def duration_ms
34
+ end
35
+
36
+ def duration_ms=(str_)
37
+ end
38
+
39
+ def started_at
40
+ end
41
+
42
+ def started_at=(str_)
43
+ end
44
+
45
+ def completed_at
46
+ end
47
+
48
+ def completed_at=(str_)
49
+ end
50
+
51
+ def expires_at
52
+ end
53
+
54
+ def expires_at=(str_)
55
+ end
56
+
57
+ def idempotent_replayed
58
+ end
59
+
60
+ def idempotent_replayed=(str_)
61
+ end
62
+
63
+ def write_complete
64
+ end
65
+
66
+ def write_complete=(str_)
67
+ end
68
+
69
+ def error_code
70
+ end
71
+
72
+ def error_code=(str_)
73
+ end
74
+
75
+ def decision
76
+ end
77
+
78
+ def decision=(str_)
79
+ end
80
+ end