samsara-api 0.0.1__py3-none-any.whl → 0.0.2__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 (343) 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/workflow_geofence_event_response_object_response_body.py +6 -0
  299. samsara/types/workflow_incident_details_object_response_body.py +2 -0
  300. samsara/types/workflow_trigger_object_request_body.py +1 -0
  301. samsara/types/workflow_trigger_object_response_body.py +1 -0
  302. samsara/user_roles/client.py +21 -11
  303. samsara/user_roles/raw_client.py +39 -9
  304. samsara/users/client.py +21 -11
  305. samsara/users/raw_client.py +39 -8
  306. samsara/v_1_messages/__init__.py +4 -0
  307. samsara/v_1_messages/client.py +258 -0
  308. samsara/v_1_messages/raw_client.py +273 -0
  309. samsara/vehicles/__init__.py +1 -2
  310. samsara/vehicles/client.py +31 -16
  311. samsara/vehicles/immobilizer/client.py +21 -13
  312. samsara/vehicles/immobilizer/raw_client.py +43 -9
  313. samsara/vehicles/locations/client.py +60 -32
  314. samsara/vehicles/locations/raw_client.py +132 -25
  315. samsara/vehicles/raw_client.py +61 -8
  316. samsara/vehicles/stats/client.py +66 -38
  317. samsara/vehicles/stats/raw_client.py +148 -31
  318. samsara/webhooks/client.py +21 -11
  319. samsara/webhooks/raw_client.py +41 -8
  320. samsara/webhooks/types/webhooks_post_webhooks_request_body_event_types_item.py +1 -0
  321. samsara_api-0.0.2.dist-info/METADATA +29 -0
  322. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/RECORD +328 -193
  323. samsara/beta/client.py +0 -161
  324. samsara/drivers/tachograph_activity/client.py +0 -186
  325. samsara/drivers/tachograph_activity/raw_client.py +0 -169
  326. samsara/hours_of_service/__init__.py +0 -7
  327. samsara/hours_of_service/client.py +0 -229
  328. samsara/hours_of_service/raw_client.py +0 -425
  329. samsara/hours_of_service/types/__init__.py +0 -9
  330. samsara/hours_of_service/types/hours_of_service_get_daily_logs_request_driver_activation_status.py +0 -7
  331. samsara/reports/ifta/vehicle/types/vehicle_get_request_quarter.py +0 -5
  332. samsara/reports/vehicles/fuel_energy/types/fuel_energy_get_request_energy_type.py +0 -5
  333. samsara/types/assets_create_asset_response_body_regulation_mode.py +0 -7
  334. samsara/types/assets_update_asset_response_body_regulation_mode.py +0 -7
  335. samsara/types/assets_update_asset_response_body_type.py +0 -7
  336. samsara/types/patch_shipping_docs_response_body_response_body.py +0 -93
  337. samsara_api-0.0.1.dist-info/METADATA +0 -214
  338. /samsara/{beta → forms}/__init__.py +0 -0
  339. /samsara/{drivers/tachograph_activity → readings}/__init__.py +0 -0
  340. /samsara/{drivers/tachograph_files → tachograph/driver}/__init__.py +0 -0
  341. /samsara/{vehicles/tachograph_files → tachograph/vehicles}/__init__.py +0 -0
  342. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/LICENSE +0 -0
  343. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/WHEEL +0 -0
@@ -3,19 +3,19 @@
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
8
  from ..types.attribute_tiny import AttributeTiny
8
9
  from ..types.gross_vehicle_weight import GrossVehicleWeight
9
10
  from ..types.user_identifier_serial import UserIdentifierSerial
10
11
  from ..types.vehicle_regulation_mode import VehicleRegulationMode
11
12
  from ..types.vehicle_response import VehicleResponse
13
+ from ..types.vehicle_response_object_response_body import VehicleResponseObjectResponseBody
12
14
  from ..types.vehicle_type import VehicleType
13
- from ..types.vehicles_list_vehicles_response_body import VehiclesListVehiclesResponseBody
14
15
  from .immobilizer.client import AsyncImmobilizerClient, ImmobilizerClient
15
16
  from .locations.client import AsyncLocationsClient, LocationsClient
16
17
  from .raw_client import AsyncRawVehiclesClient, RawVehiclesClient
