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
@@ -7,8 +7,10 @@ from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ..core.http_response import AsyncHttpResponse, HttpResponse
9
9
  from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.pagination import AsyncPager, BaseHttpResponse, SyncPager
10
11
  from ..core.pydantic_utilities import parse_obj_as
11
12
  from ..core.request_options import RequestOptions
13
+ from ..types.carrier_proposed_assignment import CarrierProposedAssignment
12
14
  from ..types.carrier_proposed_assignment_response import CarrierProposedAssignmentResponse
13
15
  from ..types.list_carrier_proposed_assignment_response import ListCarrierProposedAssignmentResponse
14
16
 
@@ -28,7 +30,7 @@ class RawCarrierProposedAssignmentsClient:
28
30
  driver_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
29
31
  active_time: typing.Optional[str] = None,
30
32
  request_options: typing.Optional[RequestOptions] = None,
31
- ) -> HttpResponse[ListCarrierProposedAssignmentResponse]:
33
+ ) -> SyncPager[CarrierProposedAssignment]:
32
34
  """
33
35
  Show the assignments created by the POST fleet/carrier-proposed-assignments. This endpoint will only show the assignments that are active for drivers and currently visible to them in the driver app. Once a proposed assignment has been accepted, the endpoint will not return any data.
34
36
 
@@ -55,7 +57,7 @@ class RawCarrierProposedAssignmentsClient:
55
57
 
56
58
  Returns
57
59
  -------
58
- HttpResponse[ListCarrierProposedAssignmentResponse]
60
+ SyncPager[CarrierProposedAssignment]
59
61
  Returns the assignments that drivers would see in the future, if any.
60
62
  """
61
63
  _response = self._client_wrapper.httpx_client.request(
@@ -71,14 +73,29 @@ class RawCarrierProposedAssignmentsClient:
71
73
  )
72
74
  try:
73
75
  if 200 <= _response.status_code < 300:
74
- _data = typing.cast(
76
+ _parsed_response = typing.cast(
75
77
  ListCarrierProposedAssignmentResponse,
76
78
  parse_obj_as(
77
79
  type_=ListCarrierProposedAssignmentResponse, # type: ignore
78
80
  object_=_response.json(),
79
81
  ),
80
82
  )
81
- return HttpResponse(response=_response, data=_data)
83
+ _items = _parsed_response.data
84
+ _has_next = False
85
+ _get_next = None
86
+ if _parsed_response.pagination is not None:
87
+ _parsed_next = _parsed_response.pagination.end_cursor
88
+ _has_next = _parsed_next is not None and _parsed_next != ""
89
+ _get_next = lambda: self.list(
90
+ limit=limit,
91
+ after=_parsed_next,
92
+ driver_ids=driver_ids,
93
+ active_time=active_time,
94
+ request_options=request_options,
95
+ )
96
+ return SyncPager(
97
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
98
+ )
82
99
  _response_json = _response.json()
83
100
  except JSONDecodeError:
84
101
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -220,7 +237,7 @@ class AsyncRawCarrierProposedAssignmentsClient:
220
237
  driver_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
221
238
  active_time: typing.Optional[str] = None,
222
239
  request_options: typing.Optional[RequestOptions] = None,
223
- ) -> AsyncHttpResponse[ListCarrierProposedAssignmentResponse]:
240
+ ) -> AsyncPager[CarrierProposedAssignment]:
224
241
  """
225
242
  Show the assignments created by the POST fleet/carrier-proposed-assignments. This endpoint will only show the assignments that are active for drivers and currently visible to them in the driver app. Once a proposed assignment has been accepted, the endpoint will not return any data.
226
243
 
@@ -247,7 +264,7 @@ class AsyncRawCarrierProposedAssignmentsClient:
247
264
 
248
265
  Returns
249
266
  -------
250
- AsyncHttpResponse[ListCarrierProposedAssignmentResponse]
267
+ AsyncPager[CarrierProposedAssignment]
251
268
  Returns the assignments that drivers would see in the future, if any.
252
269
  """
253
270
  _response = await self._client_wrapper.httpx_client.request(
@@ -263,14 +280,32 @@ class AsyncRawCarrierProposedAssignmentsClient:
263
280
  )
