prelude-sdk 0.1.0.pre.alpha.2

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 (125) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +352 -0
  4. data/README.md +217 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/prelude_sdk/client.rb +87 -0
  7. data/lib/prelude_sdk/errors.rb +214 -0
  8. data/lib/prelude_sdk/file_part.rb +55 -0
  9. data/lib/prelude_sdk/internal/transport/base_client.rb +555 -0
  10. data/lib/prelude_sdk/internal/transport/pooled_net_requester.rb +209 -0
  11. data/lib/prelude_sdk/internal/type/array_of.rb +167 -0
  12. data/lib/prelude_sdk/internal/type/base_model.rb +536 -0
  13. data/lib/prelude_sdk/internal/type/base_page.rb +55 -0
  14. data/lib/prelude_sdk/internal/type/boolean.rb +77 -0
  15. data/lib/prelude_sdk/internal/type/converter.rb +300 -0
  16. data/lib/prelude_sdk/internal/type/enum.rb +131 -0
  17. data/lib/prelude_sdk/internal/type/file_input.rb +108 -0
  18. data/lib/prelude_sdk/internal/type/hash_of.rb +187 -0
  19. data/lib/prelude_sdk/internal/type/request_parameters.rb +42 -0
  20. data/lib/prelude_sdk/internal/type/union.rb +235 -0
  21. data/lib/prelude_sdk/internal/type/unknown.rb +81 -0
  22. data/lib/prelude_sdk/internal/util.rb +914 -0
  23. data/lib/prelude_sdk/internal.rb +20 -0
  24. data/lib/prelude_sdk/models/lookup_lookup_params.rb +37 -0
  25. data/lib/prelude_sdk/models/lookup_lookup_response.rb +236 -0
  26. data/lib/prelude_sdk/models/transactional_send_params.rb +84 -0
  27. data/lib/prelude_sdk/models/transactional_send_response.rb +81 -0
  28. data/lib/prelude_sdk/models/verification_check_params.rb +69 -0
  29. data/lib/prelude_sdk/models/verification_check_response.rb +67 -0
  30. data/lib/prelude_sdk/models/verification_create_params.rb +388 -0
  31. data/lib/prelude_sdk/models/verification_create_response.rb +148 -0
  32. data/lib/prelude_sdk/models/watch_predict_params.rb +191 -0
  33. data/lib/prelude_sdk/models/watch_predict_response.rb +50 -0
  34. data/lib/prelude_sdk/models/watch_send_events_params.rb +100 -0
  35. data/lib/prelude_sdk/models/watch_send_events_response.rb +41 -0
  36. data/lib/prelude_sdk/models/watch_send_feedbacks_params.rb +229 -0
  37. data/lib/prelude_sdk/models/watch_send_feedbacks_response.rb +41 -0
  38. data/lib/prelude_sdk/models.rb +55 -0
  39. data/lib/prelude_sdk/request_options.rb +77 -0
  40. data/lib/prelude_sdk/resources/lookup.rb +42 -0
  41. data/lib/prelude_sdk/resources/transactional.rb +53 -0
  42. data/lib/prelude_sdk/resources/verification.rb +76 -0
  43. data/lib/prelude_sdk/resources/watch.rb +91 -0
  44. data/lib/prelude_sdk/version.rb +5 -0
  45. data/lib/prelude_sdk.rb +71 -0
  46. data/manifest.yaml +15 -0
  47. data/rbi/prelude_sdk/client.rbi +59 -0
  48. data/rbi/prelude_sdk/errors.rbi +178 -0
  49. data/rbi/prelude_sdk/file_part.rbi +37 -0
  50. data/rbi/prelude_sdk/internal/transport/base_client.rbi +296 -0
  51. data/rbi/prelude_sdk/internal/transport/pooled_net_requester.rbi +80 -0
  52. data/rbi/prelude_sdk/internal/type/array_of.rbi +104 -0
  53. data/rbi/prelude_sdk/internal/type/base_model.rbi +304 -0
  54. data/rbi/prelude_sdk/internal/type/base_page.rbi +42 -0
  55. data/rbi/prelude_sdk/internal/type/boolean.rbi +58 -0
  56. data/rbi/prelude_sdk/internal/type/converter.rbi +162 -0
  57. data/rbi/prelude_sdk/internal/type/enum.rbi +82 -0
  58. data/rbi/prelude_sdk/internal/type/file_input.rbi +59 -0
  59. data/rbi/prelude_sdk/internal/type/hash_of.rbi +104 -0
  60. data/rbi/prelude_sdk/internal/type/request_parameters.rbi +29 -0
  61. data/rbi/prelude_sdk/internal/type/union.rbi +121 -0
  62. data/rbi/prelude_sdk/internal/type/unknown.rbi +58 -0
  63. data/rbi/prelude_sdk/internal/util.rbi +487 -0
  64. data/rbi/prelude_sdk/internal.rbi +18 -0
  65. data/rbi/prelude_sdk/models/lookup_lookup_params.rbi +78 -0
  66. data/rbi/prelude_sdk/models/lookup_lookup_response.rbi +520 -0
  67. data/rbi/prelude_sdk/models/transactional_send_params.rbi +126 -0
  68. data/rbi/prelude_sdk/models/transactional_send_response.rbi +113 -0
  69. data/rbi/prelude_sdk/models/verification_check_params.rbi +140 -0
  70. data/rbi/prelude_sdk/models/verification_check_response.rbi +149 -0
  71. data/rbi/prelude_sdk/models/verification_create_params.rbi +805 -0
  72. data/rbi/prelude_sdk/models/verification_create_response.rbi +336 -0
  73. data/rbi/prelude_sdk/models/watch_predict_params.rbi +382 -0
  74. data/rbi/prelude_sdk/models/watch_predict_response.rbi +96 -0
  75. data/rbi/prelude_sdk/models/watch_send_events_params.rbi +245 -0
  76. data/rbi/prelude_sdk/models/watch_send_events_response.rbi +82 -0
  77. data/rbi/prelude_sdk/models/watch_send_feedbacks_params.rbi +500 -0
  78. data/rbi/prelude_sdk/models/watch_send_feedbacks_response.rbi +86 -0
  79. data/rbi/prelude_sdk/models.rbi +17 -0
  80. data/rbi/prelude_sdk/request_options.rbi +59 -0
  81. data/rbi/prelude_sdk/resources/lookup.rbi +33 -0
  82. data/rbi/prelude_sdk/resources/transactional.rbi +50 -0
  83. data/rbi/prelude_sdk/resources/verification.rbi +61 -0
  84. data/rbi/prelude_sdk/resources/watch.rbi +67 -0
  85. data/rbi/prelude_sdk/version.rbi +5 -0
  86. data/sig/prelude_sdk/client.rbs +32 -0
  87. data/sig/prelude_sdk/errors.rbs +110 -0
  88. data/sig/prelude_sdk/file_part.rbs +21 -0
  89. data/sig/prelude_sdk/internal/transport/base_client.rbs +131 -0
  90. data/sig/prelude_sdk/internal/transport/pooled_net_requester.rbs +45 -0
  91. data/sig/prelude_sdk/internal/type/array_of.rbs +48 -0
  92. data/sig/prelude_sdk/internal/type/base_model.rbs +102 -0
  93. data/sig/prelude_sdk/internal/type/base_page.rbs +24 -0
  94. data/sig/prelude_sdk/internal/type/boolean.rbs +26 -0
  95. data/sig/prelude_sdk/internal/type/converter.rbs +62 -0
  96. data/sig/prelude_sdk/internal/type/enum.rbs +32 -0
  97. data/sig/prelude_sdk/internal/type/file_input.rbs +25 -0
  98. data/sig/prelude_sdk/internal/type/hash_of.rbs +48 -0
  99. data/sig/prelude_sdk/internal/type/request_parameters.rbs +19 -0
  100. data/sig/prelude_sdk/internal/type/union.rbs +52 -0
  101. data/sig/prelude_sdk/internal/type/unknown.rbs +26 -0
  102. data/sig/prelude_sdk/internal/util.rbs +185 -0
  103. data/sig/prelude_sdk/internal.rbs +9 -0
  104. data/sig/prelude_sdk/models/lookup_lookup_params.rbs +38 -0
  105. data/sig/prelude_sdk/models/lookup_lookup_response.rbs +179 -0
  106. data/sig/prelude_sdk/models/transactional_send_params.rbs +73 -0
  107. data/sig/prelude_sdk/models/transactional_send_response.rbs +66 -0
  108. data/sig/prelude_sdk/models/verification_check_params.rbs +61 -0
  109. data/sig/prelude_sdk/models/verification_check_response.rbs +67 -0
  110. data/sig/prelude_sdk/models/verification_create_params.rbs +345 -0
  111. data/sig/prelude_sdk/models/verification_create_response.rbs +136 -0
  112. data/sig/prelude_sdk/models/watch_predict_params.rbs +180 -0
  113. data/sig/prelude_sdk/models/watch_predict_response.rbs +41 -0
  114. data/sig/prelude_sdk/models/watch_send_events_params.rbs +98 -0
  115. data/sig/prelude_sdk/models/watch_send_events_response.rbs +35 -0
  116. data/sig/prelude_sdk/models/watch_send_feedbacks_params.rbs +211 -0
  117. data/sig/prelude_sdk/models/watch_send_feedbacks_response.rbs +35 -0
  118. data/sig/prelude_sdk/models.rbs +15 -0
  119. data/sig/prelude_sdk/request_options.rbs +36 -0
  120. data/sig/prelude_sdk/resources/lookup.rbs +13 -0
  121. data/sig/prelude_sdk/resources/transactional.rbs +19 -0
  122. data/sig/prelude_sdk/resources/verification.rbs +22 -0
  123. data/sig/prelude_sdk/resources/watch.rbs +25 -0
  124. data/sig/prelude_sdk/version.rbs +3 -0
  125. metadata +182 -0
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ [PreludeSDK::Internal::Type::BaseModel, *PreludeSDK::Internal::Type::BaseModel.subclasses].each do |cls|
5
+ cls.define_sorbet_constant!(:OrHash) { T.type_alias { T.any(cls, PreludeSDK::Internal::AnyHash) } }
6
+ end
7
+
8
+ PreludeSDK::Internal::Util.walk_namespaces(PreludeSDK::Models).each do |mod|
9
+ case mod
10
+ in PreludeSDK::Internal::Type::Enum | PreludeSDK::Internal::Type::Union
11
+ mod.constants.each do |name|
12
+ case mod.const_get(name)
13
+ in true | false
14
+ mod.define_sorbet_constant!(:TaggedBoolean) { T.type_alias { T::Boolean } }
15
+ mod.define_sorbet_constant!(:OrBoolean) { T.type_alias { T::Boolean } }
16
+ in Integer
17
+ mod.define_sorbet_constant!(:TaggedInteger) { T.type_alias { Integer } }
18
+ mod.define_sorbet_constant!(:OrInteger) { T.type_alias { Integer } }
19
+ in Float
20
+ mod.define_sorbet_constant!(:TaggedFloat) { T.type_alias { Float } }
21
+ mod.define_sorbet_constant!(:OrFloat) { T.type_alias { Float } }
22
+ in Symbol
23
+ mod.define_sorbet_constant!(:TaggedSymbol) { T.type_alias { Symbol } }
24
+ mod.define_sorbet_constant!(:OrSymbol) { T.type_alias { T.any(Symbol, String) } }
25
+ else
26
+ end
27
+ end
28
+ else
29
+ end
30
+ end
31
+
32
+ PreludeSDK::Internal::Util.walk_namespaces(PreludeSDK::Models)
33
+ .lazy
34
+ .grep(PreludeSDK::Internal::Type::Union)
35
+ .each do |mod|
36
+ const = :Variants
37
+ next if mod.sorbet_constant_defined?(const)
38
+
39
+ mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
+ end
41
+
42
+ LookupLookupParams = PreludeSDK::Models::LookupLookupParams
43
+
44
+ TransactionalSendParams = PreludeSDK::Models::TransactionalSendParams
45
+
46
+ VerificationCheckParams = PreludeSDK::Models::VerificationCheckParams
47
+
48
+ VerificationCreateParams = PreludeSDK::Models::VerificationCreateParams
49
+
50
+ WatchPredictParams = PreludeSDK::Models::WatchPredictParams
51
+
52
+ WatchSendEventsParams = PreludeSDK::Models::WatchSendEventsParams
53
+
54
+ WatchSendFeedbacksParams = PreludeSDK::Models::WatchSendFeedbacksParams
55
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ # Specify HTTP behaviour to use for a specific request. These options supplement
5
+ # or override those provided at the client level.
6
+ #
7
+ # When making a request, you can pass an actual {RequestOptions} instance, or
8
+ # simply pass a Hash with symbol keys matching the attributes on this class.
9
+ class RequestOptions < PreludeSDK::Internal::Type::BaseModel
10
+ # @api private
11
+ #
12
+ # @param opts [PreludeSDK::RequestOptions, Hash{Symbol=>Object}]
13
+ #
14
+ # @raise [ArgumentError]
15
+ def self.validate!(opts)
16
+ case opts
17
+ in PreludeSDK::RequestOptions | Hash
18
+ opts.to_h.each_key do |k|
19
+ unless fields.include?(k)
20
+ raise ArgumentError.new("Request `opts` keys must be one of #{fields.keys}, got #{k.inspect}")
21
+ end
22
+ end
23
+ else
24
+ raise ArgumentError.new("Request `opts` must be a Hash or RequestOptions, got #{opts.inspect}")
25
+ end
26
+ end
27
+
28
+ # @!attribute idempotency_key
29
+ # Idempotency key to send with request and all associated retries. Will only be
30
+ # sent for write requests.
31
+ #
32
+ # @return [String, nil]
33
+ optional :idempotency_key, String
34
+
35
+ # @!attribute extra_query
36
+ # Extra query params to send with the request. These are `.merge`’d into any
37
+ # `query` given at the client level.
38
+ #
39
+ # @return [Hash{String=>Array<String>, String, nil}, nil]
40
+ optional :extra_query, PreludeSDK::Internal::Type::HashOf[PreludeSDK::Internal::Type::ArrayOf[String]]
41
+
42
+ # @!attribute extra_headers
43
+ # Extra headers to send with the request. These are `.merged`’d into any
44
+ # `extra_headers` given at the client level.
45
+ #
46
+ # @return [Hash{String=>String, nil}, nil]
47
+ optional :extra_headers, PreludeSDK::Internal::Type::HashOf[String, nil?: true]
48
+
49
+ # @!attribute extra_body
50
+ # Extra data to send with the request. These are deep merged into any data
51
+ # generated as part of the normal request.
52
+ #
53
+ # @return [Object, nil]
54
+ optional :extra_body, PreludeSDK::Internal::Type::HashOf[PreludeSDK::Internal::Type::Unknown]
55
+
56
+ # @!attribute max_retries
57
+ # Maximum number of retries to attempt after a failed initial request.
58
+ #
59
+ # @return [Integer, nil]
60
+ optional :max_retries, Integer
61
+
62
+ # @!attribute timeout
63
+ # Request timeout in seconds.
64
+ #
65
+ # @return [Float, nil]
66
+ optional :timeout, Float
67
+
68
+ # @!method initialize(values = {})
69
+ # Returns a new instance of RequestOptions.
70
+ #
71
+ # @param values [Hash{Symbol=>Object}]
72
+
73
+ define_sorbet_constant!(:OrHash) do
74
+ T.type_alias { T.any(PreludeSDK::RequestOptions, PreludeSDK::Internal::AnyHash) }
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class Lookup
6
+ # Some parameter documentations has been truncated, see
7
+ # {PreludeSDK::Models::LookupLookupParams} for more details.
8
+ #
9
+ # Retrieve detailed information about a phone number including carrier data, line
10
+ # type, and portability status.
11
+ #
12
+ # @overload lookup(phone_number, type: nil, request_options: {})
13
+ #
14
+ # @param phone_number [String] An E.164 formatted phone number to look up.
15
+ #
16
+ # @param type [Array<Symbol, PreludeSDK::Models::LookupLookupParams::Type>] Optional features. Possible values are:
17
+ #
18
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
19
+ #
20
+ # @return [PreludeSDK::Models::LookupLookupResponse]
21
+ #
22
+ # @see PreludeSDK::Models::LookupLookupParams
23
+ def lookup(phone_number, params = {})
24
+ parsed, options = PreludeSDK::LookupLookupParams.dump_request(params)
25
+ @client.request(
26
+ method: :get,
27
+ path: ["v2/lookup/%1$s", phone_number],
28
+ query: parsed,
29
+ model: PreludeSDK::Models::LookupLookupResponse,
30
+ options: options
31
+ )
32
+ end
33
+
34
+ # @api private
35
+ #
36
+ # @param client [PreludeSDK::Client]
37
+ def initialize(client:)
38
+ @client = client
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class Transactional
6
+ # Some parameter documentations has been truncated, see
7
+ # {PreludeSDK::Models::TransactionalSendParams} for more details.
8
+ #
9
+ # Send a transactional message to your user.
10
+ #
11
+ # @overload send_(template_id:, to:, callback_url: nil, correlation_id: nil, expires_at: nil, from: nil, locale: nil, variables: nil, request_options: {})
12
+ #
13
+ # @param template_id [String] The template identifier.
14
+ #
15
+ # @param to [String] The recipient's phone number.
16
+ #
17
+ # @param callback_url [String] The callback URL.
18
+ #
19
+ # @param correlation_id [String] A unique, user-defined identifier that will be included in webhook events.
20
+ #
21
+ # @param expires_at [String] The message expiration date.
22
+ #
23
+ # @param from [String] The Sender ID.
24
+ #
25
+ # @param locale [String] A BCP-47 formatted locale string with the language the text message will be sent
26
+ #
27
+ # @param variables [Hash{Symbol=>String}] The variables to be replaced in the template.
28
+ #
29
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
30
+ #
31
+ # @return [PreludeSDK::Models::TransactionalSendResponse]
32
+ #
33
+ # @see PreludeSDK::Models::TransactionalSendParams
34
+ def send_(params)
35
+ parsed, options = PreludeSDK::TransactionalSendParams.dump_request(params)
36
+ @client.request(
37
+ method: :post,
38
+ path: "v2/transactional",
39
+ body: parsed,
40
+ model: PreludeSDK::Models::TransactionalSendResponse,
41
+ options: options
42
+ )
43
+ end
44
+
45
+ # @api private
46
+ #
47
+ # @param client [PreludeSDK::Client]
48
+ def initialize(client:)
49
+ @client = client
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class Verification
6
+ # Some parameter documentations has been truncated, see
7
+ # {PreludeSDK::Models::VerificationCreateParams} for more details.
8
+ #
9
+ # Create a new verification for a specific phone number. If another non-expired
10
+ # verification exists (the request is performed within the verification window),
11
+ # this endpoint will perform a retry instead.
12
+ #
13
+ # @overload create(target:, dispatch_id: nil, metadata: nil, options: nil, signals: nil, request_options: {})
14
+ #
15
+ # @param target [PreludeSDK::Models::VerificationCreateParams::Target] The verification target. Either a phone number or an email address. To use the e
16
+ #
17
+ # @param dispatch_id [String] The identifier of the dispatch that came from the front-end SDK.
18
+ #
19
+ # @param metadata [PreludeSDK::Models::VerificationCreateParams::Metadata] The metadata for this verification. This object will be returned with every resp
20
+ #
21
+ # @param options [PreludeSDK::Models::VerificationCreateParams::Options] Verification options
22
+ #
23
+ # @param signals [PreludeSDK::Models::VerificationCreateParams::Signals] The signals used for anti-fraud. For more details, refer to [Signals](/verify/v2
24
+ #
25
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
26
+ #
27
+ # @return [PreludeSDK::Models::VerificationCreateResponse]
28
+ #
29
+ # @see PreludeSDK::Models::VerificationCreateParams
30
+ def create(params)
31
+ parsed, options = PreludeSDK::VerificationCreateParams.dump_request(params)
32
+ @client.request(
33
+ method: :post,
34
+ path: "v2/verification",
35
+ body: parsed,
36
+ model: PreludeSDK::Models::VerificationCreateResponse,
37
+ options: options
38
+ )
39
+ end
40
+
41
+ # Some parameter documentations has been truncated, see
42
+ # {PreludeSDK::Models::VerificationCheckParams} for more details.
43
+ #
44
+ # Check the validity of a verification code.
45
+ #
46
+ # @overload check(code:, target:, request_options: {})
47
+ #
48
+ # @param code [String] The OTP code to validate.
49
+ #
50
+ # @param target [PreludeSDK::Models::VerificationCheckParams::Target] The verification target. Either a phone number or an email address. To use the e
51
+ #
52
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
53
+ #
54
+ # @return [PreludeSDK::Models::VerificationCheckResponse]
55
+ #
56
+ # @see PreludeSDK::Models::VerificationCheckParams
57
+ def check(params)
58
+ parsed, options = PreludeSDK::VerificationCheckParams.dump_request(params)
59
+ @client.request(
60
+ method: :post,
61
+ path: "v2/verification/check",
62
+ body: parsed,
63
+ model: PreludeSDK::Models::VerificationCheckResponse,
64
+ options: options
65
+ )
66
+ end
67
+
68
+ # @api private
69
+ #
70
+ # @param client [PreludeSDK::Client]
71
+ def initialize(client:)
72
+ @client = client
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ module Resources
5
+ class Watch
6
+ # Some parameter documentations has been truncated, see
7
+ # {PreludeSDK::Models::WatchPredictParams} for more details.
8
+ #
9
+ # Predict the outcome of a verification based on Prelude’s anti-fraud system.
10
+ #
11
+ # @overload predict(target:, dispatch_id: nil, metadata: nil, signals: nil, request_options: {})
12
+ #
13
+ # @param target [PreludeSDK::Models::WatchPredictParams::Target] The prediction target. Only supports phone numbers for now.
14
+ #
15
+ # @param dispatch_id [String] The identifier of the dispatch that came from the front-end SDK.
16
+ #
17
+ # @param metadata [PreludeSDK::Models::WatchPredictParams::Metadata] The metadata for this prediction.
18
+ #
19
+ # @param signals [PreludeSDK::Models::WatchPredictParams::Signals] The signals used for anti-fraud. For more details, refer to [Signals](/verify/v2
20
+ #
21
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
22
+ #
23
+ # @return [PreludeSDK::Models::WatchPredictResponse]
24
+ #
25
+ # @see PreludeSDK::Models::WatchPredictParams
26
+ def predict(params)
27
+ parsed, options = PreludeSDK::WatchPredictParams.dump_request(params)
28
+ @client.request(
29
+ method: :post,
30
+ path: "v2/watch/predict",
31
+ body: parsed,
32
+ model: PreludeSDK::Models::WatchPredictResponse,
33
+ options: options
34
+ )
35
+ end
36
+
37
+ # Send real-time event data from end-user interactions within your application.
38
+ # Events will be analyzed for proactive fraud prevention and risk scoring.
39
+ #
40
+ # @overload send_events(events:, request_options: {})
41
+ #
42
+ # @param events [Array<PreludeSDK::Models::WatchSendEventsParams::Event>] A list of events to dispatch.
43
+ #
44
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
45
+ #
46
+ # @return [PreludeSDK::Models::WatchSendEventsResponse]
47
+ #
48
+ # @see PreludeSDK::Models::WatchSendEventsParams
49
+ def send_events(params)
50
+ parsed, options = PreludeSDK::WatchSendEventsParams.dump_request(params)
51
+ @client.request(
52
+ method: :post,
53
+ path: "v2/watch/event",
54
+ body: parsed,
55
+ model: PreludeSDK::Models::WatchSendEventsResponse,
56
+ options: options
57
+ )
58
+ end
59
+
60
+ # Send feedback regarding your end-users verification funnel. Events will be
61
+ # analyzed for proactive fraud prevention and risk scoring.
62
+ #
63
+ # @overload send_feedbacks(feedbacks:, request_options: {})
64
+ #
65
+ # @param feedbacks [Array<PreludeSDK::Models::WatchSendFeedbacksParams::Feedback>] A list of feedbacks to send.
66
+ #
67
+ # @param request_options [PreludeSDK::RequestOptions, Hash{Symbol=>Object}, nil]
68
+ #
69
+ # @return [PreludeSDK::Models::WatchSendFeedbacksResponse]
70
+ #
71
+ # @see PreludeSDK::Models::WatchSendFeedbacksParams
72
+ def send_feedbacks(params)
73
+ parsed, options = PreludeSDK::WatchSendFeedbacksParams.dump_request(params)
74
+ @client.request(
75
+ method: :post,
76
+ path: "v2/watch/feedback",
77
+ body: parsed,
78
+ model: PreludeSDK::Models::WatchSendFeedbacksResponse,
79
+ options: options
80
+ )
81
+ end
82
+
83
+ # @api private
84
+ #
85
+ # @param client [PreludeSDK::Client]
86
+ def initialize(client:)
87
+ @client = client
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PreludeSDK
4
+ VERSION = "0.1.0.pre.alpha.2"
5
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Standard libraries.
4
+ # rubocop:disable Lint/RedundantRequireStatement
5
+ require "English"
6
+ require "cgi"
7
+ require "date"
8
+ require "erb"
9
+ require "etc"
10
+ require "json"
11
+ require "net/http"
12
+ require "pathname"
13
+ require "rbconfig"
14
+ require "securerandom"
15
+ require "set"
16
+ require "stringio"
17
+ require "time"
18
+ require "uri"
19
+ # rubocop:enable Lint/RedundantRequireStatement
20
+
21
+ # We already ship the preferred sorbet manifests in the package itself.
22
+ # `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
23
+ if Object.const_defined?(:Tapioca) &&
24
+ caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
25
+ ARGV.none?(/dsl/)
26
+ return
27
+ end
28
+
29
+ # Gems.
30
+ require "connection_pool"
31
+
32
+ # Package files.
33
+ require_relative "prelude_sdk/version"
34
+ require_relative "prelude_sdk/internal/util"
35
+ require_relative "prelude_sdk/internal/type/converter"
36
+ require_relative "prelude_sdk/internal/type/unknown"
37
+ require_relative "prelude_sdk/internal/type/boolean"
38
+ require_relative "prelude_sdk/internal/type/file_input"
39
+ require_relative "prelude_sdk/internal/type/enum"
40
+ require_relative "prelude_sdk/internal/type/union"
41
+ require_relative "prelude_sdk/internal/type/array_of"
42
+ require_relative "prelude_sdk/internal/type/hash_of"
43
+ require_relative "prelude_sdk/internal/type/base_model"
44
+ require_relative "prelude_sdk/internal/type/base_page"
45
+ require_relative "prelude_sdk/internal/type/request_parameters"
46
+ require_relative "prelude_sdk/internal"
47
+ require_relative "prelude_sdk/request_options"
48
+ require_relative "prelude_sdk/file_part"
49
+ require_relative "prelude_sdk/errors"
50
+ require_relative "prelude_sdk/internal/transport/base_client"
51
+ require_relative "prelude_sdk/internal/transport/pooled_net_requester"
52
+ require_relative "prelude_sdk/client"
53
+ require_relative "prelude_sdk/models/lookup_lookup_params"
54
+ require_relative "prelude_sdk/models/lookup_lookup_response"
55
+ require_relative "prelude_sdk/models/transactional_send_params"
56
+ require_relative "prelude_sdk/models/transactional_send_response"
57
+ require_relative "prelude_sdk/models/verification_check_params"
58
+ require_relative "prelude_sdk/models/verification_check_response"
59
+ require_relative "prelude_sdk/models/verification_create_params"
60
+ require_relative "prelude_sdk/models/verification_create_response"
61
+ require_relative "prelude_sdk/models/watch_predict_params"
62
+ require_relative "prelude_sdk/models/watch_predict_response"
63
+ require_relative "prelude_sdk/models/watch_send_events_params"
64
+ require_relative "prelude_sdk/models/watch_send_events_response"
65
+ require_relative "prelude_sdk/models/watch_send_feedbacks_params"
66
+ require_relative "prelude_sdk/models/watch_send_feedbacks_response"
67
+ require_relative "prelude_sdk/models"
68
+ require_relative "prelude_sdk/resources/lookup"
69
+ require_relative "prelude_sdk/resources/transactional"
70
+ require_relative "prelude_sdk/resources/verification"
71
+ require_relative "prelude_sdk/resources/watch"
data/manifest.yaml ADDED
@@ -0,0 +1,15 @@
1
+ dependencies:
2
+ - English
3
+ - cgi
4
+ - date
5
+ - erb
6
+ - etc
7
+ - json
8
+ - net/http
9
+ - pathname
10
+ - rbconfig
11
+ - securerandom
12
+ - set
13
+ - stringio
14
+ - time
15
+ - uri
@@ -0,0 +1,59 @@
1
+ # typed: strong
2
+
3
+ module PreludeSDK
4
+ class Client < PreludeSDK::Internal::Transport::BaseClient
5
+ DEFAULT_MAX_RETRIES = 2
6
+
7
+ DEFAULT_TIMEOUT_IN_SECONDS = T.let(60.0, Float)
8
+
9
+ DEFAULT_INITIAL_RETRY_DELAY = T.let(0.5, Float)
10
+
11
+ DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
+
13
+ # Bearer token for authorizing API requests.
14
+ sig { returns(String) }
15
+ attr_reader :api_token
16
+
17
+ sig { returns(PreludeSDK::Resources::Lookup) }
18
+ attr_reader :lookup
19
+
20
+ sig { returns(PreludeSDK::Resources::Transactional) }
21
+ attr_reader :transactional
22
+
23
+ sig { returns(PreludeSDK::Resources::Verification) }
24
+ attr_reader :verification
25
+
26
+ sig { returns(PreludeSDK::Resources::Watch) }
27
+ attr_reader :watch
28
+
29
+ # @api private
30
+ sig { override.returns(T::Hash[String, String]) }
31
+ private def auth_headers
32
+ end
33
+
34
+ # Creates and returns a new client for interacting with the API.
35
+ sig do
36
+ params(
37
+ api_token: T.nilable(String),
38
+ base_url: T.nilable(String),
39
+ max_retries: Integer,
40
+ timeout: Float,
41
+ initial_retry_delay: Float,
42
+ max_retry_delay: Float
43
+ ).returns(T.attached_class)
44
+ end
45
+ def self.new(
46
+ # Bearer token for authorizing API requests. Defaults to `ENV["API_TOKEN"]`
47
+ api_token: ENV["API_TOKEN"],
48
+ # Override the default base URL for the API, e.g.,
49
+ # `"https://api.example.com/v2/"`. Defaults to `ENV["PRELUDE_BASE_URL"]`
50
+ base_url: ENV["PRELUDE_BASE_URL"],
51
+ # Max number of retries to attempt after a failed retryable request.
52
+ max_retries: PreludeSDK::Client::DEFAULT_MAX_RETRIES,
53
+ timeout: PreludeSDK::Client::DEFAULT_TIMEOUT_IN_SECONDS,
54
+ initial_retry_delay: PreludeSDK::Client::DEFAULT_INITIAL_RETRY_DELAY,
55
+ max_retry_delay: PreludeSDK::Client::DEFAULT_MAX_RETRY_DELAY
56
+ )
57
+ end
58
+ end
59
+ end