samsara-api 0.0.1__py3-none-any.whl → 0.0.3__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 (346) hide show
  1. samsara/__init__.py +298 -38
  2. samsara/alerts/configurations/client.py +25 -11
  3. samsara/alerts/configurations/raw_client.py +47 -8
  4. samsara/alerts/incidents/client.py +21 -11
  5. samsara/alerts/incidents/raw_client.py +43 -9
  6. samsara/assets/client.py +21 -11
  7. samsara/assets/location_and_speed/client.py +21 -13
  8. samsara/assets/location_and_speed/raw_client.py +53 -9
  9. samsara/assets/raw_client.py +53 -8
  10. samsara/attributes/client.py +21 -13
  11. samsara/attributes/raw_client.py +41 -8
  12. samsara/cameras/media/client.py +2 -2
  13. samsara/cameras/media/raw_client.py +2 -2
  14. samsara/cameras/media/retrieval/client.py +2 -12
  15. samsara/cameras/media/types/media_list_request_trigger_reasons_item.py +8 -1
  16. samsara/carrier_proposed_assignments/client.py +21 -11
  17. samsara/carrier_proposed_assignments/raw_client.py +43 -8
  18. samsara/client.py +15 -6
  19. samsara/coaching/driver_coach_assignments/client.py +22 -12
  20. samsara/coaching/driver_coach_assignments/raw_client.py +45 -8
  21. samsara/coaching/sessions/client.py +21 -13
  22. samsara/coaching/sessions/raw_client.py +51 -9
  23. samsara/contacts/client.py +21 -11
  24. samsara/contacts/raw_client.py +39 -8
  25. samsara/core/client_wrapper.py +2 -2
  26. samsara/defect_types/client.py +21 -11
  27. samsara/defect_types/raw_client.py +41 -9
  28. samsara/defects/client.py +124 -9
  29. samsara/defects/raw_client.py +356 -6
  30. samsara/devices/client.py +21 -11
  31. samsara/devices/raw_client.py +45 -9
  32. samsara/document_types/client.py +21 -11
  33. samsara/document_types/raw_client.py +37 -9
  34. samsara/documents/client.py +21 -11
  35. samsara/documents/raw_client.py +45 -8
  36. samsara/driver_trailer_assignments/client.py +23 -13
  37. samsara/driver_trailer_assignments/raw_client.py +43 -8
  38. samsara/drivers/__init__.py +1 -3
  39. samsara/drivers/client.py +21 -21
  40. samsara/drivers/raw_client.py +51 -8
  41. samsara/dvirs/client.py +124 -9
  42. samsara/dvirs/raw_client.py +356 -6
  43. samsara/equipment/__init__.py +2 -2
  44. samsara/equipment/client.py +23 -21
  45. samsara/equipment/locations/client.py +62 -34
  46. samsara/equipment/locations/raw_client.py +132 -27
  47. samsara/equipment/raw_client.py +45 -18
  48. samsara/equipment/stats/__init__.py +2 -2
  49. samsara/equipment/stats/client.py +81 -53
  50. samsara/equipment/stats/raw_client.py +157 -46
  51. samsara/equipment/stats/types/__init__.py +2 -2
  52. samsara/equipment/stats/types/{stats_get_request_types_item.py → stats_list_request_types_item.py} +1 -1
  53. samsara/form_submissions/client.py +46 -54
  54. samsara/form_submissions/pdf_exports/client.py +14 -22
  55. samsara/form_submissions/pdf_exports/raw_client.py +10 -18
  56. samsara/form_submissions/raw_client.py +74 -47
  57. samsara/forms/client.py +138 -0
  58. samsara/{beta → forms}/raw_client.py +37 -62
  59. samsara/function.py +99 -0
  60. samsara/gateways/client.py +21 -11
  61. samsara/gateways/raw_client.py +39 -8
  62. samsara/hos/__init__.py +3 -0
  63. samsara/hos/client.py +218 -11
  64. samsara/hos/raw_client.py +485 -8
  65. samsara/hos/types/__init__.py +7 -0
  66. samsara/hos/types/hos_daily_logs_request_driver_activation_status.py +5 -0
  67. samsara/idling/__init__.py +7 -0
  68. samsara/idling/client.py +287 -0
  69. samsara/idling/raw_client.py +521 -0
  70. samsara/idling/types/__init__.py +7 -0
  71. samsara/idling/types/idling_list_request_pto_state.py +5 -0
  72. samsara/inputs/client.py +21 -11
  73. samsara/inputs/raw_client.py +51 -9
  74. samsara/issues/client.py +27 -29
  75. samsara/issues/raw_client.py +53 -26
  76. samsara/live_shares/client.py +21 -13
  77. samsara/live_shares/raw_client.py +43 -8
  78. samsara/maintenance/service_tasks/client.py +21 -11
  79. samsara/maintenance/service_tasks/raw_client.py +41 -8
  80. samsara/maintenance/work_orders/client.py +40 -22
  81. samsara/maintenance/work_orders/raw_client.py +84 -16
  82. samsara/readings/client.py +524 -0
  83. samsara/readings/raw_client.py +1214 -0
  84. samsara/reports/drivers/fuel_energy/client.py +6 -6
  85. samsara/reports/drivers/fuel_energy/raw_client.py +2 -2
  86. samsara/reports/ifta/__init__.py +4 -4
  87. samsara/reports/ifta/vehicle/__init__.py +2 -2
  88. samsara/reports/ifta/vehicle/client.py +21 -21
  89. samsara/reports/ifta/vehicle/raw_client.py +17 -17
  90. samsara/reports/ifta/vehicle/types/__init__.py +4 -4
  91. samsara/reports/ifta/vehicle/types/{vehicle_get_request_fuel_type.py → vehicle_list_request_fuel_type.py} +1 -1
  92. samsara/reports/ifta/vehicle/types/{vehicle_get_request_month.py → vehicle_list_request_month.py} +1 -1
  93. samsara/reports/ifta/vehicle/types/vehicle_list_request_quarter.py +5 -0
  94. samsara/reports/vehicles/__init__.py +2 -2
  95. samsara/reports/vehicles/fuel_energy/__init__.py +2 -2
  96. samsara/reports/vehicles/fuel_energy/client.py +11 -11
  97. samsara/reports/vehicles/fuel_energy/raw_client.py +7 -7
  98. samsara/reports/vehicles/fuel_energy/types/__init__.py +2 -2
  99. samsara/reports/vehicles/fuel_energy/types/fuel_energy_list_request_energy_type.py +5 -0
  100. samsara/reports/vehicles/idling/client.py +27 -15
  101. samsara/reports/vehicles/idling/raw_client.py +59 -11
  102. samsara/routes/client.py +21 -11
  103. samsara/routes/raw_client.py +43 -8
  104. samsara/safety_events/audit_logs/client.py +21 -13
  105. samsara/safety_events/audit_logs/raw_client.py +39 -9
  106. samsara/safety_events/client.py +21 -11
  107. samsara/safety_events/raw_client.py +47 -9
  108. samsara/speeding_intervals/client.py +25 -17
  109. samsara/speeding_intervals/raw_client.py +55 -13
  110. samsara/tachograph/__init__.py +7 -0
  111. samsara/tachograph/client.py +44 -0
  112. samsara/{drivers/tachograph_files → tachograph/driver}/client.py +162 -15
  113. samsara/{drivers/tachograph_files → tachograph/driver}/raw_client.py +153 -4
  114. samsara/tachograph/raw_client.py +13 -0
  115. samsara/{vehicles/tachograph_files → tachograph/vehicles}/client.py +15 -15
  116. samsara/{vehicles/tachograph_files → tachograph/vehicles}/raw_client.py +4 -4
  117. samsara/tags/client.py +21 -11
  118. samsara/tags/raw_client.py +39 -8
  119. samsara/trailers/client.py +21 -11
  120. samsara/trailers/raw_client.py +43 -8
  121. samsara/training_courses/client.py +21 -11
  122. samsara/training_courses/raw_client.py +43 -9
  123. samsara/trips/client.py +21 -11
  124. samsara/trips/raw_client.py +49 -9
  125. samsara/types/__init__.py +406 -50
  126. samsara/types/advanced_idling_get_idling_events_bad_gateway_error_response_body.py +33 -0
  127. samsara/types/advanced_idling_get_idling_events_gateway_timeout_error_response_body.py +33 -0
  128. samsara/types/{hos_daily_logs_update_shipping_docs_internal_server_error_response_body.py → advanced_idling_get_idling_events_internal_server_error_response_body.py} +1 -1
  129. samsara/types/advanced_idling_get_idling_events_method_not_allowed_error_response_body.py +33 -0
  130. samsara/types/{hos_daily_logs_update_shipping_docs_not_found_error_response_body.py → advanced_idling_get_idling_events_not_found_error_response_body.py} +1 -1
  131. samsara/types/{hos_daily_logs_update_shipping_docs_not_implemented_error_response_body.py → advanced_idling_get_idling_events_not_implemented_error_response_body.py} +1 -1
  132. samsara/types/advanced_idling_get_idling_events_response_body.py +26 -0
  133. samsara/types/{hos_daily_logs_update_shipping_docs_service_unavailable_error_response_body.py → advanced_idling_get_idling_events_service_unavailable_error_response_body.py} +1 -1
  134. samsara/types/{hos_daily_logs_update_shipping_docs_gateway_timeout_error_response_body.py → advanced_idling_get_idling_events_too_many_requests_error_response_body.py} +2 -2
  135. samsara/types/advanced_idling_get_idling_events_unauthorized_error_response_body.py +33 -0
  136. samsara/types/alert_object_asset_response_body.py +63 -0
  137. samsara/types/{assets_create_asset_response_body_type.py → alert_object_asset_response_body_type.py} +1 -1
  138. samsara/types/assets_create_asset_response_body.py +2 -87
  139. samsara/types/assets_update_asset_response_body.py +2 -87
  140. samsara/types/continuous_reading_alert_threshold_response_body.py +49 -0
  141. samsara/types/continuous_reading_alert_threshold_response_body_operation.py +7 -0
  142. samsara/types/continuous_reading_alert_threshold_response_body_unit.py +62 -0
  143. samsara/types/device_response_response_body.py +1 -1
  144. samsara/types/device_response_response_body_model.py +1 -0
  145. samsara/types/dvir_defect_get_defect_bad_gateway_error_response_body.py +33 -0
  146. samsara/types/dvir_defect_get_defect_gateway_timeout_error_response_body.py +33 -0
  147. samsara/types/dvir_defect_get_defect_internal_server_error_response_body.py +33 -0
  148. samsara/types/dvir_defect_get_defect_method_not_allowed_error_response_body.py +33 -0
  149. samsara/types/dvir_defect_get_defect_not_found_error_response_body.py +33 -0
  150. samsara/types/dvir_defect_get_defect_not_implemented_error_response_body.py +33 -0
  151. samsara/types/dvir_defect_get_defect_response_body.py +91 -0
  152. samsara/types/dvir_defect_get_defect_service_unavailable_error_response_body.py +33 -0
  153. samsara/types/dvir_defect_get_defect_too_many_requests_error_response_body.py +33 -0
  154. samsara/types/dvir_defect_get_defect_unauthorized_error_response_body.py +33 -0
  155. samsara/types/dvir_get_dvir_bad_gateway_error_response_body.py +33 -0
  156. samsara/types/dvir_get_dvir_gateway_timeout_error_response_body.py +33 -0
  157. samsara/types/dvir_get_dvir_internal_server_error_response_body.py +33 -0
  158. samsara/types/dvir_get_dvir_method_not_allowed_error_response_body.py +33 -0
  159. samsara/types/dvir_get_dvir_not_found_error_response_body.py +33 -0
  160. samsara/types/dvir_get_dvir_not_implemented_error_response_body.py +33 -0
  161. samsara/types/dvir_get_dvir_response_body.py +99 -0
  162. samsara/types/dvir_get_dvir_response_body_safety_status.py +5 -0
  163. samsara/types/dvir_get_dvir_response_body_type.py +5 -0
  164. samsara/types/dvir_get_dvir_service_unavailable_error_response_body.py +33 -0
  165. samsara/types/dvir_get_dvir_too_many_requests_error_response_body.py +33 -0
  166. samsara/types/dvir_get_dvir_unauthorized_error_response_body.py +33 -0
  167. samsara/types/enum_reading_alert_threshold_response_body.py +31 -0
  168. samsara/types/enum_value_response_body.py +31 -0
  169. samsara/types/equipment_gateway_engine_seconds.py +1 -1
  170. samsara/types/equipment_gateway_j_1939_engine_seconds.py +1 -1
  171. samsara/types/equipment_obd_engine_seconds.py +1 -1
  172. samsara/types/event_location_response_body.py +31 -0
  173. samsara/types/form_submission_request_field_input_object_request_body.py +7 -1
  174. samsara/types/form_submission_request_field_input_object_request_body_type.py +3 -1
  175. samsara/types/{hos_daily_logs_update_shipping_docs_response_body.py → form_submission_request_geofence_object_request_body.py} +9 -3
  176. samsara/types/form_submission_request_geofence_value_object_request_body.py +24 -0
  177. samsara/types/form_submission_response_object_response_body.py +8 -0
  178. samsara/types/{form_template_reference_object_request_body.py → form_template_request_object_request_body.py} +6 -4
  179. samsara/types/form_template_response_object_response_body.py +74 -0
  180. samsara/types/form_template_section_object_response_body.py +47 -0
  181. samsara/types/form_templates_get_form_templates_bad_gateway_error_response_body.py +33 -0
  182. samsara/types/form_templates_get_form_templates_gateway_timeout_error_response_body.py +33 -0
  183. samsara/types/form_templates_get_form_templates_internal_server_error_response_body.py +33 -0
  184. samsara/types/form_templates_get_form_templates_method_not_allowed_error_response_body.py +33 -0
  185. samsara/types/form_templates_get_form_templates_not_found_error_response_body.py +33 -0
  186. samsara/types/form_templates_get_form_templates_not_implemented_error_response_body.py +33 -0
  187. samsara/types/form_templates_get_form_templates_response_body.py +26 -0
  188. samsara/types/form_templates_get_form_templates_service_unavailable_error_response_body.py +33 -0
  189. samsara/types/form_templates_get_form_templates_too_many_requests_error_response_body.py +33 -0
  190. samsara/types/form_templates_get_form_templates_unauthorized_error_response_body.py +33 -0
  191. samsara/types/forms_action_object_response_body.py +43 -0
  192. samsara/types/forms_action_object_response_body_type.py +7 -0
  193. samsara/types/forms_approval_config_object_response_body.py +32 -0
  194. samsara/types/forms_asset_object_response_body.py +8 -1
  195. samsara/types/forms_check_boxes_value_object_response_body.py +7 -0
  196. samsara/types/forms_condition_object_response_body.py +36 -0
  197. samsara/types/forms_condition_object_response_body_type.py +7 -0
  198. samsara/types/forms_conditional_action_object_response_body.py +30 -0
  199. samsara/types/forms_field_definition_object_response_body.py +143 -0
  200. samsara/types/forms_field_definition_object_response_body_allowed_asset_types_item.py +7 -0
  201. samsara/types/forms_field_definition_object_response_body_allowed_date_time_value_type.py +7 -0
  202. samsara/types/forms_field_definition_object_response_body_type.py +22 -0
  203. samsara/types/forms_field_input_object_response_body.py +7 -4
  204. samsara/types/forms_field_input_object_response_body_type.py +20 -0
  205. samsara/types/forms_geofence_object_response_body.py +53 -0
  206. samsara/types/forms_geofence_object_response_body_entry_type.py +5 -0
  207. samsara/types/forms_geofence_value_object_response_body.py +24 -0
  208. samsara/types/forms_multiple_choice_value_object_response_body.py +8 -1
  209. samsara/types/forms_product_submission_approval_details_object_response_body.py +26 -0
  210. samsara/types/forms_select_option_object_response_body.py +47 -0
  211. samsara/types/forms_single_approval_config_object_response_body.py +33 -0
  212. samsara/types/forms_table_cell_object_response_body.py +3 -4
  213. samsara/types/forms_table_cell_object_response_body_type.py +8 -0
  214. samsara/types/forms_table_column_object_response_body.py +3 -4
  215. samsara/types/forms_table_column_object_response_body_type.py +8 -0
  216. samsara/types/forms_table_field_definition_object_response_body.py +91 -0
  217. samsara/types/forms_table_field_definition_object_response_body_allowed_date_time_value_type.py +7 -0
  218. samsara/types/forms_table_field_definition_object_response_body_type.py +8 -0
  219. samsara/types/fuel_cost_object_response_body.py +32 -0
  220. samsara/types/fuel_cost_object_response_body_currency.py +5 -0
  221. samsara/types/fuel_volume_response_body.py +28 -0
  222. samsara/types/fuel_volume_response_body_unit.py +5 -0
  223. samsara/types/gaseous_fuel_cost_object_response_body.py +32 -0
  224. samsara/types/gaseous_fuel_cost_object_response_body_currency.py +7 -0
  225. samsara/types/gateway_details_response_response_body.py +14 -0
  226. samsara/types/harsh_event_trigger_details_object_request_body_types_item.py +1 -0
  227. samsara/types/harsh_event_trigger_details_object_response_body_types_item.py +1 -0
  228. samsara/types/idling_event_object_response_body.py +101 -0
  229. samsara/types/idling_event_object_response_body_address_type.py +17 -0
  230. samsara/types/inline_response_2005.py +24 -0
  231. samsara/types/inline_response_2006.py +24 -0
  232. samsara/types/reading_definition_response_body.py +59 -0
  233. samsara/types/reading_history_response_body.py +47 -0
  234. samsara/types/reading_snapshot_response_body.py +52 -0
  235. samsara/types/reading_trigger_continuous_value_object_request_body.py +51 -0
  236. samsara/types/reading_trigger_continuous_value_object_request_body_operation.py +7 -0
  237. samsara/types/reading_trigger_continuous_value_object_request_body_unit.py +62 -0
  238. samsara/types/reading_trigger_continuous_value_object_response_body.py +51 -0
  239. samsara/types/reading_trigger_continuous_value_object_response_body_operation.py +7 -0
  240. samsara/types/reading_trigger_continuous_value_object_response_body_unit.py +62 -0
  241. samsara/types/reading_trigger_details_object_request_body.py +48 -0
  242. samsara/types/reading_trigger_details_object_response_body.py +48 -0
  243. samsara/types/reading_trigger_details_response_body.py +38 -0
  244. samsara/types/reading_trigger_enum_value_object_request_body.py +31 -0
  245. samsara/types/reading_trigger_enum_value_object_response_body.py +31 -0
  246. samsara/types/reading_type_response_body.py +34 -0
  247. samsara/types/reading_type_response_body_data_type.py +5 -0
  248. samsara/types/readings_get_readings_history_bad_gateway_error_response_body.py +33 -0
  249. samsara/types/{hos_daily_logs_update_shipping_docs_bad_gateway_error_response_body.py → readings_get_readings_history_gateway_timeout_error_response_body.py} +2 -2
  250. samsara/types/readings_get_readings_history_internal_server_error_response_body.py +33 -0
  251. samsara/types/readings_get_readings_history_method_not_allowed_error_response_body.py +33 -0
  252. samsara/types/readings_get_readings_history_not_found_error_response_body.py +33 -0
  253. samsara/types/readings_get_readings_history_not_implemented_error_response_body.py +33 -0
  254. samsara/types/readings_get_readings_history_response_body.py +26 -0
  255. samsara/types/readings_get_readings_history_service_unavailable_error_response_body.py +33 -0
  256. samsara/types/readings_get_readings_history_too_many_requests_error_response_body.py +33 -0
  257. samsara/types/readings_get_readings_history_unauthorized_error_response_body.py +33 -0
  258. samsara/types/readings_get_readings_snapshot_bad_gateway_error_response_body.py +33 -0
  259. samsara/types/readings_get_readings_snapshot_gateway_timeout_error_response_body.py +33 -0
  260. samsara/types/readings_get_readings_snapshot_internal_server_error_response_body.py +33 -0
  261. samsara/types/readings_get_readings_snapshot_method_not_allowed_error_response_body.py +33 -0
  262. samsara/types/readings_get_readings_snapshot_not_found_error_response_body.py +33 -0
  263. samsara/types/readings_get_readings_snapshot_not_implemented_error_response_body.py +33 -0
  264. samsara/types/readings_get_readings_snapshot_response_body.py +26 -0
  265. samsara/types/readings_get_readings_snapshot_service_unavailable_error_response_body.py +33 -0
  266. samsara/types/{hos_daily_logs_update_shipping_docs_unauthorized_error_response_body.py → readings_get_readings_snapshot_too_many_requests_error_response_body.py} +2 -2
  267. samsara/types/readings_get_readings_snapshot_unauthorized_error_response_body.py +33 -0
  268. samsara/types/readings_list_readings_definitions_bad_gateway_error_response_body.py +33 -0
  269. samsara/types/{hos_daily_logs_update_shipping_docs_too_many_requests_error_response_body.py → readings_list_readings_definitions_gateway_timeout_error_response_body.py} +2 -2
  270. samsara/types/readings_list_readings_definitions_internal_server_error_response_body.py +33 -0
  271. samsara/types/readings_list_readings_definitions_method_not_allowed_error_response_body.py +33 -0
  272. samsara/types/readings_list_readings_definitions_not_found_error_response_body.py +33 -0
  273. samsara/types/readings_list_readings_definitions_not_implemented_error_response_body.py +33 -0
  274. samsara/types/readings_list_readings_definitions_response_body.py +26 -0
  275. samsara/types/readings_list_readings_definitions_service_unavailable_error_response_body.py +33 -0
  276. samsara/types/{hos_daily_logs_update_shipping_docs_method_not_allowed_error_response_body.py → readings_list_readings_definitions_too_many_requests_error_response_body.py} +2 -2
  277. samsara/types/readings_list_readings_definitions_unauthorized_error_response_body.py +33 -0
  278. samsara/types/safety_score_configuration_settings_object_response_body.py +7 -0
  279. samsara/types/single_approval_requirements_object_response_body.py +28 -0
  280. samsara/types/sudden_fuel_level_drop_response_body.py +33 -0
  281. samsara/types/sudden_fuel_level_rise_response_body.py +33 -0
  282. samsara/types/trigger_params_object_request_body.py +2 -0
  283. samsara/types/trigger_params_object_response_body.py +2 -0
  284. samsara/types/unit_response_body.py +39 -0
  285. samsara/types/unit_response_body_base_unit.py +62 -0
  286. samsara/types/unit_response_body_measurement_type.py +28 -0
  287. samsara/types/uploaded_media_object_response_body.py +1 -1
  288. samsara/types/uploaded_media_object_response_body_trigger_reason.py +8 -1
  289. samsara/types/v_1_message.py +29 -0
  290. samsara/types/v_1_message_response.py +41 -0
  291. samsara/types/v_1_message_sender.py +27 -0
  292. samsara/types/v_1_messages.py +7 -0
  293. samsara/types/v_1_messages_response.py +7 -0
  294. samsara/types/webhook_response_response_body_event_types_item.py +1 -0
  295. samsara/types/webhooks_get_webhook_response_body_event_types_item.py +1 -0
  296. samsara/types/webhooks_patch_webhook_response_body_event_types_item.py +1 -0
  297. samsara/types/webhooks_post_webhooks_response_body_event_types_item.py +1 -0
  298. samsara/types/work_order_item_object_request_body.py +1 -1
  299. samsara/types/work_order_item_object_request_body_type.py +10 -1
  300. samsara/types/work_order_item_object_response_body.py +1 -1
  301. samsara/types/work_order_item_object_response_body_type.py +10 -1
  302. samsara/types/workflow_geofence_event_response_object_response_body.py +6 -0
  303. samsara/types/workflow_incident_details_object_response_body.py +2 -0
  304. samsara/types/workflow_trigger_object_request_body.py +1 -0
  305. samsara/types/workflow_trigger_object_response_body.py +1 -0
  306. samsara/user_roles/client.py +21 -11
  307. samsara/user_roles/raw_client.py +39 -9
  308. samsara/users/client.py +21 -11
  309. samsara/users/raw_client.py +39 -8
  310. samsara/v_1_messages/__init__.py +4 -0
  311. samsara/v_1_messages/client.py +258 -0
  312. samsara/v_1_messages/raw_client.py +273 -0
  313. samsara/vehicles/__init__.py +1 -2
  314. samsara/vehicles/client.py +31 -16
  315. samsara/vehicles/immobilizer/client.py +21 -13
  316. samsara/vehicles/immobilizer/raw_client.py +43 -9
  317. samsara/vehicles/locations/client.py +60 -32
  318. samsara/vehicles/locations/raw_client.py +132 -25
  319. samsara/vehicles/raw_client.py +61 -8
  320. samsara/vehicles/stats/client.py +66 -38
  321. samsara/vehicles/stats/raw_client.py +148 -31
  322. samsara/webhooks/client.py +21 -11
  323. samsara/webhooks/raw_client.py +41 -8
  324. samsara/webhooks/types/webhooks_post_webhooks_request_body_event_types_item.py +1 -0
  325. {samsara_api-0.0.1.dist-info → samsara_api-0.0.3.dist-info}/METADATA +25 -18
  326. {samsara_api-0.0.1.dist-info → samsara_api-0.0.3.dist-info}/RECORD +332 -197
  327. samsara/beta/client.py +0 -161
  328. samsara/drivers/tachograph_activity/client.py +0 -186
  329. samsara/drivers/tachograph_activity/raw_client.py +0 -169
  330. samsara/hours_of_service/__init__.py +0 -7
  331. samsara/hours_of_service/client.py +0 -229
  332. samsara/hours_of_service/raw_client.py +0 -425
  333. samsara/hours_of_service/types/__init__.py +0 -9
  334. samsara/hours_of_service/types/hours_of_service_get_daily_logs_request_driver_activation_status.py +0 -7
  335. samsara/reports/ifta/vehicle/types/vehicle_get_request_quarter.py +0 -5
  336. samsara/reports/vehicles/fuel_energy/types/fuel_energy_get_request_energy_type.py +0 -5
  337. samsara/types/assets_create_asset_response_body_regulation_mode.py +0 -7
  338. samsara/types/assets_update_asset_response_body_regulation_mode.py +0 -7
  339. samsara/types/assets_update_asset_response_body_type.py +0 -7
  340. samsara/types/patch_shipping_docs_response_body_response_body.py +0 -93
  341. /samsara/{beta → forms}/__init__.py +0 -0
  342. /samsara/{drivers/tachograph_activity → readings}/__init__.py +0 -0
  343. /samsara/{drivers/tachograph_files → tachograph/driver}/__init__.py +0 -0
  344. /samsara/{vehicles/tachograph_files → tachograph/vehicles}/__init__.py +0 -0
  345. {samsara_api-0.0.1.dist-info → samsara_api-0.0.3.dist-info}/LICENSE +0 -0
  346. {samsara_api-0.0.1.dist-info → samsara_api-0.0.3.dist-info}/WHEEL +0 -0
