orb-billing 0.2.0 → 0.3.1

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 (488) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +67 -0
  3. data/README.md +63 -53
  4. data/lib/orb/client.rb +4 -4
  5. data/lib/orb/errors.rb +9 -9
  6. data/lib/orb/file_part.rb +55 -0
  7. data/lib/orb/internal/page.rb +7 -11
  8. data/lib/orb/internal/transport/base_client.rb +10 -10
  9. data/lib/orb/internal/transport/pooled_net_requester.rb +2 -2
  10. data/lib/orb/internal/type/array_of.rb +11 -0
  11. data/lib/orb/internal/type/base_model.rb +33 -23
  12. data/lib/orb/internal/type/base_page.rb +9 -1
  13. data/lib/orb/internal/type/boolean.rb +14 -11
  14. data/lib/orb/internal/type/converter.rb +4 -1
  15. data/lib/orb/internal/type/enum.rb +19 -16
  16. data/lib/orb/internal/type/{io_like.rb → file_input.rb} +33 -15
  17. data/lib/orb/internal/type/hash_of.rb +11 -0
  18. data/lib/orb/internal/type/request_parameters.rb +3 -10
  19. data/lib/orb/internal/type/union.rb +10 -1
  20. data/lib/orb/internal/type/unknown.rb +14 -11
  21. data/lib/orb/internal/util.rb +88 -64
  22. data/lib/orb/internal.rb +0 -1
  23. data/lib/orb/models/alert.rb +68 -71
  24. data/lib/orb/models/alert_create_for_customer_params.rb +20 -25
  25. data/lib/orb/models/alert_create_for_external_customer_params.rb +20 -25
  26. data/lib/orb/models/alert_create_for_subscription_params.rb +20 -25
  27. data/lib/orb/models/alert_disable_params.rb +5 -9
  28. data/lib/orb/models/alert_enable_params.rb +5 -9
  29. data/lib/orb/models/alert_list_params.rb +26 -36
  30. data/lib/orb/models/alert_retrieve_params.rb +3 -8
  31. data/lib/orb/models/alert_update_params.rb +14 -18
  32. data/lib/orb/models/amount_discount.rb +14 -14
  33. data/lib/orb/models/billable_metric.rb +23 -20
  34. data/lib/orb/models/billing_cycle_relative_date.rb +2 -5
  35. data/lib/orb/models/coupon.rb +28 -21
  36. data/lib/orb/models/coupon_archive_params.rb +3 -8
  37. data/lib/orb/models/coupon_create_params.rb +29 -34
  38. data/lib/orb/models/coupon_fetch_params.rb +3 -8
  39. data/lib/orb/models/coupon_list_params.rb +17 -17
  40. data/lib/orb/models/coupons/subscription_list_params.rb +12 -15
  41. data/lib/orb/models/credit_note.rb +100 -166
  42. data/lib/orb/models/credit_note_create_params.rb +15 -23
  43. data/lib/orb/models/credit_note_fetch_params.rb +3 -8
  44. data/lib/orb/models/credit_note_list_params.rb +20 -30
  45. data/lib/orb/models/customer.rb +224 -271
  46. data/lib/orb/models/customer_create_params.rb +216 -257
  47. data/lib/orb/models/customer_delete_params.rb +3 -8
  48. data/lib/orb/models/customer_fetch_by_external_id_params.rb +3 -8
  49. data/lib/orb/models/customer_fetch_params.rb +3 -8
  50. data/lib/orb/models/customer_list_params.rb +20 -30
  51. data/lib/orb/models/customer_sync_payment_methods_from_gateway_by_external_customer_id_params.rb +3 -8
  52. data/lib/orb/models/customer_sync_payment_methods_from_gateway_params.rb +3 -8
  53. data/lib/orb/models/customer_update_by_external_id_params.rb +212 -257
  54. data/lib/orb/models/customer_update_params.rb +212 -255
  55. data/lib/orb/models/customers/balance_transaction_create_params.rb +11 -16
  56. data/lib/orb/models/customers/balance_transaction_create_response.rb +33 -51
  57. data/lib/orb/models/customers/balance_transaction_list_params.rb +20 -30
  58. data/lib/orb/models/customers/balance_transaction_list_response.rb +33 -51
  59. data/lib/orb/models/customers/cost_list_by_external_id_params.rb +17 -17
  60. data/lib/orb/models/customers/cost_list_by_external_id_response.rb +23 -27
  61. data/lib/orb/models/customers/cost_list_params.rb +17 -17
  62. data/lib/orb/models/customers/cost_list_response.rb +23 -27
  63. data/lib/orb/models/customers/credit_list_by_external_id_params.rb +18 -22
  64. data/lib/orb/models/customers/credit_list_by_external_id_response.rb +10 -17
  65. data/lib/orb/models/customers/credit_list_params.rb +18 -22
  66. data/lib/orb/models/customers/credit_list_response.rb +10 -17
  67. data/lib/orb/models/customers/credits/ledger_create_entry_by_external_id_params.rb +64 -66
  68. data/lib/orb/models/customers/credits/ledger_create_entry_by_external_id_response.rb +384 -491
  69. data/lib/orb/models/customers/credits/ledger_create_entry_params.rb +63 -66
  70. data/lib/orb/models/customers/credits/ledger_create_entry_response.rb +384 -498
  71. data/lib/orb/models/customers/credits/ledger_list_by_external_id_params.rb +33 -48
  72. data/lib/orb/models/customers/credits/ledger_list_by_external_id_response.rb +384 -494
  73. data/lib/orb/models/customers/credits/ledger_list_params.rb +32 -48
  74. data/lib/orb/models/customers/credits/ledger_list_response.rb +383 -501
  75. data/lib/orb/models/customers/credits/top_up_create_by_external_id_params.rb +47 -50
  76. data/lib/orb/models/customers/credits/top_up_create_by_external_id_response.rb +43 -46
  77. data/lib/orb/models/customers/credits/top_up_create_params.rb +46 -50
  78. data/lib/orb/models/customers/credits/top_up_create_response.rb +42 -46
  79. data/lib/orb/models/customers/credits/top_up_delete_by_external_id_params.rb +4 -9
  80. data/lib/orb/models/customers/credits/top_up_delete_params.rb +4 -9
  81. data/lib/orb/models/customers/credits/top_up_list_by_external_id_params.rb +12 -15
  82. data/lib/orb/models/customers/credits/top_up_list_by_external_id_response.rb +43 -46
  83. data/lib/orb/models/customers/credits/top_up_list_params.rb +12 -15
  84. data/lib/orb/models/customers/credits/top_up_list_response.rb +42 -46
  85. data/lib/orb/models/dimensional_price_group.rb +21 -15
  86. data/lib/orb/models/dimensional_price_group_create_params.rb +17 -23
  87. data/lib/orb/models/dimensional_price_group_list_params.rb +12 -15
  88. data/lib/orb/models/dimensional_price_group_retrieve_params.rb +3 -8
  89. data/lib/orb/models/dimensional_price_groups/external_dimensional_price_group_id_retrieve_params.rb +3 -8
  90. data/lib/orb/models/dimensional_price_groups.rb +3 -7
  91. data/lib/orb/models/discount.rb +2 -3
  92. data/lib/orb/models/evaluate_price_group.rb +8 -11
  93. data/lib/orb/models/event_deprecate_params.rb +3 -8
  94. data/lib/orb/models/event_deprecate_response.rb +2 -6
  95. data/lib/orb/models/event_ingest_params.rb +33 -27
  96. data/lib/orb/models/event_ingest_response.rb +23 -24
  97. data/lib/orb/models/event_search_params.rb +15 -11
  98. data/lib/orb/models/event_search_response.rb +27 -22
  99. data/lib/orb/models/event_update_params.rb +19 -13
  100. data/lib/orb/models/event_update_response.rb +2 -6
  101. data/lib/orb/models/events/backfill_close_params.rb +3 -8
  102. data/lib/orb/models/events/backfill_close_response.rb +34 -39
  103. data/lib/orb/models/events/backfill_create_params.rb +28 -32
  104. data/lib/orb/models/events/backfill_create_response.rb +34 -39
  105. data/lib/orb/models/events/backfill_fetch_params.rb +3 -8
  106. data/lib/orb/models/events/backfill_fetch_response.rb +34 -39
  107. data/lib/orb/models/events/backfill_list_params.rb +12 -15
  108. data/lib/orb/models/events/backfill_list_response.rb +34 -39
  109. data/lib/orb/models/events/backfill_revert_params.rb +3 -8
  110. data/lib/orb/models/events/backfill_revert_response.rb +34 -39
  111. data/lib/orb/models/events/event_volumes.rb +11 -17
  112. data/lib/orb/models/events/volume_list_params.rb +19 -22
  113. data/lib/orb/models/invoice.rb +619 -681
  114. data/lib/orb/models/invoice_create_params.rb +52 -61
  115. data/lib/orb/models/invoice_fetch_params.rb +3 -8
  116. data/lib/orb/models/invoice_fetch_upcoming_params.rb +4 -9
  117. data/lib/orb/models/invoice_fetch_upcoming_response.rb +618 -669
  118. data/lib/orb/models/invoice_issue_params.rb +10 -14
  119. data/lib/orb/models/invoice_level_discount.rb +2 -3
  120. data/lib/orb/models/invoice_line_item_create_params.rb +19 -14
  121. data/lib/orb/models/invoice_line_item_create_response.rb +281 -306
  122. data/lib/orb/models/invoice_list_params.rb +51 -66
  123. data/lib/orb/models/invoice_mark_paid_params.rb +9 -11
  124. data/lib/orb/models/invoice_pay_params.rb +3 -8
  125. data/lib/orb/models/invoice_update_params.rb +9 -9
  126. data/lib/orb/models/invoice_void_params.rb +3 -8
  127. data/lib/orb/models/item.rb +14 -25
  128. data/lib/orb/models/item_create_params.rb +5 -9
  129. data/lib/orb/models/item_fetch_params.rb +3 -8
  130. data/lib/orb/models/item_list_params.rb +12 -15
  131. data/lib/orb/models/item_update_params.rb +10 -22
  132. data/lib/orb/models/metric_create_params.rb +17 -13
  133. data/lib/orb/models/metric_fetch_params.rb +3 -8
  134. data/lib/orb/models/metric_list_params.rb +20 -30
  135. data/lib/orb/models/metric_update_params.rb +9 -9
  136. data/lib/orb/models/pagination_metadata.rb +3 -7
  137. data/lib/orb/models/percentage_discount.rb +15 -14
  138. data/lib/orb/models/plan.rb +259 -291
  139. data/lib/orb/models/plan_create_params.rb +2070 -2466
  140. data/lib/orb/models/plan_fetch_params.rb +3 -8
  141. data/lib/orb/models/plan_list_params.rb +25 -42
  142. data/lib/orb/models/plan_update_params.rb +12 -10
  143. data/lib/orb/models/plans/external_plan_id_fetch_params.rb +3 -8
  144. data/lib/orb/models/plans/external_plan_id_update_params.rb +12 -10
  145. data/lib/orb/models/price.rb +3842 -5005
  146. data/lib/orb/models/price_create_params.rb +203 -244
  147. data/lib/orb/models/price_evaluate_params.rb +21 -30
  148. data/lib/orb/models/price_evaluate_response.rb +2 -6
  149. data/lib/orb/models/price_fetch_params.rb +3 -8
  150. data/lib/orb/models/price_list_params.rb +12 -15
  151. data/lib/orb/models/price_update_params.rb +9 -9
  152. data/lib/orb/models/prices/external_price_id_fetch_params.rb +3 -8
  153. data/lib/orb/models/prices/external_price_id_update_params.rb +9 -9
  154. data/lib/orb/models/subscription.rb +360 -405
  155. data/lib/orb/models/subscription_cancel_params.rb +16 -16
  156. data/lib/orb/models/subscription_cancel_response.rb +358 -399
  157. data/lib/orb/models/subscription_change_apply_params.rb +7 -10
  158. data/lib/orb/models/subscription_change_apply_response.rb +384 -418
  159. data/lib/orb/models/subscription_change_cancel_params.rb +3 -8
  160. data/lib/orb/models/subscription_change_cancel_response.rb +384 -417
  161. data/lib/orb/models/subscription_change_retrieve_params.rb +3 -8
  162. data/lib/orb/models/subscription_change_retrieve_response.rb +385 -417
  163. data/lib/orb/models/subscription_create_params.rb +4735 -5417
  164. data/lib/orb/models/subscription_create_response.rb +358 -399
  165. data/lib/orb/models/subscription_fetch_costs_params.rb +17 -17
  166. data/lib/orb/models/subscription_fetch_costs_response.rb +23 -27
  167. data/lib/orb/models/subscription_fetch_params.rb +3 -8
  168. data/lib/orb/models/subscription_fetch_schedule_params.rb +20 -30
  169. data/lib/orb/models/subscription_fetch_schedule_response.rb +15 -17
  170. data/lib/orb/models/subscription_fetch_usage_params.rb +32 -43
  171. data/lib/orb/models/subscription_list_params.rb +28 -41
  172. data/lib/orb/models/subscription_price_intervals_params.rb +2560 -3040
  173. data/lib/orb/models/subscription_price_intervals_response.rb +361 -399
  174. data/lib/orb/models/subscription_schedule_plan_change_params.rb +4728 -5411
  175. data/lib/orb/models/subscription_schedule_plan_change_response.rb +361 -398
  176. data/lib/orb/models/subscription_trigger_phase_params.rb +12 -10
  177. data/lib/orb/models/subscription_trigger_phase_response.rb +360 -399
  178. data/lib/orb/models/subscription_unschedule_cancellation_params.rb +3 -8
  179. data/lib/orb/models/subscription_unschedule_cancellation_response.rb +361 -398
  180. data/lib/orb/models/subscription_unschedule_fixed_fee_quantity_updates_params.rb +5 -9
  181. data/lib/orb/models/subscription_unschedule_fixed_fee_quantity_updates_response.rb +362 -396
  182. data/lib/orb/models/subscription_unschedule_pending_plan_changes_params.rb +3 -8
  183. data/lib/orb/models/subscription_unschedule_pending_plan_changes_response.rb +362 -396
  184. data/lib/orb/models/subscription_update_fixed_fee_quantity_params.rb +22 -33
  185. data/lib/orb/models/subscription_update_fixed_fee_quantity_response.rb +361 -398
  186. data/lib/orb/models/subscription_update_params.rb +21 -23
  187. data/lib/orb/models/subscription_update_trial_params.rb +15 -18
  188. data/lib/orb/models/subscription_update_trial_response.rb +360 -399
  189. data/lib/orb/models/subscription_usage.rb +37 -80
  190. data/lib/orb/models/subscriptions.rb +3 -7
  191. data/lib/orb/models/top_level_ping_params.rb +3 -8
  192. data/lib/orb/models/top_level_ping_response.rb +2 -6
  193. data/lib/orb/models/trial_discount.rb +16 -24
  194. data/lib/orb/models/usage_discount.rb +15 -14
  195. data/lib/orb/models.rb +220 -0
  196. data/lib/orb/request_options.rb +4 -6
  197. data/lib/orb/resources/alerts.rb +48 -17
  198. data/lib/orb/resources/coupons/subscriptions.rb +9 -2
  199. data/lib/orb/resources/coupons.rb +26 -8
  200. data/lib/orb/resources/credit_notes.rb +17 -4
  201. data/lib/orb/resources/customers/balance_transactions.rb +18 -3
  202. data/lib/orb/resources/customers/costs.rb +26 -8
  203. data/lib/orb/resources/customers/credits/ledger.rb +112 -32
  204. data/lib/orb/resources/customers/credits/top_ups.rb +67 -20
  205. data/lib/orb/resources/customers/credits.rb +28 -8
  206. data/lib/orb/resources/customers.rb +138 -39
  207. data/lib/orb/resources/dimensional_price_groups.rb +19 -4
  208. data/lib/orb/resources/events/backfills.rb +32 -9
  209. data/lib/orb/resources/events/volume.rb +14 -4
  210. data/lib/orb/resources/events.rb +40 -11
  211. data/lib/orb/resources/invoice_line_items.rb +16 -6
  212. data/lib/orb/resources/invoices.rb +77 -17
  213. data/lib/orb/resources/items.rb +10 -3
  214. data/lib/orb/resources/metrics.rb +33 -8
  215. data/lib/orb/resources/plans/external_plan_id.rb +10 -2
  216. data/lib/orb/resources/plans.rb +47 -11
  217. data/lib/orb/resources/prices/external_price_id.rb +9 -3
  218. data/lib/orb/resources/prices.rb +101 -26
  219. data/lib/orb/resources/subscription_changes.rb +5 -2
  220. data/lib/orb/resources/subscriptions.rb +292 -78
  221. data/lib/orb/version.rb +1 -1
  222. data/lib/orb.rb +2 -10
  223. data/rbi/{lib/orb → orb}/client.rbi +4 -4
  224. data/rbi/{lib/orb → orb}/errors.rbi +1 -1
  225. data/rbi/orb/file_part.rbi +34 -0
  226. data/rbi/{lib/orb → orb}/internal/transport/base_client.rbi +19 -5
  227. data/rbi/{lib/orb → orb}/internal/type/array_of.rbi +3 -0
  228. data/rbi/{lib/orb → orb}/internal/type/base_model.rbi +7 -1
  229. data/rbi/{lib/orb → orb}/internal/type/base_page.rbi +2 -0
  230. data/rbi/{lib/orb → orb}/internal/type/enum.rbi +3 -6
  231. data/rbi/{lib/orb/internal/type/io_like.rbi → orb/internal/type/file_input.rbi} +5 -2
  232. data/rbi/{lib/orb → orb}/internal/type/hash_of.rbi +3 -0
  233. data/rbi/{lib/orb → orb}/internal/type/request_parameters.rbi +1 -1
  234. data/rbi/{lib/orb → orb}/internal/type/union.rbi +3 -0
  235. data/rbi/{lib/orb → orb}/internal/util.rbi +28 -19
  236. data/rbi/{lib/orb → orb}/internal.rbi +0 -1
  237. data/rbi/{lib/orb → orb}/models/alert.rbi +28 -8
  238. data/rbi/{lib/orb → orb}/models/alert_create_for_customer_params.rbi +16 -6
  239. data/rbi/{lib/orb → orb}/models/alert_create_for_external_customer_params.rbi +16 -6
  240. data/rbi/{lib/orb → orb}/models/alert_create_for_subscription_params.rbi +16 -6
  241. data/rbi/{lib/orb → orb}/models/alert_disable_params.rbi +5 -2
  242. data/rbi/{lib/orb → orb}/models/alert_enable_params.rbi +5 -2
  243. data/rbi/{lib/orb → orb}/models/alert_list_params.rbi +6 -0
  244. data/rbi/{lib/orb → orb}/models/alert_update_params.rbi +11 -4
  245. data/rbi/{lib/orb → orb}/models/amount_discount.rbi +10 -4
  246. data/rbi/{lib/orb → orb}/models/billable_metric.rbi +16 -3
  247. data/rbi/{lib/orb → orb}/models/billing_cycle_relative_date.rbi +1 -1
  248. data/rbi/{lib/orb → orb}/models/coupon.rbi +10 -3
  249. data/rbi/{lib/orb → orb}/models/coupon_create_params.rbi +15 -12
  250. data/rbi/{lib/orb → orb}/models/coupon_list_params.rbi +13 -3
  251. data/rbi/{lib/orb → orb}/models/coupons/subscription_list_params.rbi +8 -2
  252. data/rbi/{lib/orb → orb}/models/credit_note.rbi +44 -12
  253. data/rbi/{lib/orb → orb}/models/credit_note_create_params.rbi +15 -6
  254. data/rbi/{lib/orb → orb}/models/credit_note_list_params.rbi +3 -0
  255. data/rbi/{lib/orb → orb}/models/customer.rbi +130 -11
  256. data/rbi/{lib/orb → orb}/models/customer_create_params.rbi +151 -17
  257. data/rbi/{lib/orb → orb}/models/customer_list_params.rbi +3 -0
  258. data/rbi/{lib/orb → orb}/models/customer_update_by_external_id_params.rbi +149 -17
  259. data/rbi/{lib/orb → orb}/models/customer_update_params.rbi +149 -17
  260. data/rbi/{lib/orb → orb}/models/customers/balance_transaction_create_params.rbi +8 -4
  261. data/rbi/{lib/orb → orb}/models/customers/balance_transaction_create_response.rbi +18 -8
  262. data/rbi/{lib/orb → orb}/models/customers/balance_transaction_list_params.rbi +3 -0
  263. data/rbi/{lib/orb → orb}/models/customers/balance_transaction_list_response.rbi +18 -8
  264. data/rbi/{lib/orb → orb}/models/customers/cost_list_by_external_id_params.rbi +9 -5
  265. data/rbi/orb/models/customers/cost_list_by_external_id_response.rbi +225 -0
  266. data/rbi/{lib/orb → orb}/models/customers/cost_list_params.rbi +9 -5
  267. data/rbi/orb/models/customers/cost_list_response.rbi +223 -0
  268. data/rbi/{lib/orb → orb}/models/customers/credit_list_by_external_id_params.rbi +13 -3
  269. data/rbi/{lib/orb → orb}/models/customers/credit_list_by_external_id_response.rbi +1 -2
  270. data/rbi/{lib/orb → orb}/models/customers/credit_list_params.rbi +13 -3
  271. data/rbi/{lib/orb → orb}/models/customers/credit_list_response.rbi +1 -2
  272. data/rbi/{lib/orb → orb}/models/customers/credits/ledger_create_entry_by_external_id_params.rbi +40 -18
  273. data/rbi/{lib/orb/models/customers/credits/ledger_create_entry_response.rbi → orb/models/customers/credits/ledger_create_entry_by_external_id_response.rbi} +157 -170
  274. data/rbi/{lib/orb → orb}/models/customers/credits/ledger_create_entry_params.rbi +40 -6
  275. data/rbi/{lib/orb/models/customers/credits/ledger_list_response.rbi → orb/models/customers/credits/ledger_create_entry_response.rbi} +149 -196
  276. data/rbi/{lib/orb → orb}/models/customers/credits/ledger_list_by_external_id_params.rbi +6 -16
  277. data/rbi/{lib/orb → orb}/models/customers/credits/ledger_list_by_external_id_response.rbi +148 -229
  278. data/rbi/{lib/orb → orb}/models/customers/credits/ledger_list_params.rbi +6 -4
  279. data/rbi/{lib/orb/models/customers/credits/ledger_create_entry_by_external_id_response.rbi → orb/models/customers/credits/ledger_list_response.rbi} +149 -343
  280. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_create_by_external_id_params.rbi +27 -10
  281. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_create_by_external_id_response.rbi +25 -10
  282. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_create_params.rbi +27 -4
  283. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_create_response.rbi +25 -10
  284. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_list_by_external_id_params.rbi +8 -2
  285. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_list_by_external_id_response.rbi +25 -10
  286. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_list_params.rbi +8 -2
  287. data/rbi/{lib/orb → orb}/models/customers/credits/top_up_list_response.rbi +25 -4
  288. data/rbi/{lib/orb → orb}/models/dimensional_price_group.rbi +11 -3
  289. data/rbi/{lib/orb → orb}/models/dimensional_price_group_create_params.rbi +4 -0
  290. data/rbi/{lib/orb → orb}/models/dimensional_price_group_list_params.rbi +8 -2
  291. data/rbi/{lib/orb → orb}/models/evaluate_price_group.rbi +8 -2
  292. data/rbi/{lib/orb → orb}/models/event_deprecate_response.rbi +4 -2
  293. data/rbi/{lib/orb → orb}/models/event_ingest_params.rbi +22 -5
  294. data/rbi/{lib/orb → orb}/models/event_ingest_response.rbi +15 -4
  295. data/rbi/{lib/orb → orb}/models/event_search_params.rbi +14 -2
  296. data/rbi/{lib/orb → orb}/models/event_search_response.rbi +14 -3
  297. data/rbi/{lib/orb → orb}/models/event_update_params.rbi +10 -3
  298. data/rbi/{lib/orb → orb}/models/event_update_response.rbi +4 -2
  299. data/rbi/{lib/orb → orb}/models/events/backfill_close_response.rbi +14 -2
  300. data/rbi/{lib/orb → orb}/models/events/backfill_create_params.rbi +18 -0
  301. data/rbi/{lib/orb → orb}/models/events/backfill_create_response.rbi +14 -2
  302. data/rbi/{lib/orb → orb}/models/events/backfill_fetch_response.rbi +14 -2
  303. data/rbi/{lib/orb → orb}/models/events/backfill_list_params.rbi +8 -2
  304. data/rbi/{lib/orb → orb}/models/events/backfill_list_response.rbi +14 -2
  305. data/rbi/{lib/orb → orb}/models/events/backfill_revert_response.rbi +14 -2
  306. data/rbi/{lib/orb → orb}/models/events/event_volumes.rbi +8 -4
  307. data/rbi/{lib/orb → orb}/models/events/volume_list_params.rbi +18 -2
  308. data/rbi/{lib/orb → orb}/models/invoice.rbi +513 -202
  309. data/rbi/{lib/orb → orb}/models/invoice_create_params.rbi +38 -6
  310. data/rbi/{lib/orb → orb}/models/invoice_fetch_upcoming_response.rbi +513 -216
  311. data/rbi/{lib/orb → orb}/models/invoice_issue_params.rbi +9 -2
  312. data/rbi/{lib/orb → orb}/models/invoice_line_item_create_params.rbi +16 -2
  313. data/rbi/{lib/orb → orb}/models/invoice_line_item_create_response.rbi +279 -182
  314. data/rbi/{lib/orb → orb}/models/invoice_list_params.rbi +9 -2
  315. data/rbi/{lib/orb → orb}/models/invoice_mark_paid_params.rbi +9 -2
  316. data/rbi/{lib/orb → orb}/models/invoice_update_params.rbi +7 -2
  317. data/rbi/{lib/orb → orb}/models/item.rbi +1 -2
  318. data/rbi/{lib/orb → orb}/models/item_create_params.rbi +5 -2
  319. data/rbi/{lib/orb → orb}/models/item_list_params.rbi +8 -2
  320. data/rbi/{lib/orb → orb}/models/item_update_params.rbi +1 -8
  321. data/rbi/{lib/orb → orb}/models/metric_create_params.rbi +15 -2
  322. data/rbi/{lib/orb → orb}/models/metric_list_params.rbi +3 -0
  323. data/rbi/{lib/orb → orb}/models/metric_update_params.rbi +7 -2
  324. data/rbi/{lib/orb → orb}/models/percentage_discount.rbi +11 -4
  325. data/rbi/{lib/orb → orb}/models/plan.rbi +207 -120
  326. data/rbi/{lib/orb → orb}/models/plan_create_params.rbi +1971 -2414
  327. data/rbi/{lib/orb → orb}/models/plan_list_params.rbi +5 -1
  328. data/rbi/{lib/orb → orb}/models/plan_update_params.rbi +11 -2
  329. data/rbi/{lib/orb → orb}/models/plans/external_plan_id_update_params.rbi +11 -2
  330. data/rbi/{lib/orb → orb}/models/price.rbi +2594 -2957
  331. data/rbi/{lib/orb → orb}/models/price_create_params.rbi +137 -53
  332. data/rbi/{lib/orb → orb}/models/price_evaluate_params.rbi +10 -0
  333. data/rbi/{lib/orb → orb}/models/price_list_params.rbi +8 -2
  334. data/rbi/{lib/orb → orb}/models/price_update_params.rbi +7 -2
  335. data/rbi/{lib/orb → orb}/models/prices/external_price_id_update_params.rbi +7 -2
  336. data/rbi/{lib/orb → orb}/models/subscription.rbi +292 -129
  337. data/rbi/{lib/orb → orb}/models/subscription_cancel_params.rbi +8 -5
  338. data/rbi/{lib/orb → orb}/models/subscription_cancel_response.rbi +305 -132
  339. data/rbi/{lib/orb → orb}/models/subscription_change_apply_params.rbi +7 -2
  340. data/rbi/{lib/orb → orb}/models/subscription_change_apply_response.rbi +317 -136
  341. data/rbi/{lib/orb → orb}/models/subscription_change_cancel_response.rbi +317 -136
  342. data/rbi/{lib/orb → orb}/models/subscription_change_retrieve_response.rbi +317 -136
  343. data/rbi/{lib/orb → orb}/models/subscription_create_params.rbi +4271 -4270
  344. data/rbi/{lib/orb → orb}/models/subscription_create_response.rbi +305 -132
  345. data/rbi/{lib/orb → orb}/models/subscription_fetch_costs_params.rbi +9 -5
  346. data/rbi/orb/models/subscription_fetch_costs_response.rbi +221 -0
  347. data/rbi/{lib/orb → orb}/models/subscription_fetch_schedule_params.rbi +3 -0
  348. data/rbi/{lib/orb → orb}/models/subscription_fetch_schedule_response.rbi +8 -2
  349. data/rbi/{lib/orb → orb}/models/subscription_fetch_usage_params.rbi +13 -4
  350. data/rbi/{lib/orb → orb}/models/subscription_list_params.rbi +4 -2
  351. data/rbi/{lib/orb → orb}/models/subscription_price_intervals_params.rbi +2354 -2317
  352. data/rbi/{lib/orb → orb}/models/subscription_price_intervals_response.rbi +305 -132
  353. data/rbi/{lib/orb → orb}/models/subscription_schedule_plan_change_params.rbi +4280 -3758
  354. data/rbi/{lib/orb → orb}/models/subscription_schedule_plan_change_response.rbi +305 -132
  355. data/rbi/{lib/orb → orb}/models/subscription_trigger_phase_params.rbi +10 -2
  356. data/rbi/{lib/orb → orb}/models/subscription_trigger_phase_response.rbi +305 -132
  357. data/rbi/{lib/orb → orb}/models/subscription_unschedule_cancellation_response.rbi +305 -132
  358. data/rbi/{lib/orb → orb}/models/subscription_unschedule_fixed_fee_quantity_updates_params.rbi +5 -2
  359. data/rbi/{lib/orb → orb}/models/subscription_unschedule_fixed_fee_quantity_updates_response.rbi +305 -138
  360. data/rbi/{lib/orb → orb}/models/subscription_unschedule_pending_plan_changes_response.rbi +305 -132
  361. data/rbi/{lib/orb → orb}/models/subscription_update_fixed_fee_quantity_params.rbi +11 -2
  362. data/rbi/{lib/orb → orb}/models/subscription_update_fixed_fee_quantity_response.rbi +305 -132
  363. data/rbi/{lib/orb → orb}/models/subscription_update_params.rbi +15 -0
  364. data/rbi/{lib/orb → orb}/models/subscription_update_trial_params.rbi +11 -5
  365. data/rbi/{lib/orb → orb}/models/subscription_update_trial_response.rbi +305 -132
  366. data/rbi/{lib/orb → orb}/models/subscription_usage.rbi +2 -16
  367. data/rbi/{lib/orb → orb}/models/trial_discount.rbi +5 -1
  368. data/rbi/{lib/orb → orb}/models/usage_discount.rbi +11 -3
  369. data/rbi/orb/models.rbi +220 -0
  370. data/rbi/{lib/orb → orb}/request_options.rbi +2 -0
  371. data/rbi/{lib/orb → orb}/resources/alerts.rbi +8 -14
  372. data/rbi/{lib/orb → orb}/resources/coupons/subscriptions.rbi +1 -1
  373. data/rbi/{lib/orb → orb}/resources/coupons.rbi +6 -18
  374. data/rbi/{lib/orb → orb}/resources/credit_notes.rbi +3 -9
  375. data/rbi/{lib/orb → orb}/resources/customers/balance_transactions.rbi +2 -2
  376. data/rbi/{lib/orb → orb}/resources/customers/costs.rbi +2 -2
  377. data/rbi/{lib/orb → orb}/resources/customers/credits/ledger.rbi +32 -32
  378. data/rbi/{lib/orb → orb}/resources/customers/credits/top_ups.rbi +6 -18
  379. data/rbi/{lib/orb → orb}/resources/customers/credits.rbi +2 -2
  380. data/rbi/{lib/orb → orb}/resources/customers.rbi +15 -45
  381. data/rbi/{lib/orb → orb}/resources/dimensional_price_groups/external_dimensional_price_group_id.rbi +1 -4
  382. data/rbi/{lib/orb → orb}/resources/dimensional_price_groups.rbi +3 -10
  383. data/rbi/{lib/orb → orb}/resources/events/backfills.rbi +5 -18
  384. data/rbi/{lib/orb → orb}/resources/events/volume.rbi +1 -1
  385. data/rbi/{lib/orb → orb}/resources/events.rbi +4 -10
  386. data/rbi/{lib/orb → orb}/resources/invoice_line_items.rbi +1 -1
  387. data/rbi/{lib/orb → orb}/resources/invoices.rbi +9 -34
  388. data/rbi/{lib/orb → orb}/resources/items.rbi +4 -17
  389. data/rbi/{lib/orb → orb}/resources/metrics.rbi +4 -10
  390. data/rbi/{lib/orb → orb}/resources/plans/external_plan_id.rbi +2 -8
  391. data/rbi/{lib/orb → orb}/resources/plans.rbi +29 -35
  392. data/rbi/orb/resources/prices/external_price_id.rbi +103 -0
  393. data/rbi/{lib/orb → orb}/resources/prices.rbi +117 -124
  394. data/rbi/{lib/orb → orb}/resources/subscription_changes.rbi +3 -9
  395. data/rbi/{lib/orb → orb}/resources/subscriptions.rbi +16 -32
  396. data/rbi/{lib/orb → orb}/resources/top_level.rbi +1 -4
  397. data/sig/orb/file_part.rbs +21 -0
  398. data/sig/orb/internal/transport/base_client.rbs +9 -3
  399. data/sig/orb/internal/type/array_of.rbs +2 -0
  400. data/sig/orb/internal/type/base_model.rbs +4 -0
  401. data/sig/orb/internal/type/enum.rbs +2 -2
  402. data/sig/orb/internal/type/{io_like.rbs → file_input.rbs} +1 -1
  403. data/sig/orb/internal/type/hash_of.rbs +2 -0
  404. data/sig/orb/internal/type/union.rbs +2 -0
  405. data/sig/orb/internal/util.rbs +16 -12
  406. data/sig/orb/models/coupon_create_params.rbs +9 -10
  407. data/sig/orb/models/customer_create_params.rbs +9 -10
  408. data/sig/orb/models/customer_update_by_external_id_params.rbs +9 -10
  409. data/sig/orb/models/customer_update_params.rbs +9 -10
  410. data/sig/orb/models/customers/credits/ledger_create_entry_by_external_id_response.rbs +113 -113
  411. data/sig/orb/models/customers/credits/ledger_create_entry_response.rbs +113 -113
  412. data/sig/orb/models/customers/credits/ledger_list_by_external_id_response.rbs +113 -113
  413. data/sig/orb/models/customers/credits/ledger_list_response.rbs +113 -113
  414. data/sig/orb/models/invoice.rbs +54 -54
  415. data/sig/orb/models/invoice_fetch_upcoming_response.rbs +54 -54
  416. data/sig/orb/models/invoice_line_item_create_response.rbs +54 -54
  417. data/sig/orb/models/plan.rbs +21 -21
  418. data/sig/orb/models/plan_create_params.rbs +653 -653
  419. data/sig/orb/models/price.rbs +1517 -1521
  420. data/sig/orb/models/subscription.rbs +34 -34
  421. data/sig/orb/models/subscription_cancel_response.rbs +34 -34
  422. data/sig/orb/models/subscription_change_apply_response.rbs +34 -34
  423. data/sig/orb/models/subscription_change_cancel_response.rbs +34 -34
  424. data/sig/orb/models/subscription_change_retrieve_response.rbs +34 -34
  425. data/sig/orb/models/subscription_create_params.rbs +1348 -1348
  426. data/sig/orb/models/subscription_create_response.rbs +34 -34
  427. data/sig/orb/models/subscription_price_intervals_params.rbs +767 -769
  428. data/sig/orb/models/subscription_price_intervals_response.rbs +34 -34
  429. data/sig/orb/models/subscription_schedule_plan_change_params.rbs +1348 -1348
  430. data/sig/orb/models/subscription_schedule_plan_change_response.rbs +34 -34
  431. data/sig/orb/models/subscription_trigger_phase_response.rbs +34 -34
  432. data/sig/orb/models/subscription_unschedule_cancellation_response.rbs +34 -34
  433. data/sig/orb/models/subscription_unschedule_fixed_fee_quantity_updates_response.rbs +34 -34
  434. data/sig/orb/models/subscription_unschedule_pending_plan_changes_response.rbs +34 -34
  435. data/sig/orb/models/subscription_update_fixed_fee_quantity_response.rbs +34 -34
  436. data/sig/orb/models/subscription_update_trial_response.rbs +34 -34
  437. data/sig/orb/models.rbs +215 -0
  438. metadata +230 -224
  439. data/rbi/lib/orb/models/customers/cost_list_by_external_id_response.rbi +0 -208
  440. data/rbi/lib/orb/models/customers/cost_list_response.rbi +0 -206
  441. data/rbi/lib/orb/models/subscription_fetch_costs_response.rbi +0 -204
  442. data/rbi/lib/orb/resources/prices/external_price_id.rbi +0 -106
  443. /data/rbi/{lib/orb → orb}/internal/page.rbi +0 -0
  444. /data/rbi/{lib/orb → orb}/internal/transport/pooled_net_requester.rbi +0 -0
  445. /data/rbi/{lib/orb → orb}/internal/type/boolean.rbi +0 -0
  446. /data/rbi/{lib/orb → orb}/internal/type/converter.rbi +0 -0
  447. /data/rbi/{lib/orb → orb}/internal/type/unknown.rbi +0 -0
  448. /data/rbi/{lib/orb → orb}/models/alert_retrieve_params.rbi +0 -0
  449. /data/rbi/{lib/orb → orb}/models/coupon_archive_params.rbi +0 -0
  450. /data/rbi/{lib/orb → orb}/models/coupon_fetch_params.rbi +0 -0
  451. /data/rbi/{lib/orb → orb}/models/credit_note_fetch_params.rbi +0 -0
  452. /data/rbi/{lib/orb → orb}/models/customer_delete_params.rbi +0 -0
  453. /data/rbi/{lib/orb → orb}/models/customer_fetch_by_external_id_params.rbi +0 -0
  454. /data/rbi/{lib/orb → orb}/models/customer_fetch_params.rbi +0 -0
  455. /data/rbi/{lib/orb → orb}/models/customer_sync_payment_methods_from_gateway_by_external_customer_id_params.rbi +0 -0
  456. /data/rbi/{lib/orb → orb}/models/customer_sync_payment_methods_from_gateway_params.rbi +0 -0
  457. /data/rbi/{lib/orb → orb}/models/customers/credits/top_up_delete_by_external_id_params.rbi +0 -0
  458. /data/rbi/{lib/orb → orb}/models/customers/credits/top_up_delete_params.rbi +0 -0
  459. /data/rbi/{lib/orb → orb}/models/dimensional_price_group_retrieve_params.rbi +0 -0
  460. /data/rbi/{lib/orb → orb}/models/dimensional_price_groups/external_dimensional_price_group_id_retrieve_params.rbi +0 -0
  461. /data/rbi/{lib/orb → orb}/models/dimensional_price_groups.rbi +0 -0
  462. /data/rbi/{lib/orb → orb}/models/discount.rbi +0 -0
  463. /data/rbi/{lib/orb → orb}/models/event_deprecate_params.rbi +0 -0
  464. /data/rbi/{lib/orb → orb}/models/events/backfill_close_params.rbi +0 -0
  465. /data/rbi/{lib/orb → orb}/models/events/backfill_fetch_params.rbi +0 -0
  466. /data/rbi/{lib/orb → orb}/models/events/backfill_revert_params.rbi +0 -0
  467. /data/rbi/{lib/orb → orb}/models/invoice_fetch_params.rbi +0 -0
  468. /data/rbi/{lib/orb → orb}/models/invoice_fetch_upcoming_params.rbi +0 -0
  469. /data/rbi/{lib/orb → orb}/models/invoice_level_discount.rbi +0 -0
  470. /data/rbi/{lib/orb → orb}/models/invoice_pay_params.rbi +0 -0
  471. /data/rbi/{lib/orb → orb}/models/invoice_void_params.rbi +0 -0
  472. /data/rbi/{lib/orb → orb}/models/item_fetch_params.rbi +0 -0
  473. /data/rbi/{lib/orb → orb}/models/metric_fetch_params.rbi +0 -0
  474. /data/rbi/{lib/orb → orb}/models/pagination_metadata.rbi +0 -0
  475. /data/rbi/{lib/orb → orb}/models/plan_fetch_params.rbi +0 -0
  476. /data/rbi/{lib/orb → orb}/models/plans/external_plan_id_fetch_params.rbi +0 -0
  477. /data/rbi/{lib/orb → orb}/models/price_evaluate_response.rbi +0 -0
  478. /data/rbi/{lib/orb → orb}/models/price_fetch_params.rbi +0 -0
  479. /data/rbi/{lib/orb → orb}/models/prices/external_price_id_fetch_params.rbi +0 -0
  480. /data/rbi/{lib/orb → orb}/models/subscription_change_cancel_params.rbi +0 -0
  481. /data/rbi/{lib/orb → orb}/models/subscription_change_retrieve_params.rbi +0 -0
  482. /data/rbi/{lib/orb → orb}/models/subscription_fetch_params.rbi +0 -0
  483. /data/rbi/{lib/orb → orb}/models/subscription_unschedule_cancellation_params.rbi +0 -0
  484. /data/rbi/{lib/orb → orb}/models/subscription_unschedule_pending_plan_changes_params.rbi +0 -0
  485. /data/rbi/{lib/orb → orb}/models/subscriptions.rbi +0 -0
  486. /data/rbi/{lib/orb → orb}/models/top_level_ping_params.rbi +0 -0
  487. /data/rbi/{lib/orb → orb}/models/top_level_ping_response.rbi +0 -0
  488. /data/rbi/{lib/orb → orb}/version.rbi +0 -0