17
18
  from .stats.client import AsyncStatsClient, StatsClient
18
- from .tachograph_files.client import AsyncTachographFilesClient, TachographFilesClient
19
19
  from .types.update_vehicle_request_aux_input_type_1 import UpdateVehicleRequestAuxInputType1
20
20
  from .types.update_vehicle_request_aux_input_type_2 import UpdateVehicleRequestAuxInputType2
21
21
  from .types.update_vehicle_request_aux_input_type_3 import UpdateVehicleRequestAuxInputType3
@@ -46,8 +46,6 @@ class VehiclesClient:
46
46
 
47
47
  self.stats = StatsClient(client_wrapper=client_wrapper)
48
48
 
49
- self.tachograph_files = TachographFilesClient(client_wrapper=client_wrapper)
50
-
51
49
  @property
52
50
  def with_raw_response(self) -> RawVehiclesClient:
53
51
  """
@@ -67,10 +65,11 @@ class VehiclesClient:
67
65
  parent_tag_ids: typing.Optional[str] = None,
68
66
  tag_ids: typing.Optional[str] = None,
69
67
  attribute_value_ids: typing.Optional[str] = None,
68
+ attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
70
69
  updated_after_time: typing.Optional[str] = None,
71
70
  created_after_time: typing.Optional[str] = None,
72
71
  request_options: typing.Optional[RequestOptions] = None,
73
- ) -> VehiclesListVehiclesResponseBody:
72
+ ) -> SyncPager[VehicleResponseObjectResponseBody]:
74
73
  """
75
74
  Returns a list of all vehicles.
76
75
 
@@ -98,6 +97,9 @@ class VehiclesClient:
98
97
  attribute_value_ids : typing.Optional[str]
99
98
  A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`
100
99
 
100
+ attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
101
+ A filter on the data to return entities having given attributes using name-value pair, separated by semicolon. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributes=ExampleAttributeName:some_value&attributes=SomeOtherAttr:123`
102
+
101
103
  updated_after_time : typing.Optional[str]
102
104
  A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).
103
105
 
@@ -109,7 +111,7 @@ class VehiclesClient:
109
111
 
110
112
  Returns
111
113
  -------
112
- VehiclesListVehiclesResponseBody
114
+ SyncPager[VehicleResponseObjectResponseBody]
113
115
  OK response.
114
116
 
115
117
  Examples
@@ -119,19 +121,24 @@ class VehiclesClient:
119
121
  client = Samsara(
120
122
  token="YOUR_TOKEN",
121
123
  )
122
- client.vehicles.list()
124
+ response = client.vehicles.list()
125
+ for item in response:
126
+ yield item
127
+ # alternatively, you can paginate page-by-page
128
+ for page in response.iter_pages():
129
+ yield page
123
130
  """
124
- _response = self._raw_client.list(
131
+ return self._raw_client.list(
125
132
  limit=limit,
126
133
  after=after,
127
134
  parent_tag_ids=parent_tag_ids,
128
135
  tag_ids=tag_ids,
129
136
  attribute_value_ids=attribute_value_ids,
137
+ attributes=attributes,
130
138
  updated_after_time=updated_after_time,
131
139
  created_after_time=created_after_time,
132
140
  request_options=request_options,
133
141
  )
134
- return _response.data
135
142
 
136
143
  def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> VehicleResponse:
137
144
  """
@@ -362,8 +369,6 @@ class AsyncVehiclesClient:
362
369
 
363
370
  self.stats = AsyncStatsClient(client_wrapper=client_wrapper)
364
371
 
365
- self.tachograph_files = AsyncTachographFilesClient(client_wrapper=client_wrapper)
366
-
367
372
  @property
368
373
  def with_raw_response(self) -> AsyncRawVehiclesClient:
369
374
  """
@@ -383,10 +388,11 @@ class AsyncVehiclesClient:
383
388
  parent_tag_ids: typing.Optional[str] = None,
384
389
  tag_ids: typing.Optional[str] = None,
385
390
  attribute_value_ids: typing.Optional[str] = None,
391
+ attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
386
392
  updated_after_time: typing.Optional[str] = None,
387
393
  created_after_time: typing.Optional[str] = None,
388
394
  request_options: typing.Optional[RequestOptions] = None,
389
- ) -> VehiclesListVehiclesResponseBody:
395
+ ) -> AsyncPager[VehicleResponseObjectResponseBody]:
390
396
  """
