noresponse 2.0.17

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 (231) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crystalline/enum.rbi +17 -0
  3. data/lib/crystalline/metadata_fields.rb +263 -0
  4. data/lib/crystalline/module.rb +186 -0
  5. data/lib/crystalline/types.rb +168 -0
  6. data/lib/crystalline/utils.rb +67 -0
  7. data/lib/crystalline.rb +11 -0
  8. data/lib/no_response/assessments.rb +1252 -0
  9. data/lib/no_response/auth.rb +263 -0
  10. data/lib/no_response/issued_credential.rb +21 -0
  11. data/lib/no_response/keys.rb +318 -0
  12. data/lib/no_response/late_results.rb +301 -0
  13. data/lib/no_response/models/callbacks.rb +10 -0
  14. data/lib/no_response/models/errors/apistatuserror.rb +41 -0
  15. data/lib/no_response/models/errors/apistatuserror.rbi +30 -0
  16. data/lib/no_response/models/errors/authenticationerror.rb +108 -0
  17. data/lib/no_response/models/errors/authenticationerror.rbi +56 -0
  18. data/lib/no_response/models/errors/badrequesterror.rb +108 -0
  19. data/lib/no_response/models/errors/badrequesterror.rbi +56 -0
  20. data/lib/no_response/models/errors/conflicterror.rb +108 -0
  21. data/lib/no_response/models/errors/conflicterror.rbi +56 -0
  22. data/lib/no_response/models/errors/notfounderror.rb +108 -0
  23. data/lib/no_response/models/errors/notfounderror.rbi +56 -0
  24. data/lib/no_response/models/errors/permissiondeniederror.rb +108 -0
  25. data/lib/no_response/models/errors/permissiondeniederror.rbi +56 -0
  26. data/lib/no_response/models/errors/ratelimiterror.rb +108 -0
  27. data/lib/no_response/models/errors/ratelimiterror.rbi +56 -0
  28. data/lib/no_response/models/errors.rb +16 -0
  29. data/lib/no_response/models/operations/createassessment_request.rb +36 -0
  30. data/lib/no_response/models/operations/createassessment_request.rbi +20 -0
  31. data/lib/no_response/models/operations/createassessment_response.rb +32 -0
  32. data/lib/no_response/models/operations/createassessment_response.rbi +20 -0
  33. data/lib/no_response/models/operations/getassessment_request.rb +41 -0
  34. data/lib/no_response/models/operations/getassessment_request.rbi +20 -0
  35. data/lib/no_response/models/operations/getassessment_response.rb +32 -0
  36. data/lib/no_response/models/operations/getassessment_response.rbi +20 -0
  37. data/lib/no_response/models/operations/queryaccountassessments_response.rb +44 -0
  38. data/lib/no_response/models/operations/queryaccountassessments_response.rbi +20 -0
  39. data/lib/no_response/models/operations/recordassessmentoutcome_request.rb +52 -0
  40. data/lib/no_response/models/operations/recordassessmentoutcome_request.rbi +26 -0
  41. data/lib/no_response/models/operations/recordassessmentoutcome_response.rb +32 -0
  42. data/lib/no_response/models/operations/recordassessmentoutcome_response.rbi +20 -0
  43. data/lib/no_response/models/operations/rotateapikey_response.rb +32 -0
  44. data/lib/no_response/models/operations/rotateapikey_response.rbi +20 -0
  45. data/lib/no_response/models/operations.rb +17 -0
  46. data/lib/no_response/models/shared/alternate_name.rb +23 -0
  47. data/lib/no_response/models/shared/alternate_name.rbi +9 -0
  48. data/lib/no_response/models/shared/alternate_name_union.rb +23 -0
  49. data/lib/no_response/models/shared/alternate_name_union.rbi +9 -0
  50. data/lib/no_response/models/shared/assessment.rb +235 -0
  51. data/lib/no_response/models/shared/assessment.rbi +116 -0
  52. data/lib/no_response/models/shared/assessmentlist.rb +78 -0
  53. data/lib/no_response/models/shared/assessmentlist.rbi +38 -0
  54. data/lib/no_response/models/shared/assessmentoutcome.rb +61 -0
  55. data/lib/no_response/models/shared/assessmentoutcome.rbi +32 -0
  56. data/lib/no_response/models/shared/assessmentoutcomerequest.rb +71 -0
  57. data/lib/no_response/models/shared/assessmentoutcomerequest.rbi +32 -0
  58. data/lib/no_response/models/shared/assessmentquery.rb +70 -0
  59. data/lib/no_response/models/shared/assessmentquery.rbi +32 -0
  60. data/lib/no_response/models/shared/assessmentrequest.rb +125 -0
  61. data/lib/no_response/models/shared/assessmentrequest.rbi +62 -0
  62. data/lib/no_response/models/shared/assessmentrequestclientcontext.rb +125 -0
  63. data/lib/no_response/models/shared/assessmentrequestclientcontext.rbi +62 -0
  64. data/lib/no_response/models/shared/assessmentrequestidentifiers.rb +74 -0
  65. data/lib/no_response/models/shared/assessmentrequestidentifiers.rbi +38 -0
  66. data/lib/no_response/models/shared/assessmentrequestissuedcredential.rb +33 -0
  67. data/lib/no_response/models/shared/assessmentrequestissuedcredential.rbi +14 -0
  68. data/lib/no_response/models/shared/assessmentrequestpolicycontext.rb +46 -0
  69. data/lib/no_response/models/shared/assessmentrequestpolicycontext.rbi +20 -0
  70. data/lib/no_response/models/shared/assessmenttiming.rb +41 -0
  71. data/lib/no_response/models/shared/assessmenttiming.rbi +20 -0
  72. data/lib/no_response/models/shared/assurancelevel.rb +18 -0
  73. data/lib/no_response/models/shared/assurancelevel.rbi +9 -0
  74. data/lib/no_response/models/shared/authcontext.rb +285 -0
  75. data/lib/no_response/models/shared/authcontext.rbi +152 -0
  76. data/lib/no_response/models/shared/authcontextmfa.rb +55 -0
  77. data/lib/no_response/models/shared/authcontextmfa.rbi +26 -0
  78. data/lib/no_response/models/shared/authenticationerrorcode.rb +18 -0
  79. data/lib/no_response/models/shared/authenticationerrorcode.rbi +9 -0
  80. data/lib/no_response/models/shared/badrequesterrorcode.rb +20 -0
  81. data/lib/no_response/models/shared/badrequesterrorcode.rbi +9 -0
  82. data/lib/no_response/models/shared/band.rb +21 -0
  83. data/lib/no_response/models/shared/band.rbi +9 -0
  84. data/lib/no_response/models/shared/breach.rb +108 -0
  85. data/lib/no_response/models/shared/breach.rbi +56 -0
  86. data/lib/no_response/models/shared/breachexposed.rb +28 -0
  87. data/lib/no_response/models/shared/breachexposed.rbi +9 -0
  88. data/lib/no_response/models/shared/breachkind.rb +24 -0
  89. data/lib/no_response/models/shared/breachkind.rbi +9 -0
  90. data/lib/no_response/models/shared/breachselector.rb +20 -0
  91. data/lib/no_response/models/shared/breachselector.rbi +9 -0
  92. data/lib/no_response/models/shared/breachsummary.rb +109 -0
  93. data/lib/no_response/models/shared/breachsummary.rbi +56 -0
  94. data/lib/no_response/models/shared/confidence.rb +21 -0
  95. data/lib/no_response/models/shared/confidence.rbi +9 -0
  96. data/lib/no_response/models/shared/conflicterrorcode.rb +19 -0
  97. data/lib/no_response/models/shared/conflicterrorcode.rbi +9 -0
  98. data/lib/no_response/models/shared/consistency.rb +85 -0
  99. data/lib/no_response/models/shared/consistency.rbi +32 -0
  100. data/lib/no_response/models/shared/consistencyvalue.rb +21 -0
  101. data/lib/no_response/models/shared/consistencyvalue.rbi +9 -0
  102. data/lib/no_response/models/shared/country.rb +20 -0
  103. data/lib/no_response/models/shared/country.rbi +9 -0
  104. data/lib/no_response/models/shared/email.rb +23 -0
  105. data/lib/no_response/models/shared/email.rbi +9 -0
  106. data/lib/no_response/models/shared/email_union.rb +23 -0
  107. data/lib/no_response/models/shared/email_union.rbi +9 -0
  108. data/lib/no_response/models/shared/failurereason.rb +24 -0
  109. data/lib/no_response/models/shared/failurereason.rbi +9 -0
  110. data/lib/no_response/models/shared/flow.rb +18 -0
  111. data/lib/no_response/models/shared/flow.rbi +9 -0
  112. data/lib/no_response/models/shared/freshness.rb +20 -0
  113. data/lib/no_response/models/shared/freshness.rbi +9 -0
  114. data/lib/no_response/models/shared/hookpoint.rb +19 -0
  115. data/lib/no_response/models/shared/hookpoint.rbi +9 -0
  116. data/lib/no_response/models/shared/identifierkind.rb +21 -0
  117. data/lib/no_response/models/shared/identifierkind.rbi +9 -0
  118. data/lib/no_response/models/shared/incompletereason.rb +23 -0
  119. data/lib/no_response/models/shared/incompletereason.rbi +9 -0
  120. data/lib/no_response/models/shared/incompletesource.rb +53 -0
  121. data/lib/no_response/models/shared/incompletesource.rbi +20 -0
  122. data/lib/no_response/models/shared/ipsummary.rb +61 -0
  123. data/lib/no_response/models/shared/ipsummary.rbi +26 -0
  124. data/lib/no_response/models/shared/ipsummarytype.rb +24 -0
  125. data/lib/no_response/models/shared/ipsummarytype.rbi +9 -0
  126. data/lib/no_response/models/shared/keyrotation.rb +79 -0
  127. data/lib/no_response/models/shared/keyrotation.rbi +44 -0
  128. data/lib/no_response/models/shared/keyrotationrequest.rb +33 -0
  129. data/lib/no_response/models/shared/keyrotationrequest.rbi +14 -0
  130. data/lib/no_response/models/shared/lane.rb +21 -0
  131. data/lib/no_response/models/shared/lane.rbi +9 -0
  132. data/lib/no_response/models/shared/linetype.rb +22 -0
  133. data/lib/no_response/models/shared/linetype.rbi +9 -0
  134. data/lib/no_response/models/shared/location.rb +23 -0
  135. data/lib/no_response/models/shared/location.rbi +9 -0
  136. data/lib/no_response/models/shared/location_union.rb +23 -0
  137. data/lib/no_response/models/shared/location_union.rbi +9 -0
  138. data/lib/no_response/models/shared/name_candidate.rb +23 -0
  139. data/lib/no_response/models/shared/name_candidate.rbi +9 -0
  140. data/lib/no_response/models/shared/name_candidate_union.rb +23 -0
  141. data/lib/no_response/models/shared/name_candidate_union.rbi +9 -0
  142. data/lib/no_response/models/shared/notfounderrorcode.rb +18 -0
  143. data/lib/no_response/models/shared/notfounderrorcode.rbi +9 -0
  144. data/lib/no_response/models/shared/outcome.rb +23 -0
  145. data/lib/no_response/models/shared/outcome.rbi +9 -0
  146. data/lib/no_response/models/shared/permissiondeniederrorcode.rb +18 -0
  147. data/lib/no_response/models/shared/permissiondeniederrorcode.rbi +9 -0
  148. data/lib/no_response/models/shared/phoneenrichment.rb +32 -0
  149. data/lib/no_response/models/shared/phoneenrichment.rbi +14 -0
  150. data/lib/no_response/models/shared/phoneenrichmentfields.rb +451 -0
  151. data/lib/no_response/models/shared/phoneenrichmentfields.rbi +212 -0
  152. data/lib/no_response/models/shared/platform.rb +18 -0
  153. data/lib/no_response/models/shared/platform.rbi +9 -0
  154. data/lib/no_response/models/shared/probleminvalidparam.rb +48 -0
  155. data/lib/no_response/models/shared/probleminvalidparam.rbi +26 -0
  156. data/lib/no_response/models/shared/ratelimiterrorcode.rb +18 -0
  157. data/lib/no_response/models/shared/ratelimiterrorcode.rbi +9 -0
  158. data/lib/no_response/models/shared/reasoncode.rb +52 -0
  159. data/lib/no_response/models/shared/reasoncode.rbi +9 -0
  160. data/lib/no_response/models/shared/reasonidentifier.rb +23 -0
  161. data/lib/no_response/models/shared/reasonidentifier.rbi +9 -0
  162. data/lib/no_response/models/shared/recommendation.rb +20 -0
  163. data/lib/no_response/models/shared/recommendation.rbi +9 -0
  164. data/lib/no_response/models/shared/responsemode.rb +16 -0
  165. data/lib/no_response/models/shared/responsemode.rbi +9 -0
  166. data/lib/no_response/models/shared/risk.rb +171 -0
  167. data/lib/no_response/models/shared/risk.rbi +80 -0
  168. data/lib/no_response/models/shared/riskconfidence.rb +20 -0
  169. data/lib/no_response/models/shared/riskconfidence.rbi +9 -0
  170. data/lib/no_response/models/shared/riskcoverage.rb +49 -0
  171. data/lib/no_response/models/shared/riskcoverage.rbi +26 -0
  172. data/lib/no_response/models/shared/riskdetails.rb +55 -0
  173. data/lib/no_response/models/shared/riskdetails.rbi +26 -0
  174. data/lib/no_response/models/shared/riskdetailsbreachname.rb +40 -0
  175. data/lib/no_response/models/shared/riskdetailsbreachname.rbi +20 -0
  176. data/lib/no_response/models/shared/riskdetailsphonename.rb +40 -0
  177. data/lib/no_response/models/shared/riskdetailsphonename.rbi +20 -0
  178. data/lib/no_response/models/shared/riskreason.rb +67 -0
  179. data/lib/no_response/models/shared/riskreason.rbi +26 -0
  180. data/lib/no_response/models/shared/risksummary.rb +73 -0
  181. data/lib/no_response/models/shared/risksummary.rbi +38 -0
  182. data/lib/no_response/models/shared/risksummaryemail.rb +55 -0
  183. data/lib/no_response/models/shared/risksummaryemail.rbi +26 -0
  184. data/lib/no_response/models/shared/risksummaryphone.rb +69 -0
  185. data/lib/no_response/models/shared/risksummaryphone.rbi +32 -0
  186. data/lib/no_response/models/shared/risksummaryusername.rb +41 -0
  187. data/lib/no_response/models/shared/risksummaryusername.rbi +20 -0
  188. data/lib/no_response/models/shared/scope.rb +21 -0
  189. data/lib/no_response/models/shared/scope.rbi +9 -0
  190. data/lib/no_response/models/shared/security.rb +32 -0
  191. data/lib/no_response/models/shared/security.rbi +14 -0
  192. data/lib/no_response/models/shared/signal.rb +149 -0
  193. data/lib/no_response/models/shared/signal.rbi +68 -0
  194. data/lib/no_response/models/shared/signaloutcome.rb +22 -0
  195. data/lib/no_response/models/shared/signaloutcome.rbi +9 -0
  196. data/lib/no_response/models/shared/social_profile.rb +23 -0
  197. data/lib/no_response/models/shared/social_profile.rbi +9 -0
  198. data/lib/no_response/models/shared/social_profile_union.rb +23 -0
  199. data/lib/no_response/models/shared/social_profile_union.rbi +9 -0
  200. data/lib/no_response/models/shared/status.rb +20 -0
  201. data/lib/no_response/models/shared/status.rbi +9 -0
  202. data/lib/no_response/models/shared/timezone.rb +23 -0
  203. data/lib/no_response/models/shared/timezone.rbi +9 -0
  204. data/lib/no_response/models/shared/timezone_union.rb +23 -0
  205. data/lib/no_response/models/shared/timezone_union.rbi +9 -0
  206. data/lib/no_response/models/shared/transport.rb +17 -0
  207. data/lib/no_response/models/shared/transport.rbi +9 -0
  208. data/lib/no_response/models/shared/website.rb +23 -0
  209. data/lib/no_response/models/shared/website.rbi +9 -0
  210. data/lib/no_response/models/shared/website_union.rb +23 -0
  211. data/lib/no_response/models/shared/website_union.rbi +9 -0
  212. data/lib/no_response/models/shared.rb +92 -0
  213. data/lib/no_response/noresponseclient.rb +110 -0
  214. data/lib/no_response/sdk_hooks/hooks.rb +97 -0
  215. data/lib/no_response/sdk_hooks/idempotency_key_hook.rb +25 -0
  216. data/lib/no_response/sdk_hooks/registration.rb +43 -0
  217. data/lib/no_response/sdk_hooks/types.rb +178 -0
  218. data/lib/no_response/sdkconfiguration.rb +107 -0
  219. data/lib/no_response/sdkconfiguration.rbi +83 -0
  220. data/lib/no_response/utils/forms.rb +230 -0
  221. data/lib/no_response/utils/headers.rb +80 -0
  222. data/lib/no_response/utils/query_params.rb +165 -0
  223. data/lib/no_response/utils/request_bodies.rb +77 -0
  224. data/lib/no_response/utils/retries.rb +137 -0
  225. data/lib/no_response/utils/security.rb +156 -0
  226. data/lib/no_response/utils/url.rb +122 -0
  227. data/lib/no_response/utils/utils.rb +243 -0
  228. data/lib/no_response/wait.rb +66 -0
  229. data/lib/no_response/webhooks.rb +177 -0
  230. data/lib/noresponse.rb +25 -0
  231. metadata +501 -0
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Band - low 0-29, medium 30-59, high 60-84, critical 85-100.
8
+ class Band
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ LOW = new("low")
12
+ MEDIUM = new("medium")
13
+ HIGH = new("high")
14
+ CRITICAL = new("critical")
15
+ end
16
+
17
+ open!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Band
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Band
9
+ end
@@ -0,0 +1,108 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # One breach table that matched, detailed view only. name is the catalogue's display name for the table's site, not the upstream provider. No member carries a record, value, password or hash.
8
+ class Breach
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field :name, ::String, {'format_json': {'letter_case': ::NoResponse::Utils.field_name("name"), required: true}}
13
+ # Who is in the table: site_breach, a site's own users; credential_list, a combolist or compilation; stealer_log, malware or botnet victims; scrape; hacking_forum, a criminal hacking, cracking or carding community; abuse_service, the customers of DDoS-for-hire, account generators, dump or card shops, darknet markets, stalkerware or breach-lookup services; darkweb_site, an onion site of unknown purpose.
14
+ field(
15
+ :kind,
16
+ Models::Shared::BreachKind,
17
+ {
18
+ 'format_json': {
19
+ 'letter_case': ::NoResponse::Utils.field_name("kind"),
20
+ required: true,
21
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::BreachKind, false)
22
+ }
23
+ }
24
+ )
25
+ # The submitted identifier a breach table matched on: email or username. Phone and name are not breach selectors.
26
+ field(
27
+ :matched_on,
28
+ Models::Shared::BreachSelector,
29
+ {
30
+ 'format_json': {
31
+ 'letter_case': ::NoResponse::Utils.field_name("matched_on"),
32
+ required: true,
33
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::BreachSelector, false)
34
+ }
35
+ }
36
+ )
37
+ # The breached site's domain, lower case. Absent when the table has none (a credential list, for example).
38
+ field(
39
+ :domain,
40
+ Crystalline::Nilable.new(::String),
41
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("domain")}}
42
+ )
43
+ # The table's category from its name, lower case (social, gaming, combolist, ...).
44
+ field(
45
+ :category,
46
+ Crystalline::Nilable.new(::String),
47
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("category")}}
48
+ )
49
+ # A breach table's date year.
50
+ field(
51
+ :year,
52
+ Crystalline::Nilable.new(::Integer),
53
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("year")}}
54
+ )
55
+ # Absent when only the year is known.
56
+ field(
57
+ :month,
58
+ Crystalline::Nilable.new(::Integer),
59
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("month")}}
60
+ )
61
+
62
+ field(
63
+ :exposed,
64
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::BreachExposed)),
65
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("exposed")}}
66
+ )
67
+
68
+ sig {
69
+ params(
70
+ name: ::String,
71
+ kind: Models::Shared::BreachKind,
72
+ matched_on: Models::Shared::BreachSelector,
73
+ domain: T.nilable(::String),
74
+ category: T.nilable(::String),
75
+ year: T.nilable(::Integer),
76
+ month: T.nilable(::Integer),
77
+ exposed: T.nilable(T::Array[Models::Shared::BreachExposed])
78
+ )
79
+ .void
80
+ }
81
+ def initialize(name:, kind:, matched_on:, domain: nil, category: nil, year: nil, month: nil, exposed: nil)
82
+ @name = name
83
+ @kind = kind
84
+ @matched_on = matched_on
85
+ @domain = domain
86
+ @category = category
87
+ @year = year
88
+ @month = month
89
+ @exposed = exposed
90
+ end
91
+
92
+ sig { params(other: T.untyped).returns(T::Boolean) }
93
+ def ==(other)
94
+ return false unless other.is_a?(self.class)
95
+ return false unless @name == other.name
96
+ return false unless @kind == other.kind
97
+ return false unless @matched_on == other.matched_on
98
+ return false unless @domain == other.domain
99
+ return false unless @category == other.category
100
+ return false unless @year == other.year
101
+ return false unless @month == other.month
102
+ return false unless @exposed == other.exposed
103
+ true
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Breach
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Breach
9
+ def name
10
+ end
11
+
12
+ def name=(str_)
13
+ end
14
+
15
+ def kind
16
+ end
17
+
18
+ def kind=(str_)
19
+ end
20
+
21
+ def matched_on
22
+ end
23
+
24
+ def matched_on=(str_)
25
+ end
26
+
27
+ def domain
28
+ end
29
+
30
+ def domain=(str_)
31
+ end
32
+
33
+ def category
34
+ end
35
+
36
+ def category=(str_)
37
+ end
38
+
39
+ def year
40
+ end
41
+
42
+ def year=(str_)
43
+ end
44
+
45
+ def month
46
+ end
47
+
48
+ def month=(str_)
49
+ end
50
+
51
+ def exposed
52
+ end
53
+
54
+ def exposed=(str_)
55
+ end
56
+ end
@@ -0,0 +1,28 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # BreachExposed - The kind of data a breach table held beside the identifier. password means a plaintext password was present and password_hash means a hash, salt or token was present. The value itself is not stored or returned; the schema has no member for one.
8
+ class BreachExposed
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ EMAIL = new("email")
12
+ USERNAME = new("username")
13
+ NAME = new("name")
14
+ PASSWORD = new("password")
15
+ PASSWORD_HASH = new("password_hash")
16
+ PHONE = new("phone")
17
+ ADDRESS = new("address")
18
+ DOB = new("dob")
19
+ IP = new("ip")
20
+ PAYMENT = new("payment")
21
+ SECURITY_QA = new("security_qa")
22
+ end
23
+
24
+ open!
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::BreachExposed
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::BreachExposed
9
+ end
@@ -0,0 +1,24 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # BreachKind - Who is in the table: site_breach, a site's own users; credential_list, a combolist or compilation; stealer_log, malware or botnet victims; scrape; hacking_forum, a criminal hacking, cracking or carding community; abuse_service, the customers of DDoS-for-hire, account generators, dump or card shops, darknet markets, stalkerware or breach-lookup services; darkweb_site, an onion site of unknown purpose.
8
+ class BreachKind
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ SITE_BREACH = new("site_breach")
12
+ CREDENTIAL_LIST = new("credential_list")
13
+ STEALER_LOG = new("stealer_log")
14
+ SCRAPE = new("scrape")
15
+ HACKING_FORUM = new("hacking_forum")
16
+ ABUSE_SERVICE = new("abuse_service")
17
+ DARKWEB_SITE = new("darkweb_site")
18
+ end
19
+
20
+ open!
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::BreachKind
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::BreachKind
9
+ end
@@ -0,0 +1,20 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # BreachSelector - The submitted identifier a breach table matched on: email or username. Phone and name are not breach selectors.
8
+ class BreachSelector
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ EMAIL = new("email")
12
+ USERNAME = new("username")
13
+ IP = new("ip")
14
+ end
15
+
16
+ open!
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::BreachSelector
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::BreachSelector
9
+ end
@@ -0,0 +1,109 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Breach facts for one selector. found is the one required member: false is a definite 'in no breach table'. Every other member is optional, and absent makes no claim. No member carries a breach value, password or hash, and unknown members are refused. truncated means the value matched more tables or records than the lookup keeps, so absence-based claims (a missing name match, for example) are withheld; a truncated result is always found.
8
+ class BreachSummary
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ field(
13
+ :found,
14
+ Crystalline::Boolean.new,
15
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("found"), required: true}}
16
+ )
17
+ # Distinct breach tables the value appears in.
18
+ field(
19
+ :breach_count,
20
+ Crystalline::Nilable.new(::Integer),
21
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("breach_count")}}
22
+ )
23
+ # Year of the oldest dated table.
24
+ field(
25
+ :first_year,
26
+ Crystalline::Nilable.new(::Integer),
27
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("first_year")}}
28
+ )
29
+ # Year of the newest dated table.
30
+ field(
31
+ :last_year,
32
+ Crystalline::Nilable.new(::Integer),
33
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("last_year")}}
34
+ )
35
+ # The union of data kinds the matching tables held, without the values.
36
+ field(
37
+ :exposed,
38
+ Crystalline::Nilable.new(Crystalline::Array.new(Models::Shared::BreachExposed)),
39
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("exposed")}}
40
+ )
41
+ # The value is in a credential_list or stealer_log table.
42
+ field(
43
+ :in_credential_lists,
44
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
45
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("in_credential_lists")}}
46
+ )
47
+ # A plaintext password sat next to the value in a table dated two years ago or less, or the value is in a stealer_log table.
48
+ field(
49
+ :recent_password_exposure,
50
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
51
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("recent_password_exposure")}}
52
+ )
53
+
54
+ field(
55
+ :truncated,
56
+ Crystalline::Nilable.new(Crystalline::Boolean.new),
57
+ {'format_json': {'letter_case': ::NoResponse::Utils.field_name("truncated")}}
58
+ )
59
+
60
+ sig {
61
+ params(
62
+ found: T::Boolean,
63
+ breach_count: T.nilable(::Integer),
64
+ first_year: T.nilable(::Integer),
65
+ last_year: T.nilable(::Integer),
66
+ exposed: T.nilable(T::Array[Models::Shared::BreachExposed]),
67
+ in_credential_lists: T.nilable(T::Boolean),
68
+ recent_password_exposure: T.nilable(T::Boolean),
69
+ truncated: T.nilable(T::Boolean)
70
+ )
71
+ .void
72
+ }
73
+ def initialize(
74
+ found:,
75
+ breach_count: nil,
76
+ first_year: nil,
77
+ last_year: nil,
78
+ exposed: nil,
79
+ in_credential_lists: nil,
80
+ recent_password_exposure: nil,
81
+ truncated: nil
82
+ )
83
+ @found = found
84
+ @breach_count = breach_count
85
+ @first_year = first_year
86
+ @last_year = last_year
87
+ @exposed = exposed
88
+ @in_credential_lists = in_credential_lists
89
+ @recent_password_exposure = recent_password_exposure
90
+ @truncated = truncated
91
+ end
92
+
93
+ sig { params(other: T.untyped).returns(T::Boolean) }
94
+ def ==(other)
95
+ return false unless other.is_a?(self.class)
96
+ return false unless @found == other.found
97
+ return false unless @breach_count == other.breach_count
98
+ return false unless @first_year == other.first_year
99
+ return false unless @last_year == other.last_year
100
+ return false unless @exposed == other.exposed
101
+ return false unless @in_credential_lists == other.in_credential_lists
102
+ return false unless @recent_password_exposure == other.recent_password_exposure
103
+ return false unless @truncated == other.truncated
104
+ true
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,56 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::BreachSummary
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::BreachSummary
9
+ def found
10
+ end
11
+
12
+ def found=(str_)
13
+ end
14
+
15
+ def breach_count
16
+ end
17
+
18
+ def breach_count=(str_)
19
+ end
20
+
21
+ def first_year
22
+ end
23
+
24
+ def first_year=(str_)
25
+ end
26
+
27
+ def last_year
28
+ end
29
+
30
+ def last_year=(str_)
31
+ end
32
+
33
+ def exposed
34
+ end
35
+
36
+ def exposed=(str_)
37
+ end
38
+
39
+ def in_credential_lists
40
+ end
41
+
42
+ def in_credential_lists=(str_)
43
+ end
44
+
45
+ def recent_password_exposure
46
+ end
47
+
48
+ def recent_password_exposure=(str_)
49
+ end
50
+
51
+ def truncated
52
+ end
53
+
54
+ def truncated=(str_)
55
+ end
56
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # Confidence - Ordinal confidence in the recommendation under the current policy: low, medium, high or unavailable.
8
+ class Confidence
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ LOW = new("low")
12
+ MEDIUM = new("medium")
13
+ HIGH = new("high")
14
+ UNAVAILABLE = new("unavailable")
15
+ end
16
+
17
+ open!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Confidence
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Confidence
9
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # ConflictErrorCode - Machine codes an HTTP 409 answer can carry.
8
+ class ConflictErrorCode
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ IDEMPOTENCY_KEY_REUSED = new("idempotency_key_reused")
12
+ KEY_ROTATION_IN_PROGRESS = new("key_rotation_in_progress")
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::ConflictErrorCode
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ConflictErrorCode
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
+ # Cross-identifier agreement, computed from facts only. Every member is optional; absent makes no claim.
8
+ class Consistency
9
+ extend T::Sig
10
+ include Crystalline::MetadataFields
11
+
12
+ # How a submitted identifier agrees with what the evidence holds for the other identifiers. unknown is a definite 'cannot tell' (for example a truncated or too-common breach result); absent means the comparison was not made.
13
+ field(
14
+ :name,
15
+ Crystalline::Nilable.new(Models::Shared::ConsistencyValue),
16
+ {
17
+ 'format_json': {
18
+ 'letter_case': ::NoResponse::Utils.field_name("name"),
19
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::ConsistencyValue, true)
20
+ }
21
+ }
22
+ )
23
+ # How a submitted identifier agrees with what the evidence holds for the other identifiers. unknown is a definite 'cannot tell' (for example a truncated or too-common breach result); absent means the comparison was not made.
24
+ field(
25
+ :phone,
26
+ Crystalline::Nilable.new(Models::Shared::ConsistencyValue),
27
+ {
28
+ 'format_json': {
29
+ 'letter_case': ::NoResponse::Utils.field_name("phone"),
30
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::ConsistencyValue, true)
31
+ }
32
+ }
33
+ )
34
+ # How a submitted identifier agrees with what the evidence holds for the other identifiers. unknown is a definite 'cannot tell' (for example a truncated or too-common breach result); absent means the comparison was not made.
35
+ field(
36
+ :ip,
37
+ Crystalline::Nilable.new(Models::Shared::ConsistencyValue),
38
+ {
39
+ 'format_json': {
40
+ 'letter_case': ::NoResponse::Utils.field_name("ip"),
41
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::ConsistencyValue, true)
42
+ }
43
+ }
44
+ )
45
+ # IP country, phone country, breach countries and policy_context.region together.
46
+ field(
47
+ :country,
48
+ Crystalline::Nilable.new(Models::Shared::Country),
49
+ {
50
+ 'format_json': {
51
+ 'letter_case': ::NoResponse::Utils.field_name("country"),
52
+ 'decoder': ::NoResponse::Utils.open_enum_from_string(Models::Shared::Country, true)
53
+ }
54
+ }
55
+ )
56
+
57
+ sig {
58
+ params(
59
+ name: T.nilable(Models::Shared::ConsistencyValue),
60
+ phone: T.nilable(Models::Shared::ConsistencyValue),
61
+ ip: T.nilable(Models::Shared::ConsistencyValue),
62
+ country: T.nilable(Models::Shared::Country)
63
+ )
64
+ .void
65
+ }
66
+ def initialize(name: nil, phone: nil, ip: nil, country: nil)
67
+ @name = name
68
+ @phone = phone
69
+ @ip = ip
70
+ @country = country
71
+ end
72
+
73
+ sig { params(other: T.untyped).returns(T::Boolean) }
74
+ def ==(other)
75
+ return false unless other.is_a?(self.class)
76
+ return false unless @name == other.name
77
+ return false unless @phone == other.phone
78
+ return false unless @ip == other.ip
79
+ return false unless @country == other.country
80
+ true
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,32 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::Consistency
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::Consistency
9
+ def name
10
+ end
11
+
12
+ def name=(str_)
13
+ end
14
+
15
+ def phone
16
+ end
17
+
18
+ def phone=(str_)
19
+ end
20
+
21
+ def ip
22
+ end
23
+
24
+ def ip=(str_)
25
+ end
26
+
27
+ def country
28
+ end
29
+
30
+ def country=(str_)
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ module NoResponse
5
+ module Models
6
+ module Shared
7
+ # ConsistencyValue - How a submitted identifier agrees with what the evidence holds for the other identifiers. unknown is a definite 'cannot tell' (for example a truncated or too-common breach result); absent means the comparison was not made.
8
+ class ConsistencyValue
9
+ include ::Crystalline::Enum
10
+ enums do
11
+ MATCH = new("match")
12
+ PARTIAL = new("partial")
13
+ MISMATCH = new("mismatch")
14
+ UNKNOWN = new("unknown")
15
+ end
16
+
17
+ open!
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+ class NoResponse::Models::Shared::ConsistencyValue
5
+ extend ::Crystalline::MetadataFields::ClassMethods
6
+ end
7
+
8
+ class NoResponse::Models::Shared::ConsistencyValue
9
+ end