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
@@ -5,11 +5,13 @@ 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 ...types.vehicle_stats_list_response import VehicleStatsListResponse
12
+ from ...types.vehicle_stats_list_response_data import VehicleStatsListResponseData
12
13
  from ...types.vehicle_stats_response import VehicleStatsResponse
14
+ from ...types.vehicle_stats_response_data import VehicleStatsResponseData
13
15
  from .types.stats_feed_request_decorations_item import StatsFeedRequestDecorationsItem
14
16
  from .types.stats_feed_request_types_item import StatsFeedRequestTypesItem
15
17
  from .types.stats_history_request_decorations_item import StatsHistoryRequestDecorationsItem
@@ -33,7 +35,7 @@ class RawStatsClient:
33
35
  typing.Union[StatsListRequestTypesItem, typing.Sequence[StatsListRequestTypesItem]]
34
36
  ] = None,
35
37
  request_options: typing.Optional[RequestOptions] = None,
36
- ) -> HttpResponse[VehicleStatsResponse]:
38
+ ) -> SyncPager[VehicleStatsResponseData]:
37
39
  """
38
40
  Returns the last known stats of all vehicles at the given `time`. If no `time` is specified, the current time is used.
39
41
 
@@ -63,7 +65,7 @@ class RawStatsClient:
63
65
  types : typing.Optional[typing.Union[StatsListRequestTypesItem, typing.Sequence[StatsListRequestTypesItem]]]
64
66
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
65
67
 
66
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
68
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
67
69
 
68
70
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
69
71
 
@@ -120,7 +122,7 @@ class RawStatsClient:
120
122
 
121
123
  Returns
122
124
  -------
123
- HttpResponse[VehicleStatsResponse]
125
+ SyncPager[VehicleStatsResponseData]
124
126
  Vehicle stats snapshot
125
127
  """
126
128
  _response = self._client_wrapper.httpx_client.request(
@@ -138,14 +140,31 @@ class RawStatsClient:
138
140
  )
139
141
  try:
140
142
  if 200 <= _response.status_code < 300:
141
- _data = typing.cast(
143
+ _parsed_response = typing.cast(
142
144
  VehicleStatsResponse,
143
145
  parse_obj_as(
144
146
  type_=VehicleStatsResponse, # type: ignore
145
147
  object_=_response.json(),
146
148
  ),
147
149
  )
148
- return HttpResponse(response=_response, data=_data)
150
+ _items = _parsed_response.data
151
+ _has_next = False
152
+ _get_next = None
153
+ if _parsed_response.pagination is not None:
154
+ _parsed_next = _parsed_response.pagination.end_cursor
155
+ _has_next = _parsed_next is not None and _parsed_next != ""
156
+ _get_next = lambda: self.list(
157
+ after=_parsed_next,
158
+ time=time,
159
+ parent_tag_ids=parent_tag_ids,
160
+ tag_ids=tag_ids,
161
+ vehicle_ids=vehicle_ids,
162
+ types=types,
163
+ request_options=request_options,
164
+ )
165
+ return SyncPager(
166
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
167
+ )
149
168
  _response_json = _response.json()
150
169
  except JSONDecodeError:
151
170
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -165,7 +184,7 @@ class RawStatsClient:
165
184
  typing.Union[StatsFeedRequestDecorationsItem, typing.Sequence[StatsFeedRequestDecorationsItem]]
166
185
  ] = None,
167
186
  request_options: typing.Optional[RequestOptions] = None,
168
- ) -> HttpResponse[VehicleStatsListResponse]:
187
+ ) -> SyncPager[VehicleStatsListResponseData]:
169
188
  """
170
189
  Follow a feed of vehicle stats.
171
190
 
@@ -198,7 +217,7 @@ class RawStatsClient:
198
217
  types : typing.Optional[typing.Union[StatsFeedRequestTypesItem, typing.Sequence[StatsFeedRequestTypesItem]]]
199
218
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
200
219
 
201
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
220
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
202
221
 
203
222
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
204
223
 
@@ -308,7 +327,7 @@ class RawStatsClient:
308
327
 
309
328
  Returns
310
329
  -------
311
- HttpResponse[VehicleStatsListResponse]
330
+ SyncPager[VehicleStatsListResponseData]
312
331
  List of stat events for the specified vehicles and stat types.
313
332
  """
