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
@@ -3,10 +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.idling_reports_get_vehicle_idling_reports_response_body import (
8
- IdlingReportsGetVehicleIdlingReportsResponseBody,
9
- )
8
+ from ....types.idling_report_event_response_body import IdlingReportEventResponseBody
10
9
  from .raw_client import AsyncRawIdlingClient, RawIdlingClient
11
10
 
12
11
 
@@ -25,7 +24,7 @@ class IdlingClient:
25
24
  """
26
25
  return self._raw_client
27
26
 
28
- def get(
27
+ def list(
29
28
  self,
30
29
  *,
31
30
  start_time: str,
@@ -38,10 +37,12 @@ class IdlingClient:
38
37
  is_pto_active: typing.Optional[bool] = None,
39
38
  min_idling_duration_minutes: typing.Optional[int] = None,
40
39
  request_options: typing.Optional[RequestOptions] = None,
41
- ) -> IdlingReportsGetVehicleIdlingReportsResponseBody:
40
+ ) -> SyncPager[IdlingReportEventResponseBody]:
42
41
  """
43
42
  Get all vehicle idling reports for the requested time duration.
44
43
 
44
+ **Note:** We are gradually releasing the new Advanced Idling Report, which provides additional data fields for each idling event such as air temperature, geofence, PTO state and minimum idle time. We have released the associated API in Beta to gather valuable feedback. You can access the Beta API [here](https://developers.samsara.com/reference/getidlingevents).
45
+
45
46
  <b>Rate limit:</b> 25 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
46
47
 
47
48
  To use this endpoint, select **Read Fuel & Energy** under the Fuel & Energy category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
@@ -83,7 +84,7 @@ class IdlingClient:
83
84
 
84
85
  Returns
85
86
  -------
86
- IdlingReportsGetVehicleIdlingReportsResponseBody
87
+ SyncPager[IdlingReportEventResponseBody]
87
88
  OK response.
88
89
 
89
90
  Examples
@@ -93,12 +94,17 @@ class IdlingClient:
93
94
  client = Samsara(
94
95
  token="YOUR_TOKEN",
95
96
  )
96
- client.reports.vehicles.idling.get(
97
+ response = client.reports.vehicles.idling.list(
97
98
  start_time="startTime",
98
99
  end_time="endTime",
99
100
  )
101
+ for item in response:
102
+ yield item
103
+ # alternatively, you can paginate page-by-page
104
+ for page in response.iter_pages():
105
+ yield page
100
106
  """
101
- _response = self._raw_client.get(
107
+ return self._raw_client.list(
102
108
  start_time=start_time,
103
109
  end_time=end_time,
104
110
  after=after,
@@ -110,7 +116,6 @@ class IdlingClient:
110
116
  min_idling_duration_minutes=min_idling_duration_minutes,
111
117
  request_options=request_options,
112
118
  )
113
- return _response.data
114
119
 
115
120
 
116
121
  class AsyncIdlingClient:
@@ -128,7 +133,7 @@ class AsyncIdlingClient:
128
133
  """
129
134
  return self._raw_client
130
135
 
131
- async def get(
136
+ async def list(
132
137
  self,
133
138
  *,
134
139
  start_time: str,
@@ -141,10 +146,12 @@ class AsyncIdlingClient:
141
146
  is_pto_active: typing.Optional[bool] = None,
142
147
  min_idling_duration_minutes: typing.Optional[int] = None,
143
148
  request_options: typing.Optional[RequestOptions] = None,
144
- ) -> IdlingReportsGetVehicleIdlingReportsResponseBody:
149
+ ) -> AsyncPager[IdlingReportEventResponseBody]:
145
150
  """
146
151
  Get all vehicle idling reports for the requested time duration.
147
152
 
153
+ **Note:** We are gradually releasing the new Advanced Idling Report, which provides additional data fields for each idling event such as air temperature, geofence, PTO state and minimum idle time. We have released the associated API in Beta to gather valuable feedback. You can access the Beta API [here](https://developers.samsara.com/reference/getidlingevents).
154
+
148
155
  <b>Rate limit:</b> 25 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
149
156
 
150
157
  To use this endpoint, select **Read Fuel & Energy** under the Fuel & Energy category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
@@ -186,7 +193,7 @@ class AsyncIdlingClient:
186
193
 
187
194
  Returns
188
195
  -------
189
- IdlingReportsGetVehicleIdlingReportsResponseBody
196
+ AsyncPager[IdlingReportEventResponseBody]
190
197
  OK response.
191
198
 
192
199
  Examples
@@ -201,15 +208,21 @@ class AsyncIdlingClient:
201
208
 
202
209
 
203
210
  async def main() -> None:
204
- await client.reports.vehicles.idling.get(
211
+ response = await client.reports.vehicles.idling.list(
205
212
  start_time="startTime",
206
213
  end_time="endTime",
207
214
  )
215
+ async for item in response:
216
+ yield item
217
+
218
+ # alternatively, you can paginate page-by-page
219
+ async for page in response.iter_pages():
220
+ yield page
208
221
 
209
222
 
210
223
  asyncio.run(main())
211
224
  """
212
- _response = await self._raw_client.get(
225
+ return await self._raw_client.list(
213
226
  start_time=start_time,
214
227
  end_time=end_time,
215
228
  after=after,
@@ -221,4 +234,3 @@ class AsyncIdlingClient:
221
234
  min_idling_duration_minutes=min_idling_duration_minutes,
222
235
  request_options=request_options,
223
236
  )
224
- 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.idling_report_event_response_body import IdlingReportEventResponseBody
20
21
  from ....types.idling_reports_get_vehicle_idling_reports_response_body import (
21
22
  IdlingReportsGetVehicleIdlingReportsResponseBody,
22
23
  )
@@ -26,7 +27,7 @@ class RawIdlingClient:
26
27
  def __init__(self, *, client_wrapper: SyncClientWrapper):
27
28
  self._client_wrapper = client_wrapper
28
29
 
29
- def get(
30
+ def list(
30
31
  self,
31
32
  *,
32
33
  start_time: str,
@@ -39,10 +40,12 @@ class RawIdlingClient:
39
40
  is_pto_active: typing.Optional[bool] = None,
40
41
  min_idling_duration_minutes: typing.Optional[int] = None,
41
42
  request_options: typing.Optional[RequestOptions] = None,
42
- ) -> HttpResponse[IdlingReportsGetVehicleIdlingReportsResponseBody]:
43
+ ) -> SyncPager[IdlingReportEventResponseBody]:
43
44
  """
44
45
  Get all vehicle idling reports for the requested time duration.
45
46
 
47
+ **Note:** We are gradually releasing the new Advanced Idling Report, which provides additional data fields for each idling event such as air temperature, geofence, PTO state and minimum idle time. We have released the associated API in Beta to gather valuable feedback. You can access the Beta API [here](https://developers.samsara.com/reference/getidlingevents).
48
+
46
49
  <b>Rate limit:</b> 25 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
47
50
 
48
51
  To use this endpoint, select **Read Fuel & Energy** under the Fuel & Energy category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
@@ -84,7 +87,7 @@ class RawIdlingClient:
84
87
 
85
88
  Returns
86
89
  -------
87
- HttpResponse[IdlingReportsGetVehicleIdlingReportsResponseBody]
90
+ SyncPager[IdlingReportEventResponseBody]
88
91
  OK response.
89
92
  """
90
93
  _response = self._client_wrapper.httpx_client.request(
@@ -105,14 +108,34 @@ class RawIdlingClient:
105
108
  )
106
109
  try:
107
110
  if 200 <= _response.status_code < 300:
108
- _data = typing.cast(
111
+ _parsed_response = typing.cast(
109
112
  IdlingReportsGetVehicleIdlingReportsResponseBody,
110
113
  parse_obj_as(
111
114
  type_=IdlingReportsGetVehicleIdlingReportsResponseBody, # type: ignore
112
115
  object_=_response.json(),
113
116
  ),
114
117
  )
115
- return HttpResponse(response=_response, data=_data)
118
+ _items = _parsed_response.data
119
+ _has_next = False
120
+ _get_next = None
121
+ if _parsed_response.pagination is not None:
122
+ _parsed_next = _parsed_response.pagination.end_cursor
123
+ _has_next = _parsed_next is not None and _parsed_next != ""
124
+ _get_next = lambda: self.list(
125
+ start_time=start_time,
126
+ end_time=end_time,
127
+ after=_parsed_next,
128
+ limit=limit,
129
+ vehicle_ids=vehicle_ids,
130
+ tag_ids=tag_ids,
131
+ parent_tag_ids=parent_tag_ids,
132
+ is_pto_active=is_pto_active,
133
+ min_idling_duration_minutes=min_idling_duration_minutes,
134
+ request_options=request_options,
135
+ )
136
+ return SyncPager(
137
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
138
+ )
116
139
  if _response.status_code == 401:
117
140
  raise UnauthorizedError(
118
141
  headers=dict(_response.headers),
@@ -222,7 +245,7 @@ class AsyncRawIdlingClient:
222
245
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
223
246
  self._client_wrapper = client_wrapper
224
247
 
225
- async def get(
248
+ async def list(
226
249
  self,
227
250
  *,
228
251
  start_time: str,
@@ -235,10 +258,12 @@ class AsyncRawIdlingClient:
235
258
  is_pto_active: typing.Optional[bool] = None,
236
259
  min_idling_duration_minutes: typing.Optional[int] = None,
237
260
  request_options: typing.Optional[RequestOptions] = None,
238
- ) -> AsyncHttpResponse[IdlingReportsGetVehicleIdlingReportsResponseBody]:
261
+ ) -> AsyncPager[IdlingReportEventResponseBody]:
239
262
  """
240
263
  Get all vehicle idling reports for the requested time duration.
241
264
 
265
+ **Note:** We are gradually releasing the new Advanced Idling Report, which provides additional data fields for each idling event such as air temperature, geofence, PTO state and minimum idle time. We have released the associated API in Beta to gather valuable feedback. You can access the Beta API [here](https://developers.samsara.com/reference/getidlingevents).
266
+
242
267
  <b>Rate limit:</b> 25 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
243
268
 
244
269
  To use this endpoint, select **Read Fuel & Energy** under the Fuel & Energy category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
@@ -280,7 +305,7 @@ class AsyncRawIdlingClient:
280
305
 
281
306
  Returns
282
307
  -------
283
- AsyncHttpResponse[IdlingReportsGetVehicleIdlingReportsResponseBody]
308
+ AsyncPager[IdlingReportEventResponseBody]
284
309
  OK response.
285
310
  """
286
311
  _response = await self._client_wrapper.httpx_client.request(
@@ -301,14 +326,37 @@ class AsyncRawIdlingClient:
301
326
  )
302
327
  try:
303
328
  if 200 <= _response.status_code < 300:
304
- _data = typing.cast(
329
+ _parsed_response = typing.cast(
305
330
  IdlingReportsGetVehicleIdlingReportsResponseBody,
306
331
  parse_obj_as(
307
332
  type_=IdlingReportsGetVehicleIdlingReportsResponseBody, # type: ignore
308
333
  object_=_response.json(),
309
334
  ),
310
335
  )
311
- return AsyncHttpResponse(response=_response, data=_data)
336
+ _items = _parsed_response.data
337
+ _has_next = False
338
+ _get_next = None
339
+ if _parsed_response.pagination is not None:
340
+ _parsed_next = _parsed_response.pagination.end_cursor
341
+ _has_next = _parsed_next is not None and _parsed_next != ""
342
+
343
+ async def _get_next():
344
+ return await self.list(
345
+ start_time=start_time,
346
+ end_time=end_time,
347
+ after=_parsed_next,
348
+ limit=limit,
349
+ vehicle_ids=vehicle_ids,
350
+ tag_ids=tag_ids,
351
+ parent_tag_ids=parent_tag_ids,
352
+ is_pto_active=is_pto_active,
353
+ min_idling_duration_minutes=min_idling_duration_minutes,
354
+ request_options=request_options,
355
+ )
356
+
357
+ return AsyncPager(
358
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
359
+ )
312
360
  if _response.status_code == 401:
313
361
  raise UnauthorizedError(
314
362
  headers=dict(_response.headers),
samsara/routes/client.py CHANGED
@@ -3,12 +3,13 @@
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.base_route_response_object_response_body import BaseRouteResponseObjectResponseBody
7
9
  from ..types.create_routes_stop_request_object_request_body import CreateRoutesStopRequestObjectRequestBody
8
10
  from ..types.route_settings_request_body import RouteSettingsRequestBody
9
11
  from ..types.routes_create_route_response_body import RoutesCreateRouteResponseBody
10
12
  from ..types.routes_fetch_route_response_body import RoutesFetchRouteResponseBody
11
- from ..types.routes_fetch_routes_response_body import RoutesFetchRoutesResponseBody
12
13
  from ..types.routes_patch_route_response_body import RoutesPatchRouteResponseBody
13
14
  from ..types.update_routes_stop_request_object_request_body import UpdateRoutesStopRequestObjectRequestBody
14
15
  from .audit_logs.client import AsyncAuditLogsClient, AuditLogsClient
@@ -42,7 +43,7 @@ class RoutesClient:
42
43
  limit: typing.Optional[int] = None,
43
44
  after: typing.Optional[str] = None,
44
45
  request_options: typing.Optional[RequestOptions] = None,
45
- ) -> RoutesFetchRoutesResponseBody:
46
+ ) -> SyncPager[BaseRouteResponseObjectResponseBody]:
46
47
  """
47
48
  Returns multiple routes. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/fetchAllDispatchRoutes).
48
49
 
@@ -72,7 +73,7 @@ class RoutesClient:
72
73
 
73
74
  Returns
74
75
  -------
75
- RoutesFetchRoutesResponseBody
76
+ SyncPager[BaseRouteResponseObjectResponseBody]
76
77
  OK response.
77
78
 
78
79
  Examples
@@ -82,15 +83,19 @@ class RoutesClient:
82
83
  client = Samsara(
83
84
  token="YOUR_TOKEN",
84
85
  )
85
- client.routes.list(
86
+ response = client.routes.list(
86
87
  start_time="startTime",
87
88
  end_time="endTime",
88
89
  )
90
+ for item in response:
91
+ yield item
92
+ # alternatively, you can paginate page-by-page
93
+ for page in response.iter_pages():
94
+ yield page
89
95
  """
90
- _response = self._raw_client.list(
96
+ return self._raw_client.list(
91
97
  start_time=start_time, end_time=end_time, limit=limit, after=after, request_options=request_options
92
98
  )
93
- return _response.data
94
99
 
95
100
  def create(
96
101
  self,
@@ -362,7 +367,7 @@ class AsyncRoutesClient:
362
367
  limit: typing.Optional[int] = None,
363
368
  after: typing.Optional[str] = None,
364
369
  request_options: typing.Optional[RequestOptions] = None,
365
- ) -> RoutesFetchRoutesResponseBody:
370
+ ) -> AsyncPager[BaseRouteResponseObjectResponseBody]:
366
371
  """
367
372
  Returns multiple routes. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/fetchAllDispatchRoutes).
368
373
 
@@ -392,7 +397,7 @@ class AsyncRoutesClient:
392
397
 
393
398
  Returns
394
399
  -------
395
- RoutesFetchRoutesResponseBody
400
+ AsyncPager[BaseRouteResponseObjectResponseBody]
396
401
  OK response.
397
402
 
398
403
  Examples
@@ -407,18 +412,23 @@ class AsyncRoutesClient:
407
412
 
408
413
 
409
414
  async def main() -> None:
410
- await client.routes.list(
415
+ response = await client.routes.list(
411
416
  start_time="startTime",
412
417
  end_time="endTime",
413
418
  )
419
+ async for item in response:
420
+ yield item
421
+
422
+ # alternatively, you can paginate page-by-page
423
+ async for page in response.iter_pages():
424
+ yield page
414
425
 
415
426
 
416
427
  asyncio.run(main())
417
428
  """
418
- _response = await self._raw_client.list(
429
+ return await self._raw_client.list(
419
430
  start_time=start_time, end_time=end_time, limit=limit, after=after, request_options=request_options
420
431
  )
421
- return _response.data
422
432
 
423
433
  async def create(
424
434
  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.base_route_response_object_response_body import BaseRouteResponseObjectResponseBody
22
24
  from ..types.create_routes_stop_request_object_request_body import CreateRoutesStopRequestObjectRequestBody
23
25
  from ..types.route_settings_request_body import RouteSettingsRequestBody
24
26
  from ..types.routes_create_route_response_body import RoutesCreateRouteResponseBody
@@ -43,7 +45,7 @@ class RawRoutesClient:
43
45
  limit: typing.Optional[int] = None,
44
46
  after: typing.Optional[str] = None,
45
47
  request_options: typing.Optional[RequestOptions] = None,
46
- ) -> HttpResponse[RoutesFetchRoutesResponseBody]:
48
+ ) -> SyncPager[BaseRouteResponseObjectResponseBody]:
47
49
  """
48
50
  Returns multiple routes. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/fetchAllDispatchRoutes).
49
51
 
@@ -73,7 +75,7 @@ class RawRoutesClient:
73
75
 
74
76
  Returns
75
77
  -------
76
- HttpResponse[RoutesFetchRoutesResponseBody]
78
+ SyncPager[BaseRouteResponseObjectResponseBody]
77
79
  OK response.
78
80
  """
79
81
  _response = self._client_wrapper.httpx_client.request(
@@ -89,14 +91,29 @@ class RawRoutesClient:
89
91
  )
90
92
  try:
91
93
  if 200 <= _response.status_code < 300:
92
- _data = typing.cast(
94
+ _parsed_response = typing.cast(
93
95
  RoutesFetchRoutesResponseBody,
94
96
  parse_obj_as(
95
97
  type_=RoutesFetchRoutesResponseBody, # type: ignore
96
98
  object_=_response.json(),
97
99
  ),
98
100
  )
99
- return HttpResponse(response=_response, data=_data)
101
+ _items = _parsed_response.data
102
+ _has_next = False
103
+ _get_next = None
104
+ if _parsed_response.pagination is not None:
105
+ _parsed_next = _parsed_response.pagination.end_cursor
106
+ _has_next = _parsed_next is not None and _parsed_next != ""
107
+ _get_next = lambda: self.list(
108
+ start_time=start_time,
109
+ end_time=end_time,
110
+ limit=limit,
111
+ after=_parsed_next,
112
+ request_options=request_options,
113
+ )
114
+ return SyncPager(
115
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
116
+ )
100
117
  if _response.status_code == 401:
101
118
  raise UnauthorizedError(
102
119
  headers=dict(_response.headers),
@@ -892,7 +909,7 @@ class AsyncRawRoutesClient:
892
909
  limit: typing.Optional[int] = None,
893
910
  after: typing.Optional[str] = None,
894
911
  request_options: typing.Optional[RequestOptions] = None,
895
- ) -> AsyncHttpResponse[RoutesFetchRoutesResponseBody]:
912
+ ) -> AsyncPager[BaseRouteResponseObjectResponseBody]:
896
913
  """
897
914
  Returns multiple routes. The legacy version of this endpoint can be found at [samsara.com/api-legacy](https://www.samsara.com/api-legacy#operation/fetchAllDispatchRoutes).
898
915
 
@@ -922,7 +939,7 @@ class AsyncRawRoutesClient:
922
939
 
923
940
  Returns
924
941
  -------
925
- AsyncHttpResponse[RoutesFetchRoutesResponseBody]
942
+ AsyncPager[BaseRouteResponseObjectResponseBody]
926
943
  OK response.
927
944
  """
928
945
  _response = await self._client_wrapper.httpx_client.request(
@@ -938,14 +955,32 @@ class AsyncRawRoutesClient:
938
955
  )
939
956
  try:
940
957
  if 200 <= _response.status_code < 300:
941
- _data = typing.cast(
958
+ _parsed_response = typing.cast(
942
959
  RoutesFetchRoutesResponseBody,
943
960
  parse_obj_as(
944
961
  type_=RoutesFetchRoutesResponseBody, # type: ignore
945
962
  object_=_response.json(),
946
963
  ),
947
964
  )
948
- return AsyncHttpResponse(response=_response, data=_data)
965
+ _items = _parsed_response.data
966
+ _has_next = False
967
+ _get_next = None
968
+ if _parsed_response.pagination is not None:
969
+ _parsed_next = _parsed_response.pagination.end_cursor
970
+ _has_next = _parsed_next is not None and _parsed_next != ""
971
+
972
+ async def _get_next():
973
+ return await self.list(
974
+ start_time=start_time,
975
+ end_time=end_time,
976
+ limit=limit,
977
+ after=_parsed_next,
978
+ request_options=request_options,
979
+ )
980
+
981
+ return AsyncPager(
982
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
983
+ )
949
984
  if _response.status_code == 401:
950
985
  raise UnauthorizedError(
951
986
  headers=dict(_response.headers),
@@ -3,10 +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.safety_events_get_safety_activity_event_feed_response_body import (
8
- SafetyEventsGetSafetyActivityEventFeedResponseBody,
9
- )
8
+ from ...types.safety_event_activity_feed_item_response_body import SafetyEventActivityFeedItemResponseBody
10
9
  from .raw_client import AsyncRawAuditLogsClient, RawAuditLogsClient
11
10
 
12
11
 
@@ -31,7 +30,7 @@ class AuditLogsClient:
31
30
  after: typing.Optional[str] = None,
32
31
  start_time: typing.Optional[str] = None,
33
32
  request_options: typing.Optional[RequestOptions] = None,
34
- ) -> SafetyEventsGetSafetyActivityEventFeedResponseBody:
33
+ ) -> SyncPager[SafetyEventActivityFeedItemResponseBody]:
35
34
  """
36
35
  Get continuous safety events. The safety activity event feed offers a change-log for safety events. Use this endpoint to subscribe to safety event changes. See documentation below for all supported change-log types.
37
36
 
@@ -61,7 +60,7 @@ class AuditLogsClient:
61
60
 
62
61
  Returns
63
62
  -------
64
- SafetyEventsGetSafetyActivityEventFeedResponseBody
63
+ SyncPager[SafetyEventActivityFeedItemResponseBody]
65
64
  OK response.
66
65
 
67
66
  Examples
@@ -71,10 +70,14 @@ class AuditLogsClient:
71
70
  client = Samsara(
72
71
  token="YOUR_TOKEN",
73
72
  )
74
- client.safety_events.audit_logs.feed()
73
+ response = client.safety_events.audit_logs.feed()
74
+ for item in response:
75
+ yield item
76
+ # alternatively, you can paginate page-by-page
77
+ for page in response.iter_pages():
78
+ yield page
75
79
  """
76
- _response = self._raw_client.feed(after=after, start_time=start_time, request_options=request_options)
77
- return _response.data
80
+ return self._raw_client.feed(after=after, start_time=start_time, request_options=request_options)
78
81
 
79
82
 
80
83
  class AsyncAuditLogsClient:
@@ -98,7 +101,7 @@ class AsyncAuditLogsClient:
98
101
  after: typing.Optional[str] = None,
99
102
  start_time: typing.Optional[str] = None,
100
103
  request_options: typing.Optional[RequestOptions] = None,
101
- ) -> SafetyEventsGetSafetyActivityEventFeedResponseBody:
104
+ ) -> AsyncPager[SafetyEventActivityFeedItemResponseBody]:
102
105
  """
103
106
  Get continuous safety events. The safety activity event feed offers a change-log for safety events. Use this endpoint to subscribe to safety event changes. See documentation below for all supported change-log types.
104
107
 
@@ -128,7 +131,7 @@ class AsyncAuditLogsClient:
128
131
 
129
132
  Returns
130
133
  -------
131
- SafetyEventsGetSafetyActivityEventFeedResponseBody
134
+ AsyncPager[SafetyEventActivityFeedItemResponseBody]
132
135
  OK response.
133
136
 
134
137
  Examples
@@ -143,10 +146,15 @@ class AsyncAuditLogsClient:
143
146
 
144
147
 
145
148
  async def main() -> None:
146
- await client.safety_events.audit_logs.feed()
149
+ response = await client.safety_events.audit_logs.feed()
150
+ async for item in response:
151
+ yield item
152
+
153
+ # alternatively, you can paginate page-by-page
154
+ async for page in response.iter_pages():
155
+ yield page
147
156
 
148
157
 
149
158
  asyncio.run(main())
150
159
  """
151
- _response = await self._raw_client.feed(after=after, start_time=start_time, request_options=request_options)
152
- return _response.data
160
+ return await self._raw_client.feed(after=after, start_time=start_time, request_options=request_options)