@@ -3,19 +3,27 @@
3
3
  module Orb
4
4
  module Internal
5
5
  module Type
6
+ # @api private
7
+ #
6
8
  # @generic Elem
7
9
  #
8
10
  # This module provides a base implementation for paginated responses in the SDK.
9
11
  module BasePage
10
12
  # rubocop:disable Lint/UnusedMethodArgument
11
13
 
14
+ # @api public
15
+ #
12
16
  # @return [Boolean]
13
17
  def next_page? = (raise NotImplementedError)
14
18
 
19
+ # @api public
20
+ #
15
21
  # @raise [Orb::Errors::APIError]
16
- # @return [Orb::Internal::Type::BasePage]
22
+ # @return [self]
17
23
  def next_page = (raise NotImplementedError)
18
24
 
25
+ # @api public
26
+ #
19
27
  # @param blk [Proc]
20
28
  #
21
29
  # @yieldparam [generic<Elem>]
@@ -13,11 +13,15 @@ module Orb
13
13
 
14
14
  private_class_method :new
15
15
 
16
+ # @api public
17
+ #
16
18
  # @param other [Object]
17
19
  #
18
20
  # @return [Boolean]
19
21
  def self.===(other) = other == true || other == false
20
22
 
23
+ # @api public
24
+ #
21
25
  # @param other [Object]
