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,11 +3,14 @@
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.action_object_request_body import ActionObjectRequestBody
8
- from ...types.alerts_get_configurations_response_body import AlertsGetConfigurationsResponseBody
9
9
  from ...types.alerts_patch_configurations_response_body import AlertsPatchConfigurationsResponseBody
10
10
  from ...types.alerts_post_configurations_response_body import AlertsPostConfigurationsResponseBody
11
+ from ...types.get_response_workflow_configuration_object_response_body import (
12
+ GetResponseWorkflowConfigurationObjectResponseBody,
13
+ )
11
14
  from ...types.operational_settings_object_request_body import OperationalSettingsObjectRequestBody
12
15
  from ...types.scope_object_request_body import ScopeObjectRequestBody
13
16
  from ...types.workflow_trigger_object_request_body import WorkflowTriggerObjectRequestBody
@@ -41,7 +44,7 @@ class ConfigurationsClient:
41
44
  after: typing.Optional[str] = None,
42
45
  include_external_ids: typing.Optional[bool] = None,
43
46
  request_options: typing.Optional[RequestOptions] = None,
44
- ) -> AlertsGetConfigurationsResponseBody:
47
+ ) -> SyncPager[GetResponseWorkflowConfigurationObjectResponseBody]:
45
48
  """
46
49
  Get specified Alert Configurations.
47
50
 
@@ -74,6 +77,7 @@ class ConfigurationsClient:
74
77
  Gateway Disconnected
75
78
  Panic Button
76
79
  Tampering Detected
80
+ Asset Reading
77
81
  If vehicle is severely speeding (as defined by your organization)
78
82
  DVIR Submitted for Asset
79
83
  Driver Document Submitted
@@ -115,7 +119,7 @@ class ConfigurationsClient:
115
119
 
116
120
  Returns
117
121
  -------
118
- AlertsGetConfigurationsResponseBody
122
+ SyncPager[GetResponseWorkflowConfigurationObjectResponseBody]
119
123
  OK response.
120
124
 
121
125
  Examples
@@ -125,16 +129,20 @@ class ConfigurationsClient:
125
129
  client = Samsara(
126
130
  token="YOUR_TOKEN",
127
131
  )
128
- client.alerts.configurations.list()
132
+ response = client.alerts.configurations.list()
133
+ for item in response:
134
+ yield item
135
+ # alternatively, you can paginate page-by-page
136
+ for page in response.iter_pages():
137
+ yield page
129
138
  """
130
- _response = self._raw_client.list(
139
+ return self._raw_client.list(
131
140
  ids=ids,
132
141
  status=status,
133
142
  after=after,
134
143
  include_external_ids=include_external_ids,
135
144
  request_options=request_options,
136
145
  )
137
- return _response.data
138
146
 
139
147
  def create(
140
148
  self,
@@ -369,7 +377,7 @@ class AsyncConfigurationsClient:
369
377
  after: typing.Optional[str] = None,
370
378
  include_external_ids: typing.Optional[bool] = None,
371
379
  request_options: typing.Optional[RequestOptions] = None,
372
- ) -> AlertsGetConfigurationsResponseBody:
380
+ ) -> AsyncPager[GetResponseWorkflowConfigurationObjectResponseBody]:
373
381
  """
374
382
  Get specified Alert Configurations.
375
383
 
@@ -402,6 +410,7 @@ class AsyncConfigurationsClient:
402
410
  Gateway Disconnected
403
411
  Panic Button
404
412
  Tampering Detected
413
+ Asset Reading
405
414
  If vehicle is severely speeding (as defined by your organization)
406
415
  DVIR Submitted for Asset
407
416
  Driver Document Submitted
@@ -443,7 +452,7 @@ class AsyncConfigurationsClient:
443
452
 
444
453
  Returns
445
454
  -------
446
- AlertsGetConfigurationsResponseBody
455
+ AsyncPager[GetResponseWorkflowConfigurationObjectResponseBody]
447
456
  OK response.
448
457
 
449
458
  Examples
@@ -458,19 +467,24 @@ class AsyncConfigurationsClient:
458
467
 
459
468
 
460
469
  async def main() -> None:
461
- await client.alerts.configurations.list()
470
+ response = await client.alerts.configurations.list()
471
+ async for item in response:
472
+ yield item
473
+
474
+ # alternatively, you can paginate page-by-page
475
+ async for page in response.iter_pages():
476
+ yield page
462
477
 
463
478
 
464
479
  asyncio.run(main())
465
480
  """
