griffnode 1.0.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 (154) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/LICENSE +17 -0
  4. data/README.md +24 -0
  5. data/Rakefile +10 -0
  6. data/docs/Account.md +22 -0
  7. data/docs/AccountApi.md +339 -0
  8. data/docs/AccountLimits.md +22 -0
  9. data/docs/AccountPlan.md +24 -0
  10. data/docs/AccountUsage.md +22 -0
  11. data/docs/Balance.md +24 -0
  12. data/docs/BillingApi.md +75 -0
  13. data/docs/CreateBillingCheckoutRequest.md +22 -0
  14. data/docs/CreateDetailedTransactionRequest.md +32 -0
  15. data/docs/CreateTransactionRequest.md +30 -0
  16. data/docs/CryptoSymbol.md +15 -0
  17. data/docs/Cryptocurrency.md +26 -0
  18. data/docs/DefaultApi.md +78 -0
  19. data/docs/Error.md +22 -0
  20. data/docs/FiatCurrency.md +15 -0
  21. data/docs/GetAccount200Response.md +20 -0
  22. data/docs/GetHealth200Response.md +22 -0
  23. data/docs/GetPrices200Response.md +20 -0
  24. data/docs/GetPrices200ResponseData.md +22 -0
  25. data/docs/GetStats200Response.md +20 -0
  26. data/docs/GetStats200ResponseData.md +24 -0
  27. data/docs/InlineObject.md +24 -0
  28. data/docs/InlineObjectAllOfExistingTransaction.md +22 -0
  29. data/docs/Invoice.md +34 -0
  30. data/docs/LineItem.md +22 -0
  31. data/docs/ListBalances200Response.md +20 -0
  32. data/docs/ListBalances200ResponseData.md +18 -0
  33. data/docs/ListCryptocurrencies200Response.md +20 -0
  34. data/docs/ListCryptocurrencies200ResponseData.md +20 -0
  35. data/docs/ListInvoices200Response.md +20 -0
  36. data/docs/ListInvoices200ResponseData.md +20 -0
  37. data/docs/ListPlans200Response.md +20 -0
  38. data/docs/ListPlans200ResponseData.md +20 -0
  39. data/docs/ListTransactions200Response.md +20 -0
  40. data/docs/ListTransactions200ResponseData.md +20 -0
  41. data/docs/MarketDataApi.md +202 -0
  42. data/docs/Pagination.md +22 -0
  43. data/docs/PaymentSplit.md +28 -0
  44. data/docs/Plan.md +38 -0
  45. data/docs/PlanTier.md +15 -0
  46. data/docs/SystemApi.md +139 -0
  47. data/docs/Transaction.md +66 -0
  48. data/docs/TransactionEnvelope.md +20 -0
  49. data/docs/TransactionStatus.md +15 -0
  50. data/docs/TransactionsApi.md +295 -0
  51. data/docs/WebhookPayload.md +40 -0
  52. data/git_push.sh +57 -0
  53. data/griffnode.gemspec +43 -0
  54. data/lib/griffnode/api/account_api.rb +315 -0
  55. data/lib/griffnode/api/billing_api.rb +88 -0
  56. data/lib/griffnode/api/default_api.rb +84 -0
  57. data/lib/griffnode/api/market_data_api.rb +187 -0
  58. data/lib/griffnode/api/system_api.rb +158 -0
  59. data/lib/griffnode/api/transactions_api.rb +300 -0
  60. data/lib/griffnode/api_client.rb +394 -0
  61. data/lib/griffnode/api_error.rb +58 -0
  62. data/lib/griffnode/configuration.rb +308 -0
  63. data/lib/griffnode/models/account.rb +232 -0
  64. data/lib/griffnode/models/account_limits.rb +232 -0
  65. data/lib/griffnode/models/account_plan.rb +264 -0
  66. data/lib/griffnode/models/account_usage.rb +234 -0
  67. data/lib/griffnode/models/balance.rb +241 -0
  68. data/lib/griffnode/models/create_billing_checkout_request.rb +284 -0
  69. data/lib/griffnode/models/create_detailed_transaction_request.rb +349 -0
  70. data/lib/griffnode/models/create_transaction_request.rb +313 -0
  71. data/lib/griffnode/models/crypto_symbol.rb +53 -0
  72. data/lib/griffnode/models/cryptocurrency.rb +284 -0
  73. data/lib/griffnode/models/error.rb +251 -0
  74. data/lib/griffnode/models/fiat_currency.rb +42 -0
  75. data/lib/griffnode/models/get_account200_response.rb +233 -0
  76. data/lib/griffnode/models/get_health200_response.rb +232 -0
  77. data/lib/griffnode/models/get_prices200_response.rb +233 -0
  78. data/lib/griffnode/models/get_prices200_response_data.rb +238 -0
  79. data/lib/griffnode/models/get_stats200_response.rb +233 -0
  80. data/lib/griffnode/models/get_stats200_response_data.rb +241 -0
  81. data/lib/griffnode/models/inline_object.rb +267 -0
  82. data/lib/griffnode/models/inline_object_all_of_existing_transaction.rb +254 -0
  83. data/lib/griffnode/models/invoice.rb +311 -0
  84. data/lib/griffnode/models/line_item.rb +267 -0
  85. data/lib/griffnode/models/list_balances200_response.rb +233 -0
  86. data/lib/griffnode/models/list_balances200_response_data.rb +216 -0
  87. data/lib/griffnode/models/list_cryptocurrencies200_response.rb +233 -0
  88. data/lib/griffnode/models/list_cryptocurrencies200_response_data.rb +225 -0
  89. data/lib/griffnode/models/list_invoices200_response.rb +233 -0
  90. data/lib/griffnode/models/list_invoices200_response_data.rb +225 -0
  91. data/lib/griffnode/models/list_plans200_response.rb +233 -0
  92. data/lib/griffnode/models/list_plans200_response_data.rb +227 -0
  93. data/lib/griffnode/models/list_transactions200_response.rb +233 -0
  94. data/lib/griffnode/models/list_transactions200_response_data.rb +239 -0
  95. data/lib/griffnode/models/pagination.rb +253 -0
  96. data/lib/griffnode/models/payment_split.rb +262 -0
  97. data/lib/griffnode/models/plan.rb +330 -0
  98. data/lib/griffnode/models/plan_tier.rb +42 -0
  99. data/lib/griffnode/models/transaction.rb +535 -0
  100. data/lib/griffnode/models/transaction_envelope.rb +233 -0
  101. data/lib/griffnode/models/transaction_status.rb +44 -0
  102. data/lib/griffnode/models/webhook_payload.rb +387 -0
  103. data/lib/griffnode/version.rb +15 -0
  104. data/lib/griffnode.rb +84 -0
  105. data/openapi.yaml +791 -0
  106. data/openapitools.json +15 -0
  107. data/spec/api/account_api_spec.rb +87 -0
  108. data/spec/api/billing_api_spec.rb +46 -0
  109. data/spec/api/default_api_spec.rb +47 -0
  110. data/spec/api/market_data_api_spec.rb +65 -0
  111. data/spec/api/system_api_spec.rb +60 -0
  112. data/spec/api/transactions_api_spec.rb +84 -0
  113. data/spec/models/account_limits_spec.rb +48 -0
  114. data/spec/models/account_plan_spec.rb +54 -0
  115. data/spec/models/account_spec.rb +48 -0
  116. data/spec/models/account_usage_spec.rb +48 -0
  117. data/spec/models/balance_spec.rb +54 -0
  118. data/spec/models/create_billing_checkout_request_spec.rb +48 -0
  119. data/spec/models/create_detailed_transaction_request_spec.rb +78 -0
  120. data/spec/models/create_transaction_request_spec.rb +72 -0
  121. data/spec/models/crypto_symbol_spec.rb +30 -0
  122. data/spec/models/cryptocurrency_spec.rb +64 -0
  123. data/spec/models/error_spec.rb +48 -0
  124. data/spec/models/fiat_currency_spec.rb +30 -0
  125. data/spec/models/get_account200_response_spec.rb +42 -0
  126. data/spec/models/get_health200_response_spec.rb +48 -0
  127. data/spec/models/get_prices200_response_data_spec.rb +48 -0
  128. data/spec/models/get_prices200_response_spec.rb +42 -0
  129. data/spec/models/get_stats200_response_data_spec.rb +54 -0
  130. data/spec/models/get_stats200_response_spec.rb +42 -0
  131. data/spec/models/inline_object_all_of_existing_transaction_spec.rb +48 -0
  132. data/spec/models/inline_object_spec.rb +54 -0
  133. data/spec/models/invoice_spec.rb +84 -0
  134. data/spec/models/line_item_spec.rb +48 -0
  135. data/spec/models/list_balances200_response_data_spec.rb +36 -0
  136. data/spec/models/list_balances200_response_spec.rb +42 -0
  137. data/spec/models/list_cryptocurrencies200_response_data_spec.rb +42 -0
  138. data/spec/models/list_cryptocurrencies200_response_spec.rb +42 -0
  139. data/spec/models/list_invoices200_response_data_spec.rb +42 -0
  140. data/spec/models/list_invoices200_response_spec.rb +42 -0
  141. data/spec/models/list_plans200_response_data_spec.rb +42 -0
  142. data/spec/models/list_plans200_response_spec.rb +42 -0
  143. data/spec/models/list_transactions200_response_data_spec.rb +42 -0
  144. data/spec/models/list_transactions200_response_spec.rb +42 -0
  145. data/spec/models/pagination_spec.rb +48 -0
  146. data/spec/models/payment_split_spec.rb +66 -0
  147. data/spec/models/plan_spec.rb +96 -0
  148. data/spec/models/plan_tier_spec.rb +30 -0
  149. data/spec/models/transaction_envelope_spec.rb +42 -0
  150. data/spec/models/transaction_spec.rb +184 -0
  151. data/spec/models/transaction_status_spec.rb +30 -0
  152. data/spec/models/webhook_payload_spec.rb +106 -0
  153. data/spec/spec_helper.rb +111 -0
  154. metadata +286 -0