22
26
  #
23
27
  # @return [Boolean]
@@ -42,17 +46,16 @@ module Orb
42
46
  value
43
47
  end
44
48
 
45
- # @!parse
46
- # # @api private
47
- # #
48
- # # @param value [Boolean, Object]
49
- # #
50
- # # @param state [Hash{Symbol=>Object}] .
51
- # #
52
- # # @option state [Boolean] :can_retry
53
- # #
54
- # # @return [Boolean, Object]
55
- # def dump(value, state:) = super
49
+ # @!method dump(value, state:)
50
+ # @api private
51
+ #
52
+ # @param value [Boolean, Object]
53
+ #
54
+ # @param state [Hash{Symbol=>Object}] .
55
+ #
56
+ # @option state [Boolean] :can_retry
57
+ #
58
+ # @return [Boolean, Object]
56
59
  end
57
60
  end
58
61
  end
@@ -43,7 +43,10 @@ module Orb
43
43
  value.string
44
44
  in Pathname | IO
45
45
  state[:can_retry] = false if value.is_a?(IO)
46
- Orb::Internal::Util::SerializationAdapter.new(value)
46
+ Orb::FilePart.new(value)
47
+ in Orb::FilePart
48
+ state[:can_retry] = false if value.content.is_a?(IO)
49
+ value
47
50
  else