466
- _response = await self._raw_client.list(
481
+ return await self._raw_client.list(
467
482
  ids=ids,
468
483
  status=status,
469
484
  after=after,
470
485
  include_external_ids=include_external_ids,
471
486
  request_options=request_options,
472
487
  )
473
- return _response.data
474
488
 
475
489
  async def create(
476
490
  self,
@@ -6,6 +6,7 @@ from json.decoder import JSONDecodeError
6
6
  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
+ from ...core.pagination import AsyncPager, BaseHttpResponse, SyncPager
9
10
  from ...core.pydantic_utilities import parse_obj_as
10
11
  from ...core.request_options import RequestOptions
11
12
  from ...core.serialization import convert_and_respect_annotation_metadata
@@ -22,6 +23,9 @@ from ...types.action_object_request_body import ActionObjectRequestBody
22
23
  from ...types.alerts_get_configurations_response_body import AlertsGetConfigurationsResponseBody
23
24
  from ...types.alerts_patch_configurations_response_body import AlertsPatchConfigurationsResponseBody
24
25
  from ...types.alerts_post_configurations_response_body import AlertsPostConfigurationsResponseBody
26
+ from ...types.get_response_workflow_configuration_object_response_body import (
27
+ GetResponseWorkflowConfigurationObjectResponseBody,
28
+ )
25
29
  from ...types.operational_settings_object_request_body import OperationalSettingsObjectRequestBody
26
30
  from ...types.scope_object_request_body import ScopeObjectRequestBody
27
31
  from ...types.workflow_trigger_object_request_body import WorkflowTriggerObjectRequestBody
@@ -43,7 +47,7 @@ class RawConfigurationsClient:
43
47
  after: typing.Optional[str] = None,
44
48
  include_external_ids: typing.Optional[bool] = None,
45
49
  request_options: typing.Optional[RequestOptions] = None,
46
- ) -> HttpResponse[AlertsGetConfigurationsResponseBody]:
50
+ ) -> SyncPager[GetResponseWorkflowConfigurationObjectResponseBody]:
47
51
  """
48
52
  Get specified Alert Configurations.
49
53
 
@@ -76,6 +80,7 @@ class RawConfigurationsClient:
76
80
  Gateway Disconnected
77
81
  Panic Button
78
82
  Tampering Detected
83
+ Asset Reading
79
84
  If vehicle is severely speeding (as defined by your organization)
80
85
  DVIR Submitted for Asset
81
86
  Driver Document Submitted
@@ -117,7 +122,7 @@ class RawConfigurationsClient:
117
122
 
118
123
  Returns
119
124
  -------
120
- HttpResponse[AlertsGetConfigurationsResponseBody]
125
+ SyncPager[GetResponseWorkflowConfigurationObjectResponseBody]
121
126
  OK response.
122
127
  """
123
128
  _response = self._client_wrapper.httpx_client.request(
@@ -133,14 +138,29 @@ class RawConfigurationsClient:
133
138
  )
134
139
  try:
135
140
  if 200 <= _response.status_code < 300:
136
- _data = typing.cast(
141
+ _parsed_response = typing.cast(
137
142
  AlertsGetConfigurationsResponseBody,
138
143
  parse_obj_as(
139
144
  type_=AlertsGetConfigurationsResponseBody, # type: ignore
140
145
  object_=_response.json(),
141
146
  ),
142
147
  )
143
- return HttpResponse(response=_response, data=_data)
148
+ _items = _parsed_response.data
149
+ _has_next = False
150
+ _get_next = None
151
+ if _parsed_response.pagination is not None:
152
+ _parsed_next = _parsed_response.pagination.end_cursor
153
+ _has_next = _parsed_next is not None and _parsed_next != ""
154
+ _get_next = lambda: self.list(
155
+ ids=ids,
156
+ status=status,
157
+ after=_parsed_next,
158
+ include_external_ids=include_external_ids,
159
+ request_options=request_options,
160
+ )
161
+ return SyncPager(
162
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
163
+ )
144
164
  if _response.status_code == 401:
145
165
  raise UnauthorizedError(
146
166
  headers=dict(_response.headers),
@@ -783,7 +803,7 @@ class AsyncRawConfigurationsClient:
783
803
  after: typing.Optional[str] = None,
784
804
  include_external_ids: typing.Optional[bool] = None,
785
805
  request_options: typing.Optional[RequestOptions] = None,
786
- ) -> AsyncHttpResponse[AlertsGetConfigurationsResponseBody]:
806
+ ) -> AsyncPager[GetResponseWorkflowConfigurationObjectResponseBody]:
787
807
  """
788
808
  Get specified Alert Configurations.
789
809
 
@@ -816,6 +836,7 @@ class AsyncRawConfigurationsClient:
816
836
  Gateway Disconnected
817
837
  Panic Button
818
838
  Tampering Detected
839
+ Asset Reading
819
840
  If vehicle is severely speeding (as defined by your organization)
820
841
  DVIR Submitted for Asset
821
842
  Driver Document Submitted
@@ -857,7 +878,7 @@ class AsyncRawConfigurationsClient:
857
878
 
858
879
  Returns
859
880
  -------
860
- AsyncHttpResponse[AlertsGetConfigurationsResponseBody]
881
+ AsyncPager[GetResponseWorkflowConfigurationObjectResponseBody]
861
882
  OK response.
862
883
  """
863
884
  _response = await self._client_wrapper.httpx_client.request(
@@ -873,14 +894,32 @@ class AsyncRawConfigurationsClient:
873
894
  )
874
895
  try:
875
896
  if 200 <= _response.status_code < 300:
876
- _data = typing.cast(
897
+ _parsed_response = typing.cast(
877
898
  AlertsGetConfigurationsResponseBody,
878
899
  parse_obj_as(
879
900
  type_=AlertsGetConfigurationsResponseBody, # type: ignore
880
901
  object_=_response.json(),
881
902
  ),
882
903
  )
883
- return AsyncHttpResponse(response=_response, data=_data)
904
+ _items = _parsed_response.data
905
+ _has_next = False
906
+ _get_next = None
907
+ if _parsed_response.pagination is not None:
908
+ _parsed_next = _parsed_response.pagination.end_cursor
909
+ _has_next = _parsed_next is not None and _parsed_next != ""
910
+
911
+ async def _get_next():
912
+ return await self.list(
913
+ ids=ids,
914
+ status=status,
915
+ after=_parsed_next,
916
+ include_external_ids=include_external_ids,
917
+ request_options=request_options,
918
+ )
919
+
920
+ return AsyncPager(
921
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
922
+ )
884
923
  if _response.status_code == 401:
885
924
  raise UnauthorizedError(
886
925
  headers=dict(_response.headers),
@@ -3,8 +3,9 @@
3
3
  import typing
4
4
 
5
5
  from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ...core.pagination import AsyncPager, SyncPager
6
7
  from ...core.request_options import RequestOptions
7
- from ...types.alerts_get_incidents_response_body import AlertsGetIncidentsResponseBody
8
+ from ...types.get_workflow_incident_response_object_response_body import GetWorkflowIncidentResponseObjectResponseBody
8
9
  from .raw_client import AsyncRawIncidentsClient, RawIncidentsClient
9
10
 
10
11
 
@@ -31,7 +32,7 @@ class IncidentsClient:
31
32
  end_time: typing.Optional[str] = None,
32
33
  after: typing.Optional[str] = None,
33
34
  request_options: typing.Optional[RequestOptions] = None,
34
- ) -> AlertsGetIncidentsResponseBody:
35
+ ) -> SyncPager[GetWorkflowIncidentResponseObjectResponseBody]:
35
36
  """
36
37
  Get Alert Incidents for specific Alert Configurations over a specified period of time.
37
38
 
@@ -61,7 +62,7 @@ class IncidentsClient:
61
62
 
62
63
  Returns
63
64
  -------
64
- AlertsGetIncidentsResponseBody
65
+ SyncPager[GetWorkflowIncidentResponseObjectResponseBody]
65
66
  OK response.
66
67
 
67
68
  Examples
@@ -71,18 +72,22 @@ class IncidentsClient:
71
72
  client = Samsara(
72
73
  token="YOUR_TOKEN",
73
74
  )
74
- client.alerts.incidents.stream(
75
+ response = client.alerts.incidents.stream(
75
76
  start_time="startTime",
76
77
  )
78
+ for item in response:
79
+ yield item
80
+ # alternatively, you can paginate page-by-page
81
+ for page in response.iter_pages():
82
+ yield page
77
83
  """