samsara/devices/client.py CHANGED
@@ -3,8 +3,9 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
7
- from ..types.devices_get_devices_response_body import DevicesGetDevicesResponseBody
8
+ from ..types.device_response_response_body import DeviceResponseResponseBody
8
9
  from .raw_client import AsyncRawDevicesClient, RawDevicesClient
9
10
 
10
11
 
@@ -32,7 +33,7 @@ class DevicesClient:
32
33
  after: typing.Optional[str] = None,
33
34
  limit: typing.Optional[int] = None,
34
35
  request_options: typing.Optional[RequestOptions] = None,
35
- ) -> DevicesGetDevicesResponseBody:
36
+ ) -> SyncPager[DeviceResponseResponseBody]:
36
37
  """
37
38
  Returns all installed cameras (CM3x), vehicle gateways (VGs), and asset gateways (AGs) and their health information within an organization.
38
39
 
@@ -67,7 +68,7 @@ class DevicesClient:
67
68
 
68
69
  Returns
69
70
  -------
70
- DevicesGetDevicesResponseBody
71
+ SyncPager[DeviceResponseResponseBody]
71
72
  OK response.
72
73
 
73
74
  Examples
@@ -77,9 +78,14 @@ class DevicesClient:
77
78
  client = Samsara(
78
79
  token="YOUR_TOKEN",
79
80
  )
80
- client.devices.list()
81
+ response = client.devices.list()
82
+ for item in response:
83
+ yield item
84
+ # alternatively, you can paginate page-by-page
85
+ for page in response.iter_pages():
86
+ yield page
81
87
  """