264
281
  try:
265
282
  if 200 <= _response.status_code < 300:
266
- _data = typing.cast(
283
+ _parsed_response = typing.cast(
267
284
  ListCarrierProposedAssignmentResponse,
268
285
  parse_obj_as(
269
286
  type_=ListCarrierProposedAssignmentResponse, # type: ignore
270
287
  object_=_response.json(),
271
288
  ),
272
289
  )
273
- return AsyncHttpResponse(response=_response, data=_data)
290
+ _items = _parsed_response.data
291
+ _has_next = False
292
+ _get_next = None
293
+ if _parsed_response.pagination is not None:
294
+ _parsed_next = _parsed_response.pagination.end_cursor
295
+ _has_next = _parsed_next is not None and _parsed_next != ""
296
+
297
+ async def _get_next():
298
+ return await self.list(
299
+ limit=limit,
300
+ after=_parsed_next,
301
+ driver_ids=driver_ids,
302
+ active_time=active_time,
303
+ request_options=request_options,
304
+ )
305
+
306
+ return AsyncPager(
307
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
308
+ )
274
309
  _response_json = _response.json()
275
310
  except JSONDecodeError:
276
311
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
samsara/client.py CHANGED
@@ -9,7 +9,6 @@ from .alerts.client import AlertsClient, AsyncAlertsClient
9
9
  from .assets.client import AssetsClient, AsyncAssetsClient
10
10
  from .attributes.client import AsyncAttributesClient, AttributesClient
11
11
  from .auth.client import AsyncAuthClient, AuthClient
12
- from .beta.client import AsyncBetaClient, BetaClient
13
12
  from .cameras.client import AsyncCamerasClient, CamerasClient
14
13
  from .carrier_proposed_assignments.client import AsyncCarrierProposedAssignmentsClient, CarrierProposedAssignmentsClient
15
14
  from .coaching.client import AsyncCoachingClient, CoachingClient
@@ -28,10 +27,11 @@ from .dvirs.client import AsyncDvirsClient, DvirsClient
28
27
  from .environment import SamsaraEnvironment
29
28
  from .equipment.client import AsyncEquipmentClient, EquipmentClient
30
29
  from .form_submissions.client import AsyncFormSubmissionsClient, FormSubmissionsClient
30
+ from .forms.client import AsyncFormsClient, FormsClient
31
31
  from .fuel_purchases.client import AsyncFuelPurchasesClient, FuelPurchasesClient
32
32
  from .gateways.client import AsyncGatewaysClient, GatewaysClient
33
33
  from .hos.client import AsyncHosClient, HosClient
34
- from .hours_of_service.client import AsyncHoursOfServiceClient, HoursOfServiceClient
34
+ from .idling.client import AsyncIdlingClient, IdlingClient
35
35
  from .ifta.client import AsyncIftaClient, IftaClient
36
36
  from .inputs.client import AsyncInputsClient, InputsClient
37
37
  from .issues.client import AsyncIssuesClient, IssuesClient
@@ -39,11 +39,13 @@ from .legacy.client import AsyncLegacyClient, LegacyClient
39
39
  from .live_shares.client import AsyncLiveSharesClient, LiveSharesClient
40
40
  from .maintenance.client import AsyncMaintenanceClient, MaintenanceClient
41
41
  from .me.client import AsyncMeClient, MeClient
42
+ from .readings.client import AsyncReadingsClient, ReadingsClient
42
43
  from .reports.client import AsyncReportsClient, ReportsClient
43
44
  from .routes.client import AsyncRoutesClient, RoutesClient
44
45
  from .safety_events.client import AsyncSafetyEventsClient, SafetyEventsClient
45
46
  from .settings.client import AsyncSettingsClient, SettingsClient
46
47
  from .speeding_intervals.client import AsyncSpeedingIntervalsClient, SpeedingIntervalsClient
48
+ from .tachograph.client import AsyncTachographClient, TachographClient
47
49
  from .tags.client import AsyncTagsClient, TagsClient
48
50
  from .trailers.client import AsyncTrailersClient, TrailersClient
49
51
  from .training_assignments.client import AsyncTrainingAssignmentsClient, TrainingAssignmentsClient
@@ -51,6 +53,7 @@ from .training_courses.client import AsyncTrainingCoursesClient, TrainingCourses
51
53
  from .trips.client import AsyncTripsClient, TripsClient
52
54
  from .user_roles.client import AsyncUserRolesClient, UserRolesClient
53
55
  from .users.client import AsyncUsersClient, UsersClient
56
+ from .v_1_messages.client import AsyncV1MessagesClient, V1MessagesClient
54
57
  from .vehicles.client import AsyncVehiclesClient, VehiclesClient
55
58
  from .webhooks.client import AsyncWebhooksClient, WebhooksClient
56
59
 
@@ -134,19 +137,20 @@ class Samsara:
134
137
  self.drivers = DriversClient(client_wrapper=self._client_wrapper)
135
138
  self.equipment = EquipmentClient(client_wrapper=self._client_wrapper)
136
139
  self.hos = HosClient(client_wrapper=self._client_wrapper)
137
- self.hours_of_service = HoursOfServiceClient(client_wrapper=self._client_wrapper)
138
140
  self.routes = RoutesClient(client_wrapper=self._client_wrapper)
139
141
  self.safety_events = SafetyEventsClient(client_wrapper=self._client_wrapper)
140
142
  self.trailers = TrailersClient(client_wrapper=self._client_wrapper)
141
143
  self.vehicles = VehiclesClient(client_wrapper=self._client_wrapper)
142
144
  self.legacy = LegacyClient(client_wrapper=self._client_wrapper)
143
145
  self.form_submissions = FormSubmissionsClient(client_wrapper=self._client_wrapper)
146
+ self.forms = FormsClient(client_wrapper=self._client_wrapper)
144
147
  self.fuel_purchases = FuelPurchasesClient(client_wrapper=self._client_wrapper)
145
148
  self.gateways = GatewaysClient(client_wrapper=self._client_wrapper)
146
- self.beta = BetaClient(client_wrapper=self._client_wrapper)
149
+ self.idling = IdlingClient(client_wrapper=self._client_wrapper)
147
150
  self.issues = IssuesClient(client_wrapper=self._client_wrapper)
148
151
  self.live_shares = LiveSharesClient(client_wrapper=self._client_wrapper)
149
152
  self.me = MeClient(client_wrapper=self._client_wrapper)
153
+ self.readings = ReadingsClient(client_wrapper=self._client_wrapper)
150
154
  self.speeding_intervals = SpeedingIntervalsClient(client_wrapper=self._client_wrapper)
151
155
  self.tags = TagsClient(client_wrapper=self._client_wrapper)
152
156
  self.training_assignments = TrainingAssignmentsClient(client_wrapper=self._client_wrapper)
@@ -154,6 +158,7 @@ class Samsara:
154
158
  self.trips = TripsClient(client_wrapper=self._client_wrapper)
155
159
  self.user_roles = UserRolesClient(client_wrapper=self._client_wrapper)
156
160
  self.users = UsersClient(client_wrapper=self._client_wrapper)
161
+ self.v_1_messages = V1MessagesClient(client_wrapper=self._client_wrapper)
157
162
  self.webhooks = WebhooksClient(client_wrapper=self._client_wrapper)
158
163
  self.auth = AuthClient(client_wrapper=self._client_wrapper)
159
164
  self.alerts = AlertsClient(client_wrapper=self._client_wrapper)
@@ -163,6 +168,7 @@ class Samsara:
163
168
  self.maintenance = MaintenanceClient(client_wrapper=self._client_wrapper)
164
169
  self.reports = ReportsClient(client_wrapper=self._client_wrapper)
165
170
  self.settings = SettingsClient(client_wrapper=self._client_wrapper)
171
+ self.tachograph = TachographClient(client_wrapper=self._client_wrapper)
166
172
 
167
173
 
168
174
  class AsyncSamsara:
@@ -244,19 +250,20 @@ class AsyncSamsara:
244
250
  self.drivers = AsyncDriversClient(client_wrapper=self._client_wrapper)
245
251
  self.equipment = AsyncEquipmentClient(client_wrapper=self._client_wrapper)
246
252
  self.hos = AsyncHosClient(client_wrapper=self._client_wrapper)
247
- self.hours_of_service = AsyncHoursOfServiceClient(client_wrapper=self._client_wrapper)
248
253
  self.routes = AsyncRoutesClient(client_wrapper=self._client_wrapper)
249
254
  self.safety_events = AsyncSafetyEventsClient(client_wrapper=self._client_wrapper)
250
255
  self.trailers = AsyncTrailersClient(client_wrapper=self._client_wrapper)
251
256
  self.vehicles = AsyncVehiclesClient(client_wrapper=self._client_wrapper)
252
257
  self.legacy = AsyncLegacyClient(client_wrapper=self._client_wrapper)
253
258
  self.form_submissions = AsyncFormSubmissionsClient(client_wrapper=self._client_wrapper)
259
+ self.forms = AsyncFormsClient(client_wrapper=self._client_wrapper)
254
260
  self.fuel_purchases = AsyncFuelPurchasesClient(client_wrapper=self._client_wrapper)
255
261
  self.gateways = AsyncGatewaysClient(client_wrapper=self._client_wrapper)
256
- self.beta = AsyncBetaClient(client_wrapper=self._client_wrapper)
262
+ self.idling = AsyncIdlingClient(client_wrapper=self._client_wrapper)
257
263
  self.issues = AsyncIssuesClient(client_wrapper=self._client_wrapper)
258
264
  self.live_shares = AsyncLiveSharesClient(client_wrapper=self._client_wrapper)
259
265
  self.me = AsyncMeClient(client_wrapper=self._client_wrapper)
266
+ self.readings = AsyncReadingsClient(client_wrapper=self._client_wrapper)
260
267
  self.speeding_intervals = AsyncSpeedingIntervalsClient(client_wrapper=self._client_wrapper)
261
268
  self.tags = AsyncTagsClient(client_wrapper=self._client_wrapper)
262
269
  self.training_assignments = AsyncTrainingAssignmentsClient(client_wrapper=self._client_wrapper)
@@ -264,6 +271,7 @@ class AsyncSamsara:
264
271
  self.trips = AsyncTripsClient(client_wrapper=self._client_wrapper)
265
272
  self.user_roles = AsyncUserRolesClient(client_wrapper=self._client_wrapper)
266
273
  self.users = AsyncUsersClient(client_wrapper=self._client_wrapper)
274
+ self.v_1_messages = AsyncV1MessagesClient(client_wrapper=self._client_wrapper)
267
275
  self.webhooks = AsyncWebhooksClient(client_wrapper=self._client_wrapper)
268
276
  self.auth = AsyncAuthClient(client_wrapper=self._client_wrapper)
269
277
  self.alerts = AsyncAlertsClient(client_wrapper=self._client_wrapper)
@@ -273,6 +281,7 @@ class AsyncSamsara:
273
281
  self.maintenance = AsyncMaintenanceClient(client_wrapper=self._client_wrapper)
274
282
  self.reports = AsyncReportsClient(client_wrapper=self._client_wrapper)
275
283
  self.settings = AsyncSettingsClient(client_wrapper=self._client_wrapper)
284
+ self.tachograph = AsyncTachographClient(client_wrapper=self._client_wrapper)
276
285
 
277
286
 
278
287
  def _get_base_url(*, base_url: typing.Optional[str] = None, environment: SamsaraEnvironment) -> str:
@@ -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.driver_coach_assignments_get_driver_coach_assignment_response_body import (
8
- DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody,
8
+ from ...types.coach_assignment_with_driver_external_ids_response_response_body import (
9
+ CoachAssignmentWithDriverExternalIdsResponseResponseBody,
9
10
  )
10
11
  from ...types.driver_coach_assignments_put_driver_coach_assignment_response_body import (
11
12
  DriverCoachAssignmentsPutDriverCoachAssignmentResponseBody,
@@ -36,7 +37,7 @@ class DriverCoachAssignmentsClient:
36
37
  include_external_ids: typing.Optional[bool] = None,
37
38
  after: typing.Optional[str] = None,
38
39
  request_options: typing.Optional[RequestOptions] = None,
39
- ) -> DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody:
40
+ ) -> SyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]:
40
41
  """
41
42
  This endpoint will return coach assignments for your organization based on the parameters passed in. Results are paginated.
42
43
 
@@ -66,7 +67,7 @@ class DriverCoachAssignmentsClient:
66
67
 
67
68
  Returns
68
69
  -------
69
- DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody
70
+ SyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]
70
71
  OK response.
71
72
 
72
73
  Examples
@@ -76,16 +77,20 @@ class DriverCoachAssignmentsClient:
76
77
  client = Samsara(
77
78
  token="YOUR_TOKEN",
78
79
  )
79
- client.coaching.driver_coach_assignments.list()
80
+ response = client.coaching.driver_coach_assignments.list()
81
+ for item in response:
82
+ yield item
83
+ # alternatively, you can paginate page-by-page
84
+ for page in response.iter_pages():
85
+ yield page
80
86
  """