48
51
  value
49
52
  end
@@ -42,18 +42,17 @@ module Orb
42
42
  # All of the valid Symbol values for this enum.
43
43
  #
44
44
  # @return [Array<NilClass, Boolean, Integer, Float, Symbol>]
45
- def values = (@values ||= constants.map { const_get(_1) })
45
+ def values = constants.map { const_get(_1) }
46
46
 
47
- # @api private
47
+ # @api public
48
48
  #
49
- # Guard against thread safety issues by instantiating `@values`.
50
- private def finalize! = values
51
-
52
49
  # @param other [Object]
53
50
  #
54
51
  # @return [Boolean]
55
52
  def ===(other) = values.include?(other)
56
53
 
54
+ # @api public
55
+ #
57
56
  # @param other [Object]
58
57
  #
59
58
  # @return [Boolean]
@@ -63,6 +62,11 @@ module Orb
63
62
  # rubocop:enable Style/CaseEquality
64
63
  end
65
64
 
65
+ # @api public
66
+ #
67
+ # @return [Integer]
68
+ def hash = values.to_set.hash
69
+
66
70
  # @api private
67
71
  #
68
72
  # Unlike with primitives, `Enum` additionally validates that the value is a member
@@ -92,17 +96,16 @@ module Orb
92
96
  end