82
- _response = self._raw_client.list(
88
+ return self._raw_client.list(
83
89
  models=models,
84
90
  health_statuses=health_statuses,
85
91
  include_health=include_health,
@@ -87,7 +93,6 @@ class DevicesClient:
87
93
  limit=limit,
88
94
  request_options=request_options,
89
95
  )
90
- return _response.data
91
96
 
92
97
 
93
98
  class AsyncDevicesClient:
@@ -114,7 +119,7 @@ class AsyncDevicesClient:
114
119
  after: typing.Optional[str] = None,
115
120
  limit: typing.Optional[int] = None,
116
121
  request_options: typing.Optional[RequestOptions] = None,
117
- ) -> DevicesGetDevicesResponseBody:
122
+ ) -> AsyncPager[DeviceResponseResponseBody]:
118
123
  """
119
124
  Returns all installed cameras (CM3x), vehicle gateways (VGs), and asset gateways (AGs) and their health information within an organization.
120
125
 
@@ -149,7 +154,7 @@ class AsyncDevicesClient:
149
154
 
150
155
  Returns
151
156
  -------
152
- DevicesGetDevicesResponseBody
157
+ AsyncPager[DeviceResponseResponseBody]
153
158
  OK response.
154
159
 
155
160
  Examples
@@ -164,12 +169,18 @@ class AsyncDevicesClient:
164
169
 
165
170
 
166
171
  async def main() -> None:
167
- await client.devices.list()
172
+ response = await client.devices.list()
173
+ async for item in response:
174
+ yield item
175
+
176
+ # alternatively, you can paginate page-by-page
177
+ async for page in response.iter_pages():
178
+ yield page
168
179
 
169
180
 
170
181
  asyncio.run(main())
171
182
  """
