bitpesa-sdk 0.1.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 (633) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/Gemfile.lock +92 -0
  4. data/LICENSE +7 -0
  5. data/README.md +264 -0
  6. data/Rakefile +10 -0
  7. data/bitpesa-sdk.gemspec +46 -0
  8. data/docs/APILogsApi.md +141 -0
  9. data/docs/Account.md +9 -0
  10. data/docs/AccountBase.md +9 -0
  11. data/docs/AccountDebitsApi.md +199 -0
  12. data/docs/AccountListResponse.md +9 -0
  13. data/docs/AccountMeta.md +8 -0
  14. data/docs/AccountResponse.md +9 -0
  15. data/docs/AccountValidationApi.md +70 -0
  16. data/docs/AccountValidationError.md +8 -0
  17. data/docs/AccountValidationRequest.md +12 -0
  18. data/docs/AccountValidationResponse.md +9 -0
  19. data/docs/AccountValidationResult.md +8 -0
  20. data/docs/AccountsApi.md +128 -0
  21. data/docs/ApiLog.md +16 -0
  22. data/docs/ApiLogBase.md +16 -0
  23. data/docs/ApiLogListResponse.md +9 -0
  24. data/docs/ApiLogResponse.md +8 -0
  25. data/docs/Body.md +12 -0
  26. data/docs/Currency.md +17 -0
  27. data/docs/CurrencyBase.md +17 -0
  28. data/docs/CurrencyExchange.md +18 -0
  29. data/docs/CurrencyExchangeListResponse.md +8 -0
  30. data/docs/CurrencyInfoApi.md +182 -0
  31. data/docs/CurrencyListResponse.md +8 -0
  32. data/docs/CurrencyOpposite.md +18 -0
  33. data/docs/Debit.md +17 -0
  34. data/docs/DebitBase.md +12 -0
  35. data/docs/DebitErrorResponse.md +13 -0
  36. data/docs/DebitListRequest.md +8 -0
  37. data/docs/DebitListResponse.md +9 -0
  38. data/docs/DebitRequest.md +8 -0
  39. data/docs/DebitRequestWrapper.md +8 -0
  40. data/docs/DebitResponse.md +8 -0
  41. data/docs/DebitValidResponse.md +16 -0
  42. data/docs/DefaultDocument.md +16 -0
  43. data/docs/DefaultRecipient.md +11 -0
  44. data/docs/DefaultSender.md +24 -0
  45. data/docs/DefaultWebhook.md +11 -0
  46. data/docs/Document.md +17 -0
  47. data/docs/DocumentBase.md +15 -0
  48. data/docs/DocumentErrorResponse.md +16 -0
  49. data/docs/DocumentListResponse.md +9 -0
  50. data/docs/DocumentRequest.md +8 -0
  51. data/docs/DocumentResponse.md +8 -0
  52. data/docs/DocumentValidResponse.md +16 -0
  53. data/docs/DocumentWebhook.md +10 -0
  54. data/docs/DocumentsApi.md +199 -0
  55. data/docs/ErrorStatus.md +9 -0
  56. data/docs/FieldDescription.md +9 -0
  57. data/docs/FieldSelectValidation.md +9 -0
  58. data/docs/FieldValidation.md +10 -0
  59. data/docs/FullInvalidTransaction.md +12 -0
  60. data/docs/FullInvalidTransactionRequest.md +14 -0
  61. data/docs/FullValidTransaction.md +11 -0
  62. data/docs/FullValidTransactionRequest.md +12 -0
  63. data/docs/InlineResponse200.md +9 -0
  64. data/docs/InlineResponse2001.md +8 -0
  65. data/docs/InlineResponse20010.md +9 -0
  66. data/docs/InlineResponse20011.md +9 -0
  67. data/docs/InlineResponse20012.md +8 -0
  68. data/docs/InlineResponse20013.md +9 -0
  69. data/docs/InlineResponse20014.md +9 -0
  70. data/docs/InlineResponse20015.md +8 -0
  71. data/docs/InlineResponse20016.md +9 -0
  72. data/docs/InlineResponse20017.md +8 -0
  73. data/docs/InlineResponse20018.md +9 -0
  74. data/docs/InlineResponse20019.md +9 -0
  75. data/docs/InlineResponse2002.md +9 -0
  76. data/docs/InlineResponse20020.md +9 -0
  77. data/docs/InlineResponse20021.md +8 -0
  78. data/docs/InlineResponse20021Object.md +8 -0
  79. data/docs/InlineResponse20022.md +8 -0
  80. data/docs/InlineResponse20022Object.md +8 -0
  81. data/docs/InlineResponse20023.md +9 -0
  82. data/docs/InlineResponse20023Object.md +8 -0
  83. data/docs/InlineResponse20024.md +8 -0
  84. data/docs/InlineResponse20025.md +8 -0
  85. data/docs/InlineResponse20026.md +8 -0
  86. data/docs/InlineResponse20027.md +9 -0
  87. data/docs/InlineResponse20028.md +8 -0
  88. data/docs/InlineResponse20029.md +9 -0
  89. data/docs/InlineResponse2002Object.md +8 -0
  90. data/docs/InlineResponse2003.md +8 -0
  91. data/docs/InlineResponse20030.md +8 -0
  92. data/docs/InlineResponse20031.md +9 -0
  93. data/docs/InlineResponse20032.md +9 -0
  94. data/docs/InlineResponse20033.md +8 -0
  95. data/docs/InlineResponse20034.md +9 -0
  96. data/docs/InlineResponse20035.md +9 -0
  97. data/docs/InlineResponse20036.md +8 -0
  98. data/docs/InlineResponse20037.md +9 -0
  99. data/docs/InlineResponse20038.md +8 -0
  100. data/docs/InlineResponse20039.md +9 -0
  101. data/docs/InlineResponse2004.md +8 -0
  102. data/docs/InlineResponse20040.md +8 -0
  103. data/docs/InlineResponse2004Object.md +8 -0
  104. data/docs/InlineResponse2005.md +8 -0
  105. data/docs/InlineResponse2006.md +9 -0
  106. data/docs/InlineResponse2007.md +8 -0
  107. data/docs/InlineResponse2008.md +9 -0
  108. data/docs/InlineResponse2009.md +8 -0
  109. data/docs/InlineResponse201.md +8 -0
  110. data/docs/InlineResponse2011.md +8 -0
  111. data/docs/InlineResponse20110.md +8 -0
  112. data/docs/InlineResponse20111.md +8 -0
  113. data/docs/InlineResponse2012.md +8 -0
  114. data/docs/InlineResponse2013.md +8 -0
  115. data/docs/InlineResponse2014.md +8 -0
  116. data/docs/InlineResponse2015.md +8 -0
  117. data/docs/InlineResponse2016.md +8 -0
  118. data/docs/InlineResponse2017.md +8 -0
  119. data/docs/InlineResponse2018.md +8 -0
  120. data/docs/InlineResponse2019.md +8 -0
  121. data/docs/InlineResponse400.md +9 -0
  122. data/docs/InlineResponse4001.md +9 -0
  123. data/docs/InlineResponse422.md +8 -0
  124. data/docs/InlineResponse4221.md +8 -0
  125. data/docs/InlineResponse42210.md +8 -0
  126. data/docs/InlineResponse42211.md +8 -0
  127. data/docs/InlineResponse42212.md +8 -0
  128. data/docs/InlineResponse42213.md +8 -0
  129. data/docs/InlineResponse42214.md +8 -0
  130. data/docs/InlineResponse4221Meta.md +8 -0
  131. data/docs/InlineResponse4221Object.md +8 -0
  132. data/docs/InlineResponse4222.md +8 -0
  133. data/docs/InlineResponse4223.md +8 -0
  134. data/docs/InlineResponse4224.md +8 -0
  135. data/docs/InlineResponse4225.md +8 -0
  136. data/docs/InlineResponse4226.md +8 -0
  137. data/docs/InlineResponse4227.md +8 -0
  138. data/docs/InlineResponse4227Meta.md +8 -0
  139. data/docs/InlineResponse4228.md +8 -0
  140. data/docs/InlineResponse4228Meta.md +8 -0
  141. data/docs/InlineResponse4228Object.md +8 -0
  142. data/docs/InlineResponse4229.md +8 -0
  143. data/docs/InlineResponse422Meta.md +8 -0
  144. data/docs/InlineResponse422Object.md +8 -0
  145. data/docs/InvalidDebit.md +14 -0
  146. data/docs/InvalidDocument.md +17 -0
  147. data/docs/InvalidRecipient.md +12 -0
  148. data/docs/InvalidSender.md +25 -0
  149. data/docs/InvalidWebhook.md +11 -0
  150. data/docs/LogsApi.md +141 -0
  151. data/docs/Meta.md +8 -0
  152. data/docs/Meta2.md +8 -0
  153. data/docs/Meta2Pagination.md +12 -0
  154. data/docs/MetaPagination.md +12 -0
  155. data/docs/Object.md +9 -0
  156. data/docs/OppositePaymentMethod.md +13 -0
  157. data/docs/OppositePaymentMethodBase.md +13 -0
  158. data/docs/Pagination.md +12 -0
  159. data/docs/PaginationMeta.md +8 -0
  160. data/docs/PaginationPagination.md +12 -0
  161. data/docs/PayinMethod.md +12 -0
  162. data/docs/PayinMethodBase.md +12 -0
  163. data/docs/PayinMethodDetails.md +10 -0
  164. data/docs/PayinMethodDetailsBase.md +7 -0
  165. data/docs/PayinMethodDetailsMobile.md +9 -0
  166. data/docs/PayinMethodDetailsNGNBank.md +8 -0
  167. data/docs/PayinMethodRequest.md +8 -0
  168. data/docs/PayinMethodType.md +8 -0
  169. data/docs/PayinMethodTypeBase.md +8 -0
  170. data/docs/PaymentMethod.md +13 -0
  171. data/docs/PaymentMethodBase.md +15 -0
  172. data/docs/PaymentMethodListResponse.md +8 -0
  173. data/docs/PaymentMethodOpposite.md +14 -0
  174. data/docs/PaymentMethodsApi.md +124 -0
  175. data/docs/PayoutMethod.md +13 -0
  176. data/docs/PayoutMethodBankAccountTypeEnum.md +7 -0
  177. data/docs/PayoutMethodBase.md +10 -0
  178. data/docs/PayoutMethodDetails.md +26 -0
  179. data/docs/PayoutMethodDetailsBalance.md +8 -0
  180. data/docs/PayoutMethodDetailsBase.md +7 -0
  181. data/docs/PayoutMethodDetailsGHSBank.md +11 -0
  182. data/docs/PayoutMethodDetailsIBAN.md +12 -0
  183. data/docs/PayoutMethodDetailsMADCash.md +18 -0
  184. data/docs/PayoutMethodDetailsMobile.md +10 -0
  185. data/docs/PayoutMethodDetailsNGNBank.md +12 -0
  186. data/docs/PayoutMethodDetailsXOFMobile.md +11 -0
  187. data/docs/PayoutMethodErrorResponse.md +11 -0
  188. data/docs/PayoutMethodGenderEnum.md +7 -0
  189. data/docs/PayoutMethodIdentityCardTypeEnum.md +7 -0
  190. data/docs/PayoutMethodListResponse.md +9 -0
  191. data/docs/PayoutMethodMobileProviderEnum.md +7 -0
  192. data/docs/PayoutMethodRequest.md +8 -0
  193. data/docs/PayoutMethodResponse.md +8 -0
  194. data/docs/PayoutMethodValidResponse.md +11 -0
  195. data/docs/PayoutMethodWebhook.md +10 -0
  196. data/docs/PayoutMethodsApi.md +334 -0
  197. data/docs/Recipient.md +27 -0
  198. data/docs/RecipientBase.md +11 -0
  199. data/docs/RecipientErrorResponse.md +26 -0
  200. data/docs/RecipientListResponse.md +9 -0
  201. data/docs/RecipientRequest.md +8 -0
  202. data/docs/RecipientResponse.md +8 -0
  203. data/docs/RecipientState.md +7 -0
  204. data/docs/RecipientValidResponse.md +26 -0
  205. data/docs/RecipientWebhook.md +10 -0
  206. data/docs/RecipientsApi.md +212 -0
  207. data/docs/Sender.md +32 -0
  208. data/docs/SenderBase.md +30 -0
  209. data/docs/SenderErrorResponse.md +32 -0
  210. data/docs/SenderExistingRequest.md +8 -0
  211. data/docs/SenderFullRequest.md +30 -0
  212. data/docs/SenderListResponse.md +9 -0
  213. data/docs/SenderRequest.md +8 -0
  214. data/docs/SenderResponse.md +8 -0
  215. data/docs/SenderState.md +7 -0
  216. data/docs/SenderValidResponse.md +32 -0
  217. data/docs/SenderWebhook.md +10 -0
  218. data/docs/SendersApi.md +328 -0
  219. data/docs/Transaction.md +22 -0
  220. data/docs/TransactionBase.md +13 -0
  221. data/docs/TransactionErrorResponse.md +21 -0
  222. data/docs/TransactionListResponse.md +9 -0
  223. data/docs/TransactionRequest.md +8 -0
  224. data/docs/TransactionRequestBase.md +9 -0
  225. data/docs/TransactionRequestErrorResponse.md +10 -0
  226. data/docs/TransactionRequestRequest.md +9 -0
  227. data/docs/TransactionRequestValidResponse.md +10 -0
  228. data/docs/TransactionRequestsApi.md +199 -0
  229. data/docs/TransactionResponse.md +8 -0
  230. data/docs/TransactionState.md +7 -0
  231. data/docs/TransactionTraits.md +9 -0
  232. data/docs/TransactionValidResponse.md +21 -0
  233. data/docs/TransactionWebhook.md +10 -0
  234. data/docs/TransactionsApi.md +448 -0
  235. data/docs/ValidDebit.md +16 -0
  236. data/docs/ValidationErrorDescription.md +8 -0
  237. data/docs/Webhook.md +10 -0
  238. data/docs/WebhookBase.md +10 -0
  239. data/docs/WebhookDefinition.md +12 -0
  240. data/docs/WebhookDefinitionBase.md +10 -0
  241. data/docs/WebhookDefinitionErrorResponse.md +11 -0
  242. data/docs/WebhookDefinitionEventListResponse.md +8 -0
  243. data/docs/WebhookDefinitionListResponse.md +9 -0
  244. data/docs/WebhookDefinitionRequest.md +8 -0
  245. data/docs/WebhookDefinitionResponse.md +8 -0
  246. data/docs/WebhookDefinitionValidResponse.md +11 -0
  247. data/docs/WebhookErrorResponse.md +11 -0
  248. data/docs/WebhookLog.md +13 -0
  249. data/docs/WebhookLogBase.md +13 -0
  250. data/docs/WebhookLogBaseMetadata.md +17 -0
  251. data/docs/WebhookLogBaseMetadataParams.md +8 -0
  252. data/docs/WebhookLogBaseMetadataRequest.md +10 -0
  253. data/docs/WebhookLogBaseMetadataResponse.md +10 -0
  254. data/docs/WebhookLogListResponse.md +9 -0
  255. data/docs/WebhookLogMetadata.md +17 -0
  256. data/docs/WebhookLogMetadataParams.md +8 -0
  257. data/docs/WebhookLogMetadataRequest.md +10 -0
  258. data/docs/WebhookLogMetadataResponse.md +10 -0
  259. data/docs/WebhookLogResponse.md +8 -0
  260. data/docs/WebhookRequest.md +10 -0
  261. data/docs/WebhookValidResponse.md +11 -0
  262. data/docs/WebhooksApi.md +319 -0
  263. data/example/.LICENSE.un~ +0 -0
  264. data/example/.client.rb.un~ +0 -0
  265. data/example/client.rb +395 -0
  266. data/git_push.sh +55 -0
  267. data/lib/bitpesa-sdk/api/account_debits_api.rb +187 -0
  268. data/lib/bitpesa-sdk/api/account_validation_api.rb +79 -0
  269. data/lib/bitpesa-sdk/api/accounts_api.rb +135 -0
  270. data/lib/bitpesa-sdk/api/api_logs_api.rb +137 -0
  271. data/lib/bitpesa-sdk/api/currency_info_api.rb +167 -0
  272. data/lib/bitpesa-sdk/api/documents_api.rb +197 -0
  273. data/lib/bitpesa-sdk/api/logs_api.rb +137 -0
  274. data/lib/bitpesa-sdk/api/payment_methods_api.rb +119 -0
  275. data/lib/bitpesa-sdk/api/payout_methods_api.rb +321 -0
  276. data/lib/bitpesa-sdk/api/recipients_api.rb +221 -0
  277. data/lib/bitpesa-sdk/api/senders_api.rb +319 -0
  278. data/lib/bitpesa-sdk/api/transactions_api.rb +425 -0
  279. data/lib/bitpesa-sdk/api/webhooks_api.rb +299 -0
  280. data/lib/bitpesa-sdk/api_client.rb +449 -0
  281. data/lib/bitpesa-sdk/api_error.rb +61 -0
  282. data/lib/bitpesa-sdk/configuration.rb +220 -0
  283. data/lib/bitpesa-sdk/models/account.rb +206 -0
  284. data/lib/bitpesa-sdk/models/account_list_response.rb +206 -0
  285. data/lib/bitpesa-sdk/models/account_meta.rb +196 -0
  286. data/lib/bitpesa-sdk/models/account_response.rb +204 -0
  287. data/lib/bitpesa-sdk/models/account_validation_error.rb +196 -0
  288. data/lib/bitpesa-sdk/models/account_validation_request.rb +319 -0
  289. data/lib/bitpesa-sdk/models/account_validation_response.rb +204 -0
  290. data/lib/bitpesa-sdk/models/account_validation_result.rb +196 -0
  291. data/lib/bitpesa-sdk/models/api_log.rb +281 -0
  292. data/lib/bitpesa-sdk/models/api_log_list_response.rb +207 -0
  293. data/lib/bitpesa-sdk/models/api_log_response.rb +195 -0
  294. data/lib/bitpesa-sdk/models/currency.rb +286 -0
  295. data/lib/bitpesa-sdk/models/currency_exchange.rb +305 -0
  296. data/lib/bitpesa-sdk/models/currency_exchange_list_response.rb +198 -0
  297. data/lib/bitpesa-sdk/models/currency_list_response.rb +198 -0
  298. data/lib/bitpesa-sdk/models/currency_opposite.rb +303 -0
  299. data/lib/bitpesa-sdk/models/debit.rb +303 -0
  300. data/lib/bitpesa-sdk/models/debit_list_request.rb +197 -0
  301. data/lib/bitpesa-sdk/models/debit_list_response.rb +206 -0
  302. data/lib/bitpesa-sdk/models/debit_request.rb +195 -0
  303. data/lib/bitpesa-sdk/models/debit_request_wrapper.rb +221 -0
  304. data/lib/bitpesa-sdk/models/debit_response.rb +195 -0
  305. data/lib/bitpesa-sdk/models/document.rb +329 -0
  306. data/lib/bitpesa-sdk/models/document_list_response.rb +206 -0
  307. data/lib/bitpesa-sdk/models/document_request.rb +195 -0
  308. data/lib/bitpesa-sdk/models/document_response.rb +195 -0
  309. data/lib/bitpesa-sdk/models/document_webhook.rb +237 -0
  310. data/lib/bitpesa-sdk/models/error_status.rb +204 -0
  311. data/lib/bitpesa-sdk/models/field_description.rb +239 -0
  312. data/lib/bitpesa-sdk/models/field_select_validation.rb +206 -0
  313. data/lib/bitpesa-sdk/models/field_validation.rb +215 -0
  314. data/lib/bitpesa-sdk/models/pagination.rb +236 -0
  315. data/lib/bitpesa-sdk/models/pagination_meta.rb +195 -0
  316. data/lib/bitpesa-sdk/models/payin_method.rb +236 -0
  317. data/lib/bitpesa-sdk/models/payin_method_details.rb +251 -0
  318. data/lib/bitpesa-sdk/models/payin_method_details_mobile.rb +212 -0
  319. data/lib/bitpesa-sdk/models/payin_method_details_ngn_bank.rb +202 -0
  320. data/lib/bitpesa-sdk/models/payin_method_request.rb +195 -0
  321. data/lib/bitpesa-sdk/models/payment_method.rb +251 -0
  322. data/lib/bitpesa-sdk/models/payment_method_list_response.rb +197 -0
  323. data/lib/bitpesa-sdk/models/payment_method_opposite.rb +269 -0
  324. data/lib/bitpesa-sdk/models/payout_method.rb +249 -0
  325. data/lib/bitpesa-sdk/models/payout_method_bank_account_type_enum.rb +38 -0
  326. data/lib/bitpesa-sdk/models/payout_method_details.rb +456 -0
  327. data/lib/bitpesa-sdk/models/payout_method_details_balance.rb +196 -0
  328. data/lib/bitpesa-sdk/models/payout_method_details_ghs_bank.rb +243 -0
  329. data/lib/bitpesa-sdk/models/payout_method_details_iban.rb +252 -0
  330. data/lib/bitpesa-sdk/models/payout_method_details_mad_cash.rb +326 -0
  331. data/lib/bitpesa-sdk/models/payout_method_details_mobile.rb +229 -0
  332. data/lib/bitpesa-sdk/models/payout_method_details_ngn_bank.rb +257 -0
  333. data/lib/bitpesa-sdk/models/payout_method_details_xof_mobile.rb +243 -0
  334. data/lib/bitpesa-sdk/models/payout_method_gender_enum.rb +38 -0
  335. data/lib/bitpesa-sdk/models/payout_method_identity_card_type_enum.rb +39 -0
  336. data/lib/bitpesa-sdk/models/payout_method_list_response.rb +206 -0
  337. data/lib/bitpesa-sdk/models/payout_method_mobile_provider_enum.rb +38 -0
  338. data/lib/bitpesa-sdk/models/payout_method_request.rb +195 -0
  339. data/lib/bitpesa-sdk/models/payout_method_response.rb +195 -0
  340. data/lib/bitpesa-sdk/models/payout_method_webhook.rb +237 -0
  341. data/lib/bitpesa-sdk/models/recipient.rb +400 -0
  342. data/lib/bitpesa-sdk/models/recipient_list_response.rb +206 -0
  343. data/lib/bitpesa-sdk/models/recipient_request.rb +195 -0
  344. data/lib/bitpesa-sdk/models/recipient_response.rb +195 -0
  345. data/lib/bitpesa-sdk/models/recipient_state.rb +46 -0
  346. data/lib/bitpesa-sdk/models/recipient_webhook.rb +237 -0
  347. data/lib/bitpesa-sdk/models/sender.rb +513 -0
  348. data/lib/bitpesa-sdk/models/sender_list_response.rb +206 -0
  349. data/lib/bitpesa-sdk/models/sender_request.rb +195 -0
  350. data/lib/bitpesa-sdk/models/sender_response.rb +195 -0
  351. data/lib/bitpesa-sdk/models/sender_state.rb +42 -0
  352. data/lib/bitpesa-sdk/models/sender_webhook.rb +237 -0
  353. data/lib/bitpesa-sdk/models/transaction.rb +354 -0
  354. data/lib/bitpesa-sdk/models/transaction_list_response.rb +206 -0
  355. data/lib/bitpesa-sdk/models/transaction_request.rb +195 -0
  356. data/lib/bitpesa-sdk/models/transaction_response.rb +195 -0
  357. data/lib/bitpesa-sdk/models/transaction_state.rb +46 -0
  358. data/lib/bitpesa-sdk/models/transaction_traits.rb +207 -0
  359. data/lib/bitpesa-sdk/models/transaction_webhook.rb +237 -0
  360. data/lib/bitpesa-sdk/models/validation_error_description.rb +197 -0
  361. data/lib/bitpesa-sdk/models/webhook.rb +232 -0
  362. data/lib/bitpesa-sdk/models/webhook_definition.rb +250 -0
  363. data/lib/bitpesa-sdk/models/webhook_definition_event_list_response.rb +197 -0
  364. data/lib/bitpesa-sdk/models/webhook_definition_list_response.rb +206 -0
  365. data/lib/bitpesa-sdk/models/webhook_definition_request.rb +195 -0
  366. data/lib/bitpesa-sdk/models/webhook_definition_response.rb +195 -0
  367. data/lib/bitpesa-sdk/models/webhook_log.rb +243 -0
  368. data/lib/bitpesa-sdk/models/webhook_log_list_response.rb +207 -0
  369. data/lib/bitpesa-sdk/models/webhook_log_metadata.rb +283 -0
  370. data/lib/bitpesa-sdk/models/webhook_log_metadata_request.rb +218 -0
  371. data/lib/bitpesa-sdk/models/webhook_log_metadata_response.rb +219 -0
  372. data/lib/bitpesa-sdk/models/webhook_log_response.rb +195 -0
  373. data/lib/bitpesa-sdk/version.rb +15 -0
  374. data/lib/bitpesa-sdk.rb +142 -0
  375. data/spec/api/account_debits_api_spec.rb +70 -0
  376. data/spec/api/account_validation_api_spec.rb +47 -0
  377. data/spec/api/accounts_api_spec.rb +58 -0
  378. data/spec/api/api_logs_api_spec.rb +58 -0
  379. data/spec/api/currency_info_api_spec.rb +68 -0
  380. data/spec/api/documents_api_spec.rb +70 -0
  381. data/spec/api/logs_api_spec.rb +58 -0
  382. data/spec/api/payment_methods_api_spec.rb +57 -0
  383. data/spec/api/payout_methods_api_spec.rb +58 -0
  384. data/spec/api/recipients_api_spec.rb +74 -0
  385. data/spec/api/senders_api_spec.rb +95 -0
  386. data/spec/api/transaction_requests_api_spec.rb +76 -0
  387. data/spec/api/transactions_api_spec.rb +96 -0
  388. data/spec/api/webhooks_api_spec.rb +95 -0
  389. data/spec/api_client_spec.rb +226 -0
  390. data/spec/configuration_spec.rb +42 -0
  391. data/spec/models/account_base_spec.rb +48 -0
  392. data/spec/models/account_list_response_spec.rb +47 -0
  393. data/spec/models/account_meta_spec.rb +42 -0
  394. data/spec/models/account_response_spec.rb +47 -0
  395. data/spec/models/account_spec.rb +47 -0
  396. data/spec/models/account_validation_error_spec.rb +41 -0
  397. data/spec/models/account_validation_request_spec.rb +77 -0
  398. data/spec/models/account_validation_response_spec.rb +47 -0
  399. data/spec/models/account_validation_result_spec.rb +41 -0
  400. data/spec/models/api_log_base_spec.rb +90 -0
  401. data/spec/models/api_log_list_response_spec.rb +47 -0
  402. data/spec/models/api_log_response_spec.rb +41 -0
  403. data/spec/models/api_log_spec.rb +90 -0
  404. data/spec/models/body_spec.rb +58 -0
  405. data/spec/models/currency_base_spec.rb +84 -0
  406. data/spec/models/currency_exchange_list_response_spec.rb +41 -0
  407. data/spec/models/currency_exchange_spec.rb +101 -0
  408. data/spec/models/currency_list_response_spec.rb +41 -0
  409. data/spec/models/currency_opposite_spec.rb +101 -0
  410. data/spec/models/currency_spec.rb +84 -0
  411. data/spec/models/debit_base_spec.rb +66 -0
  412. data/spec/models/debit_error_response_spec.rb +72 -0
  413. data/spec/models/debit_list_request_spec.rb +41 -0
  414. data/spec/models/debit_list_response_spec.rb +47 -0
  415. data/spec/models/debit_request_spec.rb +66 -0
  416. data/spec/models/debit_request_wrapper_spec.rb +41 -0
  417. data/spec/models/debit_response_spec.rb +41 -0
  418. data/spec/models/debit_spec.rb +66 -0
  419. data/spec/models/debit_valid_response_spec.rb +72 -0
  420. data/spec/models/default_document_spec.rb +94 -0
  421. data/spec/models/default_recipient_spec.rb +60 -0
  422. data/spec/models/default_sender_spec.rb +142 -0
  423. data/spec/models/default_webhook_spec.rb +60 -0
  424. data/spec/models/document_base_spec.rb +88 -0
  425. data/spec/models/document_error_response_spec.rb +94 -0
  426. data/spec/models/document_list_response_spec.rb +47 -0
  427. data/spec/models/document_request_spec.rb +88 -0
  428. data/spec/models/document_response_spec.rb +41 -0
  429. data/spec/models/document_spec.rb +36 -0
  430. data/spec/models/document_valid_response_spec.rb +94 -0
  431. data/spec/models/document_webhook_spec.rb +53 -0
  432. data/spec/models/error_status_spec.rb +47 -0
  433. data/spec/models/field_description_spec.rb +51 -0
  434. data/spec/models/field_select_validation_spec.rb +47 -0
  435. data/spec/models/field_validation_spec.rb +53 -0
  436. data/spec/models/full_invalid_transaction_request_spec.rb +78 -0
  437. data/spec/models/full_invalid_transaction_spec.rb +66 -0
  438. data/spec/models/full_valid_transaction_request_spec.rb +66 -0
  439. data/spec/models/full_valid_transaction_spec.rb +60 -0
  440. data/spec/models/inline_response_200_10_spec.rb +42 -0
  441. data/spec/models/inline_response_200_11_spec.rb +48 -0
  442. data/spec/models/inline_response_200_12_spec.rb +42 -0
  443. data/spec/models/inline_response_200_13_spec.rb +48 -0
  444. data/spec/models/inline_response_200_14_spec.rb +42 -0
  445. data/spec/models/inline_response_200_15_spec.rb +48 -0
  446. data/spec/models/inline_response_200_16_spec.rb +48 -0
  447. data/spec/models/inline_response_200_17_spec.rb +48 -0
  448. data/spec/models/inline_response_200_18_spec.rb +42 -0
  449. data/spec/models/inline_response_200_19_spec.rb +48 -0
  450. data/spec/models/inline_response_200_1_spec.rb +48 -0
  451. data/spec/models/inline_response_200_20_spec.rb +42 -0
  452. data/spec/models/inline_response_200_21_object_spec.rb +42 -0
  453. data/spec/models/inline_response_200_21_spec.rb +42 -0
  454. data/spec/models/inline_response_200_22_object_spec.rb +42 -0
  455. data/spec/models/inline_response_200_22_spec.rb +42 -0
  456. data/spec/models/inline_response_200_23_object_spec.rb +42 -0
  457. data/spec/models/inline_response_200_23_spec.rb +48 -0
  458. data/spec/models/inline_response_200_24_spec.rb +42 -0
  459. data/spec/models/inline_response_200_25_spec.rb +42 -0
  460. data/spec/models/inline_response_200_26_spec.rb +42 -0
  461. data/spec/models/inline_response_200_27_spec.rb +48 -0
  462. data/spec/models/inline_response_200_28_spec.rb +42 -0
  463. data/spec/models/inline_response_200_29_spec.rb +48 -0
  464. data/spec/models/inline_response_200_2_object_spec.rb +42 -0
  465. data/spec/models/inline_response_200_2_spec.rb +42 -0
  466. data/spec/models/inline_response_200_30_spec.rb +42 -0
  467. data/spec/models/inline_response_200_31_spec.rb +48 -0
  468. data/spec/models/inline_response_200_32_spec.rb +42 -0
  469. data/spec/models/inline_response_200_33_spec.rb +48 -0
  470. data/spec/models/inline_response_200_34_spec.rb +42 -0
  471. data/spec/models/inline_response_200_35_spec.rb +48 -0
  472. data/spec/models/inline_response_200_36_spec.rb +48 -0
  473. data/spec/models/inline_response_200_37_spec.rb +48 -0
  474. data/spec/models/inline_response_200_38_spec.rb +42 -0
  475. data/spec/models/inline_response_200_39_spec.rb +48 -0
  476. data/spec/models/inline_response_200_3_spec.rb +48 -0
  477. data/spec/models/inline_response_200_40_spec.rb +42 -0
  478. data/spec/models/inline_response_200_4_object_spec.rb +42 -0
  479. data/spec/models/inline_response_200_4_spec.rb +42 -0
  480. data/spec/models/inline_response_200_5_spec.rb +42 -0
  481. data/spec/models/inline_response_200_6_spec.rb +42 -0
  482. data/spec/models/inline_response_200_7_spec.rb +48 -0
  483. data/spec/models/inline_response_200_8_spec.rb +42 -0
  484. data/spec/models/inline_response_200_9_spec.rb +48 -0
  485. data/spec/models/inline_response_200_spec.rb +48 -0
  486. data/spec/models/inline_response_201_10_spec.rb +42 -0
  487. data/spec/models/inline_response_201_11_spec.rb +42 -0
  488. data/spec/models/inline_response_201_1_spec.rb +42 -0
  489. data/spec/models/inline_response_201_2_spec.rb +42 -0
  490. data/spec/models/inline_response_201_3_spec.rb +42 -0
  491. data/spec/models/inline_response_201_4_spec.rb +42 -0
  492. data/spec/models/inline_response_201_5_spec.rb +42 -0
  493. data/spec/models/inline_response_201_6_spec.rb +42 -0
  494. data/spec/models/inline_response_201_7_spec.rb +42 -0
  495. data/spec/models/inline_response_201_8_spec.rb +42 -0
  496. data/spec/models/inline_response_201_9_spec.rb +42 -0
  497. data/spec/models/inline_response_201_spec.rb +42 -0
  498. data/spec/models/inline_response_400_1_spec.rb +48 -0
  499. data/spec/models/inline_response_400_spec.rb +48 -0
  500. data/spec/models/inline_response_422_10_spec.rb +42 -0
  501. data/spec/models/inline_response_422_11_spec.rb +42 -0
  502. data/spec/models/inline_response_422_12_spec.rb +42 -0
  503. data/spec/models/inline_response_422_13_spec.rb +42 -0
  504. data/spec/models/inline_response_422_14_spec.rb +42 -0
  505. data/spec/models/inline_response_422_1_meta_spec.rb +42 -0
  506. data/spec/models/inline_response_422_1_object_spec.rb +42 -0
  507. data/spec/models/inline_response_422_1_spec.rb +42 -0
  508. data/spec/models/inline_response_422_2_spec.rb +42 -0
  509. data/spec/models/inline_response_422_3_spec.rb +42 -0
  510. data/spec/models/inline_response_422_4_spec.rb +42 -0
  511. data/spec/models/inline_response_422_5_spec.rb +42 -0
  512. data/spec/models/inline_response_422_6_spec.rb +42 -0
  513. data/spec/models/inline_response_422_7_meta_spec.rb +42 -0
  514. data/spec/models/inline_response_422_7_spec.rb +42 -0
  515. data/spec/models/inline_response_422_8_meta_spec.rb +42 -0
  516. data/spec/models/inline_response_422_8_object_spec.rb +42 -0
  517. data/spec/models/inline_response_422_8_spec.rb +48 -0
  518. data/spec/models/inline_response_422_9_spec.rb +42 -0
  519. data/spec/models/inline_response_422_meta_spec.rb +42 -0
  520. data/spec/models/inline_response_422_object_spec.rb +42 -0
  521. data/spec/models/inline_response_422_spec.rb +48 -0
  522. data/spec/models/invalid_debit_spec.rb +78 -0
  523. data/spec/models/invalid_document_spec.rb +100 -0
  524. data/spec/models/invalid_recipient_spec.rb +66 -0
  525. data/spec/models/invalid_sender_spec.rb +148 -0
  526. data/spec/models/invalid_webhook_spec.rb +60 -0
  527. data/spec/models/meta_2_pagination_spec.rb +66 -0
  528. data/spec/models/meta_2_spec.rb +42 -0
  529. data/spec/models/meta_pagination_spec.rb +66 -0
  530. data/spec/models/meta_spec.rb +42 -0
  531. data/spec/models/object_spec.rb +48 -0
  532. data/spec/models/opposite_payment_method_base_spec.rb +72 -0
  533. data/spec/models/opposite_payment_method_spec.rb +72 -0
  534. data/spec/models/pagination_meta_spec.rb +41 -0
  535. data/spec/models/pagination_pagination_spec.rb +66 -0
  536. data/spec/models/pagination_spec.rb +42 -0
  537. data/spec/models/payin_method_base_spec.rb +66 -0
  538. data/spec/models/payin_method_details_base_spec.rb +36 -0
  539. data/spec/models/payin_method_details_mobile_spec.rb +48 -0
  540. data/spec/models/payin_method_details_ngn_bank_spec.rb +42 -0
  541. data/spec/models/payin_method_details_spec.rb +53 -0
  542. data/spec/models/payin_method_request_spec.rb +41 -0
  543. data/spec/models/payin_method_spec.rb +65 -0
  544. data/spec/models/payin_method_type_base_spec.rb +42 -0
  545. data/spec/models/payin_method_type_spec.rb +42 -0
  546. data/spec/models/payment_method_base_spec.rb +66 -0
  547. data/spec/models/payment_method_list_response_spec.rb +41 -0
  548. data/spec/models/payment_method_opposite_spec.rb +77 -0
  549. data/spec/models/payment_method_spec.rb +66 -0
  550. data/spec/models/payout_method_bank_account_type_enum_spec.rb +35 -0
  551. data/spec/models/payout_method_base_spec.rb +54 -0
  552. data/spec/models/payout_method_details_balance_spec.rb +42 -0
  553. data/spec/models/payout_method_details_base_spec.rb +36 -0
  554. data/spec/models/payout_method_details_ghs_bank_spec.rb +60 -0
  555. data/spec/models/payout_method_details_iban_spec.rb +66 -0
  556. data/spec/models/payout_method_details_mad_cash_spec.rb +110 -0
  557. data/spec/models/payout_method_details_mobile_spec.rb +54 -0
  558. data/spec/models/payout_method_details_ngn_bank_spec.rb +70 -0
  559. data/spec/models/payout_method_details_spec.rb +149 -0
  560. data/spec/models/payout_method_details_xof_mobile_spec.rb +64 -0
  561. data/spec/models/payout_method_error_response_spec.rb +60 -0
  562. data/spec/models/payout_method_gender_enum_spec.rb +35 -0
  563. data/spec/models/payout_method_identity_card_type_enum_spec.rb +35 -0
  564. data/spec/models/payout_method_list_response_spec.rb +47 -0
  565. data/spec/models/payout_method_mobile_provider_enum_spec.rb +35 -0
  566. data/spec/models/payout_method_request_spec.rb +54 -0
  567. data/spec/models/payout_method_response_spec.rb +54 -0
  568. data/spec/models/payout_method_spec.rb +72 -0
  569. data/spec/models/payout_method_valid_response_spec.rb +60 -0
  570. data/spec/models/payout_method_webhook_spec.rb +53 -0
  571. data/spec/models/recipient_base_spec.rb +54 -0
  572. data/spec/models/recipient_error_response_spec.rb +60 -0
  573. data/spec/models/recipient_list_response_spec.rb +47 -0
  574. data/spec/models/recipient_request_spec.rb +60 -0
  575. data/spec/models/recipient_response_spec.rb +138 -0
  576. data/spec/models/recipient_spec.rb +36 -0
  577. data/spec/models/recipient_state_spec.rb +35 -0
  578. data/spec/models/recipient_valid_response_spec.rb +60 -0
  579. data/spec/models/recipient_webhook_spec.rb +53 -0
  580. data/spec/models/sender_base_spec.rb +136 -0
  581. data/spec/models/sender_error_response_spec.rb +142 -0
  582. data/spec/models/sender_existing_request_spec.rb +42 -0
  583. data/spec/models/sender_full_request_spec.rb +136 -0
  584. data/spec/models/sender_list_response_spec.rb +47 -0
  585. data/spec/models/sender_request_spec.rb +136 -0
  586. data/spec/models/sender_response_spec.rb +142 -0
  587. data/spec/models/sender_spec.rb +36 -0
  588. data/spec/models/sender_state_spec.rb +35 -0
  589. data/spec/models/sender_valid_response_spec.rb +142 -0
  590. data/spec/models/sender_webhook_spec.rb +53 -0
  591. data/spec/models/transaction_base_spec.rb +60 -0
  592. data/spec/models/transaction_error_response_spec.rb +66 -0
  593. data/spec/models/transaction_list_response_spec.rb +47 -0
  594. data/spec/models/transaction_request_base_spec.rb +48 -0
  595. data/spec/models/transaction_request_error_response_spec.rb +54 -0
  596. data/spec/models/transaction_request_request_spec.rb +48 -0
  597. data/spec/models/transaction_request_spec.rb +48 -0
  598. data/spec/models/transaction_request_valid_response_spec.rb +54 -0
  599. data/spec/models/transaction_response_spec.rb +114 -0
  600. data/spec/models/transaction_spec.rb +60 -0
  601. data/spec/models/transaction_state_spec.rb +35 -0
  602. data/spec/models/transaction_traits_spec.rb +48 -0
  603. data/spec/models/transaction_valid_response_spec.rb +66 -0
  604. data/spec/models/transaction_webhook_spec.rb +53 -0
  605. data/spec/models/valid_debit_spec.rb +90 -0
  606. data/spec/models/validation_error_description_spec.rb +41 -0
  607. data/spec/models/webhook_base_spec.rb +54 -0
  608. data/spec/models/webhook_definition_base_spec.rb +54 -0
  609. data/spec/models/webhook_definition_error_response_spec.rb +60 -0
  610. data/spec/models/webhook_definition_event_list_response_spec.rb +41 -0
  611. data/spec/models/webhook_definition_list_response_spec.rb +47 -0
  612. data/spec/models/webhook_definition_request_spec.rb +54 -0
  613. data/spec/models/webhook_definition_response_spec.rb +41 -0
  614. data/spec/models/webhook_definition_spec.rb +65 -0
  615. data/spec/models/webhook_definition_valid_response_spec.rb +60 -0
  616. data/spec/models/webhook_error_response_spec.rb +60 -0
  617. data/spec/models/webhook_log_base_metadata_params_spec.rb +42 -0
  618. data/spec/models/webhook_log_base_metadata_request_spec.rb +54 -0
  619. data/spec/models/webhook_log_base_metadata_response_spec.rb +54 -0
  620. data/spec/models/webhook_log_base_metadata_spec.rb +96 -0
  621. data/spec/models/webhook_log_base_spec.rb +72 -0
  622. data/spec/models/webhook_log_list_response_spec.rb +47 -0
  623. data/spec/models/webhook_log_metadata_params_spec.rb +42 -0
  624. data/spec/models/webhook_log_metadata_request_spec.rb +54 -0
  625. data/spec/models/webhook_log_metadata_response_spec.rb +54 -0
  626. data/spec/models/webhook_log_metadata_spec.rb +96 -0
  627. data/spec/models/webhook_log_response_spec.rb +41 -0
  628. data/spec/models/webhook_log_spec.rb +72 -0
  629. data/spec/models/webhook_request_spec.rb +54 -0
  630. data/spec/models/webhook_spec.rb +54 -0
  631. data/spec/models/webhook_valid_response_spec.rb +60 -0
  632. data/spec/spec_helper.rb +111 -0
  633. metadata +1127 -0
