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,1061 @@
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.forbidden_error import ForbiddenError
16
+ from ..errors.internal_server_error import InternalServerError
17
+ from ..errors.not_found_error import NotFoundError
18
+ from ..errors.unauthorized_error import UnauthorizedError
19
+ from ..types.address import Address
20
+ from ..types.customer_response import CustomerResponse
21
+ from ..types.error_response import ErrorResponse
22
+ from ..types.merchant_metadata import MerchantMetadata
23
+ from .types.update_customer_request_status import UpdateCustomerRequestStatus
24
+ from pydantic import ValidationError
25
+
26
+ # this is used as the default value for optional parameters
27
+ OMIT = typing.cast(typing.Any, ...)
28
+
29
+
30
+ class RawCustomersClient:
31
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
32
+ self._client_wrapper = client_wrapper
33
+
34
+ def get_customer_details(
35
+ self,
36
+ *,
37
+ country_code: str,
38
+ mobile_number: str,
39
+ merchant_customer_reference: str,
40
+ request_options: typing.Optional[RequestOptions] = None,
41
+ ) -> HttpResponse[CustomerResponse]:
42
+ """
43
+ Retrieve customer details by querying with country code, mobile number, and merchant customer reference.
44
+ All three query parameters are required.
45
+
46
+ Parameters
47
+ ----------
48
+ country_code : str
49
+ Country code of the registered mobile number.
50
+
51
+ mobile_number : str
52
+ Customer's registered mobile number.
53
+
54
+ merchant_customer_reference : str
55
+ Unique customer reference assigned by the merchant.
56
+
57
+ request_options : typing.Optional[RequestOptions]
58
+ Request-specific configuration.
59
+
60
+ Returns
61
+ -------
62
+ HttpResponse[CustomerResponse]
63
+ Customer details retrieved successfully.
64
+ """
65
+ _response = self._client_wrapper.httpx_client.request(
66
+ "api/v1/customer",
67
+ method="GET",
68
+ params={
69
+ "country_code": country_code,
70
+ "mobile_number": mobile_number,
71
+ "merchant_customer_reference": merchant_customer_reference,
72
+ },
73
+ request_options=request_options,
74
+ )
75
+ try:
76
+ if 200 <= _response.status_code < 300:
77
+ _data = typing.cast(
78
+ CustomerResponse,
79
+ parse_obj_as(
80
+ type_=CustomerResponse, # type: ignore
81
+ object_=_response.json(),
82
+ ),
83
+ )
84
+ return HttpResponse(response=_response, data=_data)
85
+ if _response.status_code == 400:
86
+ raise BadRequestError(
87
+ headers=dict(_response.headers),
88
+ body=typing.cast(
89
+ typing.Any,
90
+ parse_obj_as(
91
+ type_=typing.Any, # type: ignore
92
+ object_=_response.json(),
93
+ ),
94
+ ),
95
+ )
96
+ if _response.status_code == 401:
97
+ raise UnauthorizedError(
98
+ headers=dict(_response.headers),
99
+ body=typing.cast(
100
+ ErrorResponse,
101
+ parse_obj_as(
102
+ type_=ErrorResponse, # type: ignore
103
+ object_=_response.json(),
104
+ ),
105
+ ),
106
+ )
107
+ if _response.status_code == 403:
108
+ raise ForbiddenError(
109
+ headers=dict(_response.headers),
110
+ body=typing.cast(
111
+ ErrorResponse,
112
+ parse_obj_as(
113
+ type_=ErrorResponse, # type: ignore
114
+ object_=_response.json(),
115
+ ),
116
+ ),
117
+ )
118
+ if _response.status_code == 404:
119
+ raise NotFoundError(
120
+ headers=dict(_response.headers),
121
+ body=typing.cast(
122
+ ErrorResponse,
123
+ parse_obj_as(
124
+ type_=ErrorResponse, # type: ignore
125
+ object_=_response.json(),
126
+ ),
127
+ ),
128
+ )
129
+ if _response.status_code == 500:
130
+ raise InternalServerError(
131
+ headers=dict(_response.headers),
132
+ body=typing.cast(
133
+ ErrorResponse,
134
+ parse_obj_as(
135
+ type_=ErrorResponse, # type: ignore
136
+ object_=_response.json(),
137
+ ),
138
+ ),
139
+ )
140
+ _response_json = _response.json()
141
+ except JSONDecodeError:
142
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
143
+ except ValidationError as e:
144
+ raise ParsingError(
145
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
146
+ )
147
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
148
+
149
+ def create_customer(
150
+ self,
151
+ *,
152
+ merchant_customer_reference: typing.Optional[str] = OMIT,
153
+ first_name: typing.Optional[str] = OMIT,
154
+ last_name: typing.Optional[str] = OMIT,
155
+ country_code: typing.Optional[str] = OMIT,
156
+ mobile_number: typing.Optional[str] = OMIT,
157
+ email_id: typing.Optional[str] = OMIT,
158
+ billing_address: typing.Optional[Address] = OMIT,
159
+ shipping_address: typing.Optional[Address] = OMIT,
160
+ gstin: typing.Optional[str] = OMIT,
161
+ merchant_metadata: typing.Optional[MerchantMetadata] = OMIT,
162
+ request_options: typing.Optional[RequestOptions] = None,
163
+ ) -> HttpResponse[CustomerResponse]:
164
+ """
165
+ Create a new customer profile in the Pine Labs Online system. The customer profile
166
+ can be used for tokenization and recurring payment operations.
167
+
168
+ Parameters
169
+ ----------
170
+ merchant_customer_reference : typing.Optional[str]
171
+ Unique customer reference assigned by the merchant.
172
+
173
+ first_name : typing.Optional[str]
174
+ Customer's first name.
175
+
176
+ last_name : typing.Optional[str]
177
+ Customer's last name.
178
+
179
+ country_code : typing.Optional[str]
180
+ Country code of the registered mobile number. Defaults to 91.
181
+
182
+ mobile_number : typing.Optional[str]
183
+ Customer's mobile number.
184
+
185
+ email_id : typing.Optional[str]
186
+ Customer's email address.
187
+
188
+ billing_address : typing.Optional[Address]
189
+
190
+ shipping_address : typing.Optional[Address]
191
+
192
+ gstin : typing.Optional[str]
193
+ Customer's unique GSTIN (Goods and Services Tax Identification Number).
194
+
195
+ merchant_metadata : typing.Optional[MerchantMetadata]
196
+
197
+ request_options : typing.Optional[RequestOptions]
198
+ Request-specific configuration.
199
+
200
+ Returns
201
+ -------
202
+ HttpResponse[CustomerResponse]
203
+ Customer created successfully.
204
+ """
205
+ _response = self._client_wrapper.httpx_client.request(
206
+ "api/v1/customer",
207
+ method="POST",
208
+ json={
209
+ "merchant_customer_reference": merchant_customer_reference,
210
+ "first_name": first_name,
211
+ "last_name": last_name,
212
+ "country_code": country_code,
213
+ "mobile_number": mobile_number,
214
+ "email_id": email_id,
215
+ "billing_address": convert_and_respect_annotation_metadata(
216
+ object_=billing_address, annotation=Address, direction="write"
217
+ ),
218
+ "shipping_address": convert_and_respect_annotation_metadata(
219
+ object_=shipping_address, annotation=Address, direction="write"
220
+ ),
221
+ "gstin": gstin,
222
+ "merchant_metadata": merchant_metadata,
223
+ },
224
+ headers={
225
+ "content-type": "application/json",
226
+ },
227
+ request_options=request_options,
228
+ omit=OMIT,
229
+ )
230
+ try:
231
+ if 200 <= _response.status_code < 300:
232
+ _data = typing.cast(
233
+ CustomerResponse,
234
+ parse_obj_as(
235
+ type_=CustomerResponse, # type: ignore
236
+ object_=_response.json(),
237
+ ),
238
+ )
239
+ return HttpResponse(response=_response, data=_data)
240
+ if _response.status_code == 400:
241
+ raise BadRequestError(
242
+ headers=dict(_response.headers),
243
+ body=typing.cast(
244
+ typing.Any,
245
+ parse_obj_as(
246
+ type_=typing.Any, # type: ignore
247
+ object_=_response.json(),
248
+ ),
249
+ ),
250
+ )
251
+ if _response.status_code == 401:
252
+ raise UnauthorizedError(
253
+ headers=dict(_response.headers),
254
+ body=typing.cast(
255
+ ErrorResponse,
256
+ parse_obj_as(
257
+ type_=ErrorResponse, # type: ignore
258
+ object_=_response.json(),
259
+ ),
260
+ ),
261
+ )
262
+ if _response.status_code == 403:
263
+ raise ForbiddenError(
264
+ headers=dict(_response.headers),
265
+ body=typing.cast(
266
+ ErrorResponse,
267
+ parse_obj_as(
268
+ type_=ErrorResponse, # type: ignore
269
+ object_=_response.json(),
270
+ ),
271
+ ),
272
+ )
273
+ if _response.status_code == 500:
274
+ raise InternalServerError(
275
+ headers=dict(_response.headers),
276
+ body=typing.cast(
277
+ ErrorResponse,
278
+ parse_obj_as(
279
+ type_=ErrorResponse, # type: ignore
280
+ object_=_response.json(),
281
+ ),
282
+ ),
283
+ )
284
+ _response_json = _response.json()
285
+ except JSONDecodeError:
286
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
287
+ except ValidationError as e:
288
+ raise ParsingError(
289
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
290
+ )
291
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
292
+
293
+ def get_customer_by_id(
294
+ self, customer_id: str, *, request_options: typing.Optional[RequestOptions] = None
295
+ ) -> HttpResponse[CustomerResponse]:
296
+ """
297
+ Retrieve a customer profile by the unique customer ID.
298
+
299
+ Parameters
300
+ ----------
301
+ customer_id : str
302
+ Unique identifier of the customer in the Pine Labs Online database.
303
+
304
+ request_options : typing.Optional[RequestOptions]
305
+ Request-specific configuration.
306
+
307
+ Returns
308
+ -------
309
+ HttpResponse[CustomerResponse]
310
+ Customer details retrieved successfully.
311
+ """
312
+ _response = self._client_wrapper.httpx_client.request(
313
+ f"api/v1/customer/{encode_path_param(customer_id)}",
314
+ method="GET",
315
+ request_options=request_options,
316
+ )
317
+ try:
318
+ if 200 <= _response.status_code < 300:
319
+ _data = typing.cast(
320
+ CustomerResponse,
321
+ parse_obj_as(
322
+ type_=CustomerResponse, # type: ignore
323
+ object_=_response.json(),
324
+ ),
325
+ )
326
+ return HttpResponse(response=_response, data=_data)
327
+ if _response.status_code == 400:
328
+ raise BadRequestError(
329
+ headers=dict(_response.headers),
330
+ body=typing.cast(
331
+ typing.Any,
332
+ parse_obj_as(
333
+ type_=typing.Any, # type: ignore
334
+ object_=_response.json(),
335
+ ),
336
+ ),
337
+ )
338
+ if _response.status_code == 401:
339
+ raise UnauthorizedError(
340
+ headers=dict(_response.headers),
341
+ body=typing.cast(
342
+ ErrorResponse,
343
+ parse_obj_as(
344
+ type_=ErrorResponse, # type: ignore
345
+ object_=_response.json(),
346
+ ),
347
+ ),
348
+ )
349
+ if _response.status_code == 403:
350
+ raise ForbiddenError(
351
+ headers=dict(_response.headers),
352
+ body=typing.cast(
353
+ ErrorResponse,
354
+ parse_obj_as(
355
+ type_=ErrorResponse, # type: ignore
356
+ object_=_response.json(),
357
+ ),
358
+ ),
359
+ )
360
+ if _response.status_code == 404:
361
+ raise NotFoundError(
362
+ headers=dict(_response.headers),
363
+ body=typing.cast(
364
+ ErrorResponse,
365
+ parse_obj_as(
366
+ type_=ErrorResponse, # type: ignore
367
+ object_=_response.json(),
368
+ ),
369
+ ),
370
+ )
371
+ if _response.status_code == 500:
372
+ raise InternalServerError(
373
+ headers=dict(_response.headers),
374
+ body=typing.cast(
375
+ ErrorResponse,
376
+ parse_obj_as(
377
+ type_=ErrorResponse, # type: ignore
378
+ object_=_response.json(),
379
+ ),
380
+ ),
381
+ )
382
+ _response_json = _response.json()
383
+ except JSONDecodeError:
384
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
385
+ except ValidationError as e:
386
+ raise ParsingError(
387
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
388
+ )
389
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
390
+
391
+ def update_customer(
392
+ self,
393
+ customer_id: str,
394
+ *,
395
+ merchant_customer_reference: typing.Optional[str] = OMIT,
396
+ first_name: typing.Optional[str] = OMIT,
397
+ last_name: typing.Optional[str] = OMIT,
398
+ country_code: typing.Optional[str] = OMIT,
399
+ mobile_number: typing.Optional[str] = OMIT,
400
+ email_id: typing.Optional[str] = OMIT,
401
+ billing_address: typing.Optional[Address] = OMIT,
402
+ shipping_address: typing.Optional[Address] = OMIT,
403
+ status: typing.Optional[UpdateCustomerRequestStatus] = OMIT,
404
+ request_options: typing.Optional[RequestOptions] = None,
405
+ ) -> HttpResponse[CustomerResponse]:
406
+ """
407
+ Update an existing customer profile. All fields in the request body are optional;
408
+ only the provided fields will be updated.
409
+
410
+ Parameters
411
+ ----------
412
+ customer_id : str
413
+ Unique identifier of the customer in the Pine Labs Online database.
414
+
415
+ merchant_customer_reference : typing.Optional[str]
416
+ Unique customer reference assigned by the merchant.
417
+
418
+ first_name : typing.Optional[str]
419
+ Customer's first name.
420
+
421
+ last_name : typing.Optional[str]
422
+ Customer's last name.
423
+
424
+ country_code : typing.Optional[str]
425
+ Country code of the registered mobile number.
426
+
427
+ mobile_number : typing.Optional[str]
428
+ Customer's mobile number.
429
+
430
+ email_id : typing.Optional[str]
431
+ Customer's email address.
432
+
433
+ billing_address : typing.Optional[Address]
434
+
435
+ shipping_address : typing.Optional[Address]
436
+
437
+ status : typing.Optional[UpdateCustomerRequestStatus]
438
+ Customer status to set.
439
+
440
+ request_options : typing.Optional[RequestOptions]
441
+ Request-specific configuration.
442
+
443
+ Returns
444
+ -------
445
+ HttpResponse[CustomerResponse]
446
+ Customer updated successfully.
447
+ """
448
+ _response = self._client_wrapper.httpx_client.request(
449
+ f"api/v1/customer/{encode_path_param(customer_id)}",
450
+ method="PATCH",
451
+ json={
452
+ "merchant_customer_reference": merchant_customer_reference,
453
+ "first_name": first_name,
454
+ "last_name": last_name,
455
+ "country_code": country_code,
456
+ "mobile_number": mobile_number,
457
+ "email_id": email_id,
458
+ "billing_address": convert_and_respect_annotation_metadata(
459
+ object_=billing_address, annotation=Address, direction="write"
460
+ ),
461
+ "shipping_address": convert_and_respect_annotation_metadata(
462
+ object_=shipping_address, annotation=Address, direction="write"
463
+ ),
464
+ "status": status,
465
+ },
466
+ headers={
467
+ "content-type": "application/json",
468
+ },
469
+ request_options=request_options,
470
+ omit=OMIT,
471
+ )
472
+ try:
473
+ if 200 <= _response.status_code < 300:
474
+ _data = typing.cast(
475
+ CustomerResponse,
476
+ parse_obj_as(
477
+ type_=CustomerResponse, # type: ignore
478
+ object_=_response.json(),
479
+ ),
480
+ )
481
+ return HttpResponse(response=_response, data=_data)
482
+ if _response.status_code == 400:
483
+ raise BadRequestError(
484
+ headers=dict(_response.headers),
485
+ body=typing.cast(
486
+ typing.Any,
487
+ parse_obj_as(
488
+ type_=typing.Any, # type: ignore
489
+ object_=_response.json(),
490
+ ),
491
+ ),
492
+ )
493
+ if _response.status_code == 401:
494
+ raise UnauthorizedError(
495
+ headers=dict(_response.headers),
496
+ body=typing.cast(
497
+ ErrorResponse,
498
+ parse_obj_as(
499
+ type_=ErrorResponse, # type: ignore
500
+ object_=_response.json(),
501
+ ),
502
+ ),
503
+ )
504
+ if _response.status_code == 403:
505
+ raise ForbiddenError(
506
+ headers=dict(_response.headers),
507
+ body=typing.cast(
508
+ ErrorResponse,
509
+ parse_obj_as(
510
+ type_=ErrorResponse, # type: ignore
511
+ object_=_response.json(),
512
+ ),
513
+ ),
514
+ )
515
+ if _response.status_code == 404:
516
+ raise NotFoundError(
517
+ headers=dict(_response.headers),
518
+ body=typing.cast(
519
+ ErrorResponse,
520
+ parse_obj_as(
521
+ type_=ErrorResponse, # type: ignore
522
+ object_=_response.json(),
523
+ ),
524
+ ),
525
+ )
526
+ if _response.status_code == 500:
527
+ raise InternalServerError(
528
+ headers=dict(_response.headers),
529
+ body=typing.cast(
530
+ ErrorResponse,
531
+ parse_obj_as(
532
+ type_=ErrorResponse, # type: ignore
533
+ object_=_response.json(),
534
+ ),
535
+ ),
536
+ )
537
+ _response_json = _response.json()
538
+ except JSONDecodeError:
539
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
540
+ except ValidationError as e:
541
+ raise ParsingError(
542
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
543
+ )
544
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
545
+
546
+
547
+ class AsyncRawCustomersClient:
548
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
549
+ self._client_wrapper = client_wrapper
550
+
551
+ async def get_customer_details(
552
+ self,
553
+ *,
554
+ country_code: str,
555
+ mobile_number: str,
556
+ merchant_customer_reference: str,
557
+ request_options: typing.Optional[RequestOptions] = None,
558
+ ) -> AsyncHttpResponse[CustomerResponse]:
559
+ """
560
+ Retrieve customer details by querying with country code, mobile number, and merchant customer reference.
561
+ All three query parameters are required.
562
+
563
+ Parameters
564
+ ----------
565
+ country_code : str
566
+ Country code of the registered mobile number.
567
+
568
+ mobile_number : str
569
+ Customer's registered mobile number.
570
+
571
+ merchant_customer_reference : str
572
+ Unique customer reference assigned by the merchant.
573
+
574
+ request_options : typing.Optional[RequestOptions]
575
+ Request-specific configuration.
576
+
577
+ Returns
578
+ -------
579
+ AsyncHttpResponse[CustomerResponse]
580
+ Customer details retrieved successfully.
581
+ """
582
+ _response = await self._client_wrapper.httpx_client.request(
583
+ "api/v1/customer",
584
+ method="GET",
585
+ params={
586
+ "country_code": country_code,
587
+ "mobile_number": mobile_number,
588
+ "merchant_customer_reference": merchant_customer_reference,
589
+ },
590
+ request_options=request_options,
591
+ )
592
+ try:
593
+ if 200 <= _response.status_code < 300:
594
+ _data = typing.cast(
595
+ CustomerResponse,
596
+ parse_obj_as(
597
+ type_=CustomerResponse, # type: ignore
598
+ object_=_response.json(),
599
+ ),
600
+ )
601
+ return AsyncHttpResponse(response=_response, data=_data)
602
+ if _response.status_code == 400:
603
+ raise BadRequestError(
604
+ headers=dict(_response.headers),
605
+ body=typing.cast(
606
+ typing.Any,
607
+ parse_obj_as(
608
+ type_=typing.Any, # type: ignore
609
+ object_=_response.json(),
610
+ ),
611
+ ),
612
+ )
613
+ if _response.status_code == 401:
614
+ raise UnauthorizedError(
615
+ headers=dict(_response.headers),
616
+ body=typing.cast(
617
+ ErrorResponse,
618
+ parse_obj_as(
619
+ type_=ErrorResponse, # type: ignore
620
+ object_=_response.json(),
621
+ ),
622
+ ),
623
+ )
624
+ if _response.status_code == 403:
625
+ raise ForbiddenError(
626
+ headers=dict(_response.headers),
627
+ body=typing.cast(
628
+ ErrorResponse,
629
+ parse_obj_as(
630
+ type_=ErrorResponse, # type: ignore
631
+ object_=_response.json(),
632
+ ),
633
+ ),
634
+ )
635
+ if _response.status_code == 404:
636
+ raise NotFoundError(
637
+ headers=dict(_response.headers),
638
+ body=typing.cast(
639
+ ErrorResponse,
640
+ parse_obj_as(
641
+ type_=ErrorResponse, # type: ignore
642
+ object_=_response.json(),
643
+ ),
644
+ ),
645
+ )
646
+ if _response.status_code == 500:
647
+ raise InternalServerError(
648
+ headers=dict(_response.headers),
649
+ body=typing.cast(
650
+ ErrorResponse,
651
+ parse_obj_as(
652
+ type_=ErrorResponse, # type: ignore
653
+ object_=_response.json(),
654
+ ),
655
+ ),
656
+ )
657
+ _response_json = _response.json()
658
+ except JSONDecodeError:
659
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
660
+ except ValidationError as e:
661
+ raise ParsingError(
662
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
663
+ )
664
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
665
+
666
+ async def create_customer(
667
+ self,
668
+ *,
669
+ merchant_customer_reference: typing.Optional[str] = OMIT,
670
+ first_name: typing.Optional[str] = OMIT,
671
+ last_name: typing.Optional[str] = OMIT,
672
+ country_code: typing.Optional[str] = OMIT,
673
+ mobile_number: typing.Optional[str] = OMIT,
674
+ email_id: typing.Optional[str] = OMIT,
675
+ billing_address: typing.Optional[Address] = OMIT,
676
+ shipping_address: typing.Optional[Address] = OMIT,
677
+ gstin: typing.Optional[str] = OMIT,
678
+ merchant_metadata: typing.Optional[MerchantMetadata] = OMIT,
679
+ request_options: typing.Optional[RequestOptions] = None,
680
+ ) -> AsyncHttpResponse[CustomerResponse]:
681
+ """
682
+ Create a new customer profile in the Pine Labs Online system. The customer profile
683
+ can be used for tokenization and recurring payment operations.
684
+
685
+ Parameters
686
+ ----------
687
+ merchant_customer_reference : typing.Optional[str]
688
+ Unique customer reference assigned by the merchant.
689
+
690
+ first_name : typing.Optional[str]
691
+ Customer's first name.
692
+
693
+ last_name : typing.Optional[str]
694
+ Customer's last name.
695
+
696
+ country_code : typing.Optional[str]
697
+ Country code of the registered mobile number. Defaults to 91.
698
+
699
+ mobile_number : typing.Optional[str]
700
+ Customer's mobile number.
701
+
702
+ email_id : typing.Optional[str]
703
+ Customer's email address.
704
+
705
+ billing_address : typing.Optional[Address]
706
+
707
+ shipping_address : typing.Optional[Address]
708
+
709
+ gstin : typing.Optional[str]
710
+ Customer's unique GSTIN (Goods and Services Tax Identification Number).
711
+
712
+ merchant_metadata : typing.Optional[MerchantMetadata]
713
+
714
+ request_options : typing.Optional[RequestOptions]
715
+ Request-specific configuration.
716
+
717
+ Returns
718
+ -------
719
+ AsyncHttpResponse[CustomerResponse]
720
+ Customer created successfully.
721
+ """
722
+ _response = await self._client_wrapper.httpx_client.request(
723
+ "api/v1/customer",
724
+ method="POST",
725
+ json={
726
+ "merchant_customer_reference": merchant_customer_reference,
727
+ "first_name": first_name,
728
+ "last_name": last_name,
729
+ "country_code": country_code,
730
+ "mobile_number": mobile_number,
731
+ "email_id": email_id,
732
+ "billing_address": convert_and_respect_annotation_metadata(
733
+ object_=billing_address, annotation=Address, direction="write"
734
+ ),
735
+ "shipping_address": convert_and_respect_annotation_metadata(
736
+ object_=shipping_address, annotation=Address, direction="write"
737
+ ),
738
+ "gstin": gstin,
739
+ "merchant_metadata": merchant_metadata,
740
+ },
741
+ headers={
742
+ "content-type": "application/json",
743
+ },
744
+ request_options=request_options,
745
+ omit=OMIT,
746
+ )
747
+ try:
748
+ if 200 <= _response.status_code < 300:
749
+ _data = typing.cast(
750
+ CustomerResponse,
751
+ parse_obj_as(
752
+ type_=CustomerResponse, # type: ignore
753
+ object_=_response.json(),
754
+ ),
755
+ )
756
+ return AsyncHttpResponse(response=_response, data=_data)
757
+ if _response.status_code == 400:
758
+ raise BadRequestError(
759
+ headers=dict(_response.headers),
760
+ body=typing.cast(
761
+ typing.Any,
762
+ parse_obj_as(
763
+ type_=typing.Any, # type: ignore
764
+ object_=_response.json(),
765
+ ),
766
+ ),
767
+ )
768
+ if _response.status_code == 401:
769
+ raise UnauthorizedError(
770
+ headers=dict(_response.headers),
771
+ body=typing.cast(
772
+ ErrorResponse,
773
+ parse_obj_as(
774
+ type_=ErrorResponse, # type: ignore
775
+ object_=_response.json(),
776
+ ),
777
+ ),
778
+ )
779
+ if _response.status_code == 403:
780
+ raise ForbiddenError(
781
+ headers=dict(_response.headers),
782
+ body=typing.cast(
783
+ ErrorResponse,
784
+ parse_obj_as(
785
+ type_=ErrorResponse, # type: ignore
786
+ object_=_response.json(),
787
+ ),
788
+ ),
789
+ )
790
+ if _response.status_code == 500:
791
+ raise InternalServerError(
792
+ headers=dict(_response.headers),
793
+ body=typing.cast(
794
+ ErrorResponse,
795
+ parse_obj_as(
796
+ type_=ErrorResponse, # type: ignore
797
+ object_=_response.json(),
798
+ ),
799
+ ),
800
+ )
801
+ _response_json = _response.json()
802
+ except JSONDecodeError:
803
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
804
+ except ValidationError as e:
805
+ raise ParsingError(
806
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
807
+ )
808
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
809
+
810
+ async def get_customer_by_id(
811
+ self, customer_id: str, *, request_options: typing.Optional[RequestOptions] = None
812
+ ) -> AsyncHttpResponse[CustomerResponse]:
813
+ """
814
+ Retrieve a customer profile by the unique customer ID.
815
+
816
+ Parameters
817
+ ----------
818
+ customer_id : str
819
+ Unique identifier of the customer in the Pine Labs Online database.
820
+
821
+ request_options : typing.Optional[RequestOptions]
822
+ Request-specific configuration.
823
+
824
+ Returns
825
+ -------
826
+ AsyncHttpResponse[CustomerResponse]
827
+ Customer details retrieved successfully.
828
+ """
829
+ _response = await self._client_wrapper.httpx_client.request(
830
+ f"api/v1/customer/{encode_path_param(customer_id)}",
831
+ method="GET",
832
+ request_options=request_options,
833
+ )
834
+ try:
835
+ if 200 <= _response.status_code < 300:
836
+ _data = typing.cast(
837
+ CustomerResponse,
838
+ parse_obj_as(
839
+ type_=CustomerResponse, # type: ignore
840
+ object_=_response.json(),
841
+ ),
842
+ )
843
+ return AsyncHttpResponse(response=_response, data=_data)
844
+ if _response.status_code == 400:
845
+ raise BadRequestError(
846
+ headers=dict(_response.headers),
847
+ body=typing.cast(
848
+ typing.Any,
849
+ parse_obj_as(
850
+ type_=typing.Any, # type: ignore
851
+ object_=_response.json(),
852
+ ),
853
+ ),
854
+ )
855
+ if _response.status_code == 401:
856
+ raise UnauthorizedError(
857
+ headers=dict(_response.headers),
858
+ body=typing.cast(
859
+ ErrorResponse,
860
+ parse_obj_as(
861
+ type_=ErrorResponse, # type: ignore
862
+ object_=_response.json(),
863
+ ),
864
+ ),
865
+ )
866
+ if _response.status_code == 403:
867
+ raise ForbiddenError(
868
+ headers=dict(_response.headers),
869
+ body=typing.cast(
870
+ ErrorResponse,
871
+ parse_obj_as(
872
+ type_=ErrorResponse, # type: ignore
873
+ object_=_response.json(),
874
+ ),
875
+ ),
876
+ )
877
+ if _response.status_code == 404:
878
+ raise NotFoundError(
879
+ headers=dict(_response.headers),
880
+ body=typing.cast(
881
+ ErrorResponse,
882
+ parse_obj_as(
883
+ type_=ErrorResponse, # type: ignore
884
+ object_=_response.json(),
885
+ ),
886
+ ),
887
+ )
888
+ if _response.status_code == 500:
889
+ raise InternalServerError(
890
+ headers=dict(_response.headers),
891
+ body=typing.cast(
892
+ ErrorResponse,
893
+ parse_obj_as(
894
+ type_=ErrorResponse, # type: ignore
895
+ object_=_response.json(),
896
+ ),
897
+ ),
898
+ )
899
+ _response_json = _response.json()
900
+ except JSONDecodeError:
901
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
902
+ except ValidationError as e:
903
+ raise ParsingError(
904
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
905
+ )
906
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
907
+
908
+ async def update_customer(
909
+ self,
910
+ customer_id: str,
911
+ *,
912
+ merchant_customer_reference: typing.Optional[str] = OMIT,
913
+ first_name: typing.Optional[str] = OMIT,
914
+ last_name: typing.Optional[str] = OMIT,
915
+ country_code: typing.Optional[str] = OMIT,
916
+ mobile_number: typing.Optional[str] = OMIT,
917
+ email_id: typing.Optional[str] = OMIT,
918
+ billing_address: typing.Optional[Address] = OMIT,
919
+ shipping_address: typing.Optional[Address] = OMIT,
920
+ status: typing.Optional[UpdateCustomerRequestStatus] = OMIT,
921
+ request_options: typing.Optional[RequestOptions] = None,
922
+ ) -> AsyncHttpResponse[CustomerResponse]:
923
+ """
924
+ Update an existing customer profile. All fields in the request body are optional;
925
+ only the provided fields will be updated.
926
+
927
+ Parameters
928
+ ----------
929
+ customer_id : str
930
+ Unique identifier of the customer in the Pine Labs Online database.
931
+
932
+ merchant_customer_reference : typing.Optional[str]
933
+ Unique customer reference assigned by the merchant.
934
+
935
+ first_name : typing.Optional[str]
936
+ Customer's first name.
937
+
938
+ last_name : typing.Optional[str]
939
+ Customer's last name.
940
+
941
+ country_code : typing.Optional[str]
942
+ Country code of the registered mobile number.
943
+
944
+ mobile_number : typing.Optional[str]
945
+ Customer's mobile number.
946
+
947
+ email_id : typing.Optional[str]
948
+ Customer's email address.
949
+
950
+ billing_address : typing.Optional[Address]
951
+
952
+ shipping_address : typing.Optional[Address]
953
+
954
+ status : typing.Optional[UpdateCustomerRequestStatus]
955
+ Customer status to set.
956
+
957
+ request_options : typing.Optional[RequestOptions]
958
+ Request-specific configuration.
959
+
960
+ Returns
961
+ -------
962
+ AsyncHttpResponse[CustomerResponse]
963
+ Customer updated successfully.
964
+ """
965
+ _response = await self._client_wrapper.httpx_client.request(
966
+ f"api/v1/customer/{encode_path_param(customer_id)}",
967
+ method="PATCH",
968
+ json={
969
+ "merchant_customer_reference": merchant_customer_reference,
970
+ "first_name": first_name,
971
+ "last_name": last_name,
972
+ "country_code": country_code,
973
+ "mobile_number": mobile_number,
974
+ "email_id": email_id,
975
+ "billing_address": convert_and_respect_annotation_metadata(
976
+ object_=billing_address, annotation=Address, direction="write"
977
+ ),
978
+ "shipping_address": convert_and_respect_annotation_metadata(
979
+ object_=shipping_address, annotation=Address, direction="write"
980
+ ),
981
+ "status": status,
982
+ },
983
+ headers={
984
+ "content-type": "application/json",
985
+ },
986
+ request_options=request_options,
987
+ omit=OMIT,
988
+ )
989
+ try:
990
+ if 200 <= _response.status_code < 300:
991
+ _data = typing.cast(
992
+ CustomerResponse,
993
+ parse_obj_as(
994
+ type_=CustomerResponse, # type: ignore
995
+ object_=_response.json(),
996
+ ),
997
+ )
998
+ return AsyncHttpResponse(response=_response, data=_data)
999
+ if _response.status_code == 400:
1000
+ raise BadRequestError(
1001
+ headers=dict(_response.headers),
1002
+ body=typing.cast(
1003
+ typing.Any,
1004
+ parse_obj_as(
1005
+ type_=typing.Any, # type: ignore
1006
+ object_=_response.json(),
1007
+ ),
1008
+ ),
1009
+ )
1010
+ if _response.status_code == 401:
1011
+ raise UnauthorizedError(
1012
+ headers=dict(_response.headers),
1013
+ body=typing.cast(
1014
+ ErrorResponse,
1015
+ parse_obj_as(
1016
+ type_=ErrorResponse, # type: ignore
1017
+ object_=_response.json(),
1018
+ ),
1019
+ ),
1020
+ )
1021
+ if _response.status_code == 403:
1022
+ raise ForbiddenError(
1023
+ headers=dict(_response.headers),
1024
+ body=typing.cast(
1025
+ ErrorResponse,
1026
+ parse_obj_as(
1027
+ type_=ErrorResponse, # type: ignore
1028
+ object_=_response.json(),
1029
+ ),
1030
+ ),
1031
+ )
1032
+ if _response.status_code == 404:
1033
+ raise NotFoundError(
1034
+ headers=dict(_response.headers),
1035
+ body=typing.cast(
1036
+ ErrorResponse,
1037
+ parse_obj_as(
1038
+ type_=ErrorResponse, # type: ignore
1039
+ object_=_response.json(),
1040
+ ),
1041
+ ),
1042
+ )
1043
+ if _response.status_code == 500:
1044
+ raise InternalServerError(
1045
+ headers=dict(_response.headers),
1046
+ body=typing.cast(
1047
+ ErrorResponse,
1048
+ parse_obj_as(
1049
+ type_=ErrorResponse, # type: ignore
1050
+ object_=_response.json(),
1051
+ ),
1052
+ ),
1053
+ )
1054
+ _response_json = _response.json()
1055
+ except JSONDecodeError:
1056
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
1057
+ except ValidationError as e:
1058
+ raise ParsingError(
1059
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
1060
+ )
1061
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)