172
- _response = await self._raw_client.list(
183
+ return await self._raw_client.list(
173
184
  models=models,
174
185
  health_statuses=health_statuses,
175
186
  include_health=include_health,
@@ -177,4 +188,3 @@ class AsyncDevicesClient:
177
188
  limit=limit,
178
189
  request_options=request_options,
179
190
  )
180
- return _response.data
@@ -5,7 +5,7 @@ from json.decoder import JSONDecodeError
5
5
 
6
6
  from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
- from ..core.http_response import AsyncHttpResponse, HttpResponse
8
+ from ..core.pagination import AsyncPager, BaseHttpResponse, SyncPager
9
9
  from ..core.pydantic_utilities import parse_obj_as
10
10
  from ..core.request_options import RequestOptions
11
11
  from ..errors.bad_gateway_error import BadGatewayError
@@ -17,6 +17,7 @@ from ..errors.not_implemented_error import NotImplementedError
17
17
  from ..errors.service_unavailable_error import ServiceUnavailableError
18
18
  from ..errors.too_many_requests_error import TooManyRequestsError
19
19
  from ..errors.unauthorized_error import UnauthorizedError
20
+ from ..types.device_response_response_body import DeviceResponseResponseBody
20
21
  from ..types.devices_get_devices_response_body import DevicesGetDevicesResponseBody
21
22
 
22
23
 
@@ -33,7 +34,7 @@ class RawDevicesClient:
33
34
  after: typing.Optional[str] = None,
34
35
  limit: typing.Optional[int] = None,
35
36
  request_options: typing.Optional[RequestOptions] = None,
36
- ) -> HttpResponse[DevicesGetDevicesResponseBody]:
37
+ ) -> SyncPager[DeviceResponseResponseBody]:
37
38
  """
38
39
  Returns all installed cameras (CM3x), vehicle gateways (VGs), and asset gateways (AGs) and their health information within an organization.
39
40
 
@@ -68,7 +69,7 @@ class RawDevicesClient:
68
69
 
69
70
  Returns
70
71
  -------
71
- HttpResponse[DevicesGetDevicesResponseBody]
72
+ SyncPager[DeviceResponseResponseBody]
72
73
  OK response.
73
74
  """