93
97
  end
94
98
 
95
- # @!parse
96
- # # @api private
97
- # #
98
- # # @param value [Symbol, Object]
99
- # #
100
- # # @param state [Hash{Symbol=>Object}] .
101
- # #
102
- # # @option state [Boolean] :can_retry
103
- # #
104
- # # @return [Symbol, Object]
105
- # def dump(value, state:) = super
99
+ # @!method dump(value, state:)
100
+ # @api private
101
+ #
102
+ # @param value [Symbol, Object]
103
+ #
104
+ # @param state [Hash{Symbol=>Object}] .
105
+ #
106
+ # @option state [Boolean] :can_retry
107
+ #
108
+ # @return [Symbol, Object]
106
109
 
107
110
  # @api private
108
111
  #
@@ -7,28 +7,35 @@ module Orb
7
7
  #
8
8
  # @abstract
9
9
  #
10
- # Either `Pathname` or `StringIO`.
11
- class IOLike
10
+ # Either `Pathname` or `StringIO`, or `IO`, or `Orb::Internal::Type::FileInput`.
11
+ #
12
+ # Note: when `IO` is used, all retries are disabled, since many IO` streams are
13
+ # not rewindable.
14
+ class FileInput
12
15
  extend Orb::Internal::Type::Converter
13
16
 