314
333
  _response = self._client_wrapper.httpx_client.request(
@@ -326,14 +345,31 @@ class RawStatsClient:
326
345
  )
327
346
  try:
328
347
  if 200 <= _response.status_code < 300:
329
- _data = typing.cast(
348
+ _parsed_response = typing.cast(
330
349
  VehicleStatsListResponse,
331
350
  parse_obj_as(
332
351
  type_=VehicleStatsListResponse, # type: ignore
333
352
  object_=_response.json(),
334
353
  ),
335
354
  )
336
- return HttpResponse(response=_response, data=_data)
355
+ _items = _parsed_response.data
356
+ _has_next = False
357
+ _get_next = None
358
+ if _parsed_response.pagination is not None:
359
+ _parsed_next = _parsed_response.pagination.end_cursor
360
+ _has_next = _parsed_next is not None and _parsed_next != ""
361
+ _get_next = lambda: self.feed(
362
+ after=_parsed_next,
363
+ parent_tag_ids=parent_tag_ids,
364
+ tag_ids=tag_ids,
365
+ vehicle_ids=vehicle_ids,
366
+ types=types,
367
+ decorations=decorations,
368
+ request_options=request_options,
369
+ )
370
+ return SyncPager(
371
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
372
+ )
337
373
  _response_json = _response.json()
338
374
  except JSONDecodeError:
339
375
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -355,7 +391,7 @@ class RawStatsClient:
355
391
  typing.Union[StatsHistoryRequestDecorationsItem, typing.Sequence[StatsHistoryRequestDecorationsItem]]
356
392
  ] = None,
357
393
  request_options: typing.Optional[RequestOptions] = None,
358
- ) -> HttpResponse[VehicleStatsListResponse]:
394
+ ) -> SyncPager[VehicleStatsListResponseData]:
359
395
  """
360
396
  Returns vehicle stats during the given time range for all vehicles. This can be optionally filtered by tags or specific vehicle IDs.
361
397
 
@@ -388,7 +424,7 @@ class RawStatsClient:
388
424
  types : typing.Optional[typing.Union[StatsHistoryRequestTypesItem, typing.Sequence[StatsHistoryRequestTypesItem]]]
389
425
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
390
426
 
391
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
427
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
392
428
 
393
429
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
394
430
 
@@ -498,7 +534,7 @@ class RawStatsClient:
498
534
 
499
535
  Returns
500
536
  -------
501
- HttpResponse[VehicleStatsListResponse]
537
+ SyncPager[VehicleStatsListResponseData]
502
538
  List of vehicle stats for the specified vehicles, stat type, and time range.
503
539
  """
504
540
  _response = self._client_wrapper.httpx_client.request(
@@ -518,14 +554,33 @@ class RawStatsClient:
518
554
  )
519
555
  try:
520
556
  if 200 <= _response.status_code < 300:
521
- _data = typing.cast(
557
+ _parsed_response = typing.cast(
522
558
  VehicleStatsListResponse,
523
559
  parse_obj_as(
524
560
  type_=VehicleStatsListResponse, # type: ignore
525
561
  object_=_response.json(),
526
562
  ),
527
563
  )
528
- return HttpResponse(response=_response, data=_data)
564
+ _items = _parsed_response.data
565
+ _has_next = False
566
+ _get_next = None
567
+ if _parsed_response.pagination is not None:
568
+ _parsed_next = _parsed_response.pagination.end_cursor
569
+ _has_next = _parsed_next is not None and _parsed_next != ""
570
+ _get_next = lambda: self.history(
571
+ start_time=start_time,
572
+ end_time=end_time,
573
+ after=_parsed_next,
574
+ parent_tag_ids=parent_tag_ids,
575
+ tag_ids=tag_ids,
576
+ vehicle_ids=vehicle_ids,
577
+ types=types,
578
+ decorations=decorations,
579
+ request_options=request_options,
580
+ )
581
+ return SyncPager(
582
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
583
+ )
529
584
  _response_json = _response.json()
530
585
  except JSONDecodeError:
531
586
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -548,7 +603,7 @@ class AsyncRawStatsClient:
548
603
  typing.Union[StatsListRequestTypesItem, typing.Sequence[StatsListRequestTypesItem]]
549
604
  ] = None,
550
605
  request_options: typing.Optional[RequestOptions] = None,