74
75
  _response = self._client_wrapper.httpx_client.request(
@@ -85,14 +86,30 @@ class RawDevicesClient:
85
86
  )
86
87
  try:
87
88
  if 200 <= _response.status_code < 300:
88
- _data = typing.cast(
89
+ _parsed_response = typing.cast(
89
90
  DevicesGetDevicesResponseBody,
90
91
  parse_obj_as(
91
92
  type_=DevicesGetDevicesResponseBody, # type: ignore
92
93
  object_=_response.json(),
93
94
  ),
94
95
  )
95
- return HttpResponse(response=_response, data=_data)
96
+ _items = _parsed_response.data
97
+ _has_next = False
98
+ _get_next = None
99
+ if _parsed_response.pagination is not None:
100
+ _parsed_next = _parsed_response.pagination.end_cursor
101
+ _has_next = _parsed_next is not None and _parsed_next != ""
102
+ _get_next = lambda: self.list(
103
+ models=models,
104
+ health_statuses=health_statuses,
105
+ include_health=include_health,
106
+ after=_parsed_next,
107
+ limit=limit,
108
+ request_options=request_options,
109
+ )
110
+ return SyncPager(
111
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
112
+ )
96
113
  if _response.status_code == 401:
97
114
  raise UnauthorizedError(
98
115
  headers=dict(_response.headers),
@@ -211,7 +228,7 @@ class AsyncRawDevicesClient:
211
228
  after: typing.Optional[str] = None,
212
229
  limit: typing.Optional[int] = None,
213
230
  request_options: typing.Optional[RequestOptions] = None,
214
- ) -> AsyncHttpResponse[DevicesGetDevicesResponseBody]:
231
+ ) -> AsyncPager[DeviceResponseResponseBody]:
215
232
  """
216
233
  Returns all installed cameras (CM3x), vehicle gateways (VGs), and asset gateways (AGs) and their health information within an organization.
217
234
 
@@ -246,7 +263,7 @@ class AsyncRawDevicesClient:
246
263
 
247
264
  Returns
248
265
  -------
249
- AsyncHttpResponse[DevicesGetDevicesResponseBody]
266
+ AsyncPager[DeviceResponseResponseBody]
250
267
  OK response.
251
268
  """