14
17
  private_class_method :new
15
18
 
19
+ # @api public
20
+ #
16
21
  # @param other [Object]
17
22
  #
18
23
  # @return [Boolean]
19
24
  def self.===(other)
20
25
  case other
21
- in StringIO | Pathname | IO
26
+ in Pathname | StringIO | IO | String | Orb::FilePart
22
27
  true
23
28
  else
24
29
  false
25
30
  end
26
31
  end
27
32
 
33
+ # @api public
34
+ #
28
35
  # @param other [Object]
29
36
  #
30
37
  # @return [Boolean]
31
- def self.==(other) = other.is_a?(Class) && other <= Orb::Internal::Type::IOLike
38
+ def self.==(other) = other.is_a?(Class) && other <= Orb::Internal::Type::FileInput
32
39
 
33
40
  class << self
34
41
  # @api private
@@ -59,17 +66,28 @@ module Orb
59
66
  end
60
67
  end
61
68
 
62
- # @!parse
63
- # # @api private
64
- # #
65
- # # @param value [Pathname, StringIO, IO, String, Object]
66
- # #
67
- # # @param state [Hash{Symbol=>Object}] .
68
- # #
69
- # # @option state [Boolean] :can_retry
70
- # #
71
- # # @return [Pathname, StringIO, IO, String, Object]
72
- # def dump(value, state:) = super
69
+ # @api private
70
+ #
71
+ # @param value [Pathname, StringIO, IO, String, Object]
72
+ #
73
+ # @param state [Hash{Symbol=>Object}] .
74
+ #
75
+ # @option state [Boolean] :can_retry
76
+ #
77
+ # @return [Pathname, StringIO, IO, String, Object]
78
+ def dump(value, state:)
79
+ # rubocop:disable Lint/DuplicateBranch
80
+ case value
81
+ in IO
82
+ state[:can_retry] = false
83
+ in Orb::FilePart if value.content.is_a?(IO)
84
+ state[:can_retry] = false
85
+ else
86
+ end
87
+ # rubocop:enable Lint/DuplicateBranch
88
+
89
+ value
90
+ end
73
91
  end