78
- _response = self._raw_client.stream(
84
+ return self._raw_client.stream(
79
85
  start_time=start_time,
80
86
  configuration_ids=configuration_ids,
81
87
  end_time=end_time,
82
88
  after=after,
83
89
  request_options=request_options,
84
90
  )
85
- return _response.data
86
91
 
87
92
 
88
93
  class AsyncIncidentsClient:
@@ -108,7 +113,7 @@ class AsyncIncidentsClient:
108
113
  end_time: typing.Optional[str] = None,
109
114
  after: typing.Optional[str] = None,
110
115
  request_options: typing.Optional[RequestOptions] = None,
111
- ) -> AlertsGetIncidentsResponseBody:
116
+ ) -> AsyncPager[GetWorkflowIncidentResponseObjectResponseBody]:
112
117
  """
113
118
  Get Alert Incidents for specific Alert Configurations over a specified period of time.
114
119
 
@@ -138,7 +143,7 @@ class AsyncIncidentsClient:
138
143
 
139
144
  Returns
140
145
  -------
141
- AlertsGetIncidentsResponseBody
146
+ AsyncPager[GetWorkflowIncidentResponseObjectResponseBody]
142
147
  OK response.
143
148
 
144
149
  Examples
@@ -153,18 +158,23 @@ class AsyncIncidentsClient:
153
158
 
154
159
 
155
160
  async def main() -> None:
156
- await client.alerts.incidents.stream(
161
+ response = await client.alerts.incidents.stream(
157
162
  start_time="startTime",
158
163
  )
164
+ async for item in response:
165
+ yield item
166
+
167
+ # alternatively, you can paginate page-by-page
168
+ async for page in response.iter_pages():
169
+ yield page
159
170
 
160
171
 
161
172
  asyncio.run(main())
162
173
  """
163
- _response = await self._raw_client.stream(
174
+ return await self._raw_client.stream(
164
175
  start_time=start_time,
165
176
  configuration_ids=configuration_ids,
166
177
  end_time=end_time,
167
178
  after=after,
168
179
  request_options=request_options,
169
180
  )
170
- 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
@@ -18,6 +18,7 @@ from ...errors.service_unavailable_error import ServiceUnavailableError
18
18
  from ...errors.too_many_requests_error import TooManyRequestsError
19
19
  from ...errors.unauthorized_error import UnauthorizedError
20
20
  from ...types.alerts_get_incidents_response_body import AlertsGetIncidentsResponseBody
21
+ from ...types.get_workflow_incident_response_object_response_body import GetWorkflowIncidentResponseObjectResponseBody
21
22
 
22
23
 
23
24
  class RawIncidentsClient:
@@ -32,7 +33,7 @@ class RawIncidentsClient:
32
33
  end_time: typing.Optional[str] = None,
33
34
  after: typing.Optional[str] = None,
34
35
  request_options: typing.Optional[RequestOptions] = None,
35
- ) -> HttpResponse[AlertsGetIncidentsResponseBody]:
36
+ ) -> SyncPager[GetWorkflowIncidentResponseObjectResponseBody]:
36
37
  """
37
38
  Get Alert Incidents for specific Alert Configurations over a specified period of time.
38
39
 
@@ -62,7 +63,7 @@ class RawIncidentsClient:
62
63
 
63
64
  Returns
64
65
  -------
65
- HttpResponse[AlertsGetIncidentsResponseBody]
66
+ SyncPager[GetWorkflowIncidentResponseObjectResponseBody]
66
67
  OK response.
67
68
  """
