pinelabs-python 0.1.0__py3-none-any.whl

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 (626) hide show
  1. pinelabs/__init__.py +1679 -0
  2. pinelabs/_default_clients.py +30 -0
  3. pinelabs/affordability_suite/__init__.py +325 -0
  4. pinelabs/affordability_suite/client.py +1007 -0
  5. pinelabs/affordability_suite/raw_client.py +1095 -0
  6. pinelabs/affordability_suite/types/__init__.py +477 -0
  7. pinelabs/affordability_suite/types/downpayment_details_request_issuer.py +26 -0
  8. pinelabs/affordability_suite/types/imei_validation_request_request_type.py +5 -0
  9. pinelabs/affordability_suite/types/offer_discovery_cardless_request_payment_option.py +29 -0
  10. pinelabs/affordability_suite/types/offer_discovery_cardless_request_payment_option_cardless_details.py +31 -0
  11. pinelabs/affordability_suite/types/offer_discovery_request_cart_coupon_discount_amount.py +31 -0
  12. pinelabs/affordability_suite/types/offer_discovery_request_customer_details.py +26 -0
  13. pinelabs/affordability_suite/types/offer_discovery_request_downpayment_details.py +31 -0
  14. pinelabs/affordability_suite/types/offer_discovery_request_downpayment_details_downpayment_amount.py +31 -0
  15. pinelabs/affordability_suite/types/offer_discovery_request_issuer.py +42 -0
  16. pinelabs/affordability_suite/types/offer_discovery_request_issuer_issuer_type.py +10 -0
  17. pinelabs/affordability_suite/types/offer_discovery_request_order_amount.py +31 -0
  18. pinelabs/affordability_suite/types/offer_discovery_request_payment_options.py +37 -0
  19. pinelabs/affordability_suite/types/offer_discovery_request_payment_options_card_details.py +26 -0
  20. pinelabs/affordability_suite/types/offer_discovery_request_payment_options_card_token_details.py +31 -0
  21. pinelabs/affordability_suite/types/offer_discovery_request_product_details_item.py +40 -0
  22. pinelabs/affordability_suite/types/offer_discovery_request_product_details_item_product_amount.py +31 -0
  23. pinelabs/affordability_suite/types/offer_discovery_request_product_details_item_product_coupon_discount_amount.py +31 -0
  24. pinelabs/affordability_suite/types/offer_validation_request_customer_details.py +26 -0
  25. pinelabs/affordability_suite/types/offer_validation_request_offer_data.py +27 -0
  26. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details.py +52 -0
  27. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure.py +146 -0
  28. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_auth_amount.py +20 -0
  29. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_cart_coupon_discount_amount.py +20 -0
  30. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown.py +60 -0
  31. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_additional_fee_amount.py +20 -0
  32. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_applicable_fee_amount.py +20 -0
  33. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_amount.py +20 -0
  34. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_calculated_on_amount.py +20 -0
  35. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_maximum_fee_amount.py +20 -0
  36. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_subvented_fee_amount.py +20 -0
  37. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_convenience_fee_breakdown_tax_amount.py +20 -0
  38. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item.py +119 -0
  39. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_after_downpayment_reduced_product_amount.py +22 -0
  40. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_cart_coupon_discount_product_share.py +20 -0
  41. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount.py +48 -0
  42. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup.py +36 -0
  43. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_brand.py +24 -0
  44. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_brand_amount.py +20 -0
  45. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_dealer.py +24 -0
  46. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_dealer_amount.py +20 -0
  47. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_issuer.py +24 -0
  48. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_issuer_amount.py +20 -0
  49. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_merchant.py +24 -0
  50. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_breakup_merchant_amount.py +20 -0
  51. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_max_amount.py +20 -0
  52. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_discount_min_amount.py +20 -0
  53. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_downpayment_amount.py +20 -0
  54. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_interest_amount.py +20 -0
  55. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_amount.py +31 -0
  56. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_coupon_discount_amount.py +24 -0
  57. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_product_offer_parameters_item.py +32 -0
  58. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention.py +40 -0
  59. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_amount.py +20 -0
  60. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup.py +36 -0
  61. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_brand.py +24 -0
  62. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_brand_amount.py +20 -0
  63. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer.py +24 -0
  64. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer_amount.py +20 -0
  65. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer.py +24 -0
  66. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer_amount.py +20 -0
  67. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant.py +24 -0
  68. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant_amount.py +20 -0
  69. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_max_amount.py +20 -0
  70. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_details_item_subvention_min_amount.py +20 -0
  71. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount.py +40 -0
  72. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup.py +34 -0
  73. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_brand.py +22 -0
  74. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_brand_amount.py +20 -0
  75. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_dealer.py +22 -0
  76. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_dealer_amount.py +20 -0
  77. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_issuer.py +22 -0
  78. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_issuer_amount.py +20 -0
  79. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_merchant.py +22 -0
  80. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_breakup_merchant_amount.py +20 -0
  81. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_max_amount.py +20 -0
  82. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_discount_min_amount.py +20 -0
  83. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_downpayment_details.py +28 -0
  84. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_downpayment_details_downpayment_amount.py +20 -0
  85. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_interest_amount.py +20 -0
  86. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_loan_amount.py +20 -0
  87. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_monthly_emi_amount.py +20 -0
  88. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_net_payment_amount.py +20 -0
  89. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_amount.py +20 -0
  90. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_details.py +22 -0
  91. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_processing_fee_details_amount.py +20 -0
  92. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_split_emi_amount.py +20 -0
  93. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_coupon_discount.py +20 -0
  94. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_discount_amount.py +20 -0
  95. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_emi_amount.py +20 -0
  96. pinelabs/affordability_suite/types/offer_validation_request_offer_data_offer_details_tenure_total_subvention_amount.py +20 -0
  97. pinelabs/affordability_suite/types/offer_validation_request_order_amount.py +31 -0
  98. pinelabs/affordability_suite/types/offer_validation_request_payment_amount.py +31 -0
  99. pinelabs/affordability_suite/types/offer_validation_request_payment_option.py +43 -0
  100. pinelabs/affordability_suite/types/offer_validation_request_payment_option_card_details.py +31 -0
  101. pinelabs/affordability_suite/types/offer_validation_request_payment_option_card_token_details.py +46 -0
  102. pinelabs/affordability_suite/types/offer_validation_request_payment_option_cardless_details.py +31 -0
  103. pinelabs/apple_pay/__init__.py +49 -0
  104. pinelabs/apple_pay/client.py +190 -0
  105. pinelabs/apple_pay/raw_client.py +283 -0
  106. pinelabs/apple_pay/types/__init__.py +53 -0
  107. pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details.py +62 -0
  108. pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data.py +37 -0
  109. pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data_card_type.py +7 -0
  110. pinelabs/apple_pay/types/authorize_payment_request_decrypted_card_details_card_meta_data_network_name.py +7 -0
  111. pinelabs/authentication/__init__.py +4 -0
  112. pinelabs/authentication/client.py +155 -0
  113. pinelabs/authentication/raw_client.py +226 -0
  114. pinelabs/bnpl/__init__.py +46 -0
  115. pinelabs/bnpl/client.py +200 -0
  116. pinelabs/bnpl/raw_client.py +273 -0
  117. pinelabs/bnpl/types/__init__.py +46 -0
  118. pinelabs/bnpl/types/bnpl_check_eligibility_request_device_info.py +56 -0
  119. pinelabs/bnpl/types/bnpl_check_eligibility_request_device_info_operating_system.py +7 -0
  120. pinelabs/bnpl/types/bnpl_check_eligibility_request_pay_code.py +5 -0
  121. pinelabs/card_payments/__init__.py +4 -0
  122. pinelabs/card_payments/client.py +547 -0
  123. pinelabs/card_payments/raw_client.py +1085 -0
  124. pinelabs/checkout/__init__.py +37 -0
  125. pinelabs/checkout/client.py +225 -0
  126. pinelabs/checkout/raw_client.py +318 -0
  127. pinelabs/checkout/types/__init__.py +40 -0
  128. pinelabs/checkout/types/generate_checkout_link_request_allowed_payment_methods_item.py +7 -0
  129. pinelabs/checkout/types/generate_checkout_link_request_integration_mode.py +5 -0
  130. pinelabs/client.py +612 -0
  131. pinelabs/convenience_fee/__init__.py +4 -0
  132. pinelabs/convenience_fee/client.py +156 -0
  133. pinelabs/convenience_fee/raw_client.py +247 -0
  134. pinelabs/core/__init__.py +127 -0
  135. pinelabs/core/api_error.py +23 -0
  136. pinelabs/core/client_wrapper.py +132 -0
  137. pinelabs/core/datetime_utils.py +70 -0
  138. pinelabs/core/file.py +67 -0
  139. pinelabs/core/force_multipart.py +18 -0
  140. pinelabs/core/http_client.py +840 -0
  141. pinelabs/core/http_response.py +59 -0
  142. pinelabs/core/http_sse/__init__.py +42 -0
  143. pinelabs/core/http_sse/_api.py +112 -0
  144. pinelabs/core/http_sse/_decoders.py +61 -0
  145. pinelabs/core/http_sse/_exceptions.py +7 -0
  146. pinelabs/core/http_sse/_models.py +17 -0
  147. pinelabs/core/jsonable_encoder.py +120 -0
  148. pinelabs/core/logging.py +107 -0
  149. pinelabs/core/parse_error.py +36 -0
  150. pinelabs/core/pydantic_utilities.py +634 -0
  151. pinelabs/core/query_encoder.py +58 -0
  152. pinelabs/core/remove_none_from_dict.py +11 -0
  153. pinelabs/core/request_options.py +35 -0
  154. pinelabs/core/serialization.py +276 -0
  155. pinelabs/customers/__init__.py +34 -0
  156. pinelabs/customers/client.py +590 -0
  157. pinelabs/customers/raw_client.py +1061 -0
  158. pinelabs/customers/types/__init__.py +34 -0
  159. pinelabs/customers/types/update_customer_request_status.py +5 -0
  160. pinelabs/e_challans/__init__.py +55 -0
  161. pinelabs/e_challans/client.py +323 -0
  162. pinelabs/e_challans/raw_client.py +386 -0
  163. pinelabs/e_challans/types/__init__.py +63 -0
  164. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown.py +67 -0
  165. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_additional_fee_amount.py +32 -0
  166. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_applicable_fee_amount.py +32 -0
  167. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_fee_amount.py +32 -0
  168. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_maximum_fee_amount.py +32 -0
  169. pinelabs/e_challans/types/create_challan_request_convenience_fee_breakdown_tax_amount.py +32 -0
  170. pinelabs/environment.py +7 -0
  171. pinelabs/errors/__init__.py +62 -0
  172. pinelabs/errors/bad_request_error.py +10 -0
  173. pinelabs/errors/conflict_error.py +11 -0
  174. pinelabs/errors/forbidden_error.py +11 -0
  175. pinelabs/errors/internal_server_error.py +11 -0
  176. pinelabs/errors/method_not_allowed_error.py +11 -0
  177. pinelabs/errors/not_found_error.py +11 -0
  178. pinelabs/errors/service_unavailable_error.py +11 -0
  179. pinelabs/errors/unauthorized_error.py +11 -0
  180. pinelabs/errors/unprocessable_entity_error.py +10 -0
  181. pinelabs/international_payments/__init__.py +4 -0
  182. pinelabs/international_payments/client.py +187 -0
  183. pinelabs/international_payments/raw_client.py +201 -0
  184. pinelabs/orders/__init__.py +37 -0
  185. pinelabs/orders/client.py +613 -0
  186. pinelabs/orders/raw_client.py +1132 -0
  187. pinelabs/orders/types/__init__.py +38 -0
  188. pinelabs/orders/types/create_order_request_allowed_payment_methods_item.py +8 -0
  189. pinelabs/orders/types/create_order_request_purchase_details.py +28 -0
  190. pinelabs/pay_by_points/__init__.py +49 -0
  191. pinelabs/pay_by_points/client.py +177 -0
  192. pinelabs/pay_by_points/raw_client.py +246 -0
  193. pinelabs/pay_by_points/types/__init__.py +49 -0
  194. pinelabs/pay_by_points/types/check_point_balance_request_order_details.py +27 -0
  195. pinelabs/pay_by_points/types/check_point_balance_request_order_details_order_amount.py +31 -0
  196. pinelabs/pay_by_points/types/check_point_balance_request_payment_option.py +26 -0
  197. pinelabs/pay_by_points/types/check_point_balance_request_payment_option_points_card_details.py +32 -0
  198. pinelabs/payment_links/__init__.py +34 -0
  199. pinelabs/payment_links/client.py +642 -0
  200. pinelabs/payment_links/raw_client.py +797 -0
  201. pinelabs/payment_links/types/__init__.py +38 -0
  202. pinelabs/payment_links/types/create_payment_link_request_allowed_payment_methods_item.py +7 -0
  203. pinelabs/payouts/__init__.py +38 -0
  204. pinelabs/payouts/client.py +810 -0
  205. pinelabs/payouts/raw_client.py +1427 -0
  206. pinelabs/payouts/types/__init__.py +40 -0
  207. pinelabs/payouts/types/create_payout_request_mode.py +5 -0
  208. pinelabs/payouts/types/list_payouts_request_mode.py +5 -0
  209. pinelabs/payouts/types/list_payouts_request_status.py +7 -0
  210. pinelabs/refunds/__init__.py +52 -0
  211. pinelabs/refunds/client.py +211 -0
  212. pinelabs/refunds/raw_client.py +324 -0
  213. pinelabs/refunds/types/__init__.py +52 -0
  214. pinelabs/refunds/types/create_refund_request_order_amount.py +31 -0
  215. pinelabs/refunds/types/create_refund_request_products_item.py +27 -0
  216. pinelabs/refunds/types/create_refund_request_split_info.py +29 -0
  217. pinelabs/refunds/types/create_refund_request_split_info_split_details_item.py +32 -0
  218. pinelabs/refunds/types/create_refund_request_split_info_split_details_item_amount.py +20 -0
  219. pinelabs/settlements/__init__.py +4 -0
  220. pinelabs/settlements/client.py +283 -0
  221. pinelabs/settlements/raw_client.py +421 -0
  222. pinelabs/split_settlements/__init__.py +34 -0
  223. pinelabs/split_settlements/client.py +254 -0
  224. pinelabs/split_settlements/raw_client.py +414 -0
  225. pinelabs/split_settlements/types/__init__.py +36 -0
  226. pinelabs/split_settlements/types/release_settlement_request_release_amount.py +31 -0
  227. pinelabs/subscriptions_plans/__init__.py +37 -0
  228. pinelabs/subscriptions_plans/client.py +872 -0
  229. pinelabs/subscriptions_plans/raw_client.py +1111 -0
  230. pinelabs/subscriptions_plans/types/__init__.py +38 -0
  231. pinelabs/subscriptions_plans/types/create_plan_request_frequency.py +10 -0
  232. pinelabs/subscriptions_plans/types/list_plans_request_amount_range.py +5 -0
  233. pinelabs/subscriptions_presentations/__init__.py +4 -0
  234. pinelabs/subscriptions_presentations/client.py +886 -0
  235. pinelabs/subscriptions_presentations/raw_client.py +1168 -0
  236. pinelabs/subscriptions_subscriptions/__init__.py +46 -0
  237. pinelabs/subscriptions_subscriptions/client.py +1014 -0
  238. pinelabs/subscriptions_subscriptions/raw_client.py +1281 -0
  239. pinelabs/subscriptions_subscriptions/types/__init__.py +46 -0
  240. pinelabs/subscriptions_subscriptions/types/create_subscription_request_allowed_payment_methods_item.py +7 -0
  241. pinelabs/subscriptions_subscriptions/types/create_subscription_request_integration_mode.py +5 -0
  242. pinelabs/subscriptions_subscriptions/types/list_subscriptions_request_amount_range.py +5 -0
  243. pinelabs/tokenization/__init__.py +37 -0
  244. pinelabs/tokenization/client.py +809 -0
  245. pinelabs/tokenization/raw_client.py +1643 -0
  246. pinelabs/tokenization/types/__init__.py +38 -0
  247. pinelabs/tokenization/types/generate_card_token_request_payment_method.py +5 -0
  248. pinelabs/tokenization/types/get_service_provider_token_response.py +8 -0
  249. pinelabs/types/__init__.py +1320 -0
  250. pinelabs/types/acquirer_data.py +41 -0
  251. pinelabs/types/address.py +72 -0
  252. pinelabs/types/address_address_category.py +5 -0
  253. pinelabs/types/amount.py +31 -0
  254. pinelabs/types/authorize_payment_response.py +24 -0
  255. pinelabs/types/authorize_payment_response_data.py +45 -0
  256. pinelabs/types/authorize_payment_response_data_integration_mode.py +5 -0
  257. pinelabs/types/authorize_payment_response_data_order_amount.py +20 -0
  258. pinelabs/types/authorize_payment_response_data_payments_item.py +41 -0
  259. pinelabs/types/authorize_payment_response_data_payments_item_acquirer_data.py +23 -0
  260. pinelabs/types/authorize_payment_response_data_payments_item_payment_amount.py +20 -0
  261. pinelabs/types/authorize_payment_response_data_payments_item_payment_method.py +7 -0
  262. pinelabs/types/authorize_payment_response_data_payments_item_payment_option.py +22 -0
  263. pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data.py +25 -0
  264. pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data.py +38 -0
  265. pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data_card_type.py +7 -0
  266. pinelabs/types/authorize_payment_response_data_payments_item_payment_option_wallet_data_wallet_card_data_token_txn_type.py +7 -0
  267. pinelabs/types/authorize_payment_response_data_payments_item_status.py +7 -0
  268. pinelabs/types/authorize_payment_response_data_purchase_details.py +24 -0
  269. pinelabs/types/authorize_payment_response_data_purchase_details_customer.py +27 -0
  270. pinelabs/types/authorize_payment_response_data_status.py +18 -0
  271. pinelabs/types/authorize_payment_response_data_type.py +5 -0
  272. pinelabs/types/bank_account.py +36 -0
  273. pinelabs/types/bnpl_check_eligibility_response.py +32 -0
  274. pinelabs/types/bnpl_check_eligibility_response_metadata.py +36 -0
  275. pinelabs/types/bnpl_check_eligibility_response_metadata_installments_item.py +33 -0
  276. pinelabs/types/bnpl_resend_otp_response.py +37 -0
  277. pinelabs/types/bnpl_resend_otp_response_meta_data.py +26 -0
  278. pinelabs/types/bnpl_submit_otp_response.py +26 -0
  279. pinelabs/types/calculate_convenience_fee_response.py +27 -0
  280. pinelabs/types/calculate_convenience_fee_response_data_item.py +50 -0
  281. pinelabs/types/calculate_convenience_fee_response_data_item_convenience_fee_breakdown.py +28 -0
  282. pinelabs/types/calculate_convenience_fee_response_data_item_payment_method_metadata.py +31 -0
  283. pinelabs/types/capture_data_item.py +34 -0
  284. pinelabs/types/card_data.py +76 -0
  285. pinelabs/types/card_data_card_category.py +22 -0
  286. pinelabs/types/card_data_card_type.py +21 -0
  287. pinelabs/types/card_data_token_txn_type.py +5 -0
  288. pinelabs/types/card_detail_lookup_item.py +35 -0
  289. pinelabs/types/card_detail_lookup_item_payment_reference_type.py +7 -0
  290. pinelabs/types/card_payment_detail_item.py +66 -0
  291. pinelabs/types/card_token_response.py +49 -0
  292. pinelabs/types/cart_details.py +27 -0
  293. pinelabs/types/cart_item.py +66 -0
  294. pinelabs/types/challan_response.py +77 -0
  295. pinelabs/types/check_point_balance_response.py +43 -0
  296. pinelabs/types/check_point_balance_response_balance.py +28 -0
  297. pinelabs/types/check_point_balance_response_redeemable_amount.py +28 -0
  298. pinelabs/types/checkout_customer.py +55 -0
  299. pinelabs/types/checkout_product.py +29 -0
  300. pinelabs/types/checkout_purchase_details.py +29 -0
  301. pinelabs/types/create_bulk_payout_response.py +48 -0
  302. pinelabs/types/create_bulk_payout_response_status.py +7 -0
  303. pinelabs/types/create_debit_response.py +56 -0
  304. pinelabs/types/create_debit_response_status.py +7 -0
  305. pinelabs/types/create_payout_response.py +100 -0
  306. pinelabs/types/create_payout_response_mode.py +5 -0
  307. pinelabs/types/create_payout_response_status.py +7 -0
  308. pinelabs/types/create_presentation_response.py +58 -0
  309. pinelabs/types/create_presentation_response_status.py +10 -0
  310. pinelabs/types/create_subscription_response.py +146 -0
  311. pinelabs/types/create_subscription_response_allowed_payment_methods_item.py +7 -0
  312. pinelabs/types/create_subscription_response_integration_mode.py +5 -0
  313. pinelabs/types/create_subscription_response_payment_mode.py +5 -0
  314. pinelabs/types/create_subscription_response_status.py +23 -0
  315. pinelabs/types/cryptogram_response.py +39 -0
  316. pinelabs/types/currency_conversion_response.py +56 -0
  317. pinelabs/types/customer_details.py +59 -0
  318. pinelabs/types/customer_response.py +83 -0
  319. pinelabs/types/customer_response_status.py +5 -0
  320. pinelabs/types/customer_token_detail.py +74 -0
  321. pinelabs/types/customer_token_detail_payment_method.py +5 -0
  322. pinelabs/types/customer_tokens_response.py +48 -0
  323. pinelabs/types/delete_customer_token_response.py +41 -0
  324. pinelabs/types/delete_token_by_token_id_response.py +31 -0
  325. pinelabs/types/downpayment_details_response.py +27 -0
  326. pinelabs/types/downpayment_details_response_downpayment_details.py +47 -0
  327. pinelabs/types/downpayment_details_response_downpayment_details_allowed_payment_methods_item.py +7 -0
  328. pinelabs/types/downpayment_details_response_downpayment_details_amount_range.py +25 -0
  329. pinelabs/types/error_response.py +41 -0
  330. pinelabs/types/error_response_additional_error_details.py +36 -0
  331. pinelabs/types/generate_checkout_link_response.py +46 -0
  332. pinelabs/types/generate_token_response.py +32 -0
  333. pinelabs/types/get_account_balance_response.py +36 -0
  334. pinelabs/types/get_card_details_response.py +27 -0
  335. pinelabs/types/get_payouts_payment_item.py +98 -0
  336. pinelabs/types/get_payouts_payment_item_mode.py +5 -0
  337. pinelabs/types/get_payouts_payment_item_status.py +7 -0
  338. pinelabs/types/get_payouts_response.py +51 -0
  339. pinelabs/types/imei_product.py +41 -0
  340. pinelabs/types/imei_validation_response.py +37 -0
  341. pinelabs/types/imei_validation_response_products_item.py +57 -0
  342. pinelabs/types/imei_validation_response_products_item_product_brand_response.py +31 -0
  343. pinelabs/types/imei_validation_response_products_item_product_imei_status.py +5 -0
  344. pinelabs/types/issuer_offer.py +59 -0
  345. pinelabs/types/issuer_offer_issuer_data.py +79 -0
  346. pinelabs/types/issuer_offer_issuer_data_auth_type.py +5 -0
  347. pinelabs/types/issuer_offer_issuer_data_penny_transaction_amount.py +20 -0
  348. pinelabs/types/issuer_offer_issuer_type.py +10 -0
  349. pinelabs/types/list_plans_response.py +31 -0
  350. pinelabs/types/list_presentations_response.py +31 -0
  351. pinelabs/types/list_settlements_response.py +42 -0
  352. pinelabs/types/list_subscriptions_response.py +31 -0
  353. pinelabs/types/merchant_metadata.py +8 -0
  354. pinelabs/types/net_banking_data_response.py +32 -0
  355. pinelabs/types/net_banking_data_response_txn_mode.py +5 -0
  356. pinelabs/types/offer_discovery_error_response.py +34 -0
  357. pinelabs/types/offer_discovery_error_response_additional_error_details.py +22 -0
  358. pinelabs/types/offer_discovery_response.py +27 -0
  359. pinelabs/types/offer_validation_error_response.py +22 -0
  360. pinelabs/types/offer_validation_error_response_additional_error_details.py +22 -0
  361. pinelabs/types/offer_validation_response.py +24 -0
  362. pinelabs/types/order_response.py +24 -0
  363. pinelabs/types/order_response_data.py +127 -0
  364. pinelabs/types/order_response_data_integration_mode.py +5 -0
  365. pinelabs/types/order_response_data_purchase_details.py +26 -0
  366. pinelabs/types/order_response_data_status.py +18 -0
  367. pinelabs/types/order_response_data_type.py +5 -0
  368. pinelabs/types/otp_generate_response.py +33 -0
  369. pinelabs/types/otp_generate_response_meta_data.py +26 -0
  370. pinelabs/types/otp_generate_response_next_item.py +5 -0
  371. pinelabs/types/page_info.py +41 -0
  372. pinelabs/types/pagination_links.py +34 -0
  373. pinelabs/types/pagination_links_first.py +22 -0
  374. pinelabs/types/pagination_links_last.py +22 -0
  375. pinelabs/types/pagination_links_next.py +22 -0
  376. pinelabs/types/pagination_links_self.py +22 -0
  377. pinelabs/types/pagination_meta.py +41 -0
  378. pinelabs/types/payment_item.py +87 -0
  379. pinelabs/types/payment_item_error_detail.py +31 -0
  380. pinelabs/types/payment_item_payment_method.py +8 -0
  381. pinelabs/types/payment_item_payment_option.py +28 -0
  382. pinelabs/types/payment_item_status.py +7 -0
  383. pinelabs/types/payment_link_account_details.py +24 -0
  384. pinelabs/types/payment_link_address.py +56 -0
  385. pinelabs/types/payment_link_bank_details.py +36 -0
  386. pinelabs/types/payment_link_cart_details.py +27 -0
  387. pinelabs/types/payment_link_cart_item.py +29 -0
  388. pinelabs/types/payment_link_customer.py +64 -0
  389. pinelabs/types/payment_link_product_detail.py +30 -0
  390. pinelabs/types/payment_link_response.py +113 -0
  391. pinelabs/types/payment_link_response_allowed_payment_methods_item.py +7 -0
  392. pinelabs/types/payment_link_response_status.py +8 -0
  393. pinelabs/types/payment_link_split_detail.py +57 -0
  394. pinelabs/types/payment_link_split_detail_status.py +5 -0
  395. pinelabs/types/payment_link_split_info.py +32 -0
  396. pinelabs/types/payment_object.py +51 -0
  397. pinelabs/types/payment_object_acquirer_data.py +23 -0
  398. pinelabs/types/payment_object_payment_amount.py +20 -0
  399. pinelabs/types/payment_object_payment_method.py +5 -0
  400. pinelabs/types/payment_object_status.py +7 -0
  401. pinelabs/types/payment_request_item.py +54 -0
  402. pinelabs/types/payment_request_item_device_info.py +53 -0
  403. pinelabs/types/payment_request_item_device_info_operating_system.py +7 -0
  404. pinelabs/types/payment_request_item_offer_data.py +27 -0
  405. pinelabs/types/payment_request_item_offer_data_offer_details.py +52 -0
  406. pinelabs/types/payment_request_item_offer_data_offer_details_tenure.py +136 -0
  407. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_auth_amount.py +20 -0
  408. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_cart_coupon_discount_amount.py +20 -0
  409. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown.py +56 -0
  410. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_additional_fee_amount.py +20 -0
  411. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_applicable_fee_amount.py +20 -0
  412. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_amount.py +20 -0
  413. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_fee_calculated_on_amount.py +20 -0
  414. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_maximum_fee_amount.py +20 -0
  415. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_subvented_fee_amount.py +20 -0
  416. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_convenience_fee_breakdown_tax_amount.py +20 -0
  417. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item.py +73 -0
  418. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_after_downpayment_reduced_product_amount.py +20 -0
  419. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_cart_coupon_discount_product_share.py +20 -0
  420. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount.py +36 -0
  421. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup.py +34 -0
  422. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_brand.py +22 -0
  423. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_brand_amount.py +20 -0
  424. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_dealer.py +22 -0
  425. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_dealer_amount.py +20 -0
  426. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_issuer.py +22 -0
  427. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_issuer_amount.py +20 -0
  428. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_merchant.py +24 -0
  429. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_breakup_merchant_amount.py +20 -0
  430. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_max_amount.py +20 -0
  431. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_discount_min_amount.py +20 -0
  432. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_downpayment_amount.py +20 -0
  433. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_interest_amount.py +20 -0
  434. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_amount.py +20 -0
  435. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_coupon_discount_amount.py +20 -0
  436. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_product_offer_parameters_item.py +21 -0
  437. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention.py +36 -0
  438. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_amount.py +20 -0
  439. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup.py +34 -0
  440. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_brand.py +22 -0
  441. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_brand_amount.py +20 -0
  442. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer.py +24 -0
  443. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_dealer_amount.py +20 -0
  444. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer.py +24 -0
  445. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_issuer_amount.py +20 -0
  446. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant.py +24 -0
  447. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_breakup_merchant_amount.py +20 -0
  448. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_max_amount.py +20 -0
  449. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_details_item_subvention_min_amount.py +20 -0
  450. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_downpayment_details.py +28 -0
  451. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_downpayment_details_downpayment_amount.py +20 -0
  452. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_intrest_amount.py +20 -0
  453. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_loan_amount.py +20 -0
  454. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_monthly_emi_amount.py +20 -0
  455. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_net_payment_amount.py +20 -0
  456. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_processing_fee_details.py +22 -0
  457. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_processing_fee_details_amount.py +20 -0
  458. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_split_emi_amount.py +20 -0
  459. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_coupon_discount.py +20 -0
  460. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_discount_amount.py +20 -0
  461. pinelabs/types/payment_request_item_offer_data_offer_details_tenure_total_emi_amount.py +20 -0
  462. pinelabs/types/payment_request_item_payment_method.py +8 -0
  463. pinelabs/types/payment_request_item_payment_option.py +53 -0
  464. pinelabs/types/payment_request_item_payment_option_bnpl_details.py +34 -0
  465. pinelabs/types/payment_request_item_payment_option_bnpl_details_bnpl_pay_code.py +5 -0
  466. pinelabs/types/payment_request_item_payment_option_card_details.py +51 -0
  467. pinelabs/types/payment_request_item_payment_option_card_token_details.py +61 -0
  468. pinelabs/types/payment_request_item_payment_option_cardless_details.py +31 -0
  469. pinelabs/types/payment_request_item_payment_option_points_card_details.py +36 -0
  470. pinelabs/types/payout_amount.py +31 -0
  471. pinelabs/types/payout_detail.py +117 -0
  472. pinelabs/types/payout_detail_mode.py +5 -0
  473. pinelabs/types/payout_detail_status.py +7 -0
  474. pinelabs/types/payout_link.py +31 -0
  475. pinelabs/types/plan_response.py +96 -0
  476. pinelabs/types/plan_response_frequency.py +10 -0
  477. pinelabs/types/plan_response_status.py +5 -0
  478. pinelabs/types/presentation_detail.py +82 -0
  479. pinelabs/types/presentation_detail_pdn_status.py +7 -0
  480. pinelabs/types/presentation_detail_status.py +18 -0
  481. pinelabs/types/product_detail.py +38 -0
  482. pinelabs/types/refund_response.py +24 -0
  483. pinelabs/types/refund_response_data.py +77 -0
  484. pinelabs/types/refund_response_data_integration_mode.py +5 -0
  485. pinelabs/types/refund_response_data_order_amount.py +20 -0
  486. pinelabs/types/refund_response_data_purchase_details.py +24 -0
  487. pinelabs/types/refund_response_data_purchase_details_customer.py +31 -0
  488. pinelabs/types/refund_response_data_purchase_details_split_info.py +21 -0
  489. pinelabs/types/refund_response_data_status.py +5 -0
  490. pinelabs/types/refund_response_data_type.py +5 -0
  491. pinelabs/types/resend_otp_error_response.py +36 -0
  492. pinelabs/types/service_provider_token_response.py +62 -0
  493. pinelabs/types/service_provider_token_response_payment_method.py +5 -0
  494. pinelabs/types/service_provider_tokens_list_response.py +32 -0
  495. pinelabs/types/settlement_by_utr_response.py +146 -0
  496. pinelabs/types/settlement_by_utr_response_pagination.py +27 -0
  497. pinelabs/types/settlement_summary.py +76 -0
  498. pinelabs/types/settlement_transaction.py +96 -0
  499. pinelabs/types/simple_amount.py +31 -0
  500. pinelabs/types/split_detail.py +55 -0
  501. pinelabs/types/split_detail_refund.py +51 -0
  502. pinelabs/types/split_detail_refund_amount.py +20 -0
  503. pinelabs/types/split_detail_refund_status.py +5 -0
  504. pinelabs/types/split_detail_status.py +5 -0
  505. pinelabs/types/split_info.py +32 -0
  506. pinelabs/types/split_payment_object.py +49 -0
  507. pinelabs/types/split_payment_object_acquirer_data.py +22 -0
  508. pinelabs/types/split_payment_object_additional_detail.py +26 -0
  509. pinelabs/types/split_payment_object_capture_data_item.py +23 -0
  510. pinelabs/types/split_payment_object_capture_data_item_capture_amount.py +20 -0
  511. pinelabs/types/split_payment_object_payment_amount.py +20 -0
  512. pinelabs/types/split_payment_object_payment_method.py +7 -0
  513. pinelabs/types/split_payment_object_payment_option.py +20 -0
  514. pinelabs/types/split_payment_object_payment_option_card_data.py +40 -0
  515. pinelabs/types/split_payment_object_payment_option_card_data_card_type.py +5 -0
  516. pinelabs/types/split_payment_object_payment_option_card_data_token_txn_type.py +7 -0
  517. pinelabs/types/split_payment_object_status.py +7 -0
  518. pinelabs/types/split_settlement_detail.py +52 -0
  519. pinelabs/types/split_settlement_detail_amount.py +20 -0
  520. pinelabs/types/split_settlement_detail_release_amount.py +24 -0
  521. pinelabs/types/split_settlement_detail_status.py +5 -0
  522. pinelabs/types/split_settlement_response.py +24 -0
  523. pinelabs/types/split_settlement_response_data.py +43 -0
  524. pinelabs/types/split_settlement_response_data_allowed_payment_methods_item.py +7 -0
  525. pinelabs/types/split_settlement_response_data_integration_mode.py +5 -0
  526. pinelabs/types/split_settlement_response_data_order_amount.py +20 -0
  527. pinelabs/types/split_settlement_response_data_purchase_details.py +26 -0
  528. pinelabs/types/split_settlement_response_data_purchase_details_customer.py +28 -0
  529. pinelabs/types/split_settlement_response_data_purchase_details_split_info.py +21 -0
  530. pinelabs/types/split_settlement_response_data_status.py +18 -0
  531. pinelabs/types/split_settlement_response_data_type.py +5 -0
  532. pinelabs/types/submit_otp_error_response.py +42 -0
  533. pinelabs/types/submit_otp_error_response_meta_data.py +26 -0
  534. pinelabs/types/subscription_amount.py +31 -0
  535. pinelabs/types/subscription_detail.py +115 -0
  536. pinelabs/types/subscription_detail_allowed_payment_methods_item.py +7 -0
  537. pinelabs/types/subscription_detail_integration_mode.py +5 -0
  538. pinelabs/types/subscription_detail_payment_mode.py +5 -0
  539. pinelabs/types/subscription_detail_status.py +23 -0
  540. pinelabs/types/subscription_notification_response.py +56 -0
  541. pinelabs/types/subscription_notification_response_pdn_status.py +7 -0
  542. pinelabs/types/subscription_notification_response_status.py +10 -0
  543. pinelabs/types/tenure.py +127 -0
  544. pinelabs/types/tenure_auth_amount.py +20 -0
  545. pinelabs/types/tenure_cart_coupon_discount_amount.py +20 -0
  546. pinelabs/types/tenure_convenience_fee_breakdown.py +38 -0
  547. pinelabs/types/tenure_convenience_fee_breakdown_additional_fee_amount.py +20 -0
  548. pinelabs/types/tenure_convenience_fee_breakdown_applicable_fee_amount.py +20 -0
  549. pinelabs/types/tenure_convenience_fee_breakdown_fee_amount.py +20 -0
  550. pinelabs/types/tenure_convenience_fee_breakdown_fee_calculated_on_amount.py +20 -0
  551. pinelabs/types/tenure_convenience_fee_breakdown_maximum_fee_amount.py +20 -0
  552. pinelabs/types/tenure_convenience_fee_breakdown_subvented_fee_amount.py +20 -0
  553. pinelabs/types/tenure_convenience_fee_breakdown_tax_amount.py +20 -0
  554. pinelabs/types/tenure_details_item.py +49 -0
  555. pinelabs/types/tenure_details_item_after_downpayment_reduced_product_amount.py +20 -0
  556. pinelabs/types/tenure_details_item_cart_coupon_discount_product_share.py +20 -0
  557. pinelabs/types/tenure_details_item_discount.py +33 -0
  558. pinelabs/types/tenure_details_item_discount_amount.py +20 -0
  559. pinelabs/types/tenure_details_item_discount_breakup.py +22 -0
  560. pinelabs/types/tenure_details_item_discount_breakup_brand.py +20 -0
  561. pinelabs/types/tenure_details_item_discount_breakup_brand_amount.py +20 -0
  562. pinelabs/types/tenure_details_item_discount_breakup_merchant.py +20 -0
  563. pinelabs/types/tenure_details_item_discount_breakup_merchant_amount.py +20 -0
  564. pinelabs/types/tenure_details_item_discount_discount_deferred_duration_type.py +5 -0
  565. pinelabs/types/tenure_details_item_discount_discount_type.py +5 -0
  566. pinelabs/types/tenure_details_item_discount_max_amount.py +20 -0
  567. pinelabs/types/tenure_details_item_downpayment_amount.py +20 -0
  568. pinelabs/types/tenure_details_item_interest_amount.py +20 -0
  569. pinelabs/types/tenure_details_item_product_amount.py +20 -0
  570. pinelabs/types/tenure_details_item_product_coupon_discount_amount.py +20 -0
  571. pinelabs/types/tenure_details_item_product_offer_parameters_item.py +21 -0
  572. pinelabs/types/tenure_details_item_subvention.py +31 -0
  573. pinelabs/types/tenure_details_item_subvention_amount.py +20 -0
  574. pinelabs/types/tenure_details_item_subvention_breakup.py +20 -0
  575. pinelabs/types/tenure_details_item_subvention_breakup_brand.py +20 -0
  576. pinelabs/types/tenure_details_item_subvention_breakup_brand_amount.py +20 -0
  577. pinelabs/types/tenure_details_item_subvention_max_amount.py +20 -0
  578. pinelabs/types/tenure_details_item_subvention_min_amount.py +20 -0
  579. pinelabs/types/tenure_details_item_subvention_offer_type.py +5 -0
  580. pinelabs/types/tenure_details_item_subvention_subvention_type.py +5 -0
  581. pinelabs/types/tenure_discount.py +35 -0
  582. pinelabs/types/tenure_discount_amount.py +20 -0
  583. pinelabs/types/tenure_discount_breakup.py +26 -0
  584. pinelabs/types/tenure_discount_breakup_brand.py +20 -0
  585. pinelabs/types/tenure_discount_breakup_brand_amount.py +20 -0
  586. pinelabs/types/tenure_discount_breakup_dealer.py +20 -0
  587. pinelabs/types/tenure_discount_breakup_dealer_amount.py +20 -0
  588. pinelabs/types/tenure_discount_breakup_issuer.py +20 -0
  589. pinelabs/types/tenure_discount_breakup_issuer_amount.py +20 -0
  590. pinelabs/types/tenure_discount_breakup_merchant.py +20 -0
  591. pinelabs/types/tenure_discount_breakup_merchant_amount.py +20 -0
  592. pinelabs/types/tenure_discount_discount_deferred_duration_type.py +5 -0
  593. pinelabs/types/tenure_discount_discount_type.py +5 -0
  594. pinelabs/types/tenure_discount_max_amount.py +20 -0
  595. pinelabs/types/tenure_downpayment_details.py +24 -0
  596. pinelabs/types/tenure_downpayment_details_downpayment_amount.py +20 -0
  597. pinelabs/types/tenure_emi_type.py +5 -0
  598. pinelabs/types/tenure_interest_amount.py +20 -0
  599. pinelabs/types/tenure_issuer_offer_parameters_item.py +32 -0
  600. pinelabs/types/tenure_loan_amount.py +20 -0
  601. pinelabs/types/tenure_monthly_emi_amount.py +20 -0
  602. pinelabs/types/tenure_net_payment_amount.py +20 -0
  603. pinelabs/types/tenure_processing_fee_amount.py +20 -0
  604. pinelabs/types/tenure_processing_fee_details.py +25 -0
  605. pinelabs/types/tenure_processing_fee_details_amount.py +20 -0
  606. pinelabs/types/tenure_split_emi_amount.py +20 -0
  607. pinelabs/types/tenure_tenure_type.py +5 -0
  608. pinelabs/types/tenure_total_coupon_discount.py +20 -0
  609. pinelabs/types/tenure_total_discount_amount.py +20 -0
  610. pinelabs/types/tenure_total_down_payment_amount.py +20 -0
  611. pinelabs/types/tenure_total_emi_amount.py +20 -0
  612. pinelabs/types/tenure_total_subvention_amount.py +20 -0
  613. pinelabs/types/token_card_data.py +69 -0
  614. pinelabs/types/token_card_data_card_type.py +5 -0
  615. pinelabs/types/token_payment.py +27 -0
  616. pinelabs/types/token_payment_acquirer_data.py +41 -0
  617. pinelabs/types/token_payment_option.py +26 -0
  618. pinelabs/types/token_status.py +5 -0
  619. pinelabs/types/token_transactional_data.py +46 -0
  620. pinelabs/types/upi_details_response.py +30 -0
  621. pinelabs/types/upi_details_response_payer.py +22 -0
  622. pinelabs/types/upi_details_response_txn_mode.py +5 -0
  623. pinelabs_python-0.1.0.dist-info/METADATA +213 -0
  624. pinelabs_python-0.1.0.dist-info/RECORD +626 -0
  625. pinelabs_python-0.1.0.dist-info/WHEEL +4 -0
  626. pinelabs_python-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1132 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import encode_path_param