@@ -0,0 +1,315 @@
1
+ =begin
2
+ #GriffNode API
3
+
4
+ #Accept Bitcoin, Litecoin, Dogecoin, Dash, Ethereum and ERC-20 tokens. Server-to-server, authenticated with a secret API key (`Authorization: Bearer sk_live_…` for live, or `sk_test_…` for test mode — same base URL). All monetary amounts in API responses are JSON numbers; **webhook** amounts are strings to preserve decimal precision (see the `webhooks` section). **Rate limits.** Every request is rate-limited per API key in two windows — per minute and per hour — by plan tier (min/hour): starter 30/500, business 100/2000, professional 300/5000, enterprise 1000/20000. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix seconds) for the per-minute window. On `429` the body is `error: \"RATE_LIMIT_EXCEEDED\"` (either window) with a `Retry-After` header (seconds) — clients should retry after it. A separate `429` with `error: \"MONTHLY_LIMIT_REACHED\"` means the plan's monthly transaction quota (not the request rate).
5
+
6
+ The version of the OpenAPI document: 1.0.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module GriffNode
16
+ class AccountApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Merchant plan, usage and limits
23
+ # @param [Hash] opts the optional parameters
24
+ # @return [GetAccount200Response]
25
+ def get_account(opts = {})
26
+ data, _status_code, _headers = get_account_with_http_info(opts)
27
+ data
28
+ end
29
+
30
+ # Merchant plan, usage and limits
31
+ # @param [Hash] opts the optional parameters
32
+ # @return [Array<(GetAccount200Response, Integer, Hash)>] GetAccount200Response data, response status code and response headers
33
+ def get_account_with_http_info(opts = {})
34
+ if @api_client.config.debugging
35
+ @api_client.config.logger.debug 'Calling API: AccountApi.get_account ...'
36
+ end
37
+ # resource path
38
+ local_var_path = '/account'
39
+
40
+ # query parameters
41
+ query_params = opts[:query_params] || {}
42
+
43
+ # header parameters
44
+ header_params = opts[:header_params] || {}
45
+ # HTTP header 'Accept' (if needed)
46
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
47
+
48
+ # form parameters
49
+ form_params = opts[:form_params] || {}
50
+
51
+ # http body (model)
52
+ post_body = opts[:debug_body]
53
+
54
+ # return_type
55
+ return_type = opts[:debug_return_type] || 'GetAccount200Response'
56
+
57
+ # auth_names
58
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
59
+
60
+ new_options = opts.merge(
61
+ :operation => :"AccountApi.get_account",
62
+ :header_params => header_params,
63
+ :query_params => query_params,
64
+ :form_params => form_params,
65
+ :body => post_body,
66
+ :auth_names => auth_names,
67
+ :return_type => return_type
68
+ )
69
+
70
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
71
+ if @api_client.config.debugging
72
+ @api_client.config.logger.debug "API called: AccountApi#get_account\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
73
+ end
74
+ return data, status_code, headers
75
+ end
76
+
77
+ # Merchant transaction analytics
78
+ # @param [Hash] opts the optional parameters
79
+ # @return [GetStats200Response]
80
+ def get_stats(opts = {})
81
+ data, _status_code, _headers = get_stats_with_http_info(opts)
82
+ data
83
+ end
84
+
85
+ # Merchant transaction analytics
86
+ # @param [Hash] opts the optional parameters
87
+ # @return [Array<(GetStats200Response, Integer, Hash)>] GetStats200Response data, response status code and response headers
88
+ def get_stats_with_http_info(opts = {})
89
+ if @api_client.config.debugging
90
+ @api_client.config.logger.debug 'Calling API: AccountApi.get_stats ...'
91
+ end
92
+ # resource path
93
+ local_var_path = '/stats'
94
+
95
+ # query parameters
96
+ query_params = opts[:query_params] || {}
97
+
98
+ # header parameters
99
+ header_params = opts[:header_params] || {}
100
+ # HTTP header 'Accept' (if needed)
101
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
102
+
103
+ # form parameters
104
+ form_params = opts[:form_params] || {}
105
+
106
+ # http body (model)
107
+ post_body = opts[:debug_body]
108
+
109
+ # return_type
110
+ return_type = opts[:debug_return_type] || 'GetStats200Response'
111
+
112
+ # auth_names
113
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
114
+
115
+ new_options = opts.merge(
116
+ :operation => :"AccountApi.get_stats",
117
+ :header_params => header_params,
118
+ :query_params => query_params,
119
+ :form_params => form_params,
120
+ :body => post_body,
121
+ :auth_names => auth_names,
122
+ :return_type => return_type
123
+ )
124
+
125
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
126
+ if @api_client.config.debugging
127
+ @api_client.config.logger.debug "API called: AccountApi#get_stats\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
128
+ end
129
+ return data, status_code, headers
130
+ end
131
+
132
+ # On-platform balances (for overage/top-up; NOT crypto settlement)
133
+ # @param [Hash] opts the optional parameters
134
+ # @return [ListBalances200Response]
135
+ def list_balances(opts = {})
136
+ data, _status_code, _headers = list_balances_with_http_info(opts)
137
+ data
138
+ end
139
+
140
+ # On-platform balances (for overage/top-up; NOT crypto settlement)
141
+ # @param [Hash] opts the optional parameters
142
+ # @return [Array<(ListBalances200Response, Integer, Hash)>] ListBalances200Response data, response status code and response headers
143
+ def list_balances_with_http_info(opts = {})
144
+ if @api_client.config.debugging
145
+ @api_client.config.logger.debug 'Calling API: AccountApi.list_balances ...'
146
+ end
147
+ # resource path
148
+ local_var_path = '/balances'
149
+
150
+ # query parameters
151
+ query_params = opts[:query_params] || {}
152
+
153
+ # header parameters
154
+ header_params = opts[:header_params] || {}
155
+ # HTTP header 'Accept' (if needed)
156
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
157
+
158
+ # form parameters
159
+ form_params = opts[:form_params] || {}
160
+
161
+ # http body (model)
162
+ post_body = opts[:debug_body]
163
+
164
+ # return_type
165
+ return_type = opts[:debug_return_type] || 'ListBalances200Response'
166
+
167
+ # auth_names
168
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
169
+
170
+ new_options = opts.merge(
171
+ :operation => :"AccountApi.list_balances",
172
+ :header_params => header_params,
173
+ :query_params => query_params,
174
+ :form_params => form_params,
175
+ :body => post_body,
176
+ :auth_names => auth_names,
177
+ :return_type => return_type
178
+ )
179
+
180
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
181
+ if @api_client.config.debugging
182
+ @api_client.config.logger.debug "API called: AccountApi#list_balances\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
183
+ end
184
+ return data, status_code, headers
185
+ end
186
+
187
+ # GriffNode billing invoices (platform ↔ merchant)
188
+ # @param [Hash] opts the optional parameters
189
+ # @option opts [Integer] :limit (default to 20)
190
+ # @option opts [Integer] :offset (default to 0)
191
+ # @return [ListInvoices200Response]
192
+ def list_invoices(opts = {})
193
+ data, _status_code, _headers = list_invoices_with_http_info(opts)
194
+ data
195
+ end
196
+
197
+ # GriffNode billing invoices (platform ↔ merchant)
198
+ # @param [Hash] opts the optional parameters
199
+ # @option opts [Integer] :limit (default to 20)
200
+ # @option opts [Integer] :offset (default to 0)
201
+ # @return [Array<(ListInvoices200Response, Integer, Hash)>] ListInvoices200Response data, response status code and response headers
202
+ def list_invoices_with_http_info(opts = {})
203
+ if @api_client.config.debugging
204
+ @api_client.config.logger.debug 'Calling API: AccountApi.list_invoices ...'
205
+ end
206
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] > 100
207
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AccountApi.list_invoices, must be smaller than or equal to 100.'
208
+ end
209
+
210
+ if @api_client.config.client_side_validation && !opts[:'limit'].nil? && opts[:'limit'] < 1
211
+ fail ArgumentError, 'invalid value for "opts[:"limit"]" when calling AccountApi.list_invoices, must be greater than or equal to 1.'
212
+ end
213
+
214
+ if @api_client.config.client_side_validation && !opts[:'offset'].nil? && opts[:'offset'] < 0
215
+ fail ArgumentError, 'invalid value for "opts[:"offset"]" when calling AccountApi.list_invoices, must be greater than or equal to 0.'
216
+ end
217
+
218
+ # resource path
219
+ local_var_path = '/invoices'
220
+
221
+ # query parameters
222
+ query_params = opts[:query_params] || {}
223
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
224
+ query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
225
+
226
+ # header parameters
227
+ header_params = opts[:header_params] || {}
228
+ # HTTP header 'Accept' (if needed)
229
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
230
+
231
+ # form parameters
232
+ form_params = opts[:form_params] || {}
233
+
234
+ # http body (model)
235
+ post_body = opts[:debug_body]
236
+
237
+ # return_type
238
+ return_type = opts[:debug_return_type] || 'ListInvoices200Response'
239
+
240
+ # auth_names
241
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
242
+
243
+ new_options = opts.merge(
244
+ :operation => :"AccountApi.list_invoices",
245
+ :header_params => header_params,
246
+ :query_params => query_params,
247
+ :form_params => form_params,
248
+ :body => post_body,
249
+ :auth_names => auth_names,
250
+ :return_type => return_type
251
+ )
252
+
253
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
254
+ if @api_client.config.debugging
255
+ @api_client.config.logger.debug "API called: AccountApi#list_invoices\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
256
+ end
257
+ return data, status_code, headers
258
+ end
259
+
260
+ # Plan catalogue and pricing
261
+ # @param [Hash] opts the optional parameters
262
+ # @return [ListPlans200Response]
263
+ def list_plans(opts = {})
264
+ data, _status_code, _headers = list_plans_with_http_info(opts)
265
+ data
266
+ end
267
+
268
+ # Plan catalogue and pricing
269
+ # @param [Hash] opts the optional parameters
270
+ # @return [Array<(ListPlans200Response, Integer, Hash)>] ListPlans200Response data, response status code and response headers
271
+ def list_plans_with_http_info(opts = {})
272
+ if @api_client.config.debugging
273
+ @api_client.config.logger.debug 'Calling API: AccountApi.list_plans ...'
274
+ end
275
+ # resource path
276
+ local_var_path = '/plans'
277
+
278
+ # query parameters
279
+ query_params = opts[:query_params] || {}
280
+
281
+ # header parameters
282
+ header_params = opts[:header_params] || {}
283
+ # HTTP header 'Accept' (if needed)
284
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
285
+
286
+ # form parameters
287
+ form_params = opts[:form_params] || {}
288
+
289
+ # http body (model)
290
+ post_body = opts[:debug_body]
291
+
292
+ # return_type
293
+ return_type = opts[:debug_return_type] || 'ListPlans200Response'
294
+
295
+ # auth_names
296
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
297
+
298
+ new_options = opts.merge(
299
+ :operation => :"AccountApi.list_plans",
300
+ :header_params => header_params,
301
+ :query_params => query_params,
302
+ :form_params => form_params,
303
+ :body => post_body,
304
+ :auth_names => auth_names,
305
+ :return_type => return_type
306
+ )
307
+
308
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
309
+ if @api_client.config.debugging
310
+ @api_client.config.logger.debug "API called: AccountApi#list_plans\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
311
+ end
312
+ return data, status_code, headers
313
+ end
314
+ end
315
+ end
@@ -0,0 +1,88 @@
1
+ =begin
2
+ #GriffNode API
3
+
4
+ #Accept Bitcoin, Litecoin, Dogecoin, Dash, Ethereum and ERC-20 tokens. Server-to-server, authenticated with a secret API key (`Authorization: Bearer sk_live_…` for live, or `sk_test_…` for test mode — same base URL). All monetary amounts in API responses are JSON numbers; **webhook** amounts are strings to preserve decimal precision (see the `webhooks` section). **Rate limits.** Every request is rate-limited per API key in two windows — per minute and per hour — by plan tier (min/hour): starter 30/500, business 100/2000, professional 300/5000, enterprise 1000/20000. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix seconds) for the per-minute window. On `429` the body is `error: \"RATE_LIMIT_EXCEEDED\"` (either window) with a `Retry-After` header (seconds) — clients should retry after it. A separate `429` with `error: \"MONTHLY_LIMIT_REACHED\"` means the plan's monthly transaction quota (not the request rate).
5
+
6
+ The version of the OpenAPI document: 1.0.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module GriffNode
16
+ class BillingApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Start a plan upgrade or account top-up
23
+ # @param create_billing_checkout_request [CreateBillingCheckoutRequest]
24
+ # @param [Hash] opts the optional parameters
25
+ # @return [TransactionEnvelope]
26
+ def create_billing_checkout(create_billing_checkout_request, opts = {})
27
+ data, _status_code, _headers = create_billing_checkout_with_http_info(create_billing_checkout_request, opts)
28
+ data
29
+ end
30
+
31
+ # Start a plan upgrade or account top-up
32
+ # @param create_billing_checkout_request [CreateBillingCheckoutRequest]
33
+ # @param [Hash] opts the optional parameters
34
+ # @return [Array<(TransactionEnvelope, Integer, Hash)>] TransactionEnvelope data, response status code and response headers
35
+ def create_billing_checkout_with_http_info(create_billing_checkout_request, opts = {})
36
+ if @api_client.config.debugging
37
+ @api_client.config.logger.debug 'Calling API: BillingApi.create_billing_checkout ...'
38
+ end
39
+ # verify the required parameter 'create_billing_checkout_request' is set
40
+ if @api_client.config.client_side_validation && create_billing_checkout_request.nil?
41
+ fail ArgumentError, "Missing the required parameter 'create_billing_checkout_request' when calling BillingApi.create_billing_checkout"
42
+ end
43
+ # resource path
44
+ local_var_path = '/billing/checkout'
45
+
46
+ # query parameters
47
+ query_params = opts[:query_params] || {}
48
+
49
+ # header parameters
50
+ header_params = opts[:header_params] || {}
51
+ # HTTP header 'Accept' (if needed)
52
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
53
+ # HTTP header 'Content-Type'
54
+ content_type = @api_client.select_header_content_type(['application/json'])
55
+ if !content_type.nil?
56
+ header_params['Content-Type'] = content_type
57
+ end
58
+
59
+ # form parameters
60
+ form_params = opts[:form_params] || {}
61
+
62
+ # http body (model)
63
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(create_billing_checkout_request)
64
+
65
+ # return_type
66
+ return_type = opts[:debug_return_type] || 'TransactionEnvelope'
67
+
68
+ # auth_names
69
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
70
+
71
+ new_options = opts.merge(
72
+ :operation => :"BillingApi.create_billing_checkout",
73
+ :header_params => header_params,
74
+ :query_params => query_params,
75
+ :form_params => form_params,
76
+ :body => post_body,
77
+ :auth_names => auth_names,
78
+ :return_type => return_type
79
+ )
80
+
81
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
82
+ if @api_client.config.debugging
83
+ @api_client.config.logger.debug "API called: BillingApi#create_billing_checkout\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
84
+ end
85
+ return data, status_code, headers
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,84 @@
1
+ =begin
2
+ #GriffNode API
3
+
4
+ #Accept Bitcoin, Litecoin, Dogecoin, Dash, Ethereum and ERC-20 tokens. Server-to-server, authenticated with a secret API key (`Authorization: Bearer sk_live_…` for live, or `sk_test_…` for test mode — same base URL). All monetary amounts in API responses are JSON numbers; **webhook** amounts are strings to preserve decimal precision (see the `webhooks` section). **Rate limits.** Every request is rate-limited per API key in two windows — per minute and per hour — by plan tier (min/hour): starter 30/500, business 100/2000, professional 300/5000, enterprise 1000/20000. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix seconds) for the per-minute window. On `429` the body is `error: \"RATE_LIMIT_EXCEEDED\"` (either window) with a `Retry-After` header (seconds) — clients should retry after it. A separate `429` with `error: \"MONTHLY_LIMIT_REACHED\"` means the plan's monthly transaction quota (not the request rate).
5
+
6
+ The version of the OpenAPI document: 1.0.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module GriffNode
16
+ class DefaultApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Payment lifecycle event delivered to the merchant's webhook URL
23
+ # Signed with HMAC-SHA256 over the RAW request body. Verify by comparing `X-GriffNode-Signature: sha256=<hex>` to `hex(hmac_sha256(webhook_secret, raw_body))` using a constant-time compare. Also sent: `X-GriffNode-Event` (the event type) and `X-Webhook-ID` (unique delivery id — use for idempotency).
24
+ # @param [Hash] opts the optional parameters
25
+ # @option opts [WebhookPayload] :webhook_payload
26
+ # @return [nil]
27
+ def payment_webhook(opts = {})
28
+ payment_webhook_with_http_info(opts)
29
+ nil
30
+ end
31
+
32
+ # Payment lifecycle event delivered to the merchant&#39;s webhook URL
33
+ # Signed with HMAC-SHA256 over the RAW request body. Verify by comparing &#x60;X-GriffNode-Signature: sha256&#x3D;&lt;hex&gt;&#x60; to &#x60;hex(hmac_sha256(webhook_secret, raw_body))&#x60; using a constant-time compare. Also sent: &#x60;X-GriffNode-Event&#x60; (the event type) and &#x60;X-Webhook-ID&#x60; (unique delivery id — use for idempotency).
34
+ # @param [Hash] opts the optional parameters
35
+ # @option opts [WebhookPayload] :webhook_payload
36
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
37
+ def payment_webhook_with_http_info(opts = {})
38
+ if @api_client.config.debugging
39
+ @api_client.config.logger.debug 'Calling API: DefaultApi.payment_webhook ...'
40
+ end
41
+ # resource path
42
+ local_var_path = '/paymentEvent'
43
+
44
+ # query parameters
45
+ query_params = opts[:query_params] || {}
46
+
47
+ # header parameters
48
+ header_params = opts[:header_params] || {}
49
+ # HTTP header 'Content-Type'
50
+ content_type = @api_client.select_header_content_type(['application/json'])
51
+ if !content_type.nil?
52
+ header_params['Content-Type'] = content_type
53
+ end
54
+
55
+ # form parameters
56
+ form_params = opts[:form_params] || {}
57
+
58
+ # http body (model)
59
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(opts[:'webhook_payload'])
60
+
61
+ # return_type
62
+ return_type = opts[:debug_return_type]
63
+
64
+ # auth_names
65
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
66
+
67
+ new_options = opts.merge(
68
+ :operation => :"DefaultApi.payment_webhook",
69
+ :header_params => header_params,
70
+ :query_params => query_params,
71
+ :form_params => form_params,
72
+ :body => post_body,
73
+ :auth_names => auth_names,
74
+ :return_type => return_type
75
+ )
76
+
77
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
78
+ if @api_client.config.debugging
79
+ @api_client.config.logger.debug "API called: DefaultApi#payment_webhook\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
80
+ end
81
+ return data, status_code, headers
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,187 @@
1
+ =begin
2
+ #GriffNode API
3
+
4
+ #Accept Bitcoin, Litecoin, Dogecoin, Dash, Ethereum and ERC-20 tokens. Server-to-server, authenticated with a secret API key (`Authorization: Bearer sk_live_…` for live, or `sk_test_…` for test mode — same base URL). All monetary amounts in API responses are JSON numbers; **webhook** amounts are strings to preserve decimal precision (see the `webhooks` section). **Rate limits.** Every request is rate-limited per API key in two windows — per minute and per hour — by plan tier (min/hour): starter 30/500, business 100/2000, professional 300/5000, enterprise 1000/20000. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix seconds) for the per-minute window. On `429` the body is `error: \"RATE_LIMIT_EXCEEDED\"` (either window) with a `Retry-After` header (seconds) — clients should retry after it. A separate `429` with `error: \"MONTHLY_LIMIT_REACHED\"` means the plan's monthly transaction quota (not the request rate).
5
+
6
+ The version of the OpenAPI document: 1.0.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module GriffNode
16
+ class MarketDataApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Current crypto and fiat exchange rates (USD-denominated)
23
+ # @param [Hash] opts the optional parameters
24
+ # @return [GetPrices200Response]
25
+ def get_prices(opts = {})
26
+ data, _status_code, _headers = get_prices_with_http_info(opts)
27
+ data
28
+ end
29
+
30
+ # Current crypto and fiat exchange rates (USD-denominated)
31
+ # @param [Hash] opts the optional parameters
32
+ # @return [Array<(GetPrices200Response, Integer, Hash)>] GetPrices200Response data, response status code and response headers
33
+ def get_prices_with_http_info(opts = {})
34
+ if @api_client.config.debugging
35
+ @api_client.config.logger.debug 'Calling API: MarketDataApi.get_prices ...'
36
+ end
37
+ # resource path
38
+ local_var_path = '/prices'
39
+
40
+ # query parameters
41
+ query_params = opts[:query_params] || {}
42
+
43
+ # header parameters
44
+ header_params = opts[:header_params] || {}
45
+ # HTTP header 'Accept' (if needed)
46
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
47
+
48
+ # form parameters
49
+ form_params = opts[:form_params] || {}
50
+
51
+ # http body (model)
52
+ post_body = opts[:debug_body]
53
+
54
+ # return_type
55
+ return_type = opts[:debug_return_type] || 'GetPrices200Response'
56
+
57
+ # auth_names
58
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
59
+
60
+ new_options = opts.merge(
61
+ :operation => :"MarketDataApi.get_prices",
62
+ :header_params => header_params,
63
+ :query_params => query_params,
64
+ :form_params => form_params,
65
+ :body => post_body,
66
+ :auth_names => auth_names,
67
+ :return_type => return_type
68
+ )
69
+
70
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
71
+ if @api_client.config.debugging
72
+ @api_client.config.logger.debug "API called: MarketDataApi#get_prices\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
73
+ end
74
+ return data, status_code, headers
75
+ end
76
+
77
+ # All supported cryptocurrencies and tokens
78
+ # @param [Hash] opts the optional parameters
79
+ # @return [ListCryptocurrencies200Response]
80
+ def list_cryptocurrencies(opts = {})
81
+ data, _status_code, _headers = list_cryptocurrencies_with_http_info(opts)
82
+ data
83
+ end
84
+
85
+ # All supported cryptocurrencies and tokens
86
+ # @param [Hash] opts the optional parameters
87
+ # @return [Array<(ListCryptocurrencies200Response, Integer, Hash)>] ListCryptocurrencies200Response data, response status code and response headers
88
+ def list_cryptocurrencies_with_http_info(opts = {})
89
+ if @api_client.config.debugging
90
+ @api_client.config.logger.debug 'Calling API: MarketDataApi.list_cryptocurrencies ...'
91
+ end
92
+ # resource path
93
+ local_var_path = '/cryptos/list'
94
+
95
+ # query parameters
96
+ query_params = opts[:query_params] || {}
97
+
98
+ # header parameters
99
+ header_params = opts[:header_params] || {}
100
+ # HTTP header 'Accept' (if needed)
101
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
102
+
103
+ # form parameters
104
+ form_params = opts[:form_params] || {}
105
+
106
+ # http body (model)
107
+ post_body = opts[:debug_body]
108
+
109
+ # return_type
110
+ return_type = opts[:debug_return_type] || 'ListCryptocurrencies200Response'
111
+
112
+ # auth_names
113
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
114
+
115
+ new_options = opts.merge(
116
+ :operation => :"MarketDataApi.list_cryptocurrencies",
117
+ :header_params => header_params,
118
+ :query_params => query_params,
119
+ :form_params => form_params,
120
+ :body => post_body,
121
+ :auth_names => auth_names,
122
+ :return_type => return_type
123
+ )
124
+
125
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
126
+ if @api_client.config.debugging
127
+ @api_client.config.logger.debug "API called: MarketDataApi#list_cryptocurrencies\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
128
+ end
129
+ return data, status_code, headers
130
+ end
131
+
132
+ # Cryptocurrencies this merchant has wallets configured for
133
+ # @param [Hash] opts the optional parameters
134
+ # @return [ListCryptocurrencies200Response]
135
+ def list_merchant_cryptocurrencies(opts = {})
136
+ data, _status_code, _headers = list_merchant_cryptocurrencies_with_http_info(opts)
137
+ data
138
+ end
139
+
140
+ # Cryptocurrencies this merchant has wallets configured for
141
+ # @param [Hash] opts the optional parameters
142
+ # @return [Array<(ListCryptocurrencies200Response, Integer, Hash)>] ListCryptocurrencies200Response data, response status code and response headers
143
+ def list_merchant_cryptocurrencies_with_http_info(opts = {})
144
+ if @api_client.config.debugging
145
+ @api_client.config.logger.debug 'Calling API: MarketDataApi.list_merchant_cryptocurrencies ...'
146
+ end
147
+ # resource path
148
+ local_var_path = '/merchant/cryptos'
149
+
150
+ # query parameters
151
+ query_params = opts[:query_params] || {}
152
+
153
+ # header parameters
154
+ header_params = opts[:header_params] || {}
155
+ # HTTP header 'Accept' (if needed)
156
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
157
+
158
+ # form parameters
159
+ form_params = opts[:form_params] || {}
160
+
161
+ # http body (model)
162
+ post_body = opts[:debug_body]
163
+
164
+ # return_type
165
+ return_type = opts[:debug_return_type] || 'ListCryptocurrencies200Response'
166
+
167
+ # auth_names
168
+ auth_names = opts[:debug_auth_names] || ['SecretKey']
169
+
170
+ new_options = opts.merge(
171
+ :operation => :"MarketDataApi.list_merchant_cryptocurrencies",
172
+ :header_params => header_params,
173
+ :query_params => query_params,
174
+ :form_params => form_params,
175
+ :body => post_body,
176
+ :auth_names => auth_names,
177
+ :return_type => return_type
178
+ )
179
+
180
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
181
+ if @api_client.config.debugging
182
+ @api_client.config.logger.debug "API called: MarketDataApi#list_merchant_cryptocurrencies\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
183
+ end
184
+ return data, status_code, headers
185
+ end
186
+ end
187
+ end