81
- _response = self._raw_client.list(
87
+ return self._raw_client.list(
82
88
  driver_ids=driver_ids,
83
89
  coach_ids=coach_ids,
84
90
  include_external_ids=include_external_ids,
85
91
  after=after,
86
92
  request_options=request_options,
87
93
  )
88
- return _response.data
89
94
 
90
95
  def update(
91
96
  self,
@@ -158,7 +163,7 @@ class AsyncDriverCoachAssignmentsClient:
158
163
  include_external_ids: typing.Optional[bool] = None,
159
164
  after: typing.Optional[str] = None,
160
165
  request_options: typing.Optional[RequestOptions] = None,
161
- ) -> DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody:
166
+ ) -> AsyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]:
162
167
  """
163
168
  This endpoint will return coach assignments for your organization based on the parameters passed in. Results are paginated.
164
169
 
@@ -188,7 +193,7 @@ class AsyncDriverCoachAssignmentsClient:
188
193
 
189
194
  Returns
190
195
  -------
191
- DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody
196
+ AsyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]
192
197
  OK response.
193
198
 
194
199
  Examples
@@ -203,19 +208,24 @@ class AsyncDriverCoachAssignmentsClient:
203
208
 
204
209
 
205
210
  async def main() -> None:
206
- await client.coaching.driver_coach_assignments.list()
211
+ response = await client.coaching.driver_coach_assignments.list()
212
+ async for item in response:
213
+ yield item
214
+
215
+ # alternatively, you can paginate page-by-page
216
+ async for page in response.iter_pages():
217
+ yield page
207
218
 
208
219
 
209
220
  asyncio.run(main())
210
221
  """