391
397
  Returns a list of all vehicles.
392
398
 
@@ -414,6 +420,9 @@ class AsyncVehiclesClient:
414
420
  attribute_value_ids : typing.Optional[str]
415
421
  A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`
416
422
 
423
+ attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
424
+ A filter on the data to return entities having given attributes using name-value pair, separated by semicolon. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributes=ExampleAttributeName:some_value&attributes=SomeOtherAttr:123`
425
+
417
426
  updated_after_time : typing.Optional[str]
418
427
  A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).
419
428
 
@@ -425,7 +434,7 @@ class AsyncVehiclesClient:
425
434
 
426
435
  Returns
427
436
  -------
428
- VehiclesListVehiclesResponseBody
437
+ AsyncPager[VehicleResponseObjectResponseBody]
429
438
  OK response.
430
439
 
431
440
  Examples
@@ -440,22 +449,28 @@ class AsyncVehiclesClient:
440
449
 
441
450
 
442
451
  async def main() -> None:
443
- await client.vehicles.list()
452
+ response = await client.vehicles.list()
453
+ async for item in response:
454
+ yield item
455
+
456
+ # alternatively, you can paginate page-by-page
457
+ async for page in response.iter_pages():
458
+ yield page
444
459
 
445
460
 
446
461
  asyncio.run(main())
447
462
  """
448
- _response = await self._raw_client.list(
463
+ return await self._raw_client.list(
449
464
  limit=limit,
450
465
  after=after,
451
466
  parent_tag_ids=parent_tag_ids,
452
467
  tag_ids=tag_ids,
453
468
  attribute_value_ids=attribute_value_ids,
469
+ attributes=attributes,
454
470
  updated_after_time=updated_after_time,
455
471
  created_after_time=created_after_time,
456
472
  request_options=request_options,
457
473
  )
458
- return _response.data
459
474
 
460
475
  async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> VehicleResponse:
461
476
  """
@@ -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.engine_immobilizer_get_engine_immobilizer_states_response_body import (
8
- EngineImmobilizerGetEngineImmobilizerStatesResponseBody,
9
- )
8
+ from ...types.engine_immobilizer_state_response_body import EngineImmobilizerStateResponseBody
10
9
  from .raw_client import AsyncRawImmobilizerClient, RawImmobilizerClient
11
10
 
12
11
 
@@ -33,7 +32,7 @@ class ImmobilizerClient:
33
32
  end_time: typing.Optional[str] = None,
34
33
  after: typing.Optional[str] = None,
35
34
  request_options: typing.Optional[RequestOptions] = None,
36
- ) -> EngineImmobilizerGetEngineImmobilizerStatesResponseBody:
35
+ ) -> SyncPager[EngineImmobilizerStateResponseBody]:
37
36
  """
38
37
  Get the engine immobilizer states of the queried vehicles. If a vehicle has never had an engine immobilizer connected, there won't be any state returned for that vehicle.
39
38
 
@@ -63,7 +62,7 @@ class ImmobilizerClient:
63
62
 
64
63
  Returns
65
64
  -------
66
- EngineImmobilizerGetEngineImmobilizerStatesResponseBody
65
+ SyncPager[EngineImmobilizerStateResponseBody]
67
66
  OK response.
68
67
 
69
68
  Examples
@@ -73,19 +72,23 @@ class ImmobilizerClient:
73
72
  client = Samsara(
74
73
  token="YOUR_TOKEN",
75
74
  )
76
- client.vehicles.immobilizer.stream(
75
+ response = client.vehicles.immobilizer.stream(
77
76
  vehicle_ids="vehicleIds",
78
77
  start_time="startTime",
79
78
  )
79
+ for item in response:
80
+ yield item
81
+ # alternatively, you can paginate page-by-page
82
+ for page in response.iter_pages():
83
+ yield page
80
84
  """