@@ -0,0 +1,299 @@
1
+ =begin
2
+ #BitPesa API
3
+
4
+ #Reference documentation for the BitPesa API V1
5
+
6
+ OpenAPI spec version: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-beta2
10
+
11
+ =end
12
+
13
+ require 'uri'
14
+
15
+ module Bitpesa
16
+ class WebhooksApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+
23
+
24
+ # Unsubscribing from a webhook
25
+ # Unsubscribes from a webhook specified
26
+ # @param webhook_id The ID of webhook to cancel. Example: `/v1/webhooks/9d4d7b73-a94c-4979-ab57-09074fd55d33`
27
+ # @param [Hash] opts the optional parameters
28
+ # @return [WebhookDefinitionResponse]
29
+ def delete_webhook(webhook_id, opts = {})
30
+ data, _status_code, _headers = delete_webhook_with_http_info(webhook_id, opts)
31
+ data
32
+ end
33
+
34
+ # Unsubscribing from a webhook
35
+ # Unsubscribes from a webhook specified
36
+ # @param webhook_id The ID of webhook to cancel. Example: `/v1/webhooks/9d4d7b73-a94c-4979-ab57-09074fd55d33`
37
+ # @param [Hash] opts the optional parameters
38
+ # @return [Array<(WebhookDefinitionResponse, Fixnum, Hash)>] WebhookDefinitionResponse data, response status code and response headers
39
+ def delete_webhook_with_http_info(webhook_id, opts = {})
40
+ if @api_client.config.debugging
41
+ @api_client.config.logger.debug 'Calling API: WebhooksApi.delete_webhook ...'
42
+ end
43
+ # verify the required parameter 'webhook_id' is set
44
+ if @api_client.config.client_side_validation && webhook_id.nil?
45
+ fail ArgumentError, "Missing the required parameter 'webhook_id' when calling WebhooksApi.delete_webhook"
46
+ end
47
+ # resource path
48
+ local_var_path = '/webhooks/{Webhook ID}'.sub('{' + 'Webhook ID' + '}', webhook_id.to_s)
49
+
50
+ # query parameters
51
+ query_params = {}
52
+
53
+ # header parameters
54
+ header_params = {}
55
+ # HTTP header 'Accept' (if needed)
56
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
57
+
58
+ # form parameters
59
+ form_params = {}
60
+
61
+ # http body (model)
62
+ post_body = nil
63
+ auth_names = ['AuthorizationKey', 'AuthorizationNonce', 'AuthorizationSecret', 'AuthorizationSignature']
64
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
65
+ :header_params => header_params,
66
+ :query_params => query_params,
67
+ :form_params => form_params,
68
+ :body => post_body,
69
+ :auth_names => auth_names,
70
+ :return_type => 'WebhookDefinitionResponse')
71
+ if @api_client.config.debugging
72
+ @api_client.config.logger.debug "API called: WebhooksApi#delete_webhook\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
73
+ end
74
+ return data, status_code, headers
75
+ end
76
+
77
+
78
+ # Find a webhook's details
79
+ # Look up a webhook's details with its ID
80
+ # @param webhook_id The ID of the Webhook to look up Example: &#x60;/v1/webhooks/9d4d7b73-a94c-4979-ab57-09074fd55d33&#x60;
81
+ # @param [Hash] opts the optional parameters
82
+ # @return [WebhookDefinitionResponse]
83
+ def get_webhook(webhook_id, opts = {})
84
+ data, _status_code, _headers = get_webhook_with_http_info(webhook_id, opts)
85
+ data
86
+ end
87
+
88
+ # Find a webhook&#39;s details
89
+ # Look up a webhook&#39;s details with its ID
90
+ # @param webhook_id The ID of the Webhook to look up Example: &#x60;/v1/webhooks/9d4d7b73-a94c-4979-ab57-09074fd55d33&#x60;
91
+ # @param [Hash] opts the optional parameters
92
+ # @return [Array<(WebhookDefinitionResponse, Fixnum, Hash)>] WebhookDefinitionResponse data, response status code and response headers
93
+ def get_webhook_with_http_info(webhook_id, opts = {})
94
+ if @api_client.config.debugging
95
+ @api_client.config.logger.debug 'Calling API: WebhooksApi.get_webhook ...'
96
+ end
97
+ # verify the required parameter 'webhook_id' is set
98
+ if @api_client.config.client_side_validation && webhook_id.nil?
99
+ fail ArgumentError, "Missing the required parameter 'webhook_id' when calling WebhooksApi.get_webhook"
100
+ end
101
+ # resource path
102
+ local_var_path = '/webhooks/{Webhook ID}'.sub('{' + 'Webhook ID' + '}', webhook_id.to_s)
103
+
104
+ # query parameters
105
+ query_params = {}
106
+
107
+ # header parameters
108
+ header_params = {}
109
+ # HTTP header 'Accept' (if needed)
110
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
111
+
112
+ # form parameters
113
+ form_params = {}
114
+
115
+ # http body (model)
116
+ post_body = nil
117
+ auth_names = ['AuthorizationKey', 'AuthorizationNonce', 'AuthorizationSecret', 'AuthorizationSignature']
118
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
119
+ :header_params => header_params,
120
+ :query_params => query_params,
121
+ :form_params => form_params,
122
+ :body => post_body,
123
+ :auth_names => auth_names,
124
+ :return_type => 'WebhookDefinitionResponse')
125
+ if @api_client.config.debugging
126
+ @api_client.config.logger.debug "API called: WebhooksApi#get_webhook\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
127
+ end
128
+ return data, status_code, headers
129
+ end
130
+
131
+
132
+ # Find possible webhook events
133
+ # Fetching possible webhook events
134
+ # @param [Hash] opts the optional parameters
135
+ # @return [WebhookDefinitionEventListResponse]
136
+ def get_webhook_events(opts = {})
137
+ data, _status_code, _headers = get_webhook_events_with_http_info(opts)
138
+ data
139
+ end
140
+
141
+ # Find possible webhook events
142
+ # Fetching possible webhook events
143
+ # @param [Hash] opts the optional parameters
144
+ # @return [Array<(WebhookDefinitionEventListResponse, Fixnum, Hash)>] WebhookDefinitionEventListResponse data, response status code and response headers
145
+ def get_webhook_events_with_http_info(opts = {})
146
+ if @api_client.config.debugging
147
+ @api_client.config.logger.debug 'Calling API: WebhooksApi.get_webhook_events ...'
148
+ end
149
+ # resource path
150
+ local_var_path = '/webhooks/events'
151
+
152
+ # query parameters
153
+ query_params = {}
154
+
155
+ # header parameters
156
+ header_params = {}
157
+ # HTTP header 'Accept' (if needed)
158
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
159
+
160
+ # form parameters
161
+ form_params = {}
162
+
163
+ # http body (model)
164
+ post_body = nil
165
+ auth_names = ['AuthorizationKey', 'AuthorizationNonce', 'AuthorizationSecret', 'AuthorizationSignature']
166
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
167
+ :header_params => header_params,
168
+ :query_params => query_params,
169
+ :form_params => form_params,
170
+ :body => post_body,
171
+ :auth_names => auth_names,
172
+ :return_type => 'WebhookDefinitionEventListResponse')
173
+ if @api_client.config.debugging
174
+ @api_client.config.logger.debug "API called: WebhooksApi#get_webhook_events\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
175
+ end
176
+ return data, status_code, headers
177
+ end
178
+
179
+ def get_webhooks_all(opts = {})
180
+ result = []
181
+ response = get_webhooks(opts)
182
+ result += response["object"]
183
+ while next_page = response["meta"]["pagination"]["next_page"]
184
+ response = get_webhooks(opts.merge(page: next_page))
185
+ result += response["object"]
186
+ end
187
+ result
188
+ end
189
+
190
+ # Listing webhooks
191
+ # Get a list of created webhooks
192
+ # @param [Hash] opts the optional parameters
193
+ # @option opts [Integer] :page The page number to request (defaults to 1)
194
+ # @option opts [Integer] :per The number of results to load per page (defaults to 10)
195
+ # @return [WebhookDefinitionListResponse]
196
+ def get_webhooks(opts = {})
197
+ data, _status_code, _headers = get_webhooks_with_http_info(opts)
198
+ data
199
+ end
200
+
201
+ # Listing webhooks
202
+ # Get a list of created webhooks
203
+ # @param [Hash] opts the optional parameters
204
+ # @option opts [Integer] :page The page number to request (defaults to 1)
205
+ # @option opts [Integer] :per The number of results to load per page (defaults to 10)
206
+ # @return [Array<(WebhookDefinitionListResponse, Fixnum, Hash)>] WebhookDefinitionListResponse data, response status code and response headers
207
+ def get_webhooks_with_http_info(opts = {})
208
+ if @api_client.config.debugging
209
+ @api_client.config.logger.debug 'Calling API: WebhooksApi.get_webhooks ...'
210
+ end
211
+ # resource path
212
+ local_var_path = '/webhooks'
213
+
214
+ # query parameters
215
+ query_params = {}
216
+ query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
217
+ query_params[:'per'] = opts[:'per'] if !opts[:'per'].nil?
218
+
219
+ # header parameters
220
+ header_params = {}
221
+ # HTTP header 'Accept' (if needed)
222
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
223
+
224
+ # form parameters
225
+ form_params = {}
226
+
227
+ # http body (model)
228
+ post_body = nil
229
+ auth_names = ['AuthorizationKey', 'AuthorizationNonce', 'AuthorizationSecret', 'AuthorizationSignature']
230
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path,
231
+ :header_params => header_params,
232
+ :query_params => query_params,
233
+ :form_params => form_params,
234
+ :body => post_body,
235
+ :auth_names => auth_names,
236
+ :return_type => 'WebhookDefinitionListResponse')
237
+ if @api_client.config.debugging
238
+ @api_client.config.logger.debug "API called: WebhooksApi#get_webhooks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
239
+ end
240
+ return data, status_code, headers
241
+ end
242
+
243
+
244
+ # Creating a webhook
245
+ # Creates a new webhook, subscribing the provided endpoint to the specified event(s)
246
+ # @param webhook_definition_request
247
+ # @param [Hash] opts the optional parameters
248
+ # @return [WebhookDefinitionResponse]
249
+ def post_webhooks(webhook_definition_request, opts = {})
250
+ data, _status_code, _headers = post_webhooks_with_http_info(webhook_definition_request, opts)
251
+ data
252
+ end
253
+
254
+ # Creating a webhook
255
+ # Creates a new webhook, subscribing the provided endpoint to the specified event(s)
256
+ # @param webhook_definition_request
257
+ # @param [Hash] opts the optional parameters
258
+ # @return [Array<(WebhookDefinitionResponse, Fixnum, Hash)>] WebhookDefinitionResponse data, response status code and response headers
259
+ def post_webhooks_with_http_info(webhook_definition_request, opts = {})
260
+ if @api_client.config.debugging
261
+ @api_client.config.logger.debug 'Calling API: WebhooksApi.post_webhooks ...'
262
+ end
263
+ # verify the required parameter 'webhook_definition_request' is set
264
+ if @api_client.config.client_side_validation && webhook_definition_request.nil?
265
+ fail ArgumentError, "Missing the required parameter 'webhook_definition_request' when calling WebhooksApi.post_webhooks"
266
+ end
267
+ # resource path
268
+ local_var_path = '/webhooks'
269
+
270
+ # query parameters
271
+ query_params = {}
272
+
273
+ # header parameters
274
+ header_params = {}
275
+ # HTTP header 'Accept' (if needed)
276
+ header_params['Accept'] = @api_client.select_header_accept(['application/json'])
277
+ # HTTP header 'Content-Type'
278
+ header_params['Content-Type'] = @api_client.select_header_content_type(['application/json'])
279
+
280
+ # form parameters
281
+ form_params = {}
282
+
283
+ # http body (model)
284
+ post_body = @api_client.object_to_http_body(webhook_definition_request)
285
+ auth_names = ['AuthorizationKey', 'AuthorizationNonce', 'AuthorizationSecret', 'AuthorizationSignature']
286
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path,
287
+ :header_params => header_params,
288
+ :query_params => query_params,
289
+ :form_params => form_params,
290
+ :body => post_body,
291
+ :auth_names => auth_names,
292
+ :return_type => 'WebhookDefinitionResponse')
293
+ if @api_client.config.debugging
294
+ @api_client.config.logger.debug "API called: WebhooksApi#post_webhooks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
295
+ end
296
+ return data, status_code, headers
297
+ end
298
+ end
299
+ end
@@ -0,0 +1,449 @@
1
+ =begin
2
+ #BitPesa API
3
+
4
+ #Reference documentation for the BitPesa API V1
5
+
6
+ OpenAPI spec version: 1.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 4.0.0-beta2
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'json'
15
+ require 'logger'
16
+ require 'tempfile'
17
+ require 'typhoeus'
18
+ require 'uri'
19
+ require 'openssl'
20
+ require 'securerandom'
21
+
22
+ module Bitpesa
23
+ class ApiClient
24
+ DIGEST = OpenSSL::Digest::SHA512.new
25
+
26
+ # The Configuration object holding settings to be used in the API client.
27
+ attr_accessor :config
28
+
29
+ # Defines the headers to be used in HTTP requests of all API calls by default.
30
+ #
31
+ # @return [Hash]
32
+ attr_accessor :default_headers
33
+
34
+ # Initializes the ApiClient
35
+ # @option config [Configuration] Configuration for initializing the object, default to Configuration.default
36
+ def initialize(config = Configuration.default)
37
+ @config = config
38
+ @user_agent = "Swagger-Codegen/#{VERSION}/ruby"
39
+ @default_headers = {
40
+ 'Content-Type' => 'application/json',
41
+ 'User-Agent' => @user_agent
42
+ }
43
+ end
44
+
45
+ def self.default
46
+ @@default ||= ApiClient.new
47
+ end
48
+
49
+ # Call an API with given options.
50
+ #
51
+ # @return [Array<(Object, Fixnum, Hash)>] an array of 3 elements:
52
+ # the data deserialized from response body (could be nil), response status code and response headers.
53
+ def call_api(http_method, path, opts = {})
54
+ request = build_request(http_method, path, opts)
55
+ response = request.run
56
+
57
+ if @config.debugging
58
+ @config.logger.debug "HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"
59
+ end
60
+
61
+ unless response.success?
62
+ if response.timed_out?
63
+ fail ApiError.new('Connection timed out')
64
+ elsif response.code == 0
65
+ # Errors from libcurl will be made visible here
66
+ fail ApiError.new(:code => 0,
67
+ :message => response.return_message)
68
+ elsif response.code == 422
69
+ fail ApiError.new(:code => response.code,
70
+ :response_headers => response.headers,
71
+ :response_body => response.body,
72
+ :validation_error => true
73
+ )
74
+ else
75
+ fail ApiError.new(:code => response.code,
76
+ :response_headers => response.headers,
77
+ :response_body => response.body,
78
+ :validation_error => false),
79
+ response.status_message
80
+ end
81
+ end
82
+
83
+ if opts[:return_type]
84
+ data = deserialize(response, opts[:return_type])
85
+ else
86
+ data = nil
87
+ end
88
+ return data, response.code, response.headers
89
+ end
90
+
91
+ # Builds the HTTP request
92
+ #
93
+ # @param [String] http_method HTTP method/verb (e.g. POST)
94
+ # @param [String] path URL path (e.g. /account/new)
95
+ # @option opts [Hash] :header_params Header parameters
96
+ # @option opts [Hash] :query_params Query parameters
97
+ # @option opts [Hash] :form_params Query parameters
98
+ # @option opts [Object] :body HTTP body (JSON/XML)
99
+ # @return [Typhoeus::Request] A Typhoeus Request
100
+ def build_request(http_method, path, opts = {})
101
+ url = build_request_url(path)
102
+ http_method = http_method.to_sym.downcase
103
+
104
+ header_params = @default_headers.merge(opts[:header_params] || {})
105
+ query_params = opts[:query_params] || {}
106
+ url_with_params = add_query(url, query_params)
107
+ form_params = opts[:form_params] || {}
108
+
109
+ update_params_for_auth! header_params, query_params, opts[:auth_names]
110
+
111
+ request_nonce = SecureRandom.uuid
112
+ request_signature = sign_request([
113
+ request_nonce,
114
+ http_method.to_s.upcase,
115
+ url_with_params,
116
+ DIGEST.hexdigest(opts[:body].to_s.gsub(/[[:space:]]+/, ' ').strip)
117
+ ])
118
+
119
+ header_params['Authorization-Nonce'] = request_nonce
120
+ header_params['Authorization-Signature'] = request_signature
121
+
122
+ # set ssl_verifyhosts option based on @config.verify_ssl_host (true/false)
123
+ _verify_ssl_host = @config.verify_ssl_host ? 2 : 0
124
+
125
+ req_opts = {
126
+ :method => http_method,
127
+ :headers => header_params,
128
+ :params => {}, # removed and params added to url string
129
+ :params_encoding => @config.params_encoding,
130
+ :timeout => @config.timeout,
131
+ :ssl_verifypeer => @config.verify_ssl,
132
+ :ssl_verifyhost => _verify_ssl_host,
133
+ :sslcert => @config.cert_file,
134
+ :sslkey => @config.key_file,
135
+ :verbose => @config.debugging
136
+ }
137
+
138
+ # set custom cert, if provided
139
+ req_opts[:cainfo] = @config.ssl_ca_cert if @config.ssl_ca_cert
140
+
141
+ if [:post, :patch, :put, :delete].include?(http_method)
142
+ req_body = build_request_body(header_params, form_params, opts[:body])
143
+ req_opts.update :body => req_body
144
+ if @config.debugging
145
+ @config.logger.debug "HTTP request body param ~BEGIN~\n#{req_body}\n~END~\n"
146
+ end
147
+ end
148
+
149
+ request = Typhoeus::Request.new(url_with_params, req_opts)
150
+ download_file(request) if opts[:return_type] == 'File'
151
+ request
152
+ end
153
+
154
+ # Check if the given MIME is a JSON MIME.
155
+ # JSON MIME examples:
156
+ # application/json
157
+ # application/json; charset=UTF8
158
+ # APPLICATION/JSON
159
+ # */*
160
+ # @param [String] mime MIME
161
+ # @return [Boolean] True if the MIME is application/json
162
+ def json_mime?(mime)
163
+ (mime == '*/*') || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil?
164
+ end
165
+
166
+ # Parse a JSON string, can be used to parse webhook responses that were already converted to strings
167
+ #
168
+ # @param [Response] response HTTP response
169
+ # @param [String] return_type some examples: "User"
170
+ def parse_response(response, return_type)
171
+ return if (response.nil? || response.empty? || return_type.nil?)
172
+ begin
173
+ response_struct = OpenStruct.new({
174
+ headers: {},
175
+ body: response
176
+ })
177
+ deserialize(response_struct, return_type)
178
+ rescue StandardError => e
179
+ ApiError.new(e)
180
+ end
181
+ end
182
+
183
+ # Deserialize the response to the given return type.
184
+ #
185
+ # @param [Response] response HTTP response
186
+ # @param [String] return_type some examples: "User", "Array[User]", "Hash[String,Integer]"
187
+ def deserialize(response, return_type)
188
+ body = response.body
189
+
190
+ # handle file downloading - return the File instance processed in request callbacks
191
+ # note that response body is empty when the file is written in chunks in request on_body callback
192
+ return @tempfile if return_type == 'File'
193
+
194
+ return nil if body.nil? || body.empty?
195
+
196
+ # return response body directly for String return type
197
+ return body if return_type == 'String'
198
+
199
+ # ensuring a default content type
200
+ content_type = response.headers['Content-Type'] || 'application/json'
201
+
202
+ fail "Content-Type is not supported: #{content_type}" unless json_mime?(content_type)
203
+
204
+ begin
205
+ data = JSON.parse("[#{body}]", :symbolize_names => true)[0]
206
+ rescue JSON::ParserError => e
207
+ if %w(String Date DateTime).include?(return_type)
208
+ data = body
209
+ else
210
+ raise e
211
+ end
212
+ end
213
+
214
+ convert_to_type data, return_type
215
+ end
216
+
217
+ # Convert data to the given return type.
218
+ # @param [Object] data Data to be converted
219
+ # @param [String] return_type Return type
220
+ # @return [Mixed] Data in a particular type
221
+ def convert_to_type(data, return_type)
222
+ return nil if data.nil?
223
+ case return_type
224
+ when 'String'
225
+ data.to_s
226
+ when 'Integer'
227
+ data.to_i
228
+ when 'Float'
229
+ data.to_f
230
+ when 'BOOLEAN'
231
+ data == true
232
+ when 'DateTime'
233
+ # parse date time (expecting ISO 8601 format)
234
+ DateTime.parse data
235
+ when 'Date'
236
+ # parse date time (expecting ISO 8601 format)
237
+ Date.parse data
238
+ when 'Object'
239
+ # generic object (usually a Hash), return directly
240
+ data
241
+ when /\AArray<(.+)>\z/
242
+ # e.g. Array<Pet>
243
+ sub_type = $1
244
+ data.map { |item| convert_to_type(item, sub_type) }
245
+ when /\AHash\<String, (.+)\>\z/
246
+ # e.g. Hash<String, Integer>
247
+ sub_type = $1
248
+ {}.tap do |hash|
249
+ data.each { |k, v| hash[k] = convert_to_type(v, sub_type) }
250
+ end
251
+ else
252
+ # models, e.g. Pet
253
+ Bitpesa.const_get(return_type).new.tap do |model|
254
+ model.build_from_hash data
255
+ end
256
+ end
257
+ end
258
+
259
+ # Save response body into a file in (the defined) temporary folder, using the filename
260
+ # from the "Content-Disposition" header if provided, otherwise a random filename.
261
+ # The response body is written to the file in chunks in order to handle files which
262
+ # size is larger than maximum Ruby String or even larger than the maximum memory a Ruby
263
+ # process can use.
264
+ #
265
+ # @see Configuration#temp_folder_path
266
+ def download_file(request)
267
+ tempfile = nil
268
+ encoding = nil
269
+ request.on_headers do |response|
270
+ content_disposition = response.headers['Content-Disposition']
271
+ if content_disposition && content_disposition =~ /filename=/i
272
+ filename = content_disposition[/filename=['"]?([^'"\s]+)['"]?/, 1]
273
+ prefix = sanitize_filename(filename)
274
+ else
275
+ prefix = 'download-'
276
+ end
277
+ prefix = prefix + '-' unless prefix.end_with?('-')
278
+ encoding = response.body.encoding
279
+ tempfile = Tempfile.open(prefix, @config.temp_folder_path, encoding: encoding)
280
+ @tempfile = tempfile
281
+ end
282
+ request.on_body do |chunk|
283
+ chunk.force_encoding(encoding)
284
+ tempfile.write(chunk)
285
+ end
286
+ request.on_complete do |response|
287
+ tempfile.close
288
+ @config.logger.info "Temp file written to #{tempfile.path}, please copy the file to a proper folder "\
289
+ "with e.g. `FileUtils.cp(tempfile.path, '/new/file/path')` otherwise the temp file "\
290
+ "will be deleted automatically with GC. It's also recommended to delete the temp file "\
291
+ "explicitly with `tempfile.delete`"
292
+ end
293
+ end
294
+
295
+ # Sanitize filename by removing path.
296
+ # e.g. ../../sun.gif becomes sun.gif
297
+ #
298
+ # @param [String] filename the filename to be sanitized
299
+ # @return [String] the sanitized filename
300
+ def sanitize_filename(filename)
301
+ filename.gsub(/.*[\/\\]/, '')
302
+ end
303
+
304
+ def build_request_url(path)
305
+ # Add leading and trailing slashes to path
306
+ path = "/#{path}".gsub(/\/+/, '/')
307
+ URI.encode(@config.base_url + path)
308
+ end
309
+
310
+ # Builds the HTTP request body
311
+ #
312
+ # @param [Hash] header_params Header parameters
313
+ # @param [Hash] form_params Query parameters
314
+ # @param [Object] body HTTP body (JSON/XML)
315
+ # @return [String] HTTP body data in the form of string
316
+ def build_request_body(header_params, form_params, body)
317
+ # http form
318
+ if header_params['Content-Type'] == 'application/x-www-form-urlencoded' ||
319
+ header_params['Content-Type'] == 'multipart/form-data'
320
+ data = {}
321
+ form_params.each do |key, value|
322
+ case value
323
+ when ::File, ::Array, nil
324
+ # let typhoeus handle File, Array and nil parameters
325
+ data[key] = value
326
+ else
327
+ data[key] = value.to_s
328
+ end
329
+ end
330
+ elsif body
331
+ data = body.is_a?(String) ? body : body.to_json
332
+ else
333
+ data = nil
334
+ end
335
+ data
336
+ end
337
+
338
+ # Update hearder and query params based on authentication settings.
339
+ #
340
+ # @param [Hash] header_params Header parameters
341
+ # @param [Hash] query_params Query parameters
342
+ # @param [String] auth_names Authentication scheme name
343
+ def update_params_for_auth!(header_params, query_params, auth_names)
344
+ Array(auth_names).each do |auth_name|
345
+ next if auth_name == 'AuthorizationSecret'
346
+
347
+ auth_setting = @config.auth_settings[auth_name]
348
+ next unless auth_setting
349
+ case auth_setting[:in]
350
+ when 'header' then header_params[auth_setting[:key]] = auth_setting[:value]
351
+ when 'query' then query_params[auth_setting[:key]] = auth_setting[:value]
352
+ else fail ArgumentError, 'Authentication token must be in `query` or `header`'
353
+ end
354
+ end
355
+ end
356
+
357
+ # Sign request using HMAC-SHA512 algorithm.
358
+ #
359
+ # @param [Hash] params An array with the nonce, request method, url and the hex digest of the request body
360
+ def sign_request(params)
361
+ to_sign = params.join('&')
362
+ OpenSSL::HMAC.digest(
363
+ DIGEST,
364
+ @config.auth_settings['AuthorizationSecret'][:value],
365
+ to_sign
366
+ ).unpack('H*').first
367
+ end
368
+
369
+ def add_query(url, query_params)
370
+ return url unless query_params.present?
371
+
372
+ url + '?' + query_params.to_query
373
+ end
374
+
375
+ # Sets user agent in HTTP header
376
+ #
377
+ # @param [String] user_agent User agent (e.g. swagger-codegen/ruby/1.0.0)
378
+ def user_agent=(user_agent)
379
+ @user_agent = user_agent
380
+ @default_headers['User-Agent'] = @user_agent
381
+ end
382
+
383
+ # Return Accept header based on an array of accepts provided.
384
+ # @param [Array] accepts array for Accept
385
+ # @return [String] the Accept header (e.g. application/json)
386
+ def select_header_accept(accepts)
387
+ return nil if accepts.nil? || accepts.empty?
388
+ # use JSON when present, otherwise use all of the provided
389
+ json_accept = accepts.find { |s| json_mime?(s) }
390
+ json_accept || accepts.join(',')
391
+ end
392
+
393
+ # Return Content-Type header based on an array of content types provided.
394
+ # @param [Array] content_types array for Content-Type
395
+ # @return [String] the Content-Type header (e.g. application/json)
396
+ def select_header_content_type(content_types)
397
+ # use application/json by default
398
+ return 'application/json' if content_types.nil? || content_types.empty?
399
+ # use JSON when present, otherwise use the first one
400
+ json_content_type = content_types.find { |s| json_mime?(s) }
401
+ json_content_type || content_types.first
402
+ end
403
+
404
+ # Convert object (array, hash, object, etc) to JSON string.
405
+ # @param [Object] model object to be converted into JSON string
406
+ # @return [String] JSON string representation of the object
407
+ def object_to_http_body(model)
408
+ return model if model.nil? || model.is_a?(String)
409
+ local_body = nil
410
+ if model.is_a?(Array)
411
+ local_body = model.map { |m| object_to_hash(m) }
412
+ else
413
+ local_body = object_to_hash(model)
414
+ end
415
+ local_body.to_json
416
+ end
417
+
418
+ # Convert object(non-array) to hash.
419
+ # @param [Object] obj object to be converted into JSON string
420
+ # @return [String] JSON string representation of the object
421
+ def object_to_hash(obj)
422
+ if obj.respond_to?(:to_hash)
423
+ obj.to_hash
424
+ else
425
+ obj
426
+ end
427
+ end
428
+
429
+ # Build parameter value according to the given collection format.
430
+ # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi
431
+ def build_collection_param(param, collection_format)
432
+ case collection_format
433
+ when :csv
434
+ param.join(',')
435
+ when :ssv
436
+ param.join(' ')
437
+ when :tsv
438
+ param.join("\t")
439
+ when :pipes
440
+ param.join('|')
441
+ when :multi
442
+ # return the array directly as typhoeus will handle it as expected
443
+ param
444
+ else
445
+ fail "unknown collection format: #{collection_format.inspect}"
446
+ end
447
+ end
448
+ end
449
+ end