68
69
  _response = self._client_wrapper.httpx_client.request(
@@ -78,14 +79,29 @@ class RawIncidentsClient:
78
79
  )
79
80
  try:
80
81
  if 200 <= _response.status_code < 300:
81
- _data = typing.cast(
82
+ _parsed_response = typing.cast(
82
83
  AlertsGetIncidentsResponseBody,
83
84
  parse_obj_as(
84
85
  type_=AlertsGetIncidentsResponseBody, # type: ignore
85
86
  object_=_response.json(),
86
87
  ),
87
88
  )
88
- return HttpResponse(response=_response, data=_data)
89
+ _items = _parsed_response.data
90
+ _has_next = False
91
+ _get_next = None
92
+ if _parsed_response.pagination is not None:
93
+ _parsed_next = _parsed_response.pagination.end_cursor
94
+ _has_next = _parsed_next is not None and _parsed_next != ""
95
+ _get_next = lambda: self.stream(
96
+ start_time=start_time,
97
+ configuration_ids=configuration_ids,
98
+ end_time=end_time,
99
+ after=_parsed_next,
100
+ request_options=request_options,
101
+ )
102
+ return SyncPager(
103
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
104
+ )
89
105
  if _response.status_code == 401:
90
106
  raise UnauthorizedError(
91
107
  headers=dict(_response.headers),
@@ -203,7 +219,7 @@ class AsyncRawIncidentsClient:
203
219
  end_time: typing.Optional[str] = None,
204
220
  after: typing.Optional[str] = None,
205
221
  request_options: typing.Optional[RequestOptions] = None,
206
- ) -> AsyncHttpResponse[AlertsGetIncidentsResponseBody]:
222
+ ) -> AsyncPager[GetWorkflowIncidentResponseObjectResponseBody]:
207
223
  """
208
224
  Get Alert Incidents for specific Alert Configurations over a specified period of time.
209
225
 
@@ -233,7 +249,7 @@ class AsyncRawIncidentsClient:
233
249
 
234
250
  Returns
235
251
  -------
236
- AsyncHttpResponse[AlertsGetIncidentsResponseBody]
252
+ AsyncPager[GetWorkflowIncidentResponseObjectResponseBody]
237
253
  OK response.
238
254
  """
239
255
  _response = await self._client_wrapper.httpx_client.request(
@@ -249,14 +265,32 @@ class AsyncRawIncidentsClient:
249
265
  )
250
266
  try:
251
267
  if 200 <= _response.status_code < 300:
252
- _data = typing.cast(
268
+ _parsed_response = typing.cast(
253
269
  AlertsGetIncidentsResponseBody,
254
270
  parse_obj_as(
255
271
  type_=AlertsGetIncidentsResponseBody, # type: ignore
256
272
  object_=_response.json(),
257
273
  ),
258
274
  )
259
- return AsyncHttpResponse(response=_response, data=_data)
275
+ _items = _parsed_response.data
276
+ _has_next = False
277
+ _get_next = None
278
+ if _parsed_response.pagination is not None:
279
+ _parsed_next = _parsed_response.pagination.end_cursor
280
+ _has_next = _parsed_next is not None and _parsed_next != ""
281
+
282
+ async def _get_next():
283
+ return await self.stream(
284
+ start_time=start_time,
285
+ configuration_ids=configuration_ids,
286
+ end_time=end_time,
287
+ after=_parsed_next,
288
+ request_options=request_options,
289
+ )
290
+
291
+ return AsyncPager(
292
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
293
+ )
260
294
  if _response.status_code == 401:
261
295
  raise UnauthorizedError(
262
296
  headers=dict(_response.headers),
samsara/assets/client.py CHANGED
@@ -3,9 +3,10 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
8
+ from ..types.asset_response_body import AssetResponseBody
7
9
  from ..types.assets_create_asset_response_body import AssetsCreateAssetResponseBody
8
- from ..types.assets_list_assets_response_body import AssetsListAssetsResponseBody
9
10
  from ..types.assets_update_asset_response_body import AssetsUpdateAssetResponseBody
10
11
  from .location_and_speed.client import AsyncLocationAndSpeedClient, LocationAndSpeedClient
11
12
  from .raw_client import AsyncRawAssetsClient, RawAssetsClient
@@ -48,7 +49,7 @@ class AssetsClient:
48
49
  ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
49
50
  attribute_value_ids: typing.Optional[str] = None,
50
51
  request_options: typing.Optional[RequestOptions] = None,
51
- ) -> AssetsListAssetsResponseBody:
52
+ ) -> SyncPager[AssetResponseBody]:
52
53
  """
53
54
  List all assets. Up to 300 assets will be returned per page.
54
55
 
@@ -93,7 +94,7 @@ class AssetsClient:
93
94
 
94
95
  Returns
95
96
  -------
96
- AssetsListAssetsResponseBody
97
+ SyncPager[AssetResponseBody]
97
98
  OK response.
98
99
 
99
100
  Examples
@@ -103,9 +104,14 @@ class AssetsClient:
103
104
  client = Samsara(
104
105
  token="YOUR_TOKEN",
105
106
  )
106
- client.assets.list()
107
+ response = client.assets.list()
108
+ for item in response:
109
+ yield item
110
+ # alternatively, you can paginate page-by-page
111
+ for page in response.iter_pages():
112
+ yield page
107
113
  """