81
- _response = self._raw_client.stream(
85
+ return self._raw_client.stream(
82
86
  vehicle_ids=vehicle_ids,
83
87
  start_time=start_time,
84
88
  end_time=end_time,
85
89
  after=after,
86
90
  request_options=request_options,
87
91
  )
88
- return _response.data
89
92
 
90
93
 
91
94
  class AsyncImmobilizerClient:
@@ -111,7 +114,7 @@ class AsyncImmobilizerClient:
111
114
  end_time: typing.Optional[str] = None,
112
115
  after: typing.Optional[str] = None,
113
116
  request_options: typing.Optional[RequestOptions] = None,
114
- ) -> EngineImmobilizerGetEngineImmobilizerStatesResponseBody:
117
+ ) -> AsyncPager[EngineImmobilizerStateResponseBody]:
115
118
  """
116
119
  Get the engine immobilizer states of the queried vehicles. If a vehicle has never had an engine immobilizer connected, there won't be any state returned for that vehicle.
117
120
 
@@ -141,7 +144,7 @@ class AsyncImmobilizerClient:
141
144
 
142
145
  Returns
143
146
  -------
144
- EngineImmobilizerGetEngineImmobilizerStatesResponseBody
147
+ AsyncPager[EngineImmobilizerStateResponseBody]
145
148
  OK response.
146
149
 
147
150
  Examples
@@ -156,19 +159,24 @@ class AsyncImmobilizerClient:
156
159
 
157
160
 
158
161
  async def main() -> None:
159
- await client.vehicles.immobilizer.stream(
162
+ response = await client.vehicles.immobilizer.stream(
160
163
  vehicle_ids="vehicleIds",
161
164
  start_time="startTime",
162
165
  )
166
+ async for item in response:
167
+ yield item
168
+
169
+ # alternatively, you can paginate page-by-page
170
+ async for page in response.iter_pages():
171
+ yield page
163
172
 
164
173
 
165
174
  asyncio.run(main())
166
175
  """
167
- _response = await self._raw_client.stream(
176
+ return await self._raw_client.stream(
168
177
  vehicle_ids=vehicle_ids,
169
178
  start_time=start_time,
170
179
  end_time=end_time,
171
180
  after=after,
172
181
  request_options=request_options,
173
182
  )
174
- 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
@@ -20,6 +20,7 @@ from ...errors.unauthorized_error import UnauthorizedError
20
20
  from ...types.engine_immobilizer_get_engine_immobilizer_states_response_body import (
21
21
  EngineImmobilizerGetEngineImmobilizerStatesResponseBody,
22
22
  )
23
+ from ...types.engine_immobilizer_state_response_body import EngineImmobilizerStateResponseBody
23
24
 
24
25
 
25
26
  class RawImmobilizerClient:
@@ -34,7 +35,7 @@ class RawImmobilizerClient:
34
35
  end_time: typing.Optional[str] = None,
35
36
  after: typing.Optional[str] = None,
36
37
  request_options: typing.Optional[RequestOptions] = None,
37
- ) -> HttpResponse[EngineImmobilizerGetEngineImmobilizerStatesResponseBody]:
38
+ ) -> SyncPager[EngineImmobilizerStateResponseBody]:
38
39
  """
39
40
  Get the engine immobilizer states of the queried vehicles. If a vehicle has never had an engine immobilizer connected, there won't be any state returned for that vehicle.
40
41
 
@@ -64,7 +65,7 @@ class RawImmobilizerClient:
64
65
 
65
66
  Returns
66
67
  -------
67
- HttpResponse[EngineImmobilizerGetEngineImmobilizerStatesResponseBody]
68
+ SyncPager[EngineImmobilizerStateResponseBody]
68
69
  OK response.
69
70
  """
70
71
  _response = self._client_wrapper.httpx_client.request(
@@ -80,14 +81,29 @@ class RawImmobilizerClient:
80
81
  )
81
82
  try:
82
83
  if 200 <= _response.status_code < 300:
83
- _data = typing.cast(
84
+ _parsed_response = typing.cast(
84
85
  EngineImmobilizerGetEngineImmobilizerStatesResponseBody,
85
86
  parse_obj_as(
86
87
  type_=EngineImmobilizerGetEngineImmobilizerStatesResponseBody, # type: ignore
87
88
  object_=_response.json(),
88
89
  ),
89
90
  )
90
- return HttpResponse(response=_response, data=_data)
91
+ _items = _parsed_response.data
92
+ _has_next = False
93
+ _get_next = None
94
+ if _parsed_response.pagination is not None:
95
+ _parsed_next = _parsed_response.pagination.end_cursor
96
+ _has_next = _parsed_next is not None and _parsed_next != ""
97
+ _get_next = lambda: self.stream(
98
+ vehicle_ids=vehicle_ids,
99
+ start_time=start_time,
100
+ end_time=end_time,
101
+ after=_parsed_next,
102
+ request_options=request_options,
103
+ )
104
+ return SyncPager(
105
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
106
+ )
91
107
  if _response.status_code == 401:
92
108
  raise UnauthorizedError(
93
109
  headers=dict(_response.headers),
@@ -205,7 +221,7 @@ class AsyncRawImmobilizerClient:
205
221
  end_time: typing.Optional[str] = None,
206
222
  after: typing.Optional[str] = None,
207
223
  request_options: typing.Optional[RequestOptions] = None,
208
- ) -> AsyncHttpResponse[EngineImmobilizerGetEngineImmobilizerStatesResponseBody]:
224
+ ) -> AsyncPager[EngineImmobilizerStateResponseBody]:
209
225
  """
210
226
  Get the engine immobilizer states of the queried vehicles. If a vehicle has never had an engine immobilizer connected, there won't be any state returned for that vehicle.
211
227
 
@@ -235,7 +251,7 @@ class AsyncRawImmobilizerClient:
235
251
 
236
252
  Returns
237
253
  -------
238
- AsyncHttpResponse[EngineImmobilizerGetEngineImmobilizerStatesResponseBody]
254
+ AsyncPager[EngineImmobilizerStateResponseBody]
239
255
  OK response.
240
256
  """
241
257
  _response = await self._client_wrapper.httpx_client.request(
@@ -251,14 +267,32 @@ class AsyncRawImmobilizerClient:
251
267
  )
252
268
  try:
253
269
  if 200 <= _response.status_code < 300:
254
- _data = typing.cast(
270
+ _parsed_response = typing.cast(
255
271
  EngineImmobilizerGetEngineImmobilizerStatesResponseBody,
256
272
  parse_obj_as(
257
273
  type_=EngineImmobilizerGetEngineImmobilizerStatesResponseBody, # type: ignore
258
274
  object_=_response.json(),
259
275
  ),
260
276
  )
261
- return AsyncHttpResponse(response=_response, data=_data)
277
+ _items = _parsed_response.data
278
+ _has_next = False
279
+ _get_next = None
280
+ if _parsed_response.pagination is not None:
281
+ _parsed_next = _parsed_response.pagination.end_cursor
282
+ _has_next = _parsed_next is not None and _parsed_next != ""
283
+
284
+ async def _get_next():
285
+ return await self.stream(
286
+ vehicle_ids=vehicle_ids,
287
+ start_time=start_time,
288
+ end_time=end_time,
289
+ after=_parsed_next,
290
+ request_options=request_options,
291
+ )
292
+
293
+ return AsyncPager(
294
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
295
+ )
262
296
  if _response.status_code == 401:
263
297
  raise UnauthorizedError(
264
298
  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
7
- from ...types.vehicle_locations_list_response import VehicleLocationsListResponse
8
- from ...types.vehicle_locations_response import VehicleLocationsResponse
8
+ from ...types.vehicle_locations_list_response_data import VehicleLocationsListResponseData
9
+ from ...types.vehicle_locations_response_data import VehicleLocationsResponseData
9
10
  from .raw_client import AsyncRawLocationsClient, RawLocationsClient
10
11
 
11
12
 
@@ -33,7 +34,7 @@ class LocationsClient:
33
34
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
34
35
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
35
36
  request_options: typing.Optional[RequestOptions] = None,
36
- ) -> VehicleLocationsResponse:
37
+ ) -> SyncPager[VehicleLocationsResponseData]:
37
38
  """
38
39
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestats) instead.***
39
40
 
@@ -67,7 +68,7 @@ class LocationsClient:
67
68
 
68
69
  Returns
69
70
  -------
70
- VehicleLocationsResponse
71
+ SyncPager[VehicleLocationsResponseData]
71
72
  List of the most recent locations for the specified vehicles.
72
73
 
73
74
  Examples
@@ -77,9 +78,14 @@ class LocationsClient:
77
78
  client = Samsara(
78
79
  token="YOUR_TOKEN",
79
80
  )
80
- client.vehicles.locations.list()
81
+ response = client.vehicles.locations.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
  after=after,
84
90
  time=time,
85
91
  parent_tag_ids=parent_tag_ids,
@@ -87,7 +93,6 @@ class LocationsClient:
87
93
  vehicle_ids=vehicle_ids,
88
94
  request_options=request_options,
89
95
  )
90
- return _response.data
91
96
 
92
97
  def feed(
93
98
  self,
@@ -97,7 +102,7 @@ class LocationsClient:
97
102
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
98
103
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
99
104
  request_options: typing.Optional[RequestOptions] = None,
100
- ) -> VehicleLocationsListResponse:
105
+ ) -> SyncPager[VehicleLocationsListResponseData]:
101
106
  """
