yield-sdk 0.5.1 → 0.7.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +51 -0
  3. data/README.md +25 -10
  4. data/Rakefile +11 -2
  5. data/Steepfile +20 -0
  6. data/docs/index.md +12 -0
  7. data/docs/modules/customer.md +64 -0
  8. data/docs/modules/order.md +93 -0
  9. data/docs/modules/self.md +48 -0
  10. data/lib/yield/sdk/api/api_client.rb +54 -37
  11. data/lib/yield/sdk/api/api_error.rb +39 -0
  12. data/lib/yield/sdk/api/api_error_details.rb +9 -0
  13. data/lib/yield/sdk/api/api_result.rb +23 -6
  14. data/lib/yield/sdk/base_client.rb +6 -3
  15. data/lib/yield/sdk/client.rb +7 -4
  16. data/lib/yield/sdk/modules/customer/customer_base_client.rb +27 -0
  17. data/lib/yield/sdk/modules/customer/customer_client.rb +19 -0
  18. data/lib/yield/sdk/modules/customer/payloads/customer_credit_line_info.rb +22 -0
  19. data/lib/yield/sdk/modules/customer/payloads/customer_list_payload.rb +20 -0
  20. data/lib/yield/sdk/modules/customer/payloads/customer_row.rb +28 -0
  21. data/lib/yield/sdk/modules/order/order_base_client.rb +4 -1
  22. data/lib/yield/sdk/modules/order/payloads/order.rb +21 -11
  23. data/lib/yield/sdk/modules/order/payloads/order_create_payload.rb +1 -1
  24. data/lib/yield/sdk/modules/order/payloads/order_customer_info.rb +11 -5
  25. data/lib/yield/sdk/modules/order/payloads/order_status.rb +1 -1
  26. data/lib/yield/sdk/modules/self/payloads/self_info.rb +9 -5
  27. data/lib/yield/sdk/modules/self/payloads/self_organization_info.rb +9 -5
  28. data/lib/yield/sdk/types/cursor_payload.rb +19 -0
  29. data/lib/yield/sdk/types/money.rb +6 -3
  30. data/lib/yield/sdk/types/money_payload.rb +7 -3
  31. data/lib/yield/sdk/types/page.rb +51 -0
  32. data/lib/yield/sdk/utils/type_utils.rb +71 -0
  33. data/lib/yield/sdk/version.rb +3 -3
  34. data/lib/yield/sdk.rb +2 -1
  35. data/sig/vendor/faraday.rbs +23 -0
  36. data/sig/yield/sdk/api/api_client.rbs +26 -0
  37. data/sig/yield/sdk/api/api_error.rbs +13 -0
  38. data/sig/yield/sdk/api/api_error_details.rbs +14 -0
  39. data/sig/yield/sdk/api/api_result.rbs +19 -0
  40. data/sig/yield/sdk/base_client.rbs +13 -0
  41. data/sig/yield/sdk/client.rbs +13 -0
  42. data/sig/yield/sdk/modules/customer/customer_base_client.rbs +11 -0
  43. data/sig/yield/sdk/modules/customer/customer_client.rbs +11 -0
  44. data/sig/yield/sdk/modules/customer/payloads/customer_credit_line_info.rbs +13 -0
  45. data/sig/yield/sdk/modules/customer/payloads/customer_list_payload.rbs +16 -0
  46. data/sig/yield/sdk/modules/customer/payloads/customer_row.rbs +16 -0
  47. data/sig/yield/sdk/modules/order/payloads/order.rbs +30 -0
  48. data/sig/yield/sdk/modules/order/payloads/order_create_payload.rbs +15 -0
  49. data/sig/yield/sdk/modules/order/payloads/order_customer_info.rbs +15 -0
  50. data/sig/yield/sdk/modules/order/payloads/order_status.rbs +10 -0
  51. data/sig/yield/sdk/modules/order/self_base_client.rbs +12 -0
  52. data/sig/yield/sdk/modules/order/self_client.rbs +12 -0
  53. data/sig/yield/sdk/modules/self/payloads/self_info.rbs +14 -0
  54. data/sig/yield/sdk/modules/self/payloads/self_organization_info.rbs +14 -0
  55. data/sig/yield/sdk/modules/self/self_base_client.rbs +11 -0
  56. data/sig/yield/sdk/modules/self/self_client.rbs +11 -0
  57. data/sig/yield/sdk/types/cursor_payload.rbs +14 -0
  58. data/sig/yield/sdk/types/money.rbs +12 -0
  59. data/sig/yield/sdk/types/money_payload.rbs +15 -0
  60. data/sig/yield/sdk/types/page.rbs +20 -0
  61. data/sig/yield/sdk/utils/type_utils.rbs +26 -0
  62. data/sig/yield/sdk/version.rbs +8 -0
  63. data/sig/yield/sdk.rbs +0 -2
  64. metadata +66 -7
  65. data/.standard.yml +0 -3
  66. data/lib/yield/sdk/utils.rb +0 -36