252
269
  _response = await self._client_wrapper.httpx_client.request(
@@ -263,14 +280,33 @@ class AsyncRawDevicesClient:
263
280
  )
264
281
  try:
265
282
  if 200 <= _response.status_code < 300:
266
- _data = typing.cast(
283
+ _parsed_response = typing.cast(
267
284
  DevicesGetDevicesResponseBody,
268
285
  parse_obj_as(
269
286
  type_=DevicesGetDevicesResponseBody, # type: ignore
270
287
  object_=_response.json(),
271
288
  ),
272
289
  )
273
- return AsyncHttpResponse(response=_response, data=_data)
290
+ _items = _parsed_response.data
291
+ _has_next = False
292
+ _get_next = None
293
+ if _parsed_response.pagination is not None:
294
+ _parsed_next = _parsed_response.pagination.end_cursor
295
+ _has_next = _parsed_next is not None and _parsed_next != ""
296
+
297
+ async def _get_next():
298
+ return await self.list(
299
+ models=models,
300
+ health_statuses=health_statuses,
301
+ include_health=include_health,
302
+ after=_parsed_next,
303
+ limit=limit,
304
+ request_options=request_options,
305
+ )
306
+
307
+ return AsyncPager(
308
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
309
+ )
274
310
  if _response.status_code == 401:
275
311
  raise UnauthorizedError(
276
312
  headers=dict(_response.headers),
@@ -3,8 +3,9 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
7
- from ..types.document_types_get_document_types_response_body import DocumentTypesGetDocumentTypesResponseBody
8
+ from ..types.get_document_type_response_object_response_body import GetDocumentTypeResponseObjectResponseBody
8
9
  from .raw_client import AsyncRawDocumentTypesClient, RawDocumentTypesClient
9
10
 
10
11
 
@@ -25,7 +26,7 @@ class DocumentTypesClient:
25
26
 
26
27
  def list(
27
28
  self, *, after: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
28
- ) -> DocumentTypesGetDocumentTypesResponseBody:
29
+ ) -> SyncPager[GetDocumentTypeResponseObjectResponseBody]:
29
30
  """
30
31
  Returns a list of the organization document types. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentTypesByOrgId).
31
32
 
@@ -46,7 +47,7 @@ class DocumentTypesClient:
46
47
 
47
48
  Returns
48
49
  -------
49
- DocumentTypesGetDocumentTypesResponseBody
50
+ SyncPager[GetDocumentTypeResponseObjectResponseBody]
50
51
  OK response.
51
52
 
52
53
  Examples
@@ -56,10 +57,14 @@ class DocumentTypesClient:
56
57
  client = Samsara(
57
58
  token="YOUR_TOKEN",
58
59
  )
59
- client.document_types.list()
60
+ response = client.document_types.list()
61
+ for item in response:
62
+ yield item
63
+ # alternatively, you can paginate page-by-page
64
+ for page in response.iter_pages():
65
+ yield page
60
66
  """
61
- _response = self._raw_client.list(after=after, request_options=request_options)
62
- return _response.data
67
+ return self._raw_client.list(after=after, request_options=request_options)
63
68
 
64
69
 
65
70
  class AsyncDocumentTypesClient:
@@ -79,7 +84,7 @@ class AsyncDocumentTypesClient:
79
84
 
80
85
  async def list(
81
86
  self, *, after: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
82
- ) -> DocumentTypesGetDocumentTypesResponseBody:
87
+ ) -> AsyncPager[GetDocumentTypeResponseObjectResponseBody]:
83
88
  """
84
89
  Returns a list of the organization document types. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentTypesByOrgId).
85
90
 
@@ -100,7 +105,7 @@ class AsyncDocumentTypesClient:
100
105
 
101
106
  Returns
102
107
  -------
103
- DocumentTypesGetDocumentTypesResponseBody
108
+ AsyncPager[GetDocumentTypeResponseObjectResponseBody]
104
109
  OK response.
105
110
 
106
111
  Examples
@@ -115,10 +120,15 @@ class AsyncDocumentTypesClient:
115
120
 
116
121
 
117
122
  async def main() -> None:
118
- await client.document_types.list()
123
+ response = await client.document_types.list()
124
+ async for item in response:
125
+ yield item
126
+
127
+ # alternatively, you can paginate page-by-page
128
+ async for page in response.iter_pages():
129
+ yield page
119
130
 
120
131
 
121
132
  asyncio.run(main())
122
133
  """
123
- _response = await self._raw_client.list(after=after, request_options=request_options)
124
- return _response.data
134
+ return await self._raw_client.list(after=after, request_options=request_options)
@@ -5,7 +5,7 @@ from json.decoder import JSONDecodeError
5
5
 
6
6
  from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
- from ..core.http_response import AsyncHttpResponse, HttpResponse
8
+ from ..core.pagination import AsyncPager, BaseHttpResponse, SyncPager
9
9
  from ..core.pydantic_utilities import parse_obj_as
10
10
  from ..core.request_options import RequestOptions
11
11
  from ..errors.bad_gateway_error import BadGatewayError
@@ -18,6 +18,7 @@ from ..errors.service_unavailable_error import ServiceUnavailableError
18
18
  from ..errors.too_many_requests_error import TooManyRequestsError
19
19
  from ..errors.unauthorized_error import UnauthorizedError
20
20
  from ..types.document_types_get_document_types_response_body import DocumentTypesGetDocumentTypesResponseBody
21
+ from ..types.get_document_type_response_object_response_body import GetDocumentTypeResponseObjectResponseBody
21
22
 
22
23
 
23
24
  class RawDocumentTypesClient:
@@ -26,7 +27,7 @@ class RawDocumentTypesClient:
26
27
 