102
107
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatsfeed) instead.***
103
108
 
@@ -134,7 +139,7 @@ class LocationsClient:
134
139
 
135
140
  Returns
136
141
  -------
137
- VehicleLocationsListResponse
142
+ SyncPager[VehicleLocationsListResponseData]
138
143
  List of locations events for the specified vehicles.
139
144
 
140
145
  Examples
@@ -144,16 +149,20 @@ class LocationsClient:
144
149
  client = Samsara(
145
150
  token="YOUR_TOKEN",
146
151
  )
147
- client.vehicles.locations.feed()
152
+ response = client.vehicles.locations.feed()
153
+ for item in response:
154
+ yield item
155
+ # alternatively, you can paginate page-by-page
156
+ for page in response.iter_pages():
157
+ yield page
148
158
  """
149
- _response = self._raw_client.feed(
159
+ return self._raw_client.feed(
150
160
  after=after,
151
161
  parent_tag_ids=parent_tag_ids,
152
162
  tag_ids=tag_ids,
153
163
  vehicle_ids=vehicle_ids,
154
164
  request_options=request_options,
155
165
  )
156
- return _response.data
157
166
 
158
167
  def history(
159
168
  self,
@@ -165,7 +174,7 @@ class LocationsClient:
165
174
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
166
175
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
167
176
  request_options: typing.Optional[RequestOptions] = None,
168
- ) -> VehicleLocationsListResponse:
177
+ ) -> SyncPager[VehicleLocationsListResponseData]:
169
178
  """
170
179
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatshistory) instead.***
171
180
 
@@ -202,7 +211,7 @@ class LocationsClient:
202
211
 
203
212
  Returns
204
213
  -------
205
- VehicleLocationsListResponse
214
+ SyncPager[VehicleLocationsListResponseData]
206
215
  List of all locations for the specified vehicles and time range.
207
216
 
208
217
  Examples
@@ -212,12 +221,17 @@ class LocationsClient:
212
221
  client = Samsara(
213
222
  token="YOUR_TOKEN",
214
223
  )
215
- client.vehicles.locations.history(
224
+ response = client.vehicles.locations.history(
216
225
  start_time="startTime",
217
226
  end_time="endTime",
218
227
  )
228
+ for item in response:
229
+ yield item
230
+ # alternatively, you can paginate page-by-page
231
+ for page in response.iter_pages():
232
+ yield page
219
233
  """
220
- _response = self._raw_client.history(
234
+ return self._raw_client.history(
221
235
  start_time=start_time,
222
236
  end_time=end_time,
223
237
  after=after,
@@ -226,7 +240,6 @@ class LocationsClient:
226
240
  vehicle_ids=vehicle_ids,
227
241
  request_options=request_options,
228
242
  )
229
- return _response.data
230
243
 
231
244
 
232
245
  class AsyncLocationsClient:
@@ -253,7 +266,7 @@ class AsyncLocationsClient:
253
266
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
254
267
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
255
268
  request_options: typing.Optional[RequestOptions] = None,
256
- ) -> VehicleLocationsResponse:
269
+ ) -> AsyncPager[VehicleLocationsResponseData]:
257
270
  """
258
271
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestats) instead.***
259
272
 
@@ -287,7 +300,7 @@ class AsyncLocationsClient:
287
300
 
288
301
  Returns
289
302
  -------
290
- VehicleLocationsResponse
303
+ AsyncPager[VehicleLocationsResponseData]
291
304
  List of the most recent locations for the specified vehicles.