211
- _response = await self._raw_client.list(
222
+ return await self._raw_client.list(
212
223
  driver_ids=driver_ids,
213
224
  coach_ids=coach_ids,
214
225
  include_external_ids=include_external_ids,
215
226
  after=after,
216
227
  request_options=request_options,
217
228
  )
218
- return _response.data
219
229
 
220
230
  async def update(
221
231
  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 ...errors.bad_gateway_error import BadGatewayError
@@ -17,6 +18,9 @@ from ...errors.not_implemented_error import NotImplementedError
17
18
  from ...errors.service_unavailable_error import ServiceUnavailableError
18
19
  from ...errors.too_many_requests_error import TooManyRequestsError
19
20
  from ...errors.unauthorized_error import UnauthorizedError
21
+ from ...types.coach_assignment_with_driver_external_ids_response_response_body import (
22
+ CoachAssignmentWithDriverExternalIdsResponseResponseBody,
23
+ )
20
24
  from ...types.driver_coach_assignments_get_driver_coach_assignment_response_body import (
21
25
  DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody,
22
26
  )
@@ -37,7 +41,7 @@ class RawDriverCoachAssignmentsClient:
37
41
  include_external_ids: typing.Optional[bool] = None,
38
42
  after: typing.Optional[str] = None,
39
43
  request_options: typing.Optional[RequestOptions] = None,
40
- ) -> HttpResponse[DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody]:
44
+ ) -> SyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]:
41
45
  """
42
46
  This endpoint will return coach assignments for your organization based on the parameters passed in. Results are paginated.
43
47
 
@@ -67,7 +71,7 @@ class RawDriverCoachAssignmentsClient:
67
71
 
68
72
  Returns
69
73
  -------
70
- HttpResponse[DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody]
74
+ SyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]
71
75
  OK response.
72
76
  """