551
- ) -> AsyncHttpResponse[VehicleStatsResponse]:
606
+ ) -> AsyncPager[VehicleStatsResponseData]:
552
607
  """
553
608
  Returns the last known stats of all vehicles at the given `time`. If no `time` is specified, the current time is used.
554
609
 
@@ -578,7 +633,7 @@ class AsyncRawStatsClient:
578
633
  types : typing.Optional[typing.Union[StatsListRequestTypesItem, typing.Sequence[StatsListRequestTypesItem]]]
579
634
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
580
635
 
581
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
636
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
582
637
 
583
638
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
584
639
 
@@ -635,7 +690,7 @@ class AsyncRawStatsClient:
635
690
 
636
691
  Returns
637
692
  -------
638
- AsyncHttpResponse[VehicleStatsResponse]
693
+ AsyncPager[VehicleStatsResponseData]
639
694
  Vehicle stats snapshot
640
695
  """
641
696
  _response = await self._client_wrapper.httpx_client.request(
@@ -653,14 +708,34 @@ class AsyncRawStatsClient:
653
708
  )
654
709
  try:
655
710
  if 200 <= _response.status_code < 300:
656
- _data = typing.cast(
711
+ _parsed_response = typing.cast(
657
712
  VehicleStatsResponse,
658
713
  parse_obj_as(
659
714
  type_=VehicleStatsResponse, # type: ignore
660
715
  object_=_response.json(),
661
716
  ),
662
717
  )
663
- return AsyncHttpResponse(response=_response, data=_data)
718
+ _items = _parsed_response.data
719
+ _has_next = False
720
+ _get_next = None
721
+ if _parsed_response.pagination is not None:
722
+ _parsed_next = _parsed_response.pagination.end_cursor
723
+ _has_next = _parsed_next is not None and _parsed_next != ""
724
+
725
+ async def _get_next():
726
+ return await self.list(
727
+ after=_parsed_next,
728
+ time=time,
729
+ parent_tag_ids=parent_tag_ids,
730
+ tag_ids=tag_ids,
731
+ vehicle_ids=vehicle_ids,
732
+ types=types,
733
+ request_options=request_options,
734
+ )
735
+
736
+ return AsyncPager(
737
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
738
+ )
664
739
  _response_json = _response.json()
665
740
  except JSONDecodeError:
666
741
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -680,7 +755,7 @@ class AsyncRawStatsClient:
680
755
  typing.Union[StatsFeedRequestDecorationsItem, typing.Sequence[StatsFeedRequestDecorationsItem]]
681
756
  ] = None,
682
757
  request_options: typing.Optional[RequestOptions] = None,
683
- ) -> AsyncHttpResponse[VehicleStatsListResponse]:
758
+ ) -> AsyncPager[VehicleStatsListResponseData]:
684
759
  """
685
760
  Follow a feed of vehicle stats.
686
761
 
@@ -713,7 +788,7 @@ class AsyncRawStatsClient:
713
788
  types : typing.Optional[typing.Union[StatsFeedRequestTypesItem, typing.Sequence[StatsFeedRequestTypesItem]]]
714
789
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
715
790
 
716
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
791
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
717
792
 
718
793
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
719
794
 
@@ -823,7 +898,7 @@ class AsyncRawStatsClient:
823
898
 
824
899
  Returns
825
900
  -------
826
- AsyncHttpResponse[VehicleStatsListResponse]
901
+ AsyncPager[VehicleStatsListResponseData]
827
902
  List of stat events for the specified vehicles and stat types.
828
903
  """
829
904
  _response = await self._client_wrapper.httpx_client.request(
@@ -841,14 +916,34 @@ class AsyncRawStatsClient:
841
916
  )
842
917
  try:
843
918
  if 200 <= _response.status_code < 300:
844
- _data = typing.cast(
919
+ _parsed_response = typing.cast(
845
920
  VehicleStatsListResponse,
846
921
  parse_obj_as(
847
922
  type_=VehicleStatsListResponse, # type: ignore
848
923
  object_=_response.json(),
849
924
  ),
850
925
  )
851
- return AsyncHttpResponse(response=_response, data=_data)
926
+ _items = _parsed_response.data
927
+ _has_next = False
928
+ _get_next = None
929
+ if _parsed_response.pagination is not None:
930
+ _parsed_next = _parsed_response.pagination.end_cursor
931
+ _has_next = _parsed_next is not None and _parsed_next != ""
932
+
933
+ async def _get_next():
934
+ return await self.feed(
935
+ after=_parsed_next,
936
+ parent_tag_ids=parent_tag_ids,
937
+ tag_ids=tag_ids,
938
+ vehicle_ids=vehicle_ids,
939
+ types=types,
940
+ decorations=decorations,
941
+ request_options=request_options,
942
+ )
943
+
944
+ return AsyncPager(
945
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
946
+ )
852
947
  _response_json = _response.json()
853
948
  except JSONDecodeError:
854
949
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -870,7 +965,7 @@ class AsyncRawStatsClient:
870
965
  typing.Union[StatsHistoryRequestDecorationsItem, typing.Sequence[StatsHistoryRequestDecorationsItem]]
871
966
  ] = None,