27
28
  def list(
28
29
  self, *, after: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
29
- ) -> HttpResponse[DocumentTypesGetDocumentTypesResponseBody]:
30
+ ) -> SyncPager[GetDocumentTypeResponseObjectResponseBody]:
30
31
  """
31
32
  Returns a list of the organization document types. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentTypesByOrgId).
32
33
 
@@ -47,7 +48,7 @@ class RawDocumentTypesClient:
47
48
 
48
49
  Returns
49
50
  -------
50
- HttpResponse[DocumentTypesGetDocumentTypesResponseBody]
51
+ SyncPager[GetDocumentTypeResponseObjectResponseBody]
51
52
  OK response.
52
53
  """
53
54
  _response = self._client_wrapper.httpx_client.request(
@@ -60,14 +61,26 @@ class RawDocumentTypesClient:
60
61
  )
61
62
  try:
62
63
  if 200 <= _response.status_code < 300:
63
- _data = typing.cast(
64
+ _parsed_response = typing.cast(
64
65
  DocumentTypesGetDocumentTypesResponseBody,
65
66
  parse_obj_as(
66
67
  type_=DocumentTypesGetDocumentTypesResponseBody, # type: ignore
67
68
  object_=_response.json(),
68
69
  ),
69
70
  )
70
- return HttpResponse(response=_response, data=_data)
71
+ _items = _parsed_response.data
72
+ _has_next = False
73
+ _get_next = None
74
+ if _parsed_response.pagination is not None:
75
+ _parsed_next = _parsed_response.pagination.end_cursor
76
+ _has_next = _parsed_next is not None and _parsed_next != ""
77
+ _get_next = lambda: self.list(
78
+ after=_parsed_next,
79
+ request_options=request_options,
80
+ )
81
+ return SyncPager(
82
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
83
+ )
71
84
  if _response.status_code == 401:
72
85
  raise UnauthorizedError(
73
86
  headers=dict(_response.headers),
@@ -179,7 +192,7 @@ class AsyncRawDocumentTypesClient:
179
192
 
180
193
  async def list(
181
194
  self, *, after: typing.Optional[str] = None, request_options: typing.Optional[RequestOptions] = None
182
- ) -> AsyncHttpResponse[DocumentTypesGetDocumentTypesResponseBody]:
195
+ ) -> AsyncPager[GetDocumentTypeResponseObjectResponseBody]:
183
196
  """
184
197
  Returns a list of the organization document types. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentTypesByOrgId).
185
198
 
@@ -200,7 +213,7 @@ class AsyncRawDocumentTypesClient:
200
213
 
201
214
  Returns
202
215
  -------
203
- AsyncHttpResponse[DocumentTypesGetDocumentTypesResponseBody]
216
+ AsyncPager[GetDocumentTypeResponseObjectResponseBody]
204
217
  OK response.
205
218
  """
206
219
  _response = await self._client_wrapper.httpx_client.request(
@@ -213,14 +226,29 @@ class AsyncRawDocumentTypesClient:
213
226
  )
214
227
  try:
215
228
  if 200 <= _response.status_code < 300:
216
- _data = typing.cast(
229
+ _parsed_response = typing.cast(
217
230
  DocumentTypesGetDocumentTypesResponseBody,
218
231
  parse_obj_as(
219
232
  type_=DocumentTypesGetDocumentTypesResponseBody, # type: ignore
220
233
  object_=_response.json(),
221
234
  ),
222
235
  )
223
- return AsyncHttpResponse(response=_response, data=_data)
236
+ _items = _parsed_response.data
237
+ _has_next = False
238
+ _get_next = None
239
+ if _parsed_response.pagination is not None:
240
+ _parsed_next = _parsed_response.pagination.end_cursor
241
+ _has_next = _parsed_next is not None and _parsed_next != ""
242
+
243
+ async def _get_next():
244
+ return await self.list(
245
+ after=_parsed_next,
246
+ request_options=request_options,
247
+ )
248
+
249
+ return AsyncPager(
250
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
251
+ )
224
252
  if _response.status_code == 401:
225
253
  raise UnauthorizedError(
226
254
  headers=dict(_response.headers),
@@ -3,9 +3,10 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
8
+ from ..types.document_response_object_response_body import DocumentResponseObjectResponseBody
7
9
  from ..types.documents_get_document_response_body import DocumentsGetDocumentResponseBody
8
- from ..types.documents_get_documents_response_body import DocumentsGetDocumentsResponseBody
9
10
  from ..types.documents_post_document_response_body import DocumentsPostDocumentResponseBody
10
11
  from ..types.field_object_post_request_body import FieldObjectPostRequestBody
11
12
  from .pdfs.client import AsyncPdfsClient, PdfsClient
@@ -41,7 +42,7 @@ class DocumentsClient:
41
42
  document_type_id: typing.Optional[str] = None,
42
43
  query_by: typing.Optional[str] = None,
43
44
  request_options: typing.Optional[RequestOptions] = None,
44
- ) -> DocumentsGetDocumentsResponseBody:
45
+ ) -> SyncPager[DocumentResponseObjectResponseBody]:
45
46
  """
46
47
  Get all documents for the given time range. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentsByOrgId).
47
48
 
@@ -74,7 +75,7 @@ class DocumentsClient:
74
75
 
75
76
  Returns
76
77
  -------
77
- DocumentsGetDocumentsResponseBody
78
+ SyncPager[DocumentResponseObjectResponseBody]
78
79
  OK response.
79
80
 
80
81
  Examples
@@ -84,12 +85,17 @@ class DocumentsClient:
84
85
  client = Samsara(
85
86
  token="YOUR_TOKEN",
86
87
  )
87
- client.documents.list(
88
+ response = client.documents.list(
88
89
  start_time="startTime",
89
90
  end_time="endTime",
90
91
  )
92
+ for item in response:
93
+ yield item
94
+ # alternatively, you can paginate page-by-page
95
+ for page in response.iter_pages():
96
+ yield page
91
97
  """
92
- _response = self._raw_client.list(
98
+ return self._raw_client.list(
93
99
  start_time=start_time,
94
100
  end_time=end_time,
95
101
  after=after,
@@ -97,7 +103,6 @@ class DocumentsClient:
97
103
  query_by=query_by,
98
104
  request_options=request_options,
99
105
  )
100
- return _response.data
101
106
 
102
107
  def create(
103
108
  self,
@@ -284,7 +289,7 @@ class AsyncDocumentsClient:
284
289
  document_type_id: typing.Optional[str] = None,
285
290
  query_by: typing.Optional[str] = None,
286
291
  request_options: typing.Optional[RequestOptions] = None,
287
- ) -> DocumentsGetDocumentsResponseBody:
292
+ ) -> AsyncPager[DocumentResponseObjectResponseBody]:
288
293
  """
289
294
  Get all documents for the given time range. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentsByOrgId).
290
295
 
@@ -317,7 +322,7 @@ class AsyncDocumentsClient:
317
322
 
318
323
  Returns
319
324
  -------
320
- DocumentsGetDocumentsResponseBody
325
+ AsyncPager[DocumentResponseObjectResponseBody]
321
326
  OK response.
322
327
 
323
328
  Examples
@@ -332,15 +337,21 @@ class AsyncDocumentsClient:
332
337
 
333
338
 
334
339
  async def main() -> None:
335
- await client.documents.list(
340
+ response = await client.documents.list(
336
341
  start_time="startTime",
337
342
  end_time="endTime",
338
343
  )
344
+ async for item in response:
345
+ yield item
346
+
347
+ # alternatively, you can paginate page-by-page
348
+ async for page in response.iter_pages():
349
+ yield page
339
350
 
340
351
 
341
352
  asyncio.run(main())
342
353
  """
343
- _response = await self._raw_client.list(
354
+ return await self._raw_client.list(
344
355
  start_time=start_time,
345
356
  end_time=end_time,
346
357
  after=after,
@@ -348,7 +359,6 @@ class AsyncDocumentsClient:
348
359
  query_by=query_by,
349
360
  request_options=request_options,
350
361
  )
351
- return _response.data
352
362
 
353
363
  async def create(
354
364
  self,
@@ -7,6 +7,7 @@ from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ..core.http_response import AsyncHttpResponse, HttpResponse
9
9
  from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.pagination import AsyncPager, BaseHttpResponse, SyncPager
10
11
  from ..core.pydantic_utilities import parse_obj_as
11
12
  from ..core.request_options import RequestOptions
12
13
  from ..core.serialization import convert_and_respect_annotation_metadata
@@ -19,6 +20,7 @@ from ..errors.not_implemented_error import NotImplementedError
19
20
  from ..errors.service_unavailable_error import ServiceUnavailableError
20
21
  from ..errors.too_many_requests_error import TooManyRequestsError
21
22
  from ..errors.unauthorized_error import UnauthorizedError
23
+ from ..types.document_response_object_response_body import DocumentResponseObjectResponseBody
22
24
  from ..types.documents_get_document_response_body import DocumentsGetDocumentResponseBody
23
25
  from ..types.documents_get_documents_response_body import DocumentsGetDocumentsResponseBody
24
26
  from ..types.documents_post_document_response_body import DocumentsPostDocumentResponseBody
@@ -42,7 +44,7 @@ class RawDocumentsClient:
42
44
  document_type_id: typing.Optional[str] = None,
43
45
  query_by: typing.Optional[str] = None,
44
46
  request_options: typing.Optional[RequestOptions] = None,
45
- ) -> HttpResponse[DocumentsGetDocumentsResponseBody]:
47
+ ) -> SyncPager[DocumentResponseObjectResponseBody]:
46
48
  """
47
49
  Get all documents for the given time range. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentsByOrgId).
48
50
 
@@ -75,7 +77,7 @@ class RawDocumentsClient:
75
77
 
76
78
  Returns
77
79
  -------
78
- HttpResponse[DocumentsGetDocumentsResponseBody]
80
+ SyncPager[DocumentResponseObjectResponseBody]
79
81
  OK response.
80
82
  """
81
83
  _response = self._client_wrapper.httpx_client.request(
@@ -92,14 +94,30 @@ class RawDocumentsClient:
92
94
  )
93
95
  try:
94
96
  if 200 <= _response.status_code < 300:
95
- _data = typing.cast(
97
+ _parsed_response = typing.cast(
96
98
  DocumentsGetDocumentsResponseBody,
97
99
  parse_obj_as(
98
100
  type_=DocumentsGetDocumentsResponseBody, # type: ignore
99
101
  object_=_response.json(),
100
102
  ),
101
103
  )
102
- return HttpResponse(response=_response, data=_data)
104
+ _items = _parsed_response.data
105
+ _has_next = False
106
+ _get_next = None
107
+ if _parsed_response.pagination is not None:
108
+ _parsed_next = _parsed_response.pagination.end_cursor
109
+ _has_next = _parsed_next is not None and _parsed_next != ""
110
+ _get_next = lambda: self.list(
111
+ start_time=start_time,
112
+ end_time=end_time,
113
+ after=_parsed_next,
114
+ document_type_id=document_type_id,
115
+ query_by=query_by,
116
+ request_options=request_options,
117
+ )
118
+ return SyncPager(
119
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
120
+ )
103
121
  if _response.status_code == 401:
104
122
  raise UnauthorizedError(
105
123
  headers=dict(_response.headers),
@@ -690,7 +708,7 @@ class AsyncRawDocumentsClient:
690
708
  document_type_id: typing.Optional[str] = None,
691
709
  query_by: typing.Optional[str] = None,
692
710
  request_options: typing.Optional[RequestOptions] = None,
693
- ) -> AsyncHttpResponse[DocumentsGetDocumentsResponseBody]:
711
+ ) -> AsyncPager[DocumentResponseObjectResponseBody]:
694
712
  """
695
713
  Get all documents for the given time range. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/getDriverDocumentsByOrgId).
696
714
 
@@ -723,7 +741,7 @@ class AsyncRawDocumentsClient:
723
741
 
724
742
  Returns
725
743
  -------
726
- AsyncHttpResponse[DocumentsGetDocumentsResponseBody]
744
+ AsyncPager[DocumentResponseObjectResponseBody]
727
745
  OK response.
728
746
  """
729
747
  _response = await self._client_wrapper.httpx_client.request(
@@ -740,14 +758,33 @@ class AsyncRawDocumentsClient:
740
758
  )
741
759
  try:
742
760
  if 200 <= _response.status_code < 300:
743
- _data = typing.cast(
761
+ _parsed_response = typing.cast(
744
762
  DocumentsGetDocumentsResponseBody,
745
763
  parse_obj_as(
746
764
  type_=DocumentsGetDocumentsResponseBody, # type: ignore
747
765
  object_=_response.json(),
748
766
  ),
749
767
  )
750
- return AsyncHttpResponse(response=_response, data=_data)
768
+ _items = _parsed_response.data
769
+ _has_next = False
770
+ _get_next = None
771
+ if _parsed_response.pagination is not None:
772
+ _parsed_next = _parsed_response.pagination.end_cursor
773
+ _has_next = _parsed_next is not None and _parsed_next != ""
774
+
775
+ async def _get_next():
776
+ return await self.list(
777
+ start_time=start_time,
778
+ end_time=end_time,
779
+ after=_parsed_next,
780
+ document_type_id=document_type_id,
781
+ query_by=query_by,
782
+ request_options=request_options,
783
+ )
784
+
785
+ return AsyncPager(
786
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
787
+ )
751
788
  if _response.status_code == 401:
752
789
  raise UnauthorizedError(
753
790
  headers=dict(_response.headers),