73
77
  _response = self._client_wrapper.httpx_client.request(
@@ -83,14 +87,29 @@ class RawDriverCoachAssignmentsClient:
83
87
  )
84
88
  try:
85
89
  if 200 <= _response.status_code < 300:
86
- _data = typing.cast(
90
+ _parsed_response = typing.cast(
87
91
  DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody,
88
92
  parse_obj_as(
89
93
  type_=DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody, # type: ignore
90
94
  object_=_response.json(),
91
95
  ),
92
96
  )
93
- return HttpResponse(response=_response, data=_data)
97
+ _items = _parsed_response.data
98
+ _has_next = False
99
+ _get_next = None
100
+ if _parsed_response.pagination is not None:
101
+ _parsed_next = _parsed_response.pagination.end_cursor
102
+ _has_next = _parsed_next is not None and _parsed_next != ""
103
+ _get_next = lambda: self.list(
104
+ driver_ids=driver_ids,
105
+ coach_ids=coach_ids,
106
+ include_external_ids=include_external_ids,
107
+ after=_parsed_next,
108
+ request_options=request_options,
109
+ )
110
+ return SyncPager(
111
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
112
+ )
94
113
  if _response.status_code == 401:
95
114
  raise UnauthorizedError(
96
115
  headers=dict(_response.headers),
@@ -364,7 +383,7 @@ class AsyncRawDriverCoachAssignmentsClient:
364
383
  include_external_ids: typing.Optional[bool] = None,
365
384
  after: typing.Optional[str] = None,
366
385
  request_options: typing.Optional[RequestOptions] = None,
367
- ) -> AsyncHttpResponse[DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody]:
386
+ ) -> AsyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]:
368
387
  """
369
388
  This endpoint will return coach assignments for your organization based on the parameters passed in. Results are paginated.
370
389
 
@@ -394,7 +413,7 @@ class AsyncRawDriverCoachAssignmentsClient:
394
413
 
395
414
  Returns
396
415
  -------
397
- AsyncHttpResponse[DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody]
416
+ AsyncPager[CoachAssignmentWithDriverExternalIdsResponseResponseBody]
398
417
  OK response.
399
418
  """