10
+ from ..core.parse_error import ParsingError
11
+ from ..core.pydantic_utilities import parse_obj_as
12
+ from ..core.request_options import RequestOptions
13
+ from ..core.serialization import convert_and_respect_annotation_metadata
14
+ from ..errors.bad_request_error import BadRequestError
15
+ from ..errors.internal_server_error import InternalServerError
16
+ from ..errors.not_found_error import NotFoundError
17
+ from ..errors.unauthorized_error import UnauthorizedError
18
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
19
+ from ..types.amount import Amount
20
+ from ..types.error_response import ErrorResponse
21
+ from ..types.order_response import OrderResponse
22
+ from ..types.split_info import SplitInfo
23
+ from .types.create_order_request_allowed_payment_methods_item import CreateOrderRequestAllowedPaymentMethodsItem
24
+ from .types.create_order_request_purchase_details import CreateOrderRequestPurchaseDetails
25
+ from pydantic import ValidationError
26
+
27
+ # this is used as the default value for optional parameters
28
+ OMIT = typing.cast(typing.Any, ...)
29
+
30
+
31
+ class RawOrdersClient:
32
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
33
+ self._client_wrapper = client_wrapper
34
+
35
+ def get_order_by_id(
36
+ self, order_id: str, *, request_options: typing.Optional[RequestOptions] = None
37
+ ) -> HttpResponse[OrderResponse]:
38
+ """
39
+ Retrieve order details using the Pine Labs order identifier.
40
+
41
+ Parameters
42
+ ----------
43
+ order_id : str
44
+ Unique Pine Labs order identifier.
45
+
46
+ request_options : typing.Optional[RequestOptions]
47
+ Request-specific configuration.
48
+
49
+ Returns
50
+ -------
51
+ HttpResponse[OrderResponse]
52
+ Order retrieved successfully.
53
+ """
54
+ _response = self._client_wrapper.httpx_client.request(
55
+ f"api/pay/v1/orders/{encode_path_param(order_id)}",
56
+ method="GET",
57
+ request_options=request_options,
58
+ )
59
+ try:
60
+ if 200 <= _response.status_code < 300:
61
+ _data = typing.cast(
62
+ OrderResponse,
63
+ parse_obj_as(
64
+ type_=OrderResponse, # type: ignore
65
+ object_=_response.json(),
66
+ ),
67
+ )
68
+ return HttpResponse(response=_response, data=_data)
69
+ if _response.status_code == 401:
70
+ raise UnauthorizedError(
71
+ headers=dict(_response.headers),
72
+ body=typing.cast(
73
+ ErrorResponse,
74
+ parse_obj_as(
75
+ type_=ErrorResponse, # type: ignore
76
+ object_=_response.json(),
77
+ ),
78
+ ),
79
+ )
80
+ if _response.status_code == 404:
81
+ raise NotFoundError(
82
+ headers=dict(_response.headers),
83
+ body=typing.cast(
84
+ ErrorResponse,
85
+ parse_obj_as(
86
+ type_=ErrorResponse, # type: ignore
87
+ object_=_response.json(),
88
+ ),
89
+ ),
90
+ )
91
+ if _response.status_code == 422:
92
+ raise UnprocessableEntityError(
93
+ headers=dict(_response.headers),
94
+ body=typing.cast(
95
+ typing.Any,
96
+ parse_obj_as(
97
+ type_=typing.Any, # type: ignore
98
+ object_=_response.json(),
99
+ ),
100
+ ),
101
+ )
102
+ if _response.status_code == 500:
103
+ raise InternalServerError(
104
+ headers=dict(_response.headers),
105
+ body=typing.cast(
106
+ ErrorResponse,
107
+ parse_obj_as(
108
+ type_=ErrorResponse, # type: ignore
109
+ object_=_response.json(),
110
+ ),
111
+ ),
112
+ )
113
+ _response_json = _response.json()
114
+ except JSONDecodeError:
115
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
116
+ except ValidationError as e:
117
+ raise ParsingError(
118
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
119
+ )
120
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
121
+
122
+ def get_order_by_merchant_reference(
123
+ self, merchant_order_reference: str, *, request_options: typing.Optional[RequestOptions] = None
124
+ ) -> HttpResponse[OrderResponse]:
125
+ """
126
+ Retrieve order details using the merchant-assigned order reference.
127
+
128
+ Parameters
129
+ ----------
130
+ merchant_order_reference : str
131
+ Unique order reference assigned by the merchant.
132
+
133
+ request_options : typing.Optional[RequestOptions]
134
+ Request-specific configuration.
135
+
136
+ Returns
137
+ -------
138
+ HttpResponse[OrderResponse]
139
+ Order retrieved successfully.
140
+ """
141
+ _response = self._client_wrapper.httpx_client.request(
142
+ f"api/pay/v1/orders/reference/{encode_path_param(merchant_order_reference)}",
143
+ method="GET",
144
+ request_options=request_options,
145
+ )
146
+ try:
147
+ if 200 <= _response.status_code < 300:
148
+ _data = typing.cast(
149
+ OrderResponse,
150
+ parse_obj_as(
151
+ type_=OrderResponse, # type: ignore
152
+ object_=_response.json(),
153
+ ),
154
+ )
155
+ return HttpResponse(response=_response, data=_data)
156
+ if _response.status_code == 401:
157
+ raise UnauthorizedError(
158
+ headers=dict(_response.headers),
159
+ body=typing.cast(
160
+ ErrorResponse,
161
+ parse_obj_as(
162
+ type_=ErrorResponse, # type: ignore
163
+ object_=_response.json(),
164
+ ),
165
+ ),
166
+ )
167
+ if _response.status_code == 404:
168
+ raise NotFoundError(
169
+ headers=dict(_response.headers),
170
+ body=typing.cast(
171
+ ErrorResponse,
172
+ parse_obj_as(
173
+ type_=ErrorResponse, # type: ignore
174
+ object_=_response.json(),
175
+ ),
176
+ ),
177
+ )
178
+ if _response.status_code == 422:
179
+ raise UnprocessableEntityError(
180
+ headers=dict(_response.headers),
181
+ body=typing.cast(
182
+ typing.Any,
183
+ parse_obj_as(
184
+ type_=typing.Any, # type: ignore
185
+ object_=_response.json(),
186
+ ),
187
+ ),
188
+ )
189
+ if _response.status_code == 500:
190
+ raise InternalServerError(
191
+ headers=dict(_response.headers),
192
+ body=typing.cast(
193
+ ErrorResponse,
194
+ parse_obj_as(
195
+ type_=ErrorResponse, # type: ignore
196
+ object_=_response.json(),
197
+ ),
198
+ ),
199
+ )
200
+ _response_json = _response.json()
201
+ except JSONDecodeError:
202
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
203
+ except ValidationError as e:
204
+ raise ParsingError(
205
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
206
+ )
207
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
208
+
209
+ def capture_order(
210
+ self,
211
+ order_id: str,
212
+ *,
213
+ merchant_capture_reference: str,
214
+ capture_amount: typing.Optional[Amount] = OMIT,
215
+ request_options: typing.Optional[RequestOptions] = None,
216
+ ) -> HttpResponse[OrderResponse]:
217
+ """
218
+ Capture a pre-authorized payment. Only applicable when pre_auth is true
219
+ and a payment is created against the order. Supports one partial capture
220
+ per order — any remaining amount is auto-reversed.
221
+
222
+ Parameters
223
+ ----------
224
+ order_id : str
225
+ Unique Pine Labs order identifier.
226
+
227
+ merchant_capture_reference : str
228
+ Unique identifier for the capture request.
229
+
230
+ capture_amount : typing.Optional[Amount]
231
+
232
+ request_options : typing.Optional[RequestOptions]
233
+ Request-specific configuration.
234
+
235
+ Returns
236
+ -------
237
+ HttpResponse[OrderResponse]
238
+ Order captured successfully.
239
+ """
240
+ _response = self._client_wrapper.httpx_client.request(
241
+ f"api/pay/v1/orders/{encode_path_param(order_id)}/capture",
242
+ method="PUT",
243
+ json={
244
+ "merchant_capture_reference": merchant_capture_reference,
245
+ "capture_amount": convert_and_respect_annotation_metadata(
246
+ object_=capture_amount, annotation=Amount, direction="write"
247
+ ),
248
+ },
249
+ headers={
250
+ "content-type": "application/json",
251
+ },
252
+ request_options=request_options,
253
+ omit=OMIT,
254
+ )
255
+ try:
256
+ if 200 <= _response.status_code < 300:
257
+ _data = typing.cast(
258
+ OrderResponse,
259
+ parse_obj_as(
260
+ type_=OrderResponse, # type: ignore
261
+ object_=_response.json(),
262
+ ),
263
+ )
264
+ return HttpResponse(response=_response, data=_data)
265
+ if _response.status_code == 400:
266
+ raise BadRequestError(
267
+ headers=dict(_response.headers),
268
+ body=typing.cast(
269
+ typing.Any,
270
+ parse_obj_as(
271
+ type_=typing.Any, # type: ignore
272
+ object_=_response.json(),
273
+ ),
274
+ ),
275
+ )
276
+ if _response.status_code == 401:
277
+ raise UnauthorizedError(
278
+ headers=dict(_response.headers),
279
+ body=typing.cast(
280
+ ErrorResponse,
281
+ parse_obj_as(
282
+ type_=ErrorResponse, # type: ignore
283
+ object_=_response.json(),
284
+ ),
285
+ ),
286
+ )
287
+ if _response.status_code == 404:
288
+ raise NotFoundError(
289
+ headers=dict(_response.headers),
290
+ body=typing.cast(
291
+ ErrorResponse,
292
+ parse_obj_as(
293
+ type_=ErrorResponse, # type: ignore
294
+ object_=_response.json(),
295
+ ),
296
+ ),
297
+ )
298
+ if _response.status_code == 422:
299
+ raise UnprocessableEntityError(
300
+ headers=dict(_response.headers),
301
+ body=typing.cast(
302
+ typing.Any,
303
+ parse_obj_as(
304
+ type_=typing.Any, # type: ignore
305
+ object_=_response.json(),
306
+ ),
307
+ ),
308
+ )
309
+ if _response.status_code == 500:
310
+ raise InternalServerError(
311
+ headers=dict(_response.headers),
312
+ body=typing.cast(
313
+ ErrorResponse,
314
+ parse_obj_as(
315
+ type_=ErrorResponse, # type: ignore
316
+ object_=_response.json(),
317
+ ),
318
+ ),
319
+ )
320
+ _response_json = _response.json()
321
+ except JSONDecodeError:
322
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
323
+ except ValidationError as e:
324
+ raise ParsingError(
325
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
326
+ )
327
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
328
+
329
+ def cancel_order(
330
+ self, order_id: str, *, request_options: typing.Optional[RequestOptions] = None
331
+ ) -> HttpResponse[OrderResponse]:
332
+ """
333
+ Cancel a pre-authorized order. Only applicable when pre_auth is true
334
+ and a payment is created against the order.
335
+
336
+ Parameters
337
+ ----------
338
+ order_id : str
339
+ Unique Pine Labs order identifier.
340
+
341
+ request_options : typing.Optional[RequestOptions]
342
+ Request-specific configuration.
343
+
344
+ Returns
345
+ -------
346
+ HttpResponse[OrderResponse]
347
+ Order cancelled successfully.
348
+ """
349
+ _response = self._client_wrapper.httpx_client.request(
350
+ f"api/pay/v1/orders/{encode_path_param(order_id)}/cancel",
351
+ method="PUT",
352
+ request_options=request_options,
353
+ )
354
+ try:
355
+ if 200 <= _response.status_code < 300:
356
+ _data = typing.cast(
357
+ OrderResponse,
358
+ parse_obj_as(
359
+ type_=OrderResponse, # type: ignore
360
+ object_=_response.json(),
361
+ ),
362
+ )
363
+ return HttpResponse(response=_response, data=_data)
364
+ if _response.status_code == 401:
365
+ raise UnauthorizedError(
366
+ headers=dict(_response.headers),
367
+ body=typing.cast(
368
+ ErrorResponse,
369
+ parse_obj_as(
370
+ type_=ErrorResponse, # type: ignore
371
+ object_=_response.json(),
372
+ ),
373
+ ),
374
+ )
375
+ if _response.status_code == 404:
376
+ raise NotFoundError(
377
+ headers=dict(_response.headers),
378
+ body=typing.cast(
379
+ ErrorResponse,
380
+ parse_obj_as(
381
+ type_=ErrorResponse, # type: ignore
382
+ object_=_response.json(),
383
+ ),
384
+ ),
385
+ )
386
+ if _response.status_code == 422:
387
+ raise UnprocessableEntityError(
388
+ headers=dict(_response.headers),
389
+ body=typing.cast(
390
+ typing.Any,
391
+ parse_obj_as(
392
+ type_=typing.Any, # type: ignore
393
+ object_=_response.json(),
394
+ ),
395
+ ),
396
+ )
397
+ if _response.status_code == 500:
398
+ raise InternalServerError(
399
+ headers=dict(_response.headers),
400
+ body=typing.cast(
401
+ ErrorResponse,
402
+ parse_obj_as(
403
+ type_=ErrorResponse, # type: ignore
404
+ object_=_response.json(),
405
+ ),
406
+ ),
407
+ )
408
+ _response_json = _response.json()
409
+ except JSONDecodeError:
410
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
411
+ except ValidationError as e:
412
+ raise ParsingError(
413
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
414
+ )
415
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
416
+
417
+ def create_order(
418
+ self,
419
+ *,
420
+ merchant_order_reference: str,
421
+ order_amount: Amount,
422
+ pre_auth: typing.Optional[bool] = OMIT,
423
+ allowed_payment_methods: typing.Optional[typing.Sequence[CreateOrderRequestAllowedPaymentMethodsItem]] = OMIT,
424
+ notes: typing.Optional[str] = OMIT,
425
+ callback_url: typing.Optional[str] = OMIT,
426
+ failure_callback_url: typing.Optional[str] = OMIT,
427
+ purchase_details: typing.Optional[CreateOrderRequestPurchaseDetails] = OMIT,
428
+ split_info: typing.Optional[SplitInfo] = OMIT,
429
+ is_mcc_transaction: typing.Optional[str] = OMIT,
430
+ base_amount: typing.Optional[Amount] = OMIT,
431
+ cart_coupon_discount_amount: typing.Optional[Amount] = OMIT,
432
+ request_options: typing.Optional[RequestOptions] = None,
433
+ ) -> HttpResponse[OrderResponse]:
434
+ """
435
+ Create a new payment order. Returns an order with a challenge_url
436
+ that can be used to redirect the customer for payment.
437
+
438
+ This endpoint serves both standard payment orders and affordability
439
+ suite orders (EMI, Cardless EMI, BNPL). For affordability flows,
440
+ include `allowed_payment_methods` with values like `CREDIT_EMI`,
441
+ `DEBIT_EMI`, `CARDLESS_EMI`, or `BNPL`, and optionally provide
442
+ `cart_coupon_discount_amount`.
443
+
444
+ Parameters
445
+ ----------
446
+ merchant_order_reference : str
447
+ **Idempotency Key.** Unique order reference assigned by the merchant. Duplicate requests with the same `merchant_order_reference` will return the existing order instead of creating a new one.
448
+
449
+ order_amount : Amount
450
+
451
+ pre_auth : typing.Optional[bool]
452
+ Whether pre-authorization is needed.
453
+
454
+ allowed_payment_methods : typing.Optional[typing.Sequence[CreateOrderRequestAllowedPaymentMethodsItem]]
455
+ Payment methods to offer the customer.
456
+
457
+ notes : typing.Optional[str]
458
+ Note to show against the order.
459
+
460
+ callback_url : typing.Optional[str]
461
+ URL to redirect customers after successful payment.
462
+
463
+ failure_callback_url : typing.Optional[str]
464
+ URL to redirect customers after failed payment. If not provided, callback_url is used for both.
465
+
466
+ purchase_details : typing.Optional[CreateOrderRequestPurchaseDetails]
467
+ Purchase details including customer information.
468
+
469
+ split_info : typing.Optional[SplitInfo]
470
+
471
+ is_mcc_transaction : typing.Optional[str]
472
+ Identifies the order type for MCC transactions. Set to "true" for MCC transactions.
473
+
474
+ base_amount : typing.Optional[Amount]
475
+
476
+ cart_coupon_discount_amount : typing.Optional[Amount]
477
+
478
+ request_options : typing.Optional[RequestOptions]
479
+ Request-specific configuration.
480
+
481
+ Returns
482
+ -------
483
+ HttpResponse[OrderResponse]
484
+ Order created successfully.
485
+ """
486
+ _response = self._client_wrapper.httpx_client.request(
487
+ "api/pay/v1/orders",
488
+ method="POST",
489
+ json={
490
+ "merchant_order_reference": merchant_order_reference,
491
+ "order_amount": convert_and_respect_annotation_metadata(
492
+ object_=order_amount, annotation=Amount, direction="write"
493
+ ),
494
+ "pre_auth": pre_auth,
495
+ "allowed_payment_methods": allowed_payment_methods,
496
+ "notes": notes,
497
+ "callback_url": callback_url,
498
+ "failure_callback_url": failure_callback_url,
499
+ "purchase_details": convert_and_respect_annotation_metadata(
500
+ object_=purchase_details, annotation=CreateOrderRequestPurchaseDetails, direction="write"
501
+ ),
502
+ "split_info": convert_and_respect_annotation_metadata(
503
+ object_=split_info, annotation=SplitInfo, direction="write"
504
+ ),
505
+ "is_mcc_transaction": is_mcc_transaction,
506
+ "base_amount": convert_and_respect_annotation_metadata(
507
+ object_=base_amount, annotation=Amount, direction="write"
508
+ ),
509
+ "cart_coupon_discount_amount": convert_and_respect_annotation_metadata(
510
+ object_=cart_coupon_discount_amount, annotation=Amount, direction="write"
511
+ ),
512
+ },
513
+ headers={
514
+ "content-type": "application/json",
515
+ },
516
+ request_options=request_options,
517
+ omit=OMIT,
518
+ )
519
+ try:
520
+ if 200 <= _response.status_code < 300:
521
+ _data = typing.cast(
522
+ OrderResponse,
523
+ parse_obj_as(
524
+ type_=OrderResponse, # type: ignore
525
+ object_=_response.json(),
526
+ ),
527
+ )
528
+ return HttpResponse(response=_response, data=_data)
529
+ if _response.status_code == 400:
530
+ raise BadRequestError(
531
+ headers=dict(_response.headers),
532
+ body=typing.cast(
533
+ typing.Any,
534
+ parse_obj_as(
535
+ type_=typing.Any, # type: ignore
536
+ object_=_response.json(),
537
+ ),
538
+ ),
539
+ )
540
+ if _response.status_code == 401:
541
+ raise UnauthorizedError(
542
+ headers=dict(_response.headers),
543
+ body=typing.cast(
544
+ ErrorResponse,
545
+ parse_obj_as(
546
+ type_=ErrorResponse, # type: ignore
547
+ object_=_response.json(),
548
+ ),
549
+ ),
550
+ )
551
+ if _response.status_code == 422:
552
+ raise UnprocessableEntityError(
553
+ headers=dict(_response.headers),
554
+ body=typing.cast(
555
+ typing.Any,
556
+ parse_obj_as(
557
+ type_=typing.Any, # type: ignore
558
+ object_=_response.json(),
559
+ ),
560
+ ),
561
+ )
562
+ if _response.status_code == 500:
563
+ raise InternalServerError(
564
+ headers=dict(_response.headers),
565
+ body=typing.cast(
566
+ ErrorResponse,
567
+ parse_obj_as(
568
+ type_=ErrorResponse, # type: ignore
569
+ object_=_response.json(),
570
+ ),
571
+ ),
572
+ )
573
+ _response_json = _response.json()
574
+ except JSONDecodeError:
575
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
576
+ except ValidationError as e:
577
+ raise ParsingError(
578
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
579
+ )
580
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
581
+
582
+
583
+ class AsyncRawOrdersClient:
584
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
585
+ self._client_wrapper = client_wrapper
586
+
587
+ async def get_order_by_id(
588
+ self, order_id: str, *, request_options: typing.Optional[RequestOptions] = None
589
+ ) -> AsyncHttpResponse[OrderResponse]:
590
+ """
591
+ Retrieve order details using the Pine Labs order identifier.
592
+
593
+ Parameters
594
+ ----------
595
+ order_id : str
596
+ Unique Pine Labs order identifier.
597
+
598
+ request_options : typing.Optional[RequestOptions]
599
+ Request-specific configuration.
600
+
601
+ Returns
602
+ -------
603
+ AsyncHttpResponse[OrderResponse]
604
+ Order retrieved successfully.
605
+ """
606
+ _response = await self._client_wrapper.httpx_client.request(
607
+ f"api/pay/v1/orders/{encode_path_param(order_id)}",
608
+ method="GET",
609
+ request_options=request_options,
610
+ )
611
+ try:
612
+ if 200 <= _response.status_code < 300:
613
+ _data = typing.cast(
614
+ OrderResponse,
615
+ parse_obj_as(
616
+ type_=OrderResponse, # type: ignore
617
+ object_=_response.json(),
618
+ ),
619
+ )
620
+ return AsyncHttpResponse(response=_response, data=_data)
621
+ if _response.status_code == 401:
622
+ raise UnauthorizedError(
623
+ headers=dict(_response.headers),
624
+ body=typing.cast(
625
+ ErrorResponse,
626
+ parse_obj_as(
627
+ type_=ErrorResponse, # type: ignore
628
+ object_=_response.json(),
629
+ ),
630
+ ),
631
+ )
632
+ if _response.status_code == 404:
633
+ raise NotFoundError(
634
+ headers=dict(_response.headers),
635
+ body=typing.cast(
636
+ ErrorResponse,
637
+ parse_obj_as(
638
+ type_=ErrorResponse, # type: ignore
639
+ object_=_response.json(),
640
+ ),
641
+ ),
642
+ )
643
+ if _response.status_code == 422:
644
+ raise UnprocessableEntityError(
645
+ headers=dict(_response.headers),
646
+ body=typing.cast(
647
+ typing.Any,
648
+ parse_obj_as(
649
+ type_=typing.Any, # type: ignore
650
+ object_=_response.json(),
651
+ ),
652
+ ),
653
+ )
654
+ if _response.status_code == 500:
655
+ raise InternalServerError(
656
+ headers=dict(_response.headers),
657
+ body=typing.cast(
658
+ ErrorResponse,
659
+ parse_obj_as(
660
+ type_=ErrorResponse, # type: ignore
661
+ object_=_response.json(),
662
+ ),
663
+ ),
664
+ )
665
+ _response_json = _response.json()
666
+ except JSONDecodeError:
667
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
668
+ except ValidationError as e:
669
+ raise ParsingError(
670
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
671
+ )
672
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
673
+
674
+ async def get_order_by_merchant_reference(
675
+ self, merchant_order_reference: str, *, request_options: typing.Optional[RequestOptions] = None
676
+ ) -> AsyncHttpResponse[OrderResponse]:
677
+ """
678
+ Retrieve order details using the merchant-assigned order reference.
679
+
680
+ Parameters
681
+ ----------
682
+ merchant_order_reference : str
683
+ Unique order reference assigned by the merchant.
684
+
685
+ request_options : typing.Optional[RequestOptions]
686
+ Request-specific configuration.
687
+
688
+ Returns
689
+ -------
690
+ AsyncHttpResponse[OrderResponse]
691
+ Order retrieved successfully.
692
+ """
693
+ _response = await self._client_wrapper.httpx_client.request(
694
+ f"api/pay/v1/orders/reference/{encode_path_param(merchant_order_reference)}",
695
+ method="GET",
696
+ request_options=request_options,
697
+ )
698
+ try:
699
+ if 200 <= _response.status_code < 300:
700
+ _data = typing.cast(
701
+ OrderResponse,
702
+ parse_obj_as(
703
+ type_=OrderResponse, # type: ignore
704
+ object_=_response.json(),
705
+ ),
706
+ )
707
+ return AsyncHttpResponse(response=_response, data=_data)
708
+ if _response.status_code == 401:
709
+ raise UnauthorizedError(
710
+ headers=dict(_response.headers),
711
+ body=typing.cast(
712
+ ErrorResponse,
713
+ parse_obj_as(
714
+ type_=ErrorResponse, # type: ignore
715
+ object_=_response.json(),
716
+ ),
717
+ ),
718
+ )
719
+ if _response.status_code == 404:
720
+ raise NotFoundError(
721
+ headers=dict(_response.headers),
722
+ body=typing.cast(
723
+ ErrorResponse,
724
+ parse_obj_as(
725
+ type_=ErrorResponse, # type: ignore
726
+ object_=_response.json(),
727
+ ),
728
+ ),
729
+ )
730
+ if _response.status_code == 422:
731
+ raise UnprocessableEntityError(
732
+ headers=dict(_response.headers),
733
+ body=typing.cast(
734
+ typing.Any,
735
+ parse_obj_as(
736
+ type_=typing.Any, # type: ignore
737
+ object_=_response.json(),
738
+ ),
739
+ ),
740
+ )
741
+ if _response.status_code == 500:
742
+ raise InternalServerError(
743
+ headers=dict(_response.headers),
744
+ body=typing.cast(
745
+ ErrorResponse,
746
+ parse_obj_as(
747
+ type_=ErrorResponse, # type: ignore
748
+ object_=_response.json(),
749
+ ),
750
+ ),
751
+ )
752
+ _response_json = _response.json()
753
+ except JSONDecodeError:
754
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
755
+ except ValidationError as e:
756
+ raise ParsingError(
757
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
758
+ )
759
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
760
+
761
+ async def capture_order(
762
+ self,
763
+ order_id: str,
764
+ *,
765
+ merchant_capture_reference: str,
766
+ capture_amount: typing.Optional[Amount] = OMIT,
767
+ request_options: typing.Optional[RequestOptions] = None,
768
+ ) -> AsyncHttpResponse[OrderResponse]:
769
+ """
770
+ Capture a pre-authorized payment. Only applicable when pre_auth is true
771
+ and a payment is created against the order. Supports one partial capture
772
+ per order — any remaining amount is auto-reversed.
773
+
774
+ Parameters
775
+ ----------
776
+ order_id : str
777
+ Unique Pine Labs order identifier.
778
+
779
+ merchant_capture_reference : str
780
+ Unique identifier for the capture request.
781
+
782
+ capture_amount : typing.Optional[Amount]
783
+
784
+ request_options : typing.Optional[RequestOptions]
785
+ Request-specific configuration.
786
+
787
+ Returns
788
+ -------
789
+ AsyncHttpResponse[OrderResponse]
790
+ Order captured successfully.
791
+ """
792
+ _response = await self._client_wrapper.httpx_client.request(
793
+ f"api/pay/v1/orders/{encode_path_param(order_id)}/capture",
794
+ method="PUT",
795
+ json={
796
+ "merchant_capture_reference": merchant_capture_reference,
797
+ "capture_amount": convert_and_respect_annotation_metadata(
798
+ object_=capture_amount, annotation=Amount, direction="write"
799
+ ),
800
+ },
801
+ headers={
802
+ "content-type": "application/json",
803
+ },
804
+ request_options=request_options,
805
+ omit=OMIT,
806
+ )
807
+ try:
808
+ if 200 <= _response.status_code < 300:
809
+ _data = typing.cast(
810
+ OrderResponse,
811
+ parse_obj_as(
812
+ type_=OrderResponse, # type: ignore
813
+ object_=_response.json(),
814
+ ),
815
+ )
816
+ return AsyncHttpResponse(response=_response, data=_data)
817
+ if _response.status_code == 400:
818
+ raise BadRequestError(
819
+ headers=dict(_response.headers),
820
+ body=typing.cast(
821
+ typing.Any,
822
+ parse_obj_as(
823
+ type_=typing.Any, # type: ignore
824
+ object_=_response.json(),
825
+ ),
826
+ ),
827
+ )
828
+ if _response.status_code == 401:
829
+ raise UnauthorizedError(
830
+ headers=dict(_response.headers),
831
+ body=typing.cast(
832
+ ErrorResponse,
833
+ parse_obj_as(
834
+ type_=ErrorResponse, # type: ignore
835
+ object_=_response.json(),
836
+ ),
837
+ ),
838
+ )
839
+ if _response.status_code == 404:
840
+ raise NotFoundError(
841
+ headers=dict(_response.headers),
842
+ body=typing.cast(
843
+ ErrorResponse,
844
+ parse_obj_as(
845
+ type_=ErrorResponse, # type: ignore
846
+ object_=_response.json(),
847
+ ),
848
+ ),
849
+ )
850
+ if _response.status_code == 422:
851
+ raise UnprocessableEntityError(
852
+ headers=dict(_response.headers),
853
+ body=typing.cast(
854
+ typing.Any,
855
+ parse_obj_as(
856
+ type_=typing.Any, # type: ignore
857
+ object_=_response.json(),
858
+ ),
859
+ ),
860
+ )
861
+ if _response.status_code == 500:
862
+ raise InternalServerError(
863
+ headers=dict(_response.headers),
864
+ body=typing.cast(
865
+ ErrorResponse,
866
+ parse_obj_as(
867
+ type_=ErrorResponse, # type: ignore
868
+ object_=_response.json(),
869
+ ),
870
+ ),
871
+ )
872
+ _response_json = _response.json()
873
+ except JSONDecodeError:
874
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
875
+ except ValidationError as e:
876
+ raise ParsingError(
877
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
878
+ )
879
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
880
+
881
+ async def cancel_order(
882
+ self, order_id: str, *, request_options: typing.Optional[RequestOptions] = None
883
+ ) -> AsyncHttpResponse[OrderResponse]:
884
+ """
885
+ Cancel a pre-authorized order. Only applicable when pre_auth is true
886
+ and a payment is created against the order.
887
+
888
+ Parameters
889
+ ----------
890
+ order_id : str
891
+ Unique Pine Labs order identifier.
892
+
893
+ request_options : typing.Optional[RequestOptions]
894
+ Request-specific configuration.
895
+
896
+ Returns
897
+ -------
898
+ AsyncHttpResponse[OrderResponse]
899
+ Order cancelled successfully.
900
+ """
901
+ _response = await self._client_wrapper.httpx_client.request(
902
+ f"api/pay/v1/orders/{encode_path_param(order_id)}/cancel",
903
+ method="PUT",
904
+ request_options=request_options,
905
+ )
906
+ try:
907
+ if 200 <= _response.status_code < 300:
908
+ _data = typing.cast(
909
+ OrderResponse,
910
+ parse_obj_as(
911
+ type_=OrderResponse, # type: ignore
912
+ object_=_response.json(),
913
+ ),
914
+ )
915
+ return AsyncHttpResponse(response=_response, data=_data)
916
+ if _response.status_code == 401:
917
+ raise UnauthorizedError(
918
+ headers=dict(_response.headers),
919
+ body=typing.cast(
920
+ ErrorResponse,
921
+ parse_obj_as(
922
+ type_=ErrorResponse, # type: ignore
923
+ object_=_response.json(),
924
+ ),
925
+ ),
926
+ )
927
+ if _response.status_code == 404:
928
+ raise NotFoundError(
929
+ headers=dict(_response.headers),
930
+ body=typing.cast(
931
+ ErrorResponse,
932
+ parse_obj_as(
933
+ type_=ErrorResponse, # type: ignore
934
+ object_=_response.json(),
935
+ ),
936
+ ),
937
+ )
938
+ if _response.status_code == 422:
939
+ raise UnprocessableEntityError(
940
+ headers=dict(_response.headers),
941
+ body=typing.cast(
942
+ typing.Any,
943
+ parse_obj_as(
944
+ type_=typing.Any, # type: ignore
945
+ object_=_response.json(),
946
+ ),
947
+ ),
948
+ )
949
+ if _response.status_code == 500:
950
+ raise InternalServerError(
951
+ headers=dict(_response.headers),
952
+ body=typing.cast(
953
+ ErrorResponse,
954
+ parse_obj_as(
955
+ type_=ErrorResponse, # type: ignore
956
+ object_=_response.json(),
957
+ ),
958
+ ),
959
+ )
960
+ _response_json = _response.json()
961
+ except JSONDecodeError:
962
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
963
+ except ValidationError as e:
964
+ raise ParsingError(
965
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
966
+ )
967
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
968
+
969
+ async def create_order(
970
+ self,
971
+ *,
972
+ merchant_order_reference: str,
973
+ order_amount: Amount,
974
+ pre_auth: typing.Optional[bool] = OMIT,
975
+ allowed_payment_methods: typing.Optional[typing.Sequence[CreateOrderRequestAllowedPaymentMethodsItem]] = OMIT,
976
+ notes: typing.Optional[str] = OMIT,
977
+ callback_url: typing.Optional[str] = OMIT,
978
+ failure_callback_url: typing.Optional[str] = OMIT,
979
+ purchase_details: typing.Optional[CreateOrderRequestPurchaseDetails] = OMIT,
980
+ split_info: typing.Optional[SplitInfo] = OMIT,
981
+ is_mcc_transaction: typing.Optional[str] = OMIT,
982
+ base_amount: typing.Optional[Amount] = OMIT,
983
+ cart_coupon_discount_amount: typing.Optional[Amount] = OMIT,
984
+ request_options: typing.Optional[RequestOptions] = None,
985
+ ) -> AsyncHttpResponse[OrderResponse]:
986
+ """
987
+ Create a new payment order. Returns an order with a challenge_url
988
+ that can be used to redirect the customer for payment.
989
+
990
+ This endpoint serves both standard payment orders and affordability
991
+ suite orders (EMI, Cardless EMI, BNPL). For affordability flows,
992
+ include `allowed_payment_methods` with values like `CREDIT_EMI`,
993
+ `DEBIT_EMI`, `CARDLESS_EMI`, or `BNPL`, and optionally provide
994
+ `cart_coupon_discount_amount`.
995
+
996
+ Parameters
997
+ ----------
998
+ merchant_order_reference : str
999
+ **Idempotency Key.** Unique order reference assigned by the merchant. Duplicate requests with the same `merchant_order_reference` will return the existing order instead of creating a new one.
1000
+
1001
+ order_amount : Amount
1002
+
1003
+ pre_auth : typing.Optional[bool]
1004
+ Whether pre-authorization is needed.
1005
+
1006
+ allowed_payment_methods : typing.Optional[typing.Sequence[CreateOrderRequestAllowedPaymentMethodsItem]]
1007
+ Payment methods to offer the customer.
1008
+
1009
+ notes : typing.Optional[str]
1010
+ Note to show against the order.
1011
+
1012
+ callback_url : typing.Optional[str]
1013
+ URL to redirect customers after successful payment.
1014
+
1015
+ failure_callback_url : typing.Optional[str]
1016
+ URL to redirect customers after failed payment. If not provided, callback_url is used for both.
1017
+
1018
+ purchase_details : typing.Optional[CreateOrderRequestPurchaseDetails]
1019
+ Purchase details including customer information.
1020
+
1021
+ split_info : typing.Optional[SplitInfo]
1022
+
1023
+ is_mcc_transaction : typing.Optional[str]
1024
+ Identifies the order type for MCC transactions. Set to "true" for MCC transactions.
1025
+
1026
+ base_amount : typing.Optional[Amount]
1027
+
1028
+ cart_coupon_discount_amount : typing.Optional[Amount]
1029
+
1030
+ request_options : typing.Optional[RequestOptions]
1031
+ Request-specific configuration.
1032
+
1033
+ Returns
1034
+ -------
1035
+ AsyncHttpResponse[OrderResponse]
1036
+ Order created successfully.
1037
+ """
1038
+ _response = await self._client_wrapper.httpx_client.request(
1039
+ "api/pay/v1/orders",
1040
+ method="POST",
1041
+ json={
1042
+ "merchant_order_reference": merchant_order_reference,
1043
+ "order_amount": convert_and_respect_annotation_metadata(
1044
+ object_=order_amount, annotation=Amount, direction="write"
1045
+ ),
1046
+ "pre_auth": pre_auth,
1047
+ "allowed_payment_methods": allowed_payment_methods,
1048
+ "notes": notes,
1049
+ "callback_url": callback_url,
1050
+ "failure_callback_url": failure_callback_url,
1051
+ "purchase_details": convert_and_respect_annotation_metadata(
1052
+ object_=purchase_details, annotation=CreateOrderRequestPurchaseDetails, direction="write"
1053
+ ),
1054
+ "split_info": convert_and_respect_annotation_metadata(
1055
+ object_=split_info, annotation=SplitInfo, direction="write"
1056
+ ),
1057
+ "is_mcc_transaction": is_mcc_transaction,
1058
+ "base_amount": convert_and_respect_annotation_metadata(
1059
+ object_=base_amount, annotation=Amount, direction="write"
1060
+ ),
1061
+ "cart_coupon_discount_amount": convert_and_respect_annotation_metadata(
1062
+ object_=cart_coupon_discount_amount, annotation=Amount, direction="write"
1063
+ ),
1064
+ },
1065
+ headers={
1066
+ "content-type": "application/json",
1067
+ },
1068
+ request_options=request_options,
1069
+ omit=OMIT,
1070
+ )
1071
+ try:
1072
+ if 200 <= _response.status_code < 300:
1073
+ _data = typing.cast(
1074
+ OrderResponse,
1075
+ parse_obj_as(
1076
+ type_=OrderResponse, # type: ignore
1077
+ object_=_response.json(),
1078
+ ),
1079
+ )
1080
+ return AsyncHttpResponse(response=_response, data=_data)
1081
+ if _response.status_code == 400:
1082
+ raise BadRequestError(
1083
+ headers=dict(_response.headers),
1084
+ body=typing.cast(
1085
+ typing.Any,
1086
+ parse_obj_as(
1087
+ type_=typing.Any, # type: ignore
1088
+ object_=_response.json(),
1089
+ ),
1090
+ ),
1091
+ )
1092
+ if _response.status_code == 401:
1093
+ raise UnauthorizedError(
1094
+ headers=dict(_response.headers),
1095
+ body=typing.cast(
1096
+ ErrorResponse,
1097
+ parse_obj_as(
1098
+ type_=ErrorResponse, # type: ignore
1099
+ object_=_response.json(),
1100
+ ),
1101
+ ),
1102
+ )
1103
+ if _response.status_code == 422:
1104
+ raise UnprocessableEntityError(
1105
+ headers=dict(_response.headers),
1106
+ body=typing.cast(
1107
+ typing.Any,
1108
+ parse_obj_as(
1109
+ type_=typing.Any, # type: ignore
1110
+ object_=_response.json(),
1111
+ ),
1112
+ ),
1113
+ )
1114
+ if _response.status_code == 500:
1115
+ raise InternalServerError(
1116
+ headers=dict(_response.headers),
1117
+ body=typing.cast(
1118
+ ErrorResponse,
1119
+ parse_obj_as(
1120
+ type_=ErrorResponse, # type: ignore
1121
+ object_=_response.json(),
1122
+ ),
1123
+ ),
1124
+ )
1125
+ _response_json = _response.json()
1126
+ except JSONDecodeError:
1127
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1128
+ except ValidationError as e:
1129
+ raise ParsingError(
1130
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
1131
+ )
1132
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)