108
- _response = self._raw_client.list(
114
+ return self._raw_client.list(
109
115
  type=type,
110
116
  after=after,
111
117
  updated_after_time=updated_after_time,
@@ -117,7 +123,6 @@ class AssetsClient:
117
123
  attribute_value_ids=attribute_value_ids,
118
124
  request_options=request_options,
119
125
  )
120
- return _response.data
121
126
 
122
127
  def create(
123
128
  self,
@@ -381,7 +386,7 @@ class AsyncAssetsClient:
381
386
  ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
382
387
  attribute_value_ids: typing.Optional[str] = None,
383
388
  request_options: typing.Optional[RequestOptions] = None,
384
- ) -> AssetsListAssetsResponseBody:
389
+ ) -> AsyncPager[AssetResponseBody]:
385
390
  """
386
391
  List all assets. Up to 300 assets will be returned per page.
387
392
 
@@ -426,7 +431,7 @@ class AsyncAssetsClient:
426
431
 
427
432
  Returns
428
433
  -------
429
- AssetsListAssetsResponseBody
434
+ AsyncPager[AssetResponseBody]
430
435
  OK response.
431
436
 
432
437
  Examples
@@ -441,12 +446,18 @@ class AsyncAssetsClient:
441
446
 
442
447
 
443
448
  async def main() -> None:
444
- await client.assets.list()
449
+ response = await client.assets.list()
450
+ async for item in response:
451
+ yield item
452
+
453
+ # alternatively, you can paginate page-by-page
454
+ async for page in response.iter_pages():
455
+ yield page
445
456
 
446
457
 
447
458
  asyncio.run(main())
448
459
  """