400
419
  _response = await self._client_wrapper.httpx_client.request(
@@ -410,14 +429,32 @@ class AsyncRawDriverCoachAssignmentsClient:
410
429
  )
411
430
  try:
412
431
  if 200 <= _response.status_code < 300:
413
- _data = typing.cast(
432
+ _parsed_response = typing.cast(
414
433
  DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody,
415
434
  parse_obj_as(
416
435
  type_=DriverCoachAssignmentsGetDriverCoachAssignmentResponseBody, # type: ignore
417
436
  object_=_response.json(),
418
437
  ),
419
438
  )
420
- return AsyncHttpResponse(response=_response, data=_data)
439
+ _items = _parsed_response.data
440
+ _has_next = False
441
+ _get_next = None
442
+ if _parsed_response.pagination is not None:
443
+ _parsed_next = _parsed_response.pagination.end_cursor
444
+ _has_next = _parsed_next is not None and _parsed_next != ""
445
+
446
+ async def _get_next():
447
+ return await self.list(
448
+ driver_ids=driver_ids,
449
+ coach_ids=coach_ids,
450
+ include_external_ids=include_external_ids,
451
+ after=_parsed_next,
452
+ request_options=request_options,
453
+ )
454
+
455
+ return AsyncPager(
456
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
457
+ )
421
458
  if _response.status_code == 401:
422
459
  raise UnauthorizedError(
423
460
  headers=dict(_response.headers),
@@ -4,10 +4,9 @@ import datetime as dt
4
4
  import typing
5
5
 
6
6
  from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
7
+ from ...core.pagination import AsyncPager, SyncPager
7
8
  from ...core.request_options import RequestOptions
8
- from ...types.coaching_sessions_get_coaching_sessions_response_body import (
9
- CoachingSessionsGetCoachingSessionsResponseBody,
10
- )
9
+ from ...types.coaching_sessions_response_response_body import CoachingSessionsResponseResponseBody
11
10
  from .raw_client import AsyncRawSessionsClient, RawSessionsClient
12
11
 
13
12
 
@@ -38,7 +37,7 @@ class SessionsClient:
38
37
  after: typing.Optional[str] = None,
39
38
  include_external_ids: typing.Optional[bool] = None,
40
39
  request_options: typing.Optional[RequestOptions] = None,
41
- ) -> CoachingSessionsGetCoachingSessionsResponseBody:
40
+ ) -> SyncPager[CoachingSessionsResponseResponseBody]:
42
41
  """
43
42
  This endpoint will return coaching sessions for your organization based on the time parameters passed in. Results are paginated by sessions. 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.
44
43
 
@@ -80,7 +79,7 @@ class SessionsClient:
80
79
 
81
80
  Returns
82
81
  -------
83
- CoachingSessionsGetCoachingSessionsResponseBody
82
+ SyncPager[CoachingSessionsResponseResponseBody]
84
83
  OK response.
85
84
 
86
85
  Examples
@@ -92,13 +91,18 @@ class SessionsClient:
92
91
  client = Samsara(
93
92
  token="YOUR_TOKEN",
94
93
  )
95
- client.coaching.sessions.stream(
94
+ response = client.coaching.sessions.stream(
96
95
  start_time=datetime.datetime.fromisoformat(
97
96
  "2024-01-15 09:30:00+00:00",
98
97
  ),
99
98
  )
99
+ for item in response:
100
+ yield item
101
+ # alternatively, you can paginate page-by-page
102
+ for page in response.iter_pages():
103
+ yield page
100
104
  """