872
967
  request_options: typing.Optional[RequestOptions] = None,
873
- ) -> AsyncHttpResponse[VehicleStatsListResponse]:
968
+ ) -> AsyncPager[VehicleStatsListResponseData]:
874
969
  """
875
970
  Returns vehicle stats during the given time range for all vehicles. This can be optionally filtered by tags or specific vehicle IDs.
876
971
 
@@ -903,7 +998,7 @@ class AsyncRawStatsClient:
903
998
  types : typing.Optional[typing.Union[StatsHistoryRequestTypesItem, typing.Sequence[StatsHistoryRequestTypesItem]]]
904
999
  The stat types you want this endpoint to return information on. See also the <a href="/docs/telematics#query-parameters" target="_blank">Telematics</a> guide for more details.
905
1000
 
906
- You may list ***up to 3*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
1001
+ You may list ***up to 4*** types using comma-separated format. For example: `types=gps,engineStates,obdOdometerMeters`.
907
1002
 
908
1003
  *Note:* `auxInput3`-`auxInput10` count as a single type against the limit of 3. For example, you could list `types=engineStates,obdOdometerMeters,auxInput3,auxInput4` because `auxInput3` and `auxInput4` count as a single stat type. `auxInput1` and `auxInput2` still count as their own individual types.
909
1004
 
@@ -1013,7 +1108,7 @@ class AsyncRawStatsClient:
1013
1108
 
1014
1109
  Returns
1015
1110
  -------
1016
- AsyncHttpResponse[VehicleStatsListResponse]
1111
+ AsyncPager[VehicleStatsListResponseData]
1017
1112
  List of vehicle stats for the specified vehicles, stat type, and time range.
1018
1113
  """
1019
1114
  _response = await self._client_wrapper.httpx_client.request(
@@ -1033,14 +1128,36 @@ class AsyncRawStatsClient:
1033
1128
  )
1034
1129
  try:
1035
1130
  if 200 <= _response.status_code < 300:
1036
- _data = typing.cast(
1131
+ _parsed_response = typing.cast(
1037
1132
  VehicleStatsListResponse,
1038
1133
  parse_obj_as(
1039
1134
  type_=VehicleStatsListResponse, # type: ignore
1040
1135
  object_=_response.json(),
1041
1136
  ),
1042
1137
  )
1043
- return AsyncHttpResponse(response=_response, data=_data)
1138
+ _items = _parsed_response.data
1139
+ _has_next = False
1140
+ _get_next = None
1141
+ if _parsed_response.pagination is not None:
1142
+ _parsed_next = _parsed_response.pagination.end_cursor
1143
+ _has_next = _parsed_next is not None and _parsed_next != ""
1144
+
1145
+ async def _get_next():
1146
+ return await self.history(
1147
+ start_time=start_time,
1148
+ end_time=end_time,
1149
+ after=_parsed_next,
1150
+ parent_tag_ids=parent_tag_ids,
1151
+ tag_ids=tag_ids,
1152
+ vehicle_ids=vehicle_ids,
1153
+ types=types,
1154
+ decorations=decorations,
1155
+ request_options=request_options,
1156
+ )
1157
+
1158
+ return AsyncPager(
1159
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
1160
+ )
1044
1161
  _response_json = _response.json()
1045
1162
  except JSONDecodeError:
1046
1163
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -3,10 +3,11 @@
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.custom_headers_object_request_body import CustomHeadersObjectRequestBody
9
+ from ..types.webhook_response_response_body import WebhookResponseResponseBody
8
10
  from ..types.webhooks_get_webhook_response_body import WebhooksGetWebhookResponseBody
9
- from ..types.webhooks_list_webhooks_response_body import WebhooksListWebhooksResponseBody
10
11
  from ..types.webhooks_patch_webhook_response_body import WebhooksPatchWebhookResponseBody
11
12
  from ..types.webhooks_post_webhooks_response_body import WebhooksPostWebhooksResponseBody
12
13
  from .raw_client import AsyncRawWebhooksClient, RawWebhooksClient
@@ -40,7 +41,7 @@ class WebhooksClient:
40
41
  limit: typing.Optional[int] = None,
41
42
  after: typing.Optional[str] = None,
42
43
  request_options: typing.Optional[RequestOptions] = None,
43
- ) -> WebhooksListWebhooksResponseBody:
44
+ ) -> SyncPager[WebhookResponseResponseBody]:
44
45
  """
45
46
  List all webhooks belonging to a specific org.
46
47
 
@@ -67,7 +68,7 @@ class WebhooksClient:
67
68
 
68
69
  Returns
69
70
  -------
70
- WebhooksListWebhooksResponseBody
71
+ SyncPager[WebhookResponseResponseBody]
71
72
  OK response.
72
73
 
73
74
  Examples
@@ -77,10 +78,14 @@ class WebhooksClient:
77
78
  client = Samsara(
78
79
  token="YOUR_TOKEN",
79
80
  )
80
- client.webhooks.list()
81
+ response = client.webhooks.list()
82
+ for item in response:
83
+ yield item
84
+ # alternatively, you can paginate page-by-page
85
+ for page in response.iter_pages():
86
+ yield page
81
87
  """