74
92
  end
75
93
  end
@@ -28,8 +28,12 @@ module Orb
28
28
  # @option spec [Proc] :union
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
+ #
32
+ # @return [Orb::Internal::Type::HashOf]
31
33
  def self.[](...) = new(...)
32
34
 
35
+ # @api public
36
+ #
33
37
  # @param other [Object]
34
38
  #
35
39
  # @return [Boolean]
@@ -50,6 +54,8 @@ module Orb
50
54
  end
51
55
  end
52
56
 
57
+ # @api public
58
+ #
53
59
  # @param other [Object]
54
60
  #
55
61
  # @return [Boolean]
@@ -59,6 +65,11 @@ module Orb
59
65
  # rubocop:enable Layout/LineLength
60
66
  end
61
67
 
68
+ # @api public
69
+ #
70
+ # @return [Integer]
71
+ def hash = [self.class, item_type].hash
72
+
62
73
  # @api private
63
74
  #
64
75
  # @param value [Hash{Object=>Object}, Object]
@@ -12,9 +12,8 @@ module Orb
12
12
 
13
13
  # @param mod [Module]
14
14
  def self.included(mod)
15
- return unless mod <= Orb::Internal::Type::BaseModel
15
+ raise ArgumentError.new(mod) unless mod <= Orb::Internal::Type::BaseModel
16
16
 
17
- mod.extend(Orb::Internal::Type::RequestParameters::Converter)
18
17
  mod.optional(:request_options, Orb::RequestOptions)
19
18
  end
20
19
 
@@ -29,14 +28,8 @@ module Orb
29
28
  state = {can_retry: true}
30
29
  case (dumped = dump(params, state: state))
31
30
  in Hash
32
- options = Orb::Internal::Util.coerce_hash(dumped[:request_options])
33
- request_options =
34
- case [options, state.fetch(:can_retry)]
35
- in [Hash | nil, false]
36
- {**options.to_h, max_retries: 0}
37
- else
38
- options
39
- end
31
+ options = Orb::Internal::Util.coerce_hash!(dumped[:request_options]).to_h
32
+ request_options = state.fetch(:can_retry) ? options : {**options, max_retries: 0}
40
33
  [dumped.except(:request_options), request_options]
41
34
  else
42
35
  [dumped, nil]
@@ -58,7 +58,7 @@ module Orb
58
58
  #
59
59
  # @return [Array<Array(Symbol, Object)>]
60
60
  protected def derefed_variants
61
- @known_variants.map { |key, variant_fn| [key, variant_fn.call] }
61
+ known_variants.map { |key, variant_fn| [key, variant_fn.call] }
62
62
  end
63
63
 
64
64
  # All of the specified variants for this union.
@@ -127,6 +127,8 @@ module Orb
127
127
  # rubocop:disable Style/HashEachMethods
128
128
  # rubocop:disable Style/CaseEquality
129
129
 
130
+ # @api public
131
+ #
130
132
  # @param other [Object]
131
133
  #
132
134
  # @return [Boolean]
@@ -136,6 +138,8 @@ module Orb
136
138
  end
137
139
  end
138
140
 
141
+ # @api public
142
+ #
139
143
  # @param other [Object]
140
144
  #
141
145
  # @return [Boolean]
@@ -143,6 +147,11 @@ module Orb
143
147
  Orb::Internal::Type::Union === other && other.derefed_variants == derefed_variants
144
148
  end
145
149
 
150
+ # @api public
151
+ #
152
+ # @return [Integer]
153
+ def hash = variants.hash
154
+
146
155
  # @api private
147
156
  #
148
157
  # @param value [Object]
@@ -15,11 +15,15 @@ module Orb
15
15
 
16
16
  private_class_method :new
17
17
 
18
+ # @api public
19
+ #
18
20
  # @param other [Object]
19
21
  #
20
22
  # @return [Boolean]
21
23
  def self.===(other) = true
22
24
 
25
+ # @api public
26
+ #
23
27
  # @param other [Object]
24
28
  #
25
29
  # @return [Boolean]
@@ -44,17 +48,16 @@ module Orb
44
48
  value
45
49
  end
46
50
 
47
- # @!parse
48
- # # @api private
49
- # #
50
- # # @param value [Object]
51
- # #
52
- # # @param state [Hash{Symbol=>Object}] .
53
- # #
54
- # # @option state [Boolean] :can_retry
55
- # #
56
- # # @return [Object]
57
- # def dump(value, state:) = super
51
+ # @!method dump(value, state:)
52
+ # @api private
53
+ #
54
+ # @param value [Object]
55
+ #
56
+ # @param state [Hash{Symbol=>Object}] .
57
+ #
58
+ # @option state [Boolean] :can_retry
59
+ #
60
+ # @return [Object]
58
61
  end
59
62
 
60
63
  # rubocop:enable Lint/UnusedMethodArgument
@@ -128,6 +128,22 @@ module Orb
128
128
  input.respond_to?(:to_h) ? input.to_h : input
129
129
  end
130
130
  end
131
+
132
+ # @api private
133
+ #
134
+ # @param input [Object]
135
+ #
136
+ # @raise [ArgumentError]
137
+ # @return [Hash{Object=>Object}, nil]
138
+ def coerce_hash!(input)
139
+ case coerce_hash(input)
140
+ in Hash | nil => coerced
141
+ coerced
142
+ else
143
+ message = "Expected a #{Hash} or #{Orb::Internal::Type::BaseModel}, got #{data.inspect}"
144
+ raise ArgumentError.new(message)
145
+ end
146
+ end
131
147
  end
132
148
 
133
149
  class << self
@@ -175,18 +191,17 @@ module Orb
175
191
  # @api private
176
192
  #
177
193
  # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
178
- # @param pick [Symbol, Integer, Array<Symbol, Integer>, nil]
179
- # @param sentinel [Object, nil]
194
+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
180
195
  # @param blk [Proc, nil]
181
196
  #
182
197
  # @return [Object, nil]
183
- def dig(data, pick, sentinel = nil, &blk)
184
- case [data, pick, blk]
185
- in [_, nil, nil]
198
+ def dig(data, pick, &blk)
199
+ case [data, pick]
200
+ in [_, nil]
186
201
  data
187
- in [Hash, Symbol, _] | [Array, Integer, _]
188
- blk.nil? ? data.fetch(pick, sentinel) : data.fetch(pick, &blk)
189
- in [Hash | Array, Array, _]
202
+ in [Hash, Symbol] | [Array, Integer]
203
+ data.fetch(pick) { blk&.call }
204
+ in [Hash | Array, Array]
190
205
  pick.reduce(data) do |acc, key|