292
305
 
293
306
  Examples
@@ -302,12 +315,18 @@ class AsyncLocationsClient:
302
315
 
303
316
 
304
317
  async def main() -> None:
305
- await client.vehicles.locations.list()
318
+ response = await client.vehicles.locations.list()
319
+ async for item in response:
320
+ yield item
321
+
322
+ # alternatively, you can paginate page-by-page
323
+ async for page in response.iter_pages():
324
+ yield page
306
325
 
307
326
 
308
327
  asyncio.run(main())
309
328
  """
310
- _response = await self._raw_client.list(
329
+ return await self._raw_client.list(
311
330
  after=after,
312
331
  time=time,
313
332
  parent_tag_ids=parent_tag_ids,
@@ -315,7 +334,6 @@ class AsyncLocationsClient:
315
334
  vehicle_ids=vehicle_ids,
316
335
  request_options=request_options,
317
336
  )
318
- return _response.data
319
337
 
320
338
  async def feed(
321
339
  self,
@@ -325,7 +343,7 @@ class AsyncLocationsClient:
325
343
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
326
344
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
327
345
  request_options: typing.Optional[RequestOptions] = None,
328
- ) -> VehicleLocationsListResponse:
346
+ ) -> AsyncPager[VehicleLocationsListResponseData]:
329
347
  """
330
348
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatsfeed) instead.***
331
349
 
@@ -362,7 +380,7 @@ class AsyncLocationsClient:
362
380
 
363
381
  Returns
364
382
  -------
365
- VehicleLocationsListResponse
383
+ AsyncPager[VehicleLocationsListResponseData]
366
384
  List of locations events for the specified vehicles.
367
385
 
368
386
  Examples
@@ -377,19 +395,24 @@ class AsyncLocationsClient:
377
395
 
378
396
 
379
397
  async def main() -> None:
380
- await client.vehicles.locations.feed()
398
+ response = await client.vehicles.locations.feed()
399
+ async for item in response:
400
+ yield item
401
+
402
+ # alternatively, you can paginate page-by-page
403
+ async for page in response.iter_pages():
404
+ yield page
381
405
 
382
406
 
383
407
  asyncio.run(main())
384
408
  """
385
- _response = await self._raw_client.feed(
409
+ return await self._raw_client.feed(
386
410
  after=after,
387
411
  parent_tag_ids=parent_tag_ids,
388
412
  tag_ids=tag_ids,
389
413
  vehicle_ids=vehicle_ids,
390
414
  request_options=request_options,
391
415
  )
392
- return _response.data
393
416
 
394
417
  async def history(
395
418
  self,
@@ -401,7 +424,7 @@ class AsyncLocationsClient:
401
424
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
402
425
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
403
426
  request_options: typing.Optional[RequestOptions] = None,
404
- ) -> VehicleLocationsListResponse:
427
+ ) -> AsyncPager[VehicleLocationsListResponseData]:
405
428
  """
406
429
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatshistory) instead.***
407
430
 
@@ -438,7 +461,7 @@ class AsyncLocationsClient:
438
461
 
439
462
  Returns
440
463
  -------
441
- VehicleLocationsListResponse
464
+ AsyncPager[VehicleLocationsListResponseData]
442
465
  List of all locations for the specified vehicles and time range.
443
466
 
444
467
  Examples
@@ -453,15 +476,21 @@ class AsyncLocationsClient:
453
476
 
454
477
 
455
478
  async def main() -> None:
456
- await client.vehicles.locations.history(
479
+ response = await client.vehicles.locations.history(
457
480
  start_time="startTime",
458
481
  end_time="endTime",
459
482
  )
483
+ async for item in response:
484
+ yield item
485
+
486
+ # alternatively, you can paginate page-by-page
487
+ async for page in response.iter_pages():
488
+ yield page
460
489
 
461
490
 
462
491
  asyncio.run(main())
463
492
  """
464
- _response = await self._raw_client.history(
493
+ return await self._raw_client.history(
465
494
  start_time=start_time,
466
495
  end_time=end_time,
467
496
  after=after,
@@ -470,4 +499,3 @@ class AsyncLocationsClient:
470
499
  vehicle_ids=vehicle_ids,
471
500
  request_options=request_options,
472
501
  )
473
- return _response.data