82
- _response = self._raw_client.list(ids=ids, limit=limit, after=after, request_options=request_options)
83
- return _response.data
88
+ return self._raw_client.list(ids=ids, limit=limit, after=after, request_options=request_options)
84
89
 
85
90
  def create(
86
91
  self,
@@ -312,7 +317,7 @@ class AsyncWebhooksClient:
312
317
  limit: typing.Optional[int] = None,
313
318
  after: typing.Optional[str] = None,
314
319
  request_options: typing.Optional[RequestOptions] = None,
315
- ) -> WebhooksListWebhooksResponseBody:
320
+ ) -> AsyncPager[WebhookResponseResponseBody]:
316
321
  """
317
322
  List all webhooks belonging to a specific org.
318
323
 
@@ -339,7 +344,7 @@ class AsyncWebhooksClient:
339
344
 
340
345
  Returns
341
346
  -------
342
- WebhooksListWebhooksResponseBody
347
+ AsyncPager[WebhookResponseResponseBody]
343
348
  OK response.
344
349
 
345
350
  Examples
@@ -354,13 +359,18 @@ class AsyncWebhooksClient:
354
359
 
355
360
 
356
361
  async def main() -> None:
357
- await client.webhooks.list()
362
+ response = await client.webhooks.list()
363
+ async for item in response:
364
+ yield item
365
+
366
+ # alternatively, you can paginate page-by-page
367
+ async for page in response.iter_pages():
368
+ yield page
358
369
 
359
370
 
360
371
  asyncio.run(main())
361
372
  """
362
- _response = await self._raw_client.list(ids=ids, limit=limit, after=after, request_options=request_options)
363
- return _response.data
373
+ return await self._raw_client.list(ids=ids, limit=limit, after=after, request_options=request_options)
364
374
 
365
375
  async def create(
366
376
  self,
@@ -7,6 +7,7 @@ from ..core.api_error import ApiError
7
7
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
8
  from ..core.http_response import AsyncHttpResponse, HttpResponse
9
9
  from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.pagination import AsyncPager, BaseHttpResponse, SyncPager
10
11
  from ..core.pydantic_utilities import parse_obj_as
11
12
  from ..core.request_options import RequestOptions
12
13
  from ..core.serialization import convert_and_respect_annotation_metadata
@@ -20,6 +21,7 @@ from ..errors.service_unavailable_error import ServiceUnavailableError
20
21
  from ..errors.too_many_requests_error import TooManyRequestsError
21
22
  from ..errors.unauthorized_error import UnauthorizedError
22
23
  from ..types.custom_headers_object_request_body import CustomHeadersObjectRequestBody
24
+ from ..types.webhook_response_response_body import WebhookResponseResponseBody
23
25
  from ..types.webhooks_get_webhook_response_body import WebhooksGetWebhookResponseBody
24
26
  from ..types.webhooks_list_webhooks_response_body import WebhooksListWebhooksResponseBody
25
27
  from ..types.webhooks_patch_webhook_response_body import WebhooksPatchWebhookResponseBody
@@ -43,7 +45,7 @@ class RawWebhooksClient:
43
45
  limit: typing.Optional[int] = None,
44
46
  after: typing.Optional[str] = None,
45
47
  request_options: typing.Optional[RequestOptions] = None,
46
- ) -> HttpResponse[WebhooksListWebhooksResponseBody]:
48
+ ) -> SyncPager[WebhookResponseResponseBody]:
47
49
  """
48
50
  List all webhooks belonging to a specific org.
49
51
 
@@ -70,7 +72,7 @@ class RawWebhooksClient:
70
72
 
71
73
  Returns
72
74
  -------
73
- HttpResponse[WebhooksListWebhooksResponseBody]
75
+ SyncPager[WebhookResponseResponseBody]
74
76
  OK response.
75
77
  """