191
206
  case acc
192
207
  in Hash if acc.key?(key)
@@ -194,11 +209,13 @@ module Orb
194
209
  in Array if key.is_a?(Integer) && key < acc.length
195
210
  acc[key]
196
211
  else
197
- return blk.nil? ? sentinel : blk.call
212
+ return blk&.call
198
213
  end
199
214
  end
200
- in _
201
- blk.nil? ? sentinel : blk.call
215
+ in [_, Proc]
216
+ pick.call(data)
217
+ else
218
+ blk&.call
202
219
  end
203
220
  end
204
221
  end
@@ -348,27 +365,6 @@ module Orb
348
365
  end
349
366
  end
350
367
 
351
- # @api private
352
- class SerializationAdapter
353
- # @return [Pathname, IO]
354
- attr_reader :inner
355
-
356
- # @param a [Object]
357
- #
358
- # @return [String]
359
- def to_json(*a) = (inner.is_a?(IO) ? inner.read : inner.read(binmode: true)).to_json(*a)
360
-
361
- # @param a [Object]
362
- #
363
- # @return [String]
364
- def to_yaml(*a) = (inner.is_a?(IO) ? inner.read : inner.read(binmode: true)).to_yaml(*a)
365
-
366
- # @api private
367
- #
368
- # @param inner [Pathname, IO]
369
- def initialize(inner) = @inner = inner
370
- end
371
-
372
368
  # @api private
373
369
  #
374
370
  # An adapter that satisfies the IO interface required by `::IO.copy_stream`
@@ -471,53 +467,81 @@ module Orb
471
467
  end
472
468
  end
473
469
 
470
+ # @type [Regexp]
471
+ JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
472
+ # @type [Regexp]
473
+ JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
474
+
474
475
  class << self
475
476
  # @api private
476
477
  #
477
478
  # @param y [Enumerator::Yielder]
478
- # @param boundary [String]
479
- # @param key [Symbol, String]
480
479
  # @param val [Object]
481
480
  # @param closing [Array<Proc>]
482
- private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
483
- val = val.inner if val.is_a?(Orb::Internal::Util::SerializationAdapter)
481
+ # @param content_type [String, nil]
482
+ private def write_multipart_content(y, val:, closing:, content_type: nil)
483
+ content_type ||= "application/octet-stream"
484
484
 
485
- y << "--#{boundary}\r\n"
486
- y << "Content-Disposition: form-data"
487
- unless key.nil?
488
- name = ERB::Util.url_encode(key.to_s)
489
- y << "; name=\"#{name}\""
490
- end
491
- case val
492
- in Pathname | IO
493
- filename = ERB::Util.url_encode(File.basename(val.to_path))
494
- y << "; filename=\"#{filename}\""
495
- else
496
- end
497
- y << "\r\n"
498
485
  case val
486
+ in Orb::FilePart
487
+ return write_multipart_content(
488
+ y,
489
+ val: val.content,
490
+ closing: closing,
491
+ content_type: val.content_type
492
+ )
499
493
  in Pathname
500
- y << "Content-Type: application/octet-stream\r\n\r\n"
494
+ y << "Content-Type: #{content_type}\r\n\r\n"
501
495
  io = val.open(binmode: true)
502
496
  closing << io.method(:close)
503
497
  IO.copy_stream(io, y)
504
498
  in IO
505
- y << "Content-Type: application/octet-stream\r\n\r\n"
499
+ y << "Content-Type: #{content_type}\r\n\r\n"
506
500
  IO.copy_stream(val, y)
507
501
  in StringIO
508
- y << "Content-Type: application/octet-stream\r\n\r\n"
502
+ y << "Content-Type: #{content_type}\r\n\r\n"
509
503
  y << val.string
510
504
  in String
511
- y << "Content-Type: application/octet-stream\r\n\r\n"
505
+ y << "Content-Type: #{content_type}\r\n\r\n"
512
506
  y << val.to_s
513
- in _ if primitive?(val)
507
+ in -> { primitive?(_1) }
514
508
  y << "Content-Type: text/plain\r\n\r\n"
515
509
  y << val.to_s
516
510
  else
517
511
  y << "Content-Type: application/json\r\n\r\n"
518
- y << JSON.fast_generate(val)
512
+ y << JSON.generate(val)
513
+ end
514
+ y << "\r\n"
515
+ end
516
+
517
+ # @api private
518
+ #
519
+ # @param y [Enumerator::Yielder]
520
+ # @param boundary [String]
521
+ # @param key [Symbol, String]
522
+ # @param val [Object]
523
+ # @param closing [Array<Proc>]
524
+ private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
525
+ y << "--#{boundary}\r\n"
526
+ y << "Content-Disposition: form-data"
527
+
528
+ unless key.nil?
529
+ name = ERB::Util.url_encode(key.to_s)
530
+ y << "; name=\"#{name}\""
531
+ end
532
+
533
+ case val
534
+ in Orb::FilePart unless val.filename.nil?
535
+ filename = ERB::Util.url_encode(val.filename)
536
+ y << "; filename=\"#{filename}\""
537
+ in Pathname | IO
538
+ filename = ERB::Util.url_encode(File.basename(val.to_path))
539
+ y << "; filename=\"#{filename}\""
540
+ else
519
541
  end
520
542
  y << "\r\n"
543
+
544
+ write_multipart_content(y, val: val, closing: closing)
521
545
  end
522
546
 
523
547
  # @api private
@@ -560,14 +584,12 @@ module Orb
560
584
  # @return [Object]
561
585
  def encode_content(headers, body)
562
586
  content_type = headers["content-type"]
563
- body = body.inner if body.is_a?(Orb::Internal::Util::SerializationAdapter)
564
-
565
587
  case [content_type, body]
566
- in [%r{^application/(?:vnd\.api\+)?json}, Hash | Array | -> { primitive?(_1) }]
567
- [headers, JSON.fast_generate(body)]
568
- in [%r{^application/(?:x-)?jsonl}, Enumerable] unless body.is_a?(StringIO) || body.is_a?(IO)
569
- [headers, body.lazy.map { JSON.fast_generate(_1) }]
570
- in [%r{^multipart/form-data}, Hash | Pathname | StringIO | IO]
588
+ in [Orb::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
589
+ [headers, JSON.generate(body)]
590
+ in [Orb::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(Orb::Internal::Type::FileInput)
591
+ [headers, body.lazy.map { JSON.generate(_1) }]
592
+ in [%r{^multipart/form-data}, Hash | Orb::Internal::Type::FileInput]
571
593
  boundary, strio = encode_multipart_streaming(body)
572
594
  headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
573
595
  [headers, strio]
@@ -575,6 +597,8 @@ module Orb
575
597
  [headers, body.to_s]
576
598
  in [_, StringIO]
577
599
  [headers, body.string]
600
+ in [_, Orb::FilePart]
601
+ [headers, body.content]
578
602
  else
579
603
  [headers, body]
580
604
  end
@@ -611,7 +635,7 @@ module Orb
611
635
  # @return [Object]
612
636
  def decode_content(headers, stream:, suppress_error: false)
613
637
  case (content_type = headers["content-type"])
614
- in %r{^application/(?:vnd\.api\+)?json}
638
+ in Orb::Internal::Util::JSON_CONTENT
615
639
  json = stream.to_a.join
616
640
  begin
617
641
  JSON.parse(json, symbolize_names: true)
@@ -619,7 +643,7 @@ module Orb
619
643
  raise e unless suppress_error
620
644
  json
621
645
  end
622
- in %r{^application/(?:x-)?jsonl}
646
+ in Orb::Internal::Util::JSONL_CONTENT
623
647
  lines = decode_lines(stream)
624
648
  chain_fused(lines) do |y|
625
649
  lines.each { y << JSON.parse(_1, symbolize_names: true) }
data/lib/orb/internal.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orb
4
- # @api private
5
4
  module Internal
6
5
  OMIT =
7
6
  Object.new.tap do