449
- _response = await self._raw_client.list(
460
+ return await self._raw_client.list(
450
461
  type=type,
451
462
  after=after,
452
463
  updated_after_time=updated_after_time,
@@ -458,7 +469,6 @@ class AsyncAssetsClient:
458
469
  attribute_value_ids=attribute_value_ids,
459
470
  request_options=request_options,
460
471
  )
461
- return _response.data
462
472
 
463
473
  async def create(
464
474
  self,
@@ -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.location_and_speed_get_location_and_speed_response_body import (
8
- LocationAndSpeedGetLocationAndSpeedResponseBody,
9
- )
8
+ from ...types.location_and_speed_response_response_body import LocationAndSpeedResponseResponseBody
10
9
  from .raw_client import AsyncRawLocationAndSpeedClient, RawLocationAndSpeedClient
11
10
 
12
11
 
@@ -38,7 +37,7 @@ class LocationAndSpeedClient:
38
37
  include_geofence_lookup: typing.Optional[bool] = None,
39
38
  include_external_ids: typing.Optional[bool] = None,
40
39
  request_options: typing.Optional[RequestOptions] = None,
41
- ) -> LocationAndSpeedGetLocationAndSpeedResponseBody:
40
+ ) -> SyncPager[LocationAndSpeedResponseResponseBody]:
42
41
  """
43
42
  This endpoint will return asset locations and speed data that has been collected for your organization based on the time parameters passed in. Results are paginated. If you include an endTime, the endpoint will return data up until that point. If you don’t include an endTime, you can continue to poll the API real-time with the pagination cursor that gets returned on every call. The endpoint will only return data up until the endTime that has been processed by the server at the time of the original request. You will need to request the same [startTime, endTime) range again to receive data for assets processed after the original request time. This endpoint sorts the time-series data by device.
44
43
 
@@ -83,7 +82,7 @@ class LocationAndSpeedClient:
83
82
 
84
83
  Returns
85
84
  -------
86
- LocationAndSpeedGetLocationAndSpeedResponseBody
85
+ SyncPager[LocationAndSpeedResponseResponseBody]
87
86
  OK response.
88
87
 
89
88
  Examples
@@ -93,9 +92,14 @@ class LocationAndSpeedClient:
93
92
  client = Samsara(
94
93
  token="YOUR_TOKEN",
95
94
  )
96
- client.assets.location_and_speed.stream()
95
+ response = client.assets.location_and_speed.stream()
96
+ for item in response:
97
+ yield item
98
+ # alternatively, you can paginate page-by-page
99
+ for page in response.iter_pages():
100
+ yield page
97
101
  """
98
- _response = self._raw_client.stream(
102
+ return self._raw_client.stream(
99
103
  after=after,
100
104
  limit=limit,
101
105
  start_time=start_time,
@@ -107,7 +111,6 @@ class LocationAndSpeedClient:
107
111
  include_external_ids=include_external_ids,
108
112
  request_options=request_options,
109
113
  )
110
- return _response.data
111
114
 
112
115
 
113
116
  class AsyncLocationAndSpeedClient:
@@ -138,7 +141,7 @@ class AsyncLocationAndSpeedClient:
138
141
  include_geofence_lookup: typing.Optional[bool] = None,
139
142
  include_external_ids: typing.Optional[bool] = None,
140
143
  request_options: typing.Optional[RequestOptions] = None,
141
- ) -> LocationAndSpeedGetLocationAndSpeedResponseBody:
144
+ ) -> AsyncPager[LocationAndSpeedResponseResponseBody]:
142
145
  """
143
146
  This endpoint will return asset locations and speed data that has been collected for your organization based on the time parameters passed in. Results are paginated. If you include an endTime, the endpoint will return data up until that point. If you don’t include an endTime, you can continue to poll the API real-time with the pagination cursor that gets returned on every call. The endpoint will only return data up until the endTime that has been processed by the server at the time of the original request. You will need to request the same [startTime, endTime) range again to receive data for assets processed after the original request time. This endpoint sorts the time-series data by device.
144
147
 
@@ -183,7 +186,7 @@ class AsyncLocationAndSpeedClient:
183
186
 
184
187
  Returns
185
188
  -------
186
- LocationAndSpeedGetLocationAndSpeedResponseBody
189
+ AsyncPager[LocationAndSpeedResponseResponseBody]
187
190
  OK response.
188
191
 
189
192
  Examples
@@ -198,12 +201,18 @@ class AsyncLocationAndSpeedClient:
198
201
 
199
202
 
200
203
  async def main() -> None:
201
- await client.assets.location_and_speed.stream()
204
+ response = await client.assets.location_and_speed.stream()
205
+ async for item in response:
206
+ yield item
207
+
208
+ # alternatively, you can paginate page-by-page
209
+ async for page in response.iter_pages():
210
+ yield page
202
211
 
203
212
 
204
213
  asyncio.run(main())
205
214
  """
206
- _response = await self._raw_client.stream(
215
+ return await self._raw_client.stream(
207
216
  after=after,
208
217
  limit=limit,
209
218
  start_time=start_time,
@@ -215,4 +224,3 @@ class AsyncLocationAndSpeedClient:
215
224
  include_external_ids=include_external_ids,
216
225
  request_options=request_options,
217
226
  )
218
- return _response.data