76
78
  _response = self._client_wrapper.httpx_client.request(
@@ -85,14 +87,28 @@ class RawWebhooksClient:
85
87
  )
86
88
  try:
87
89
  if 200 <= _response.status_code < 300:
88
- _data = typing.cast(
90
+ _parsed_response = typing.cast(
89
91
  WebhooksListWebhooksResponseBody,
90
92
  parse_obj_as(
91
93
  type_=WebhooksListWebhooksResponseBody, # type: ignore
92
94
  object_=_response.json(),
93
95
  ),
94
96
  )
95
- 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
+ ids=ids,
105
+ limit=limit,
106
+ after=_parsed_next,
107
+ request_options=request_options,
108
+ )
109
+ return SyncPager(
110
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
111
+ )
96
112
  if _response.status_code == 401:
97
113
  raise UnauthorizedError(
98
114
  headers=dict(_response.headers),
@@ -848,7 +864,7 @@ class AsyncRawWebhooksClient:
848
864
  limit: typing.Optional[int] = None,
849
865
  after: typing.Optional[str] = None,
850
866
  request_options: typing.Optional[RequestOptions] = None,
851
- ) -> AsyncHttpResponse[WebhooksListWebhooksResponseBody]:
867
+ ) -> AsyncPager[WebhookResponseResponseBody]:
852
868
  """
853
869
  List all webhooks belonging to a specific org.
854
870
 
@@ -875,7 +891,7 @@ class AsyncRawWebhooksClient:
875
891
 
876
892
  Returns
877
893
  -------
878
- AsyncHttpResponse[WebhooksListWebhooksResponseBody]
894
+ AsyncPager[WebhookResponseResponseBody]
879
895
  OK response.
880
896
  """
881
897
  _response = await self._client_wrapper.httpx_client.request(
@@ -890,14 +906,31 @@ class AsyncRawWebhooksClient:
890
906
  )
891
907
  try:
892
908
  if 200 <= _response.status_code < 300:
893
- _data = typing.cast(
909
+ _parsed_response = typing.cast(
894
910
  WebhooksListWebhooksResponseBody,
895
911
  parse_obj_as(
896
912
  type_=WebhooksListWebhooksResponseBody, # type: ignore
897
913
  object_=_response.json(),
898
914
  ),
899
915
  )
900
- return AsyncHttpResponse(response=_response, data=_data)
916
+ _items = _parsed_response.data
917
+ _has_next = False
918
+ _get_next = None
919
+ if _parsed_response.pagination is not None:
920
+ _parsed_next = _parsed_response.pagination.end_cursor
921
+ _has_next = _parsed_next is not None and _parsed_next != ""
922
+
923
+ async def _get_next():
924
+ return await self.list(
925
+ ids=ids,
926
+ limit=limit,
927
+ after=_parsed_next,
928
+ request_options=request_options,
929
+ )
930
+
931
+ return AsyncPager(
932
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
933
+ )
901
934
  if _response.status_code == 401:
902
935
  raise UnauthorizedError(
903
936
  headers=dict(_response.headers),
@@ -16,6 +16,7 @@ WebhooksPostWebhooksRequestBodyEventTypesItem = typing.Union[
16
16
  "EngineFaultOff",
17
17
  "EngineFaultOn",
18
18
  "FormSubmitted",
19
+ "FormUpdated",
19
20
  "GatewayUnplugged",
20
21
  "GeofenceEntry",
21
22
  "GeofenceExit",