@@ -0,0 +1,13 @@
1
+ module Yield
2
+ module SDK
3
+ module Customer
4
+ class CustomerCreditLineInfo
5
+ attr_reader credit_limit: Money
6
+ attr_reader amount_available: Money
7
+
8
+ def initialize: (credit_limit: Money, amount_available: Money) -> void
9
+ def self.from_payload: (Hash[Symbol, Object]) -> CustomerCreditLineInfo
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module Yield
2
+ module SDK
3
+ module Customer
4
+ type customer_list_params = {
5
+ ?limit: Integer?,
6
+ ?after: cursor_like?,
7
+ ?customer_code: String?,
8
+ ?extra_system_id: String?,
9
+ }
10
+
11
+ class CustomerListPayload
12
+ def self.build: (customer_list_params) -> Hash[Symbol, String | Integer | nil]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module Yield
2
+ module SDK
3
+ module Customer
4
+ class CustomerRow
5
+ attr_reader id: String
6
+ attr_reader registered_name: String
7
+ attr_reader trade_name: String?
8
+ attr_reader customer_code: String?
9
+ attr_reader credit_line: CustomerCreditLineInfo?
10
+
11
+ def initialize: (id: String, registered_name: String, trade_name: String?, customer_code: String?, credit_line: CustomerCreditLineInfo?) -> void
12
+ def self.from_payload: (Hash[Symbol, Object]) -> CustomerRow
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ class Order
5
+ attr_reader id: String
6
+ attr_reader order_number: String
7
+ attr_reader status: OrderStatus::t
8
+ attr_reader customer: OrderCustomerInfo?
9
+ attr_reader date: Date
10
+ attr_reader total_amount: Money
11
+ attr_reader note: String?
12
+ attr_reader payment_link: String?
13
+ attr_reader creation_time: Time
14
+
15
+ def initialize: (
16
+ id: String,
17
+ order_number: String,
18
+ status: OrderStatus::t,
19
+ customer: OrderCustomerInfo?,
20
+ date: Date,
21
+ total_amount: Money,
22
+ note: String?,
23
+ payment_link: String?,
24
+ creation_time: Time,
25
+ ) -> void
26
+ def self.from_payload: (Hash[Symbol, Object]) -> Order
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,15 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ type order_create_params = {
5
+ customer_id: String,
6
+ total_amount: money_like,
7
+ ?note: String?,
8
+ }
9
+
10
+ class OrderCreatePayload
11
+ def self.build: (order_create_params) -> Hash[Symbol, Object?]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ class OrderCustomerInfo
5
+ attr_reader id: String
6
+ attr_reader registered_name: String
7
+ attr_reader trade_name: String?
8
+ attr_reader customer_code: String?
9
+
10
+ def initialize: (id: String, registered_name: String, trade_name: String?, customer_code: String?) -> void
11
+ def self.from_payload: (Hash[Symbol, Object]) -> OrderCustomerInfo
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ module OrderStatus
5
+ type t = :pending | :confirmed | :fulfilled | :cancelled
6
+ ALL: Array[t]
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,12 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ class BaseClient
5
+ @api: API::Client
6
+ def initialize: (API::Client) -> void
7
+ def fetch: (String) -> API::Result[Order]
8
+ def create: (order_create_params) -> API::Result[Order]
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Yield
2
+ module SDK
3
+ module Order
4
+ class Client
5
+ @base: BaseClient
6
+ def initialize: (BaseClient) -> void
7
+ def fetch: (String) -> Order
8
+ def create: (order_create_params) -> Order
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module Yield
2
+ module SDK
3
+ module Self
4
+ class SelfInfo
5
+ attr_reader id: String
6
+ attr_reader name: String
7
+ attr_reader organization: SelfOrganizationInfo
8
+
9
+ def initialize: (id: String, name: String, organization: SelfOrganizationInfo) -> void
10
+ def self.from_payload: (Hash[Symbol, Object]) -> SelfInfo
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module Yield
2
+ module SDK
3
+ module Self
4
+ class SelfOrganizationInfo
5
+ attr_reader id: String
6
+ attr_reader registered_name: String
7
+ attr_reader trade_name: String?
8
+
9
+ def initialize: (id: String, registered_name: String, trade_name: String?) -> void
10
+ def self.from_payload: (Hash[Symbol, Object]) -> SelfOrganizationInfo
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ module Yield
2
+ module SDK
3
+ module Self
4
+ class BaseClient
5
+ @api: API::Client
6
+ def initialize: (API::Client) -> void
7
+ def info: -> API::Result[SelfInfo]
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Yield
2
+ module SDK
3
+ module Self
4
+ class Client
5
+ @base: BaseClient
6
+ def initialize: (BaseClient) -> void
7
+ def info: -> SelfInfo
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Yield
2
+ module SDK
3
+ # `& Object` is needed for the `is_a?` method
4
+ type cursor_like = String | (_EntityInterface & Object) | Page[_EntityInterface]
5
+
6
+ interface _EntityInterface
7
+ def id: -> String
8
+ end
9
+
10
+ class CursorPayload
11
+ def self.build: (cursor_like) -> String?
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module Yield
2
+ module SDK
3
+ class Money
4
+ attr_reader currency_code: Symbol
5
+ attr_reader value: BigDecimal
6
+
7
+ def initialize: (Symbol, BigDecimal) -> void
8
+ | (currency_code: Symbol, value: BigDecimal) -> void
9
+ def self.from_payload: (String) -> Money
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module Yield
2
+ module SDK
3
+ # `& Object` is needed for the `is_a?` method
4
+ type money_like = String | [Symbol, BigDecimal] | (_MoneyInterface & Object)
5
+
6
+ interface _MoneyInterface
7
+ def currency_code: -> Symbol
8
+ def value: -> BigDecimal
9
+ end
10
+
11
+ class MoneyPayload
12
+ def self.build: (money_like) -> String
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ module Yield
2
+ module SDK
3
+ class Page[T]
4
+ include Enumerable[T]
5
+
6
+ attr_accessor has_more: bool
7
+ @items: Array[T]
8
+
9
+ def initialize: (items: Array[T], has_more: bool) -> void
10
+ def self.build_with: [E] { (Hash[Symbol, Object]) -> E } -> (^(Hash[Symbol, Object]) -> Page[E])
11
+
12
+ def to_a: -> Array[T]
13
+ def size: -> Integer
14
+ def length: -> Integer
15
+ def []: (Integer) -> T?
16
+ def last: -> T?
17
+ def each: { (T) -> void } -> Array[T]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ module Yield
2
+ module SDK
3
+ module TypeUtils
4
+ def expect_boolean: (Object) -> bool
5
+ def expect_integer: (Object) -> Integer
6
+ def expect_string: (Object) -> String
7
+ def expect_date: (Object) -> Date
8
+ def expect_time: (Object) -> Time
9
+ def expect_variant: [T < Symbol] (Array[T], Object) -> T
10
+ def expect_record: (Object) -> Hash[Symbol, Object]
11
+ def expect_list: (Object) -> Array[Object]
12
+ def expect_record_list: (Object) -> Array[Hash[Symbol, Object]]
13
+
14
+ # module_function
15
+ def self.expect_boolean: (Object) -> bool
16
+ def self.expect_integer: (Object) -> Integer
17
+ def self.expect_string: (Object) -> String
18
+ def self.expect_date: (Object) -> Date
19
+ def self.expect_time: (Object) -> Time
20
+ def self.expect_variant: [T < Symbol] (Array[T], Object) -> T
21
+ def self.expect_record: (Object) -> Hash[Symbol, Object]
22
+ def self.expect_list: (Object) -> Array[Object]
23
+ def self.expect_record_list: (Object) -> Array[Hash[Symbol, Object]]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,8 @@
1
+ module Yield
2
+ module SDK
3
+ VERSION: String
4
+
5
+ def client_version: -> String
6
+ def self.client_version: -> String # module_function
7
+ end
8
+ end
data/sig/yield/sdk.rbs CHANGED
@@ -1,6 +1,4 @@
1
1
  module Yield
