pinelabs 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 (646) hide show
  1. checksums.yaml +4 -0
  2. data/.fern/metadata.json +10 -0
  3. data/.fernignore +4 -0
  4. data/.rubocop.yml +70 -0
  5. data/README.md +165 -0
  6. data/Rakefile +20 -0
  7. data/custom.gemspec.rb +22 -0
  8. data/lib/pinelabs/affordability_suite/client.rb +208 -0
  9. data/lib/pinelabs/affordability_suite/types/downpayment_details_request.rb +14 -0
  10. data/lib/pinelabs/affordability_suite/types/downpayment_details_request_issuer.rb +12 -0
  11. data/lib/pinelabs/affordability_suite/types/imei_validation_request.rb +14 -0
  12. data/lib/pinelabs/affordability_suite/types/imei_validation_request_request_type.rb +14 -0
  13. data/lib/pinelabs/affordability_suite/types/offer_discovery_cardless_request.rb +14 -0
  14. data/lib/pinelabs/affordability_suite/types/offer_discovery_cardless_request_payment_option.rb +12 -0
  15. data/lib/pinelabs/affordability_suite/types/offer_discovery_cardless_request_payment_option_cardless_details.rb +13 -0
  16. data/lib/pinelabs/affordability_suite/types/offer_discovery_request.rb +18 -0
  17. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_cart_coupon_discount_amount.rb +13 -0
  18. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_customer_details.rb +12 -0
  19. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_downpayment_details.rb +12 -0
  20. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_downpayment_details_downpayment_amount.rb +13 -0
  21. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_issuer.rb +15 -0
  22. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_issuer_issuer_type.rb +21 -0
  23. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_order_amount.rb +13 -0
  24. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_payment_options.rb +14 -0
  25. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_payment_options_card_details.rb +12 -0
  26. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_payment_options_card_token_details.rb +13 -0
  27. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_product_details_item.rb +13 -0
  28. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_product_details_item_product_amount.rb +13 -0
  29. data/lib/pinelabs/affordability_suite/types/offer_discovery_request_product_details_item_product_coupon_discount_amount.rb +13 -0
  30. data/lib/pinelabs/affordability_suite/types/offer_validation_request.rb +17 -0
  31. data/lib/pinelabs/affordability_suite/types/offer_validation_request_customer_details.rb +12 -0
  32. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data.rb +12 -0
  33. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details.rb +17 -0
  34. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure.rb +37 -0
  35. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_auth_amount.rb +12 -0
  36. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_cart_coupon_discount_amount.rb +12 -0
  37. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown.rb +17 -0
  38. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_additional_fee_amount.rb +12 -0
  39. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_applicable_fee_amount.rb +12 -0
  40. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_amount.rb +12 -0
  41. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_calculated_on_amount.rb +12 -0
  42. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_maximum_fee_amount.rb +12 -0
  43. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_subvented_fee_amount.rb +12 -0
  44. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_tax_amount.rb +12 -0
  45. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item.rb +25 -0
  46. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_after_downpayment_reduced_product_amount.rb +12 -0
  47. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_cart_coupon_discount_product_share.rb +12 -0
  48. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount.rb +20 -0
  49. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup.rb +14 -0
  50. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_brand.rb +11 -0
  51. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_brand_amount.rb +12 -0
  52. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_dealer.rb +11 -0
  53. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_dealer_amount.rb +12 -0
  54. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_issuer.rb +11 -0
  55. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_issuer_amount.rb +12 -0
  56. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_merchant.rb +11 -0
  57. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_merchant_amount.rb +12 -0
  58. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_max_amount.rb +12 -0
  59. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_min_amount.rb +12 -0
  60. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_downpayment_amount.rb +12 -0
  61. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_interest_amount.rb +12 -0
  62. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_amount.rb +13 -0
  63. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_coupon_discount_amount.rb +13 -0
  64. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_offer_parameters_item.rb +13 -0
  65. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention.rb +17 -0
  66. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_amount.rb +12 -0
  67. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup.rb +14 -0
  68. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_brand.rb +11 -0
  69. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_brand_amount.rb +12 -0
  70. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer.rb +11 -0
  71. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer_amount.rb +12 -0
  72. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer.rb +11 -0
  73. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer_amount.rb +12 -0
  74. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant.rb +11 -0
  75. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant_amount.rb +12 -0
  76. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_max_amount.rb +12 -0
  77. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_min_amount.rb +12 -0
  78. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount.rb +20 -0
  79. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup.rb +14 -0
  80. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_brand.rb +11 -0
  81. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_brand_amount.rb +12 -0
  82. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_dealer.rb +11 -0
  83. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_dealer_amount.rb +12 -0
  84. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_issuer.rb +11 -0
  85. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_issuer_amount.rb +12 -0
  86. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_merchant.rb +11 -0
  87. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_merchant_amount.rb +12 -0
  88. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_max_amount.rb +12 -0
  89. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_min_amount.rb +12 -0
  90. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_downpayment_details.rb +12 -0
  91. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_downpayment_details_downpayment_amount.rb +12 -0
  92. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_interest_amount.rb +12 -0
  93. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_loan_amount.rb +12 -0
  94. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_monthly_emi_amount.rb +12 -0
  95. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_net_payment_amount.rb +12 -0
  96. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_amount.rb +12 -0
  97. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_details.rb +11 -0
  98. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_details_amount.rb +12 -0
  99. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_split_emi_amount.rb +12 -0
  100. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_coupon_discount.rb +12 -0
  101. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_discount_amount.rb +12 -0
  102. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_emi_amount.rb +12 -0
  103. data/lib/pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_subvention_amount.rb +12 -0
  104. data/lib/pinelabs/affordability_suite/types/offer_validation_request_order_amount.rb +13 -0
  105. data/lib/pinelabs/affordability_suite/types/offer_validation_request_payment_amount.rb +14 -0
  106. data/lib/pinelabs/affordability_suite/types/offer_validation_request_payment_option.rb +15 -0
  107. data/lib/pinelabs/affordability_suite/types/offer_validation_request_payment_option_card_details.rb +13 -0
  108. data/lib/pinelabs/affordability_suite/types/offer_validation_request_payment_option_card_token_details.rb +15 -0
  109. data/lib/pinelabs/affordability_suite/types/offer_validation_request_payment_option_cardless_details.rb +13 -0
  110. data/lib/pinelabs/apple_pay/client.rb +57 -0
  111. data/lib/pinelabs/apple_pay/types/authorize_payment_request.rb +13 -0
  112. data/lib/pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details.rb +18 -0
  113. data/lib/pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data.rb +13 -0
  114. data/lib/pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data_card_type.rb +15 -0
  115. data/lib/pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data_network_name.rb +16 -0
  116. data/lib/pinelabs/authentication/client.rb +50 -0
  117. data/lib/pinelabs/authentication/types/generate_token_request.rb +13 -0
  118. data/lib/pinelabs/bnpl/client.rb +49 -0
  119. data/lib/pinelabs/bnpl/types/bnpl_check_eligibility_request.rb +15 -0
  120. data/lib/pinelabs/bnpl/types/bnpl_check_eligibility_request_device_info.rb +17 -0
  121. data/lib/pinelabs/bnpl/types/bnpl_check_eligibility_request_device_info_operating_system.rb +16 -0
  122. data/lib/pinelabs/bnpl/types/bnpl_check_eligibility_request_pay_code.rb +13 -0
  123. data/lib/pinelabs/card_payments/client.rb +207 -0
  124. data/lib/pinelabs/card_payments/types/bnpl_resend_otp_request.rb +11 -0
  125. data/lib/pinelabs/card_payments/types/bnpl_submit_otp_request.rb +12 -0
  126. data/lib/pinelabs/card_payments/types/create_payment_request.rb +12 -0
  127. data/lib/pinelabs/card_payments/types/get_card_details_request.rb +12 -0
  128. data/lib/pinelabs/card_payments/types/otp_generate_request.rb +11 -0
  129. data/lib/pinelabs/checkout/client.rb +49 -0
  130. data/lib/pinelabs/checkout/types/generate_checkout_link_request.rb +18 -0
  131. data/lib/pinelabs/checkout/types/generate_checkout_link_request_allowed_payment_methods_item.rb +20 -0
  132. data/lib/pinelabs/checkout/types/generate_checkout_link_request_integration_mode.rb +15 -0
  133. data/lib/pinelabs/client.rb +124 -0
  134. data/lib/pinelabs/convenience_fee/client.rb +49 -0
  135. data/lib/pinelabs/convenience_fee/types/calculate_convenience_fee_request.rb +13 -0
  136. data/lib/pinelabs/customers/client.rb +168 -0
  137. data/lib/pinelabs/customers/types/create_customer_request.rb +20 -0
  138. data/lib/pinelabs/customers/types/get_customer_by_id_request.rb +11 -0
  139. data/lib/pinelabs/customers/types/get_customer_details_request.rb +13 -0
  140. data/lib/pinelabs/customers/types/update_customer_request.rb +20 -0
  141. data/lib/pinelabs/customers/types/update_customer_request_status.rb +16 -0
  142. data/lib/pinelabs/e_challans/client.rb +120 -0
  143. data/lib/pinelabs/e_challans/types/create_challan_request.rb +12 -0
  144. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown.rb +16 -0
  145. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_additional_fee_amount.rb +13 -0
  146. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_applicable_fee_amount.rb +13 -0
  147. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_fee_amount.rb +13 -0
  148. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_maximum_fee_amount.rb +13 -0
  149. data/lib/pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_tax_amount.rb +13 -0
  150. data/lib/pinelabs/e_challans/types/get_challan_pdf_request.rb +11 -0
  151. data/lib/pinelabs/e_challans/types/get_challan_request.rb +11 -0
  152. data/lib/pinelabs/environment.rb +7 -0
  153. data/lib/pinelabs/errors/api_error.rb +8 -0
  154. data/lib/pinelabs/errors/client_error.rb +17 -0
  155. data/lib/pinelabs/errors/redirect_error.rb +8 -0
  156. data/lib/pinelabs/errors/response_error.rb +42 -0
  157. data/lib/pinelabs/errors/server_error.rb +11 -0
  158. data/lib/pinelabs/errors/timeout_error.rb +8 -0
  159. data/lib/pinelabs/internal/errors/constraint_error.rb +10 -0
  160. data/lib/pinelabs/internal/errors/type_error.rb +10 -0
  161. data/lib/pinelabs/internal/http/base_request.rb +51 -0
  162. data/lib/pinelabs/internal/http/raw_client.rb +214 -0
  163. data/lib/pinelabs/internal/iterators/cursor_item_iterator.rb +28 -0
  164. data/lib/pinelabs/internal/iterators/cursor_page_iterator.rb +63 -0
  165. data/lib/pinelabs/internal/iterators/item_iterator.rb +65 -0
  166. data/lib/pinelabs/internal/iterators/offset_item_iterator.rb +30 -0
  167. data/lib/pinelabs/internal/iterators/offset_page_iterator.rb +103 -0
  168. data/lib/pinelabs/internal/json/request.rb +41 -0
  169. data/lib/pinelabs/internal/json/serializable.rb +25 -0
  170. data/lib/pinelabs/internal/multipart/multipart_encoder.rb +141 -0
  171. data/lib/pinelabs/internal/multipart/multipart_form_data.rb +78 -0
  172. data/lib/pinelabs/internal/multipart/multipart_form_data_part.rb +51 -0
  173. data/lib/pinelabs/internal/multipart/multipart_request.rb +40 -0
  174. data/lib/pinelabs/internal/types/array.rb +47 -0
  175. data/lib/pinelabs/internal/types/boolean.rb +34 -0
  176. data/lib/pinelabs/internal/types/enum.rb +56 -0
  177. data/lib/pinelabs/internal/types/hash.rb +36 -0
  178. data/lib/pinelabs/internal/types/model/field.rb +38 -0
  179. data/lib/pinelabs/internal/types/model.rb +208 -0
  180. data/lib/pinelabs/internal/types/type.rb +35 -0
  181. data/lib/pinelabs/internal/types/union.rb +161 -0
  182. data/lib/pinelabs/internal/types/unknown.rb +15 -0
  183. data/lib/pinelabs/internal/types/utils.rb +116 -0
  184. data/lib/pinelabs/international_payments/client.rb +51 -0
  185. data/lib/pinelabs/international_payments/types/currency_conversion_request.rb +15 -0
  186. data/lib/pinelabs/orders/client.rb +199 -0
  187. data/lib/pinelabs/orders/types/cancel_order_request.rb +11 -0
  188. data/lib/pinelabs/orders/types/capture_order_request.rb +13 -0
  189. data/lib/pinelabs/orders/types/create_order_request.rb +22 -0
  190. data/lib/pinelabs/orders/types/create_order_request_allowed_payment_methods_item.rb +21 -0
  191. data/lib/pinelabs/orders/types/create_order_request_purchase_details.rb +14 -0
  192. data/lib/pinelabs/orders/types/get_order_by_id_request.rb +11 -0
  193. data/lib/pinelabs/orders/types/get_order_by_merchant_reference_request.rb +11 -0
  194. data/lib/pinelabs/pay_by_points/client.rb +48 -0
  195. data/lib/pinelabs/pay_by_points/types/check_point_balance_request.rb +12 -0
  196. data/lib/pinelabs/pay_by_points/types/check_point_balance_request_order_details.rb +12 -0
  197. data/lib/pinelabs/pay_by_points/types/check_point_balance_request_order_details_order_amount.rb +13 -0
  198. data/lib/pinelabs/pay_by_points/types/check_point_balance_request_payment_option.rb +12 -0
  199. data/lib/pinelabs/pay_by_points/types/check_point_balance_request_payment_option_points_card_details.rb +13 -0
  200. data/lib/pinelabs/payment_links/client.rb +186 -0
  201. data/lib/pinelabs/payment_links/types/cancel_payment_link_request.rb +11 -0
  202. data/lib/pinelabs/payment_links/types/create_payment_link_request.rb +27 -0
  203. data/lib/pinelabs/payment_links/types/create_payment_link_request_allowed_payment_methods_item.rb +20 -0
  204. data/lib/pinelabs/payment_links/types/get_payment_link_by_id_request.rb +11 -0
  205. data/lib/pinelabs/payment_links/types/get_payment_link_by_merchant_reference_request.rb +11 -0
  206. data/lib/pinelabs/payment_links/types/resend_payment_link_notification_request.rb +11 -0
  207. data/lib/pinelabs/payouts/client.rb +261 -0
  208. data/lib/pinelabs/payouts/types/cancel_scheduled_payout_request.rb +11 -0
  209. data/lib/pinelabs/payouts/types/create_bulk_payout_request.rb +11 -0
  210. data/lib/pinelabs/payouts/types/create_payout_request.rb +19 -0
  211. data/lib/pinelabs/payouts/types/create_payout_request_mode.rb +16 -0
  212. data/lib/pinelabs/payouts/types/list_payouts_request.rb +20 -0
  213. data/lib/pinelabs/payouts/types/list_payouts_request_mode.rb +16 -0
  214. data/lib/pinelabs/payouts/types/list_payouts_request_status.rb +18 -0
  215. data/lib/pinelabs/payouts/types/update_scheduled_payout_request.rb +12 -0
  216. data/lib/pinelabs/refunds/client.rb +59 -0
  217. data/lib/pinelabs/refunds/types/create_refund_request.rb +16 -0
  218. data/lib/pinelabs/refunds/types/create_refund_request_order_amount.rb +13 -0
  219. data/lib/pinelabs/refunds/types/create_refund_request_products_item.rb +12 -0
  220. data/lib/pinelabs/refunds/types/create_refund_request_split_info.rb +13 -0
  221. data/lib/pinelabs/refunds/types/create_refund_request_split_info_split_details_item.rb +13 -0
  222. data/lib/pinelabs/refunds/types/create_refund_request_split_info_split_details_item_amount.rb +12 -0
  223. data/lib/pinelabs/settlements/client.rb +111 -0
  224. data/lib/pinelabs/settlements/types/get_all_settlements_request.rb +14 -0
  225. data/lib/pinelabs/settlements/types/get_settlements_by_utr_request.rb +13 -0
  226. data/lib/pinelabs/split_settlements/client.rb +93 -0
  227. data/lib/pinelabs/split_settlements/types/cancel_settlement_request.rb +12 -0
  228. data/lib/pinelabs/split_settlements/types/release_settlement_request.rb +13 -0
  229. data/lib/pinelabs/split_settlements/types/release_settlement_request_release_amount.rb +13 -0
  230. data/lib/pinelabs/subscriptions_plans/client.rb +248 -0
  231. data/lib/pinelabs/subscriptions_plans/types/create_plan_request.rb +22 -0
  232. data/lib/pinelabs/subscriptions_plans/types/create_plan_request_frequency.rb +22 -0
  233. data/lib/pinelabs/subscriptions_plans/types/delete_plan_request.rb +11 -0
  234. data/lib/pinelabs/subscriptions_plans/types/get_plan_by_id_request.rb +11 -0
  235. data/lib/pinelabs/subscriptions_plans/types/get_plan_by_merchant_reference_request.rb +11 -0
  236. data/lib/pinelabs/subscriptions_plans/types/list_plans_request.rb +19 -0
  237. data/lib/pinelabs/subscriptions_plans/types/list_plans_request_amount_range.rb +15 -0
  238. data/lib/pinelabs/subscriptions_plans/types/update_plan_request.rb +18 -0
  239. data/lib/pinelabs/subscriptions_presentations/client.rb +308 -0
  240. data/lib/pinelabs/subscriptions_presentations/types/create_debit_request.rb +13 -0
  241. data/lib/pinelabs/subscriptions_presentations/types/create_presentation_request.rb +14 -0
  242. data/lib/pinelabs/subscriptions_presentations/types/delete_presentation_request.rb +11 -0
  243. data/lib/pinelabs/subscriptions_presentations/types/get_presentation_by_id_request.rb +11 -0
  244. data/lib/pinelabs/subscriptions_presentations/types/get_presentation_by_merchant_reference_request.rb +11 -0
  245. data/lib/pinelabs/subscriptions_presentations/types/list_presentations_by_subscription_request.rb +14 -0
  246. data/lib/pinelabs/subscriptions_presentations/types/merchant_retry_request.rb +12 -0
  247. data/lib/pinelabs/subscriptions_presentations/types/subscription_notification_request.rb +15 -0
  248. data/lib/pinelabs/subscriptions_subscriptions/client.rb +321 -0
  249. data/lib/pinelabs/subscriptions_subscriptions/types/cancel_subscription_request.rb +11 -0
  250. data/lib/pinelabs/subscriptions_subscriptions/types/create_subscription_request.rb +23 -0
  251. data/lib/pinelabs/subscriptions_subscriptions/types/create_subscription_request_allowed_payment_methods_item.rb +17 -0
  252. data/lib/pinelabs/subscriptions_subscriptions/types/create_subscription_request_integration_mode.rb +14 -0
  253. data/lib/pinelabs/subscriptions_subscriptions/types/get_subscription_by_id_request.rb +11 -0
  254. data/lib/pinelabs/subscriptions_subscriptions/types/get_subscription_by_merchant_reference_request.rb +11 -0
  255. data/lib/pinelabs/subscriptions_subscriptions/types/list_subscriptions_request.rb +20 -0
  256. data/lib/pinelabs/subscriptions_subscriptions/types/list_subscriptions_request_amount_range.rb +15 -0
  257. data/lib/pinelabs/subscriptions_subscriptions/types/pause_subscription_request.rb +11 -0
  258. data/lib/pinelabs/subscriptions_subscriptions/types/resume_subscription_request.rb +11 -0
  259. data/lib/pinelabs/subscriptions_subscriptions/types/update_subscription_request.rb +14 -0
  260. data/lib/pinelabs/tokenization/client.rb +273 -0
  261. data/lib/pinelabs/tokenization/types/delete_customer_token_request.rb +14 -0
  262. data/lib/pinelabs/tokenization/types/delete_token_by_token_id_request.rb +11 -0
  263. data/lib/pinelabs/tokenization/types/generate_card_token_request.rb +16 -0
  264. data/lib/pinelabs/tokenization/types/generate_card_token_request_payment_method.rb +13 -0
  265. data/lib/pinelabs/tokenization/types/generate_cryptogram_request.rb +13 -0
  266. data/lib/pinelabs/tokenization/types/get_customer_token_by_token_id_request.rb +12 -0
  267. data/lib/pinelabs/tokenization/types/get_customer_tokens_by_customer_id_request.rb +11 -0
  268. data/lib/pinelabs/tokenization/types/get_service_provider_token_request.rb +11 -0
  269. data/lib/pinelabs/tokenization/types/get_service_provider_token_response.rb +14 -0
  270. data/lib/pinelabs/types/acquirer_data.rb +13 -0
  271. data/lib/pinelabs/types/address.rb +19 -0
  272. data/lib/pinelabs/types/address_address_category.rb +12 -0
  273. data/lib/pinelabs/types/amount.rb +11 -0
  274. data/lib/pinelabs/types/authorize_payment_response.rb +10 -0
  275. data/lib/pinelabs/types/authorize_payment_response_data.rb +24 -0
  276. data/lib/pinelabs/types/authorize_payment_response_data_integration_mode.rb +12 -0
  277. data/lib/pinelabs/types/authorize_payment_response_data_order_amount.rb +10 -0
  278. data/lib/pinelabs/types/authorize_payment_response_data_payments_item.rb +17 -0
  279. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_acquirer_data.rb +13 -0
  280. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_amount.rb +10 -0
  281. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_method.rb +15 -0
  282. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_option.rb +9 -0
  283. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data.rb +10 -0
  284. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data.rb +18 -0
  285. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data_card_type.rb +12 -0
  286. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data_token_txn_type.rb +13 -0
  287. data/lib/pinelabs/types/authorize_payment_response_data_payments_item_status.rb +15 -0
  288. data/lib/pinelabs/types/authorize_payment_response_data_purchase_details.rb +10 -0
  289. data/lib/pinelabs/types/authorize_payment_response_data_purchase_details_customer.rb +16 -0
  290. data/lib/pinelabs/types/authorize_payment_response_data_status.rb +19 -0
  291. data/lib/pinelabs/types/authorize_payment_response_data_type.rb +12 -0
  292. data/lib/pinelabs/types/bank_account.rb +12 -0
  293. data/lib/pinelabs/types/bnpl_check_eligibility_response.rb +11 -0
  294. data/lib/pinelabs/types/bnpl_check_eligibility_response_metadata.rb +11 -0
  295. data/lib/pinelabs/types/bnpl_check_eligibility_response_metadata_installments_item.rb +11 -0
  296. data/lib/pinelabs/types/bnpl_resend_otp_response.rb +12 -0
  297. data/lib/pinelabs/types/bnpl_resend_otp_response_meta_data.rb +10 -0
  298. data/lib/pinelabs/types/bnpl_submit_otp_response.rb +10 -0
  299. data/lib/pinelabs/types/calculate_convenience_fee_response.rb +10 -0
  300. data/lib/pinelabs/types/calculate_convenience_fee_response_data_item.rb +14 -0
  301. data/lib/pinelabs/types/calculate_convenience_fee_response_data_item_convenience_fee_breakdown.rb +14 -0
  302. data/lib/pinelabs/types/calculate_convenience_fee_response_data_item_payment_method_metadata.rb +11 -0
  303. data/lib/pinelabs/types/capture_data_item.rb +12 -0
  304. data/lib/pinelabs/types/card_data.rb +19 -0
  305. data/lib/pinelabs/types/card_data_card_category.rb +23 -0
  306. data/lib/pinelabs/types/card_data_card_type.rb +22 -0
  307. data/lib/pinelabs/types/card_data_token_txn_type.rb +13 -0
  308. data/lib/pinelabs/types/card_detail_lookup_item.rb +11 -0
  309. data/lib/pinelabs/types/card_detail_lookup_item_payment_reference_type.rb +14 -0
  310. data/lib/pinelabs/types/card_payment_detail_item.rb +18 -0
  311. data/lib/pinelabs/types/card_token_response.rb +15 -0
  312. data/lib/pinelabs/types/cart_details.rb +10 -0
  313. data/lib/pinelabs/types/cart_item.rb +18 -0
  314. data/lib/pinelabs/types/challan_response.rb +20 -0
  315. data/lib/pinelabs/types/check_point_balance_response.rb +13 -0
  316. data/lib/pinelabs/types/check_point_balance_response_balance.rb +11 -0
  317. data/lib/pinelabs/types/check_point_balance_response_redeemable_amount.rb +11 -0
  318. data/lib/pinelabs/types/checkout_customer.rb +17 -0
  319. data/lib/pinelabs/types/checkout_product.rb +11 -0
  320. data/lib/pinelabs/types/checkout_purchase_details.rb +11 -0
  321. data/lib/pinelabs/types/create_bulk_payout_response.rb +13 -0
  322. data/lib/pinelabs/types/create_bulk_payout_response_status.rb +16 -0
  323. data/lib/pinelabs/types/create_debit_response.rb +15 -0
  324. data/lib/pinelabs/types/create_debit_response_status.rb +16 -0
  325. data/lib/pinelabs/types/create_payout_response.rb +22 -0
  326. data/lib/pinelabs/types/create_payout_response_mode.rb +14 -0
  327. data/lib/pinelabs/types/create_payout_response_status.rb +16 -0
  328. data/lib/pinelabs/types/create_presentation_response.rb +15 -0
  329. data/lib/pinelabs/types/create_presentation_response_status.rb +18 -0
  330. data/lib/pinelabs/types/create_subscription_response.rb +31 -0
  331. data/lib/pinelabs/types/create_subscription_response_allowed_payment_methods_item.rb +15 -0
  332. data/lib/pinelabs/types/create_subscription_response_integration_mode.rb +12 -0
  333. data/lib/pinelabs/types/create_subscription_response_payment_mode.rb +12 -0
  334. data/lib/pinelabs/types/create_subscription_response_status.rb +24 -0
  335. data/lib/pinelabs/types/cryptogram_response.rb +13 -0
  336. data/lib/pinelabs/types/currency_conversion_response.rb +16 -0
  337. data/lib/pinelabs/types/customer_details.rb +18 -0
  338. data/lib/pinelabs/types/customer_response.rb +23 -0
  339. data/lib/pinelabs/types/customer_response_status.rb +14 -0
  340. data/lib/pinelabs/types/customer_token_detail.rb +21 -0
  341. data/lib/pinelabs/types/customer_token_detail_payment_method.rb +13 -0
  342. data/lib/pinelabs/types/customer_tokens_response.rb +14 -0
  343. data/lib/pinelabs/types/delete_customer_token_response.rb +13 -0
  344. data/lib/pinelabs/types/delete_token_by_token_id_response.rb +11 -0
  345. data/lib/pinelabs/types/downpayment_details_response.rb +10 -0
  346. data/lib/pinelabs/types/downpayment_details_response_downpayment_details.rb +12 -0
  347. data/lib/pinelabs/types/downpayment_details_response_downpayment_details_allowed_payment_methods_item.rb +15 -0
  348. data/lib/pinelabs/types/downpayment_details_response_downpayment_details_amount_range.rb +11 -0
  349. data/lib/pinelabs/types/error_response.rb +13 -0
  350. data/lib/pinelabs/types/error_response_additional_error_details.rb +12 -0
  351. data/lib/pinelabs/types/generate_checkout_link_response.rb +14 -0
  352. data/lib/pinelabs/types/generate_token_response.rb +11 -0
  353. data/lib/pinelabs/types/get_account_balance_response.rb +12 -0
  354. data/lib/pinelabs/types/get_card_details_response.rb +10 -0
  355. data/lib/pinelabs/types/get_payouts_payment_item.rb +24 -0
  356. data/lib/pinelabs/types/get_payouts_payment_item_mode.rb +14 -0
  357. data/lib/pinelabs/types/get_payouts_payment_item_status.rb +16 -0
  358. data/lib/pinelabs/types/get_payouts_response.rb +14 -0
  359. data/lib/pinelabs/types/imei_product.rb +13 -0
  360. data/lib/pinelabs/types/imei_validation_response.rb +12 -0
  361. data/lib/pinelabs/types/imei_validation_response_products_item.rb +14 -0
  362. data/lib/pinelabs/types/imei_validation_response_products_item_product_brand_response.rb +11 -0
  363. data/lib/pinelabs/types/imei_validation_response_products_item_product_imei_status.rb +12 -0
  364. data/lib/pinelabs/types/issuer_offer.rb +16 -0
  365. data/lib/pinelabs/types/issuer_offer_issuer_data.rb +21 -0
  366. data/lib/pinelabs/types/issuer_offer_issuer_data_auth_type.rb +12 -0
  367. data/lib/pinelabs/types/issuer_offer_issuer_data_penny_transaction_amount.rb +10 -0
  368. data/lib/pinelabs/types/issuer_offer_issuer_type.rb +19 -0
  369. data/lib/pinelabs/types/list_plans_response.rb +12 -0
  370. data/lib/pinelabs/types/list_presentations_response.rb +12 -0
  371. data/lib/pinelabs/types/list_settlements_response.rb +13 -0
  372. data/lib/pinelabs/types/list_subscriptions_response.rb +12 -0
  373. data/lib/pinelabs/types/merchant_metadata.rb +23 -0
  374. data/lib/pinelabs/types/net_banking_data_response.rb +11 -0
  375. data/lib/pinelabs/types/net_banking_data_response_txn_mode.rb +13 -0
  376. data/lib/pinelabs/types/offer_discovery_error_response.rb +12 -0
  377. data/lib/pinelabs/types/offer_discovery_error_response_additional_error_details.rb +12 -0
  378. data/lib/pinelabs/types/offer_discovery_response.rb +10 -0
  379. data/lib/pinelabs/types/offer_validation_error_response.rb +11 -0
  380. data/lib/pinelabs/types/offer_validation_error_response_additional_error_details.rb +12 -0
  381. data/lib/pinelabs/types/offer_validation_response.rb +11 -0
  382. data/lib/pinelabs/types/order_response.rb +10 -0
  383. data/lib/pinelabs/types/order_response_data.rb +31 -0
  384. data/lib/pinelabs/types/order_response_data_integration_mode.rb +12 -0
  385. data/lib/pinelabs/types/order_response_data_purchase_details.rb +12 -0
  386. data/lib/pinelabs/types/order_response_data_status.rb +19 -0
  387. data/lib/pinelabs/types/order_response_data_type.rb +12 -0
  388. data/lib/pinelabs/types/otp_generate_response.rb +11 -0
  389. data/lib/pinelabs/types/otp_generate_response_meta_data.rb +10 -0
  390. data/lib/pinelabs/types/otp_generate_response_next_item.rb +13 -0
  391. data/lib/pinelabs/types/page_info.rb +13 -0
  392. data/lib/pinelabs/types/pagination_links.rb +13 -0
  393. data/lib/pinelabs/types/pagination_links_first.rb +9 -0
  394. data/lib/pinelabs/types/pagination_links_last.rb +9 -0
  395. data/lib/pinelabs/types/pagination_links_next.rb +9 -0
  396. data/lib/pinelabs/types/pagination_links_self.rb +9 -0
  397. data/lib/pinelabs/types/pagination_meta.rb +13 -0
  398. data/lib/pinelabs/types/payment_item.rb +23 -0
  399. data/lib/pinelabs/types/payment_item_error_detail.rb +11 -0
  400. data/lib/pinelabs/types/payment_item_payment_method.rb +18 -0
  401. data/lib/pinelabs/types/payment_item_payment_option.rb +12 -0
  402. data/lib/pinelabs/types/payment_item_status.rb +15 -0
  403. data/lib/pinelabs/types/payment_link_account_details.rb +10 -0
  404. data/lib/pinelabs/types/payment_link_address.rb +16 -0
  405. data/lib/pinelabs/types/payment_link_bank_details.rb +12 -0
  406. data/lib/pinelabs/types/payment_link_cart_details.rb +10 -0
  407. data/lib/pinelabs/types/payment_link_cart_item.rb +11 -0
  408. data/lib/pinelabs/types/payment_link_customer.rb +19 -0
  409. data/lib/pinelabs/types/payment_link_product_detail.rb +12 -0
  410. data/lib/pinelabs/types/payment_link_response.rb +30 -0
  411. data/lib/pinelabs/types/payment_link_response_allowed_payment_methods_item.rb +17 -0
  412. data/lib/pinelabs/types/payment_link_response_status.rb +17 -0
  413. data/lib/pinelabs/types/payment_link_split_detail.rb +16 -0
  414. data/lib/pinelabs/types/payment_link_split_detail_status.rb +12 -0
  415. data/lib/pinelabs/types/payment_link_split_info.rb +11 -0
  416. data/lib/pinelabs/types/payment_object.rb +17 -0
  417. data/lib/pinelabs/types/payment_object_acquirer_data.rb +13 -0
  418. data/lib/pinelabs/types/payment_object_payment_amount.rb +10 -0
  419. data/lib/pinelabs/types/payment_object_payment_method.rb +15 -0
  420. data/lib/pinelabs/types/payment_object_status.rb +15 -0
  421. data/lib/pinelabs/types/payment_request_item.rb +16 -0
  422. data/lib/pinelabs/types/payment_request_item_device_info.rb +16 -0
  423. data/lib/pinelabs/types/payment_request_item_device_info_operating_system.rb +14 -0
  424. data/lib/pinelabs/types/payment_request_item_offer_data.rb +11 -0
  425. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details.rb +15 -0
  426. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure.rb +34 -0
  427. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_auth_amount.rb +10 -0
  428. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_cart_coupon_discount_amount.rb +10 -0
  429. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown.rb +15 -0
  430. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_additional_fee_amount.rb +10 -0
  431. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_applicable_fee_amount.rb +10 -0
  432. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_amount.rb +10 -0
  433. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_calculated_on_amount.rb +10 -0
  434. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_maximum_fee_amount.rb +10 -0
  435. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_subvented_fee_amount.rb +10 -0
  436. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_tax_amount.rb +10 -0
  437. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item.rb +23 -0
  438. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_after_downpayment_reduced_product_amount.rb +10 -0
  439. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_cart_coupon_discount_product_share.rb +10 -0
  440. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount.rb +17 -0
  441. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup.rb +12 -0
  442. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_brand.rb +9 -0
  443. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_brand_amount.rb +10 -0
  444. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_dealer.rb +9 -0
  445. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_dealer_amount.rb +10 -0
  446. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_issuer.rb +9 -0
  447. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_issuer_amount.rb +10 -0
  448. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_merchant.rb +9 -0
  449. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_merchant_amount.rb +10 -0
  450. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_max_amount.rb +10 -0
  451. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_min_amount.rb +10 -0
  452. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_downpayment_amount.rb +10 -0
  453. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_interest_amount.rb +10 -0
  454. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_amount.rb +10 -0
  455. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_coupon_discount_amount.rb +10 -0
  456. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_offer_parameters_item.rb +11 -0
  457. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention.rb +14 -0
  458. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_amount.rb +10 -0
  459. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup.rb +12 -0
  460. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_brand.rb +9 -0
  461. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_brand_amount.rb +10 -0
  462. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer.rb +9 -0
  463. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer_amount.rb +10 -0
  464. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer.rb +9 -0
  465. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer_amount.rb +10 -0
  466. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant.rb +9 -0
  467. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant_amount.rb +10 -0
  468. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_max_amount.rb +10 -0
  469. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_min_amount.rb +10 -0
  470. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_downpayment_details.rb +10 -0
  471. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_downpayment_details_downpayment_amount.rb +10 -0
  472. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_intrest_amount.rb +10 -0
  473. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_loan_amount.rb +10 -0
  474. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_monthly_emi_amount.rb +10 -0
  475. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_net_payment_amount.rb +10 -0
  476. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_processing_fee_details.rb +9 -0
  477. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_processing_fee_details_amount.rb +10 -0
  478. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_split_emi_amount.rb +10 -0
  479. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_coupon_discount.rb +10 -0
  480. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_discount_amount.rb +10 -0
  481. data/lib/pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_emi_amount.rb +10 -0
  482. data/lib/pinelabs/types/payment_request_item_payment_method.rb +19 -0
  483. data/lib/pinelabs/types/payment_request_item_payment_option.rb +16 -0
  484. data/lib/pinelabs/types/payment_request_item_payment_option_bnpl_details.rb +11 -0
  485. data/lib/pinelabs/types/payment_request_item_payment_option_bnpl_details_bnpl_pay_code.rb +11 -0
  486. data/lib/pinelabs/types/payment_request_item_payment_option_card_details.rb +15 -0
  487. data/lib/pinelabs/types/payment_request_item_payment_option_card_token_details.rb +16 -0
  488. data/lib/pinelabs/types/payment_request_item_payment_option_cardless_details.rb +11 -0
  489. data/lib/pinelabs/types/payment_request_item_payment_option_points_card_details.rb +12 -0
  490. data/lib/pinelabs/types/payout_amount.rb +12 -0
  491. data/lib/pinelabs/types/payout_detail.rb +25 -0
  492. data/lib/pinelabs/types/payout_detail_mode.rb +14 -0
  493. data/lib/pinelabs/types/payout_detail_status.rb +16 -0
  494. data/lib/pinelabs/types/payout_link.rb +11 -0
  495. data/lib/pinelabs/types/plan_response.rb +25 -0
  496. data/lib/pinelabs/types/plan_response_frequency.rb +20 -0
  497. data/lib/pinelabs/types/plan_response_status.rb +13 -0
  498. data/lib/pinelabs/types/presentation_detail.rb +18 -0
  499. data/lib/pinelabs/types/presentation_detail_pdn_status.rb +17 -0
  500. data/lib/pinelabs/types/presentation_detail_status.rb +19 -0
  501. data/lib/pinelabs/types/product_detail.rb +13 -0
  502. data/lib/pinelabs/types/refund_response.rb +10 -0
  503. data/lib/pinelabs/types/refund_response_data.rb +21 -0
  504. data/lib/pinelabs/types/refund_response_data_integration_mode.rb +12 -0
  505. data/lib/pinelabs/types/refund_response_data_order_amount.rb +10 -0
  506. data/lib/pinelabs/types/refund_response_data_purchase_details.rb +11 -0
  507. data/lib/pinelabs/types/refund_response_data_purchase_details_customer.rb +17 -0
  508. data/lib/pinelabs/types/refund_response_data_purchase_details_split_info.rb +10 -0
  509. data/lib/pinelabs/types/refund_response_data_status.rb +14 -0
  510. data/lib/pinelabs/types/refund_response_data_type.rb +12 -0
  511. data/lib/pinelabs/types/resend_otp_error_response.rb +12 -0
  512. data/lib/pinelabs/types/service_provider_token_response.rb +18 -0
  513. data/lib/pinelabs/types/service_provider_token_response_payment_method.rb +11 -0
  514. data/lib/pinelabs/types/service_provider_tokens_list_response.rb +11 -0
  515. data/lib/pinelabs/types/settlement_by_utr_response.rb +35 -0
  516. data/lib/pinelabs/types/settlement_by_utr_response_pagination.rb +10 -0
  517. data/lib/pinelabs/types/settlement_summary.rb +20 -0
  518. data/lib/pinelabs/types/settlement_transaction.rb +24 -0
  519. data/lib/pinelabs/types/simple_amount.rb +11 -0
  520. data/lib/pinelabs/types/split_detail.rb +16 -0
  521. data/lib/pinelabs/types/split_detail_refund.rb +15 -0
  522. data/lib/pinelabs/types/split_detail_refund_amount.rb +10 -0
  523. data/lib/pinelabs/types/split_detail_refund_status.rb +12 -0
  524. data/lib/pinelabs/types/split_detail_status.rb +12 -0
  525. data/lib/pinelabs/types/split_info.rb +11 -0
  526. data/lib/pinelabs/types/split_payment_object.rb +20 -0
  527. data/lib/pinelabs/types/split_payment_object_acquirer_data.rb +12 -0
  528. data/lib/pinelabs/types/split_payment_object_additional_detail.rb +10 -0
  529. data/lib/pinelabs/types/split_payment_object_capture_data_item.rb +11 -0
  530. data/lib/pinelabs/types/split_payment_object_capture_data_item_capture_amount.rb +10 -0
  531. data/lib/pinelabs/types/split_payment_object_payment_amount.rb +10 -0
  532. data/lib/pinelabs/types/split_payment_object_payment_method.rb +15 -0
  533. data/lib/pinelabs/types/split_payment_object_payment_option.rb +9 -0
  534. data/lib/pinelabs/types/split_payment_object_payment_option_card_data.rb +18 -0
  535. data/lib/pinelabs/types/split_payment_object_payment_option_card_data_card_type.rb +12 -0
  536. data/lib/pinelabs/types/split_payment_object_payment_option_card_data_token_txn_type.rb +13 -0
  537. data/lib/pinelabs/types/split_payment_object_status.rb +15 -0
  538. data/lib/pinelabs/types/split_settlement_detail.rb +16 -0
  539. data/lib/pinelabs/types/split_settlement_detail_amount.rb +10 -0
  540. data/lib/pinelabs/types/split_settlement_detail_release_amount.rb +11 -0
  541. data/lib/pinelabs/types/split_settlement_detail_status.rb +12 -0
  542. data/lib/pinelabs/types/split_settlement_response.rb +10 -0
  543. data/lib/pinelabs/types/split_settlement_response_data.rb +23 -0
  544. data/lib/pinelabs/types/split_settlement_response_data_allowed_payment_methods_item.rb +15 -0
  545. data/lib/pinelabs/types/split_settlement_response_data_integration_mode.rb +12 -0
  546. data/lib/pinelabs/types/split_settlement_response_data_order_amount.rb +10 -0
  547. data/lib/pinelabs/types/split_settlement_response_data_purchase_details.rb +11 -0
  548. data/lib/pinelabs/types/split_settlement_response_data_purchase_details_customer.rb +17 -0
  549. data/lib/pinelabs/types/split_settlement_response_data_purchase_details_split_info.rb +10 -0
  550. data/lib/pinelabs/types/split_settlement_response_data_status.rb +19 -0
  551. data/lib/pinelabs/types/split_settlement_response_data_type.rb +12 -0
  552. data/lib/pinelabs/types/submit_otp_error_response.rb +13 -0
  553. data/lib/pinelabs/types/submit_otp_error_response_meta_data.rb +10 -0
  554. data/lib/pinelabs/types/subscription_amount.rb +11 -0
  555. data/lib/pinelabs/types/subscription_detail.rb +28 -0
  556. data/lib/pinelabs/types/subscription_detail_allowed_payment_methods_item.rb +15 -0
  557. data/lib/pinelabs/types/subscription_detail_integration_mode.rb +12 -0
  558. data/lib/pinelabs/types/subscription_detail_payment_mode.rb +12 -0
  559. data/lib/pinelabs/types/subscription_detail_status.rb +24 -0
  560. data/lib/pinelabs/types/subscription_notification_response.rb +16 -0
  561. data/lib/pinelabs/types/subscription_notification_response_pdn_status.rb +17 -0
  562. data/lib/pinelabs/types/subscription_notification_response_status.rb +18 -0
  563. data/lib/pinelabs/types/tenure.rb +36 -0
  564. data/lib/pinelabs/types/tenure_auth_amount.rb +10 -0
  565. data/lib/pinelabs/types/tenure_cart_coupon_discount_amount.rb +10 -0
  566. data/lib/pinelabs/types/tenure_convenience_fee_breakdown.rb +16 -0
  567. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_additional_fee_amount.rb +10 -0
  568. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_applicable_fee_amount.rb +10 -0
  569. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_fee_amount.rb +10 -0
  570. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_fee_calculated_on_amount.rb +10 -0
  571. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_maximum_fee_amount.rb +10 -0
  572. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_subvented_fee_amount.rb +10 -0
  573. data/lib/pinelabs/types/tenure_convenience_fee_breakdown_tax_amount.rb +10 -0
  574. data/lib/pinelabs/types/tenure_details_item.rb +23 -0
  575. data/lib/pinelabs/types/tenure_details_item_after_downpayment_reduced_product_amount.rb +10 -0
  576. data/lib/pinelabs/types/tenure_details_item_cart_coupon_discount_product_share.rb +10 -0
  577. data/lib/pinelabs/types/tenure_details_item_discount.rb +16 -0
  578. data/lib/pinelabs/types/tenure_details_item_discount_amount.rb +10 -0
  579. data/lib/pinelabs/types/tenure_details_item_discount_breakup.rb +10 -0
  580. data/lib/pinelabs/types/tenure_details_item_discount_breakup_brand.rb +9 -0
  581. data/lib/pinelabs/types/tenure_details_item_discount_breakup_brand_amount.rb +10 -0
  582. data/lib/pinelabs/types/tenure_details_item_discount_breakup_merchant.rb +9 -0
  583. data/lib/pinelabs/types/tenure_details_item_discount_breakup_merchant_amount.rb +10 -0
  584. data/lib/pinelabs/types/tenure_details_item_discount_discount_deferred_duration_type.rb +12 -0
  585. data/lib/pinelabs/types/tenure_details_item_discount_discount_type.rb +12 -0
  586. data/lib/pinelabs/types/tenure_details_item_discount_max_amount.rb +10 -0
  587. data/lib/pinelabs/types/tenure_details_item_downpayment_amount.rb +10 -0
  588. data/lib/pinelabs/types/tenure_details_item_interest_amount.rb +10 -0
  589. data/lib/pinelabs/types/tenure_details_item_product_amount.rb +10 -0
  590. data/lib/pinelabs/types/tenure_details_item_product_coupon_discount_amount.rb +10 -0
  591. data/lib/pinelabs/types/tenure_details_item_product_offer_parameters_item.rb +11 -0
  592. data/lib/pinelabs/types/tenure_details_item_subvention.rb +15 -0
  593. data/lib/pinelabs/types/tenure_details_item_subvention_amount.rb +10 -0
  594. data/lib/pinelabs/types/tenure_details_item_subvention_breakup.rb +9 -0
  595. data/lib/pinelabs/types/tenure_details_item_subvention_breakup_brand.rb +9 -0
  596. data/lib/pinelabs/types/tenure_details_item_subvention_breakup_brand_amount.rb +10 -0
  597. data/lib/pinelabs/types/tenure_details_item_subvention_max_amount.rb +10 -0
  598. data/lib/pinelabs/types/tenure_details_item_subvention_min_amount.rb +10 -0
  599. data/lib/pinelabs/types/tenure_details_item_subvention_offer_type.rb +13 -0
  600. data/lib/pinelabs/types/tenure_details_item_subvention_subvention_type.rb +12 -0
  601. data/lib/pinelabs/types/tenure_discount.rb +17 -0
  602. data/lib/pinelabs/types/tenure_discount_amount.rb +10 -0
  603. data/lib/pinelabs/types/tenure_discount_breakup.rb +12 -0
  604. data/lib/pinelabs/types/tenure_discount_breakup_brand.rb +9 -0
  605. data/lib/pinelabs/types/tenure_discount_breakup_brand_amount.rb +10 -0
  606. data/lib/pinelabs/types/tenure_discount_breakup_dealer.rb +9 -0
  607. data/lib/pinelabs/types/tenure_discount_breakup_dealer_amount.rb +10 -0
  608. data/lib/pinelabs/types/tenure_discount_breakup_issuer.rb +9 -0
  609. data/lib/pinelabs/types/tenure_discount_breakup_issuer_amount.rb +10 -0
  610. data/lib/pinelabs/types/tenure_discount_breakup_merchant.rb +9 -0
  611. data/lib/pinelabs/types/tenure_discount_breakup_merchant_amount.rb +10 -0
  612. data/lib/pinelabs/types/tenure_discount_discount_deferred_duration_type.rb +12 -0
  613. data/lib/pinelabs/types/tenure_discount_discount_type.rb +12 -0
  614. data/lib/pinelabs/types/tenure_discount_max_amount.rb +10 -0
  615. data/lib/pinelabs/types/tenure_downpayment_details.rb +10 -0
  616. data/lib/pinelabs/types/tenure_downpayment_details_downpayment_amount.rb +10 -0
  617. data/lib/pinelabs/types/tenure_emi_type.rb +13 -0
  618. data/lib/pinelabs/types/tenure_interest_amount.rb +10 -0
  619. data/lib/pinelabs/types/tenure_issuer_offer_parameters_item.rb +11 -0
  620. data/lib/pinelabs/types/tenure_loan_amount.rb +10 -0
  621. data/lib/pinelabs/types/tenure_monthly_emi_amount.rb +10 -0
  622. data/lib/pinelabs/types/tenure_net_payment_amount.rb +10 -0
  623. data/lib/pinelabs/types/tenure_processing_fee_amount.rb +10 -0
  624. data/lib/pinelabs/types/tenure_processing_fee_details.rb +11 -0
  625. data/lib/pinelabs/types/tenure_processing_fee_details_amount.rb +10 -0
  626. data/lib/pinelabs/types/tenure_split_emi_amount.rb +10 -0
  627. data/lib/pinelabs/types/tenure_tenure_type.rb +11 -0
  628. data/lib/pinelabs/types/tenure_total_coupon_discount.rb +10 -0
  629. data/lib/pinelabs/types/tenure_total_discount_amount.rb +10 -0
  630. data/lib/pinelabs/types/tenure_total_down_payment_amount.rb +10 -0
  631. data/lib/pinelabs/types/tenure_total_emi_amount.rb +10 -0
  632. data/lib/pinelabs/types/tenure_total_subvention_amount.rb +10 -0
  633. data/lib/pinelabs/types/token_card_data.rb +18 -0
  634. data/lib/pinelabs/types/token_card_data_card_type.rb +12 -0
  635. data/lib/pinelabs/types/token_payment.rb +10 -0
  636. data/lib/pinelabs/types/token_payment_acquirer_data.rb +13 -0
  637. data/lib/pinelabs/types/token_payment_option.rb +10 -0
  638. data/lib/pinelabs/types/token_status.rb +15 -0
  639. data/lib/pinelabs/types/token_transactional_data.rb +14 -0
  640. data/lib/pinelabs/types/upi_details_response.rb +11 -0
  641. data/lib/pinelabs/types/upi_details_response_payer.rb +9 -0
  642. data/lib/pinelabs/types/upi_details_response_txn_mode.rb +12 -0
  643. data/lib/pinelabs/version.rb +5 -0
  644. data/lib/pinelabs.rb +641 -0
  645. data/reference.md +6688 -0
  646. metadata +689 -0
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ class CreateChallanRequest < Internal::Types::Model
7
+ field :order_id, -> { String }, optional: false, nullable: false
8
+ field :convenience_fee_breakdown, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdown }, optional: true, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the convenience fee breakdown details.
7
+ class CreateChallanRequestConvenienceFeeBreakdown < Internal::Types::Model
8
+ field :fee_amount, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdownFeeAmount }, optional: true, nullable: false
9
+ field :tax_amount, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdownTaxAmount }, optional: true, nullable: false
10
+ field :additional_fee_amount, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdownAdditionalFeeAmount }, optional: true, nullable: false
11
+ field :maximum_fee_amount, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdownMaximumFeeAmount }, optional: true, nullable: false
12
+ field :applicable_fee_amount, -> { Pinelabs::EChallans::Types::CreateChallanRequestConvenienceFeeBreakdownApplicableFeeAmount }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the additional fee amount details.
7
+ class CreateChallanRequestConvenienceFeeBreakdownAdditionalFeeAmount < Internal::Types::Model
8
+ field :value, -> { Integer }, optional: true, nullable: false
9
+ field :currency, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the applicable fee amount details.
7
+ class CreateChallanRequestConvenienceFeeBreakdownApplicableFeeAmount < Internal::Types::Model
8
+ field :value, -> { Integer }, optional: true, nullable: false
9
+ field :currency, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the fee amount details.
7
+ class CreateChallanRequestConvenienceFeeBreakdownFeeAmount < Internal::Types::Model
8
+ field :value, -> { Integer }, optional: true, nullable: false
9
+ field :currency, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the maximum fee amount details.
7
+ class CreateChallanRequestConvenienceFeeBreakdownMaximumFeeAmount < Internal::Types::Model
8
+ field :value, -> { Integer }, optional: true, nullable: false
9
+ field :currency, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ # An object that contains the tax amount details.
7
+ class CreateChallanRequestConvenienceFeeBreakdownTaxAmount < Internal::Types::Model
8
+ field :value, -> { Integer }, optional: true, nullable: false
9
+ field :currency, -> { String }, optional: true, nullable: false
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ class GetChallanPdfRequest < Internal::Types::Model
7
+ field :order_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module EChallans
5
+ module Types
6
+ class GetChallanRequest < Internal::Types::Model
7
+ field :order_id, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ class Environment
5
+ PRODUCTION = "https://api.pluralpay.in"
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class ApiError < StandardError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class ClientError < ResponseError
6
+ end
7
+
8
+ class UnauthorizedError < ClientError
9
+ end
10
+
11
+ class ForbiddenError < ClientError
12
+ end
13
+
14
+ class NotFoundError < ClientError
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class RedirectError < ResponseError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class ResponseError < ApiError
6
+ attr_reader :code
7
+
8
+ def initialize(msg, code:)
9
+ @code = code
10
+ super(msg)
11
+ end
12
+
13
+ def inspect
14
+ "#<#{self.class.name} @code=#{code} @body=#{message}>"
15
+ end
16
+
17
+ # Returns the most appropriate error class for the given code.
18
+ #
19
+ # @return [Class]
20
+ def self.subclass_for_code(code)
21
+ case code
22
+ when 300..399
23
+ RedirectError
24
+ when 401
25
+ UnauthorizedError
26
+ when 403
27
+ ForbiddenError
28
+ when 404
29
+ NotFoundError
30
+ when 400..499
31
+ ClientError
32
+ when 503
33
+ ServiceUnavailableError
34
+ when 500..599
35
+ ServerError
36
+ else
37
+ ResponseError
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class ServerError < ResponseError
6
+ end
7
+
8
+ class ServiceUnavailableError < ApiError
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Errors
5
+ class TimeoutError < ApiError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ module Errors
6
+ class ConstraintError < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ module Errors
6
+ class TypeError < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ module Http
6
+ # @api private
7
+ class BaseRequest
8
+ attr_reader :base_url, :path, :method, :headers, :query, :request_options
9
+
10
+ # @param base_url [String] The base URL for the request
11
+ # @param path [String] The path for the request
12
+ # @param method [String] The HTTP method for the request (:get, :post, etc.)
13
+ # @param headers [Hash] Additional headers for the request (optional)
14
+ # @param query [Hash] Query parameters for the request (optional)
15
+ # @param request_options [Pinelabs::RequestOptions, Hash{Symbol=>Object}, nil]
16
+ def initialize(base_url:, path:, method:, headers: {}, query: {}, request_options: {})
17
+ @base_url = base_url
18
+ @path = path
19
+ @method = method
20
+ @headers = headers
21
+ @query = query
22
+ @request_options = request_options
23
+ end
24
+
25
+ # @return [Hash] The query parameters merged with additional query parameters from request options.
26
+ def encode_query
27
+ additional_query = @request_options&.dig(:additional_query_parameters) || @request_options&.dig("additional_query_parameters") || {}
28
+ @query.merge(additional_query)
29
+ end
30
+
31
+ # Child classes should implement:
32
+ # - encode_headers: Returns the encoded HTTP request headers.
33
+ # - encode_body: Returns the encoded HTTP request body.
34
+
35
+ private
36
+
37
+ # Merges additional_headers from request_options into sdk_headers, filtering out
38
+ # any keys that collide with SDK-set or client-protected headers (case-insensitive).
39
+ # @param sdk_headers [Hash] Headers set by the SDK for this request type.
40
+ # @param protected_keys [Array<String>] Additional header keys that must not be overridden.
41
+ # @return [Hash] The merged headers.
42
+ def merge_additional_headers(sdk_headers, protected_keys: [])
43
+ additional_headers = @request_options&.dig(:additional_headers) || @request_options&.dig("additional_headers") || {}
44
+ all_protected = (sdk_headers.keys + protected_keys).to_set { |k| k.to_s.downcase }
45
+ filtered = additional_headers.reject { |key, _| all_protected.include?(key.to_s.downcase) }
46
+ sdk_headers.merge(filtered)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,214 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ module Http
6
+ # @api private
7
+ class RawClient
8
+ # Default HTTP status codes that trigger a retry
9
+ RETRYABLE_STATUSES = [408, 429, 500, 502, 503, 504, 521, 522, 524].freeze
10
+ # Initial delay between retries in seconds
11
+ INITIAL_RETRY_DELAY = 0.5
12
+ # Maximum delay between retries in seconds
13
+ MAX_RETRY_DELAY = 60.0
14
+ # Jitter factor for randomizing retry delays (20%)
15
+ JITTER_FACTOR = 0.2
16
+
17
+ # @return [String] The base URL for requests
18
+ attr_reader :base_url
19
+
20
+ # @param base_url [String] The base url for the request.
21
+ # @param max_retries [Integer] The number of times to retry a failed request, defaults to 2.
22
+ # @param timeout [Float] The timeout for the request, defaults to 60.0 seconds.
23
+ # @param headers [Hash] The headers for the request.
24
+ def initialize(base_url:, max_retries: 2, timeout: 60.0, headers: {})
25
+ @base_url = base_url
26
+ @max_retries = max_retries
27
+ @timeout = timeout
28
+ @default_headers = {
29
+ "X-Fern-Language": "Ruby",
30
+ "X-Fern-SDK-Name": "pinelabs",
31
+ "X-Fern-SDK-Version": "0.0.1"
32
+ }.merge(headers)
33
+ end
34
+
35
+ # @param request [Pinelabs::Internal::Http::BaseRequest] The HTTP request.
36
+ # @return [HTTP::Response] The HTTP response.
37
+ def send(request)
38
+ url = build_url(request)
39
+ attempt = 0
40
+ response = nil
41
+
42
+ loop do
43
+ http_request = build_http_request(
44
+ url:,
45
+ method: request.method,
46
+ headers: request.encode_headers(protected_keys: @default_headers.keys),
47
+ body: request.encode_body
48
+ )
49
+
50
+ conn = connect(url)
51
+ conn.open_timeout = @timeout
52
+ conn.read_timeout = @timeout
53
+ conn.write_timeout = @timeout
54
+ conn.continue_timeout = @timeout
55
+
56
+ response = conn.request(http_request)
57
+
58
+ break unless should_retry?(response, attempt)
59
+
60
+ delay = retry_delay(response, attempt)
61
+ sleep(delay)
62
+ attempt += 1
63
+ end
64
+
65
+ response
66
+ end
67
+
68
+ # Determines if a request should be retried based on the response status code.
69
+ # @param response [Net::HTTPResponse] The HTTP response.
70
+ # @param attempt [Integer] The current retry attempt (0-indexed).
71
+ # @return [Boolean] Whether the request should be retried.
72
+ def should_retry?(response, attempt)
73
+ return false if attempt >= @max_retries
74
+
75
+ status = response.code.to_i
76
+ RETRYABLE_STATUSES.include?(status)
77
+ end
78
+
79
+ # Calculates the delay before the next retry attempt using exponential backoff with jitter.
80
+ # Respects Retry-After header if present.
81
+ # @param response [Net::HTTPResponse] The HTTP response.
82
+ # @param attempt [Integer] The current retry attempt (0-indexed).
83
+ # @return [Float] The delay in seconds before the next retry.
84
+ def retry_delay(response, attempt)
85
+ # Check for Retry-After header (can be seconds or HTTP date)
86
+ retry_after = response["Retry-After"]
87
+ if retry_after
88
+ delay = parse_retry_after(retry_after)
89
+ return [delay, MAX_RETRY_DELAY].min if delay&.positive?
90
+ end
91
+
92
+ # Exponential backoff with jitter: base_delay * 2^attempt
93
+ base_delay = INITIAL_RETRY_DELAY * (2**attempt)
94
+ add_jitter([base_delay, MAX_RETRY_DELAY].min)
95
+ end
96
+
97
+ # Parses the Retry-After header value.
98
+ # @param value [String] The Retry-After header value (seconds or HTTP date).
99
+ # @return [Float, nil] The delay in seconds, or nil if parsing fails.
100
+ def parse_retry_after(value)
101
+ # Try parsing as integer (seconds)
102
+ seconds = Integer(value, exception: false)
103
+ return seconds.to_f if seconds
104
+
105
+ # Try parsing as HTTP date
106
+ begin
107
+ retry_time = Time.httpdate(value)
108
+ delay = retry_time - Time.now
109
+ delay.positive? ? delay : nil
110
+ rescue ArgumentError
111
+ nil
112
+ end
113
+ end
114
+
115
+ # Adds random jitter to a delay value.
116
+ # @param delay [Float] The base delay in seconds.
117
+ # @return [Float] The delay with jitter applied.
118
+ def add_jitter(delay)
119
+ jitter = delay * JITTER_FACTOR * (rand - 0.5) * 2
120
+ [delay + jitter, 0].max
121
+ end
122
+
123
+ LOCALHOST_HOSTS = %w[localhost 127.0.0.1 [::1]].freeze
124
+
125
+ # @param request [Pinelabs::Internal::Http::BaseRequest] The HTTP request.
126
+ # @return [URI::Generic] The URL.
127
+ def build_url(request)
128
+ encoded_query = request.encode_query
129
+
130
+ # If the path is already an absolute URL, use it directly
131
+ if request.path.start_with?("http://", "https://")
132
+ url = request.path
133
+ url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
134
+ parsed = URI.parse(url)
135
+ validate_https!(parsed)
136
+ return parsed
137
+ end
138
+
139
+ path = request.path.start_with?("/") ? request.path[1..] : request.path
140
+ base = request.base_url || @base_url
141
+ url = "#{base.chomp("/")}/#{path}"
142
+ url = "#{url}?#{encode_query(encoded_query)}" if encoded_query&.any?
143
+ parsed = URI.parse(url)
144
+ validate_https!(parsed)
145
+ parsed
146
+ end
147
+
148
+ # Raises if the URL uses http:// for a non-localhost host, which would
149
+ # send authentication credentials in plaintext.
150
+ # @param url [URI::Generic] The parsed URL.
151
+ def validate_https!(url)
152
+ return if url.scheme != "http"
153
+ return if LOCALHOST_HOSTS.include?(url.host)
154
+
155
+ raise ArgumentError, "Refusing to send request to non-HTTPS URL: #{url}. " \
156
+ "HTTP is only allowed for localhost. Use HTTPS or pass a localhost URL."
157
+ end
158
+
159
+ # @param url [URI::Generic] The url to the resource.
160
+ # @param method [String] The HTTP method to use.
161
+ # @param headers [Hash] The headers for the request.
162
+ # @param body [String, nil] The body for the request.
163
+ # @return [HTTP::Request] The HTTP request.
164
+ def build_http_request(url:, method:, headers: {}, body: nil)
165
+ request = Net::HTTPGenericRequest.new(
166
+ method,
167
+ !body.nil?,
168
+ method != "HEAD",
169
+ url
170
+ )
171
+
172
+ request_headers = @default_headers.merge(headers)
173
+ request_headers.each { |name, value| request[name] = value }
174
+ request.body = body if body
175
+
176
+ request
177
+ end
178
+
179
+ # @param query [Hash] The query for the request.
180
+ # @return [String, nil] The encoded query.
181
+ def encode_query(query)
182
+ query.to_h.empty? ? nil : URI.encode_www_form(query)
183
+ end
184
+
185
+ # @param url [URI::Generic] The url to connect to.
186
+ # @return [Net::HTTP] The HTTP connection.
187
+ def connect(url)
188
+ is_https = (url.scheme == "https")
189
+
190
+ port = if url.port
191
+ url.port
192
+ elsif is_https
193
+ Net::HTTP.https_default_port
194
+ else
195
+ Net::HTTP.http_default_port
196
+ end
197
+
198
+ http = Net::HTTP.new(url.host, port)
199
+ http.use_ssl = is_https
200
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER if is_https
201
+ # NOTE: We handle retries at the application level with HTTP status code awareness,
202
+ # so we set max_retries to 0 to disable Net::HTTP's built-in network-level retries.
203
+ http.max_retries = 0
204
+ http
205
+ end
206
+
207
+ # @return [String]
208
+ def inspect
209
+ "#<#{self.class.name}:0x#{object_id.to_s(16)} @base_url=#{@base_url.inspect}>"
210
+ end
211
+ end
212
+ end
213
+ end
214
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ class CursorItemIterator < ItemIterator
6
+ # Instantiates a CursorItemIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields individual items from it.
7
+ #
8
+ # @param initial_cursor [String] The initial cursor to use when iterating, if any.
9
+ # @param cursor_field [Symbol] The field in API responses to extract the next cursor from.
10
+ # @param item_field [Symbol] The field in API responses to extract the items to iterate over.
11
+ # @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
12
+ # @return [Pinelabs::Internal::CursorItemIterator]
13
+ def initialize(initial_cursor:, cursor_field:, item_field:, &)
14
+ super()
15
+ @item_field = item_field
16
+ @page_iterator = CursorPageIterator.new(initial_cursor:, cursor_field:, &)
17
+ @page = nil
18
+ end
19
+
20
+ # Returns the CursorPageIterator mediating access to the underlying API.
21
+ #
22
+ # @return [Pinelabs::Internal::CursorPageIterator]
23
+ def pages
24
+ @page_iterator
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinelabs
4
+ module Internal
5
+ class CursorPageIterator
6
+ include Enumerable
7
+
8
+ # The raw HTTP response from the most recent page response.
9
+ # @return [Net::HTTPResponse, nil]
10
+ attr_reader :http_response
11
+
12
+ # Instantiates a CursorPageIterator, an Enumerable class which wraps calls to a cursor-based paginated API and yields pages of items.
13
+ #
14
+ # @param initial_cursor [String] The initial cursor to use when iterating, if any.
15
+ # @param cursor_field [Symbol] The name of the field in API responses to extract the next cursor from.
16
+ # @param block [Proc] A block which is responsible for receiving a cursor to use and returning the given page from the API.
17
+ # The block should return a two-element array: [parsed_page, raw_http_response].
18
+ # @return [Pinelabs::Internal::CursorPageIterator]
19
+ def initialize(initial_cursor:, cursor_field:, &block)
20
+ @need_initial_load = initial_cursor.nil?
21
+ @cursor = initial_cursor
22
+ @cursor_field = cursor_field
23
+ @get_next_page = block
24
+ @http_response = nil
25
+ end
26
+
27
+ # Iterates over each page returned by the API.
28
+ #
29
+ # @param block [Proc] The block which each retrieved page is yielded to.
30
+ # @return [NilClass]
31
+ def each(&block)
32
+ while (page = next_page)
33
+ block.call(page)
34
+ end
35
+ end
36
+
37
+ # Whether another page will be available from the API.
38
+ #
39
+ # @return [Boolean]
40
+ def next?
41
+ @need_initial_load || !@cursor.nil?
42
+ end
43
+
44
+ # Retrieves the next page from the API.
45
+ #
46
+ # @return [Object, nil]
47
+ def next_page
48
+ return if !@need_initial_load && @cursor.nil?
49
+
50
+ @need_initial_load = false
51
+ result = @get_next_page.call(@cursor)
52
+ if result.is_a?(Array)
53
+ fetched_page, raw_response = result
54
+ @http_response = raw_response
55
+ else
56
+ fetched_page = result
57
+ end
58
+ @cursor = fetched_page.send(@cursor_field)
59
+ fetched_page
60
+ end
61
+ end
62
+ end
63
+ end