101
- _response = self._raw_client.stream(
105
+ return self._raw_client.stream(
102
106
  start_time=start_time,
103
107
  driver_ids=driver_ids,
104
108
  coach_ids=coach_ids,
@@ -109,7 +113,6 @@ class SessionsClient:
109
113
  include_external_ids=include_external_ids,
110
114
  request_options=request_options,
111
115
  )
112
- return _response.data
113
116
 
114
117
 
115
118
  class AsyncSessionsClient:
@@ -139,7 +142,7 @@ class AsyncSessionsClient:
139
142
  after: typing.Optional[str] = None,
140
143
  include_external_ids: typing.Optional[bool] = None,
141
144
  request_options: typing.Optional[RequestOptions] = None,
142
- ) -> CoachingSessionsGetCoachingSessionsResponseBody:
145
+ ) -> AsyncPager[CoachingSessionsResponseResponseBody]:
143
146
  """
144
147
  This endpoint will return coaching sessions for your organization based on the time parameters passed in. Results are paginated by sessions. 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.
145
148
 
@@ -181,7 +184,7 @@ class AsyncSessionsClient:
181
184
 
182
185
  Returns
183
186
  -------
184
- CoachingSessionsGetCoachingSessionsResponseBody
187
+ AsyncPager[CoachingSessionsResponseResponseBody]
185
188
  OK response.
186
189
 
187
190
  Examples
@@ -197,16 +200,22 @@ class AsyncSessionsClient:
197
200
 
198
201
 
199
202
  async def main() -> None:
200
- await client.coaching.sessions.stream(
203
+ response = await client.coaching.sessions.stream(
201
204
  start_time=datetime.datetime.fromisoformat(
202
205
  "2024-01-15 09:30:00+00:00",
203
206
  ),
204
207
  )
208
+ async for item in response:
209
+ yield item
210
+
211
+ # alternatively, you can paginate page-by-page
212
+ async for page in response.iter_pages():
213
+ yield page
205
214
 
206
215
 
207
216
  asyncio.run(main())
208
217
  """
209
- _response = await self._raw_client.stream(
218
+ return await self._raw_client.stream(
210
219
  start_time=start_time,
211
220
  driver_ids=driver_ids,
212
221
  coach_ids=coach_ids,
@@ -217,4 +226,3 @@ class AsyncSessionsClient:
217
226
  include_external_ids=include_external_ids,
218
227
  request_options=request_options,
219
228
  )
220
- return _response.data