2
2
  module SDK
3
- VERSION: String
4
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
3
  end
6
4
  end
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yield-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yield
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-05-26 00:00:00.000000000 Z
10
+ date: 2025-06-04 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: backports
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '3.24'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '3.24'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: faraday
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -27,15 +41,27 @@ executables: []
27
41
  extensions: []
28
42
  extra_rdoc_files: []
29
43
  files:
30
- - ".standard.yml"
44
+ - ".rubocop.yml"
31
45
  - LICENSE
32
46
  - README.md
33
47
  - Rakefile
48
+ - Steepfile
49
+ - docs/index.md
50
+ - docs/modules/customer.md
51
+ - docs/modules/order.md
52
+ - docs/modules/self.md
34
53
  - lib/yield/sdk.rb
35
54
  - lib/yield/sdk/api/api_client.rb
55
+ - lib/yield/sdk/api/api_error.rb
56
+ - lib/yield/sdk/api/api_error_details.rb
36
57
  - lib/yield/sdk/api/api_result.rb
37
58
  - lib/yield/sdk/base_client.rb
38
59
  - lib/yield/sdk/client.rb
60
+ - lib/yield/sdk/modules/customer/customer_base_client.rb
61
+ - lib/yield/sdk/modules/customer/customer_client.rb
62
+ - lib/yield/sdk/modules/customer/payloads/customer_credit_line_info.rb
63
+ - lib/yield/sdk/modules/customer/payloads/customer_list_payload.rb
64
+ - lib/yield/sdk/modules/customer/payloads/customer_row.rb
39
65
  - lib/yield/sdk/modules/order/order_base_client.rb
40
66
  - lib/yield/sdk/modules/order/order_client.rb
41
67
  - lib/yield/sdk/modules/order/payloads/order.rb
@@ -46,15 +72,48 @@ files:
46
72
  - lib/yield/sdk/modules/self/payloads/self_organization_info.rb
47
73
  - lib/yield/sdk/modules/self/self_base_client.rb
48
74
  - lib/yield/sdk/modules/self/self_client.rb
75
+ - lib/yield/sdk/types/cursor_payload.rb
49
76
  - lib/yield/sdk/types/money.rb
50
77
  - lib/yield/sdk/types/money_payload.rb
51
- - lib/yield/sdk/utils.rb
78
+ - lib/yield/sdk/types/page.rb
79
+ - lib/yield/sdk/utils/type_utils.rb
52
80
  - lib/yield/sdk/version.rb
81
+ - sig/vendor/faraday.rbs
53
82
  - sig/yield/sdk.rbs
54
- homepage: https://www.paywithyield.com
83
+ - sig/yield/sdk/api/api_client.rbs
84
+ - sig/yield/sdk/api/api_error.rbs
85
+ - sig/yield/sdk/api/api_error_details.rbs
86
+ - sig/yield/sdk/api/api_result.rbs
87
+ - sig/yield/sdk/base_client.rbs
88
+ - sig/yield/sdk/client.rbs
89
+ - sig/yield/sdk/modules/customer/customer_base_client.rbs
90
+ - sig/yield/sdk/modules/customer/customer_client.rbs
91
+ - sig/yield/sdk/modules/customer/payloads/customer_credit_line_info.rbs
92
+ - sig/yield/sdk/modules/customer/payloads/customer_list_payload.rbs
93
+ - sig/yield/sdk/modules/customer/payloads/customer_row.rbs
94
+ - sig/yield/sdk/modules/order/payloads/order.rbs
95
+ - sig/yield/sdk/modules/order/payloads/order_create_payload.rbs
96
+ - sig/yield/sdk/modules/order/payloads/order_customer_info.rbs
97
+ - sig/yield/sdk/modules/order/payloads/order_status.rbs
98
+ - sig/yield/sdk/modules/order/self_base_client.rbs
99
+ - sig/yield/sdk/modules/order/self_client.rbs
100
+ - sig/yield/sdk/modules/self/payloads/self_info.rbs
101
+ - sig/yield/sdk/modules/self/payloads/self_organization_info.rbs
102
+ - sig/yield/sdk/modules/self/self_base_client.rbs
103
+ - sig/yield/sdk/modules/self/self_client.rbs
104
+ - sig/yield/sdk/types/cursor_payload.rbs
105
+ - sig/yield/sdk/types/money.rbs
106
+ - sig/yield/sdk/types/money_payload.rbs
107
+ - sig/yield/sdk/types/page.rbs
108
+ - sig/yield/sdk/utils/type_utils.rbs
109
+ - sig/yield/sdk/version.rbs
110
+ homepage: https://github.com/yield-tech/sdk-ruby/blob/main/README.md
55
111
  licenses:
56
112
  - Apache-2.0
57
- metadata: {}
113
+ metadata:
114
+ homepage_uri: https://github.com/yield-tech/sdk-ruby/blob/main/README.md
115
+ source_code_uri: https://github.com/yield-tech/sdk-ruby
116
+ documentation_uri: https://github.com/yield-tech/sdk-ruby/blob/main/README.md
58
117
  rdoc_options: []
59
118
  require_paths:
60
119
  - lib
@@ -62,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
121
  requirements:
63
122
  - - ">="
64
123
  - !ruby/object:Gem::Version
65
- version: 3.2.0
124
+ version: 3.0.0
66
125
  required_rubygems_version: !ruby/object:Gem::Requirement
67
126
  requirements:
68
127
  - - ">="
data/.standard.yml DELETED
@@ -1,3 +0,0 @@
1
- # For available configuration options, see:
2
- # https://github.com/testdouble/standard
3
- ruby_version: 3.2
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Yield
4
- module SDK
5
- module Utils
6
- module_function
7
-
8
- def assert_boolean(data)
9
- raise ArgumentError, "Expected Boolean, got #{data.class}" unless data == true || data == false
10
- data
11
- end
12
-
13
- def assert_integer(data)
14
- raise ArgumentError, "Expected Integer, got #{data.class}" unless data.is_a?(Integer)
15
- data
16
- end
17
-
18
- def assert_string(data)
19
- raise ArgumentError, "Expected String, got #{data.class}" unless data.is_a?(String)
20
- data
21
- end
22
-
23
- def self.assert_variant(variants, data)
24
- raise ArgumentError, "Expected String, got #{data.class}" unless data.is_a?(String)
25
- symbol = data.downcase.to_sym
26
- raise ArgumentError, "Invalid variant: \"#{data}\"" unless variants.include?(symbol)
27
- symbol
28
- end
29
-
30
- def self.assert_hash(data)
31
- raise ArgumentError, "Expected Hash, got #{data.class}" unless data.is_a?(Hash)
32
- data
33
- end
34
- end
35
- end
36
- end