samsara-api 0.0.1__py3-none-any.whl → 0.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. samsara/__init__.py +298 -38
  2. samsara/alerts/configurations/client.py +25 -11
  3. samsara/alerts/configurations/raw_client.py +47 -8
  4. samsara/alerts/incidents/client.py +21 -11
  5. samsara/alerts/incidents/raw_client.py +43 -9
  6. samsara/assets/client.py +21 -11
  7. samsara/assets/location_and_speed/client.py +21 -13
  8. samsara/assets/location_and_speed/raw_client.py +53 -9
  9. samsara/assets/raw_client.py +53 -8
  10. samsara/attributes/client.py +21 -13
  11. samsara/attributes/raw_client.py +41 -8
  12. samsara/cameras/media/client.py +2 -2
  13. samsara/cameras/media/raw_client.py +2 -2
  14. samsara/cameras/media/retrieval/client.py +2 -12
  15. samsara/cameras/media/types/media_list_request_trigger_reasons_item.py +8 -1
  16. samsara/carrier_proposed_assignments/client.py +21 -11
  17. samsara/carrier_proposed_assignments/raw_client.py +43 -8
  18. samsara/client.py +15 -6
  19. samsara/coaching/driver_coach_assignments/client.py +22 -12
  20. samsara/coaching/driver_coach_assignments/raw_client.py +45 -8
  21. samsara/coaching/sessions/client.py +21 -13
  22. samsara/coaching/sessions/raw_client.py +51 -9
  23. samsara/contacts/client.py +21 -11
  24. samsara/contacts/raw_client.py +39 -8
  25. samsara/core/client_wrapper.py +2 -2
  26. samsara/defect_types/client.py +21 -11
  27. samsara/defect_types/raw_client.py +41 -9
  28. samsara/defects/client.py +124 -9
  29. samsara/defects/raw_client.py +356 -6
  30. samsara/devices/client.py +21 -11
  31. samsara/devices/raw_client.py +45 -9
  32. samsara/document_types/client.py +21 -11
  33. samsara/document_types/raw_client.py +37 -9
  34. samsara/documents/client.py +21 -11
  35. samsara/documents/raw_client.py +45 -8
  36. samsara/driver_trailer_assignments/client.py +23 -13
  37. samsara/driver_trailer_assignments/raw_client.py +43 -8
  38. samsara/drivers/__init__.py +1 -3
  39. samsara/drivers/client.py +21 -21
  40. samsara/drivers/raw_client.py +51 -8
  41. samsara/dvirs/client.py +124 -9
  42. samsara/dvirs/raw_client.py +356 -6
  43. samsara/equipment/__init__.py +2 -2
  44. samsara/equipment/client.py +23 -21
  45. samsara/equipment/locations/client.py +62 -34
  46. samsara/equipment/locations/raw_client.py +132 -27
  47. samsara/equipment/raw_client.py +45 -18
  48. samsara/equipment/stats/__init__.py +2 -2
  49. samsara/equipment/stats/client.py +81 -53
  50. samsara/equipment/stats/raw_client.py +157 -46
  51. samsara/equipment/stats/types/__init__.py +2 -2
  52. samsara/equipment/stats/types/{stats_get_request_types_item.py → stats_list_request_types_item.py} +1 -1
  53. samsara/form_submissions/client.py +46 -54
  54. samsara/form_submissions/pdf_exports/client.py +14 -22
  55. samsara/form_submissions/pdf_exports/raw_client.py +10 -18
  56. samsara/form_submissions/raw_client.py +74 -47
  57. samsara/forms/client.py +138 -0
  58. samsara/{beta → forms}/raw_client.py +37 -62
  59. samsara/function.py +99 -0
  60. samsara/gateways/client.py +21 -11
  61. samsara/gateways/raw_client.py +39 -8
  62. samsara/hos/__init__.py +3 -0
  63. samsara/hos/client.py +218 -11
  64. samsara/hos/raw_client.py +485 -8
  65. samsara/hos/types/__init__.py +7 -0
  66. samsara/hos/types/hos_daily_logs_request_driver_activation_status.py +5 -0
  67. samsara/idling/__init__.py +7 -0
  68. samsara/idling/client.py +287 -0
  69. samsara/idling/raw_client.py +521 -0
  70. samsara/idling/types/__init__.py +7 -0
  71. samsara/idling/types/idling_list_request_pto_state.py +5 -0
  72. samsara/inputs/client.py +21 -11
  73. samsara/inputs/raw_client.py +51 -9
  74. samsara/issues/client.py +27 -29
  75. samsara/issues/raw_client.py +53 -26
  76. samsara/live_shares/client.py +21 -13
  77. samsara/live_shares/raw_client.py +43 -8
  78. samsara/maintenance/service_tasks/client.py +21 -11
  79. samsara/maintenance/service_tasks/raw_client.py +41 -8
  80. samsara/maintenance/work_orders/client.py +40 -22
  81. samsara/maintenance/work_orders/raw_client.py +84 -16
  82. samsara/readings/client.py +524 -0
  83. samsara/readings/raw_client.py +1214 -0
  84. samsara/reports/drivers/fuel_energy/client.py +6 -6
  85. samsara/reports/drivers/fuel_energy/raw_client.py +2 -2
  86. samsara/reports/ifta/__init__.py +4 -4
  87. samsara/reports/ifta/vehicle/__init__.py +2 -2
  88. samsara/reports/ifta/vehicle/client.py +21 -21
  89. samsara/reports/ifta/vehicle/raw_client.py +17 -17
  90. samsara/reports/ifta/vehicle/types/__init__.py +4 -4
  91. samsara/reports/ifta/vehicle/types/{vehicle_get_request_fuel_type.py → vehicle_list_request_fuel_type.py} +1 -1
  92. samsara/reports/ifta/vehicle/types/{vehicle_get_request_month.py → vehicle_list_request_month.py} +1 -1
  93. samsara/reports/ifta/vehicle/types/vehicle_list_request_quarter.py +5 -0
  94. samsara/reports/vehicles/__init__.py +2 -2
  95. samsara/reports/vehicles/fuel_energy/__init__.py +2 -2
  96. samsara/reports/vehicles/fuel_energy/client.py +11 -11
  97. samsara/reports/vehicles/fuel_energy/raw_client.py +7 -7
  98. samsara/reports/vehicles/fuel_energy/types/__init__.py +2 -2
  99. samsara/reports/vehicles/fuel_energy/types/fuel_energy_list_request_energy_type.py +5 -0
  100. samsara/reports/vehicles/idling/client.py +27 -15
  101. samsara/reports/vehicles/idling/raw_client.py +59 -11
  102. samsara/routes/client.py +21 -11
  103. samsara/routes/raw_client.py +43 -8
  104. samsara/safety_events/audit_logs/client.py +21 -13
  105. samsara/safety_events/audit_logs/raw_client.py +39 -9
  106. samsara/safety_events/client.py +21 -11
  107. samsara/safety_events/raw_client.py +47 -9
  108. samsara/speeding_intervals/client.py +25 -17
  109. samsara/speeding_intervals/raw_client.py +55 -13
  110. samsara/tachograph/__init__.py +7 -0
  111. samsara/tachograph/client.py +44 -0
  112. samsara/{drivers/tachograph_files → tachograph/driver}/client.py +162 -15
  113. samsara/{drivers/tachograph_files → tachograph/driver}/raw_client.py +153 -4
  114. samsara/tachograph/raw_client.py +13 -0
  115. samsara/{vehicles/tachograph_files → tachograph/vehicles}/client.py +15 -15
  116. samsara/{vehicles/tachograph_files → tachograph/vehicles}/raw_client.py +4 -4
  117. samsara/tags/client.py +21 -11
  118. samsara/tags/raw_client.py +39 -8
  119. samsara/trailers/client.py +21 -11
  120. samsara/trailers/raw_client.py +43 -8
  121. samsara/training_courses/client.py +21 -11
  122. samsara/training_courses/raw_client.py +43 -9
  123. samsara/trips/client.py +21 -11
  124. samsara/trips/raw_client.py +49 -9
  125. samsara/types/__init__.py +406 -50
  126. samsara/types/advanced_idling_get_idling_events_bad_gateway_error_response_body.py +33 -0
  127. samsara/types/advanced_idling_get_idling_events_gateway_timeout_error_response_body.py +33 -0
  128. samsara/types/{hos_daily_logs_update_shipping_docs_internal_server_error_response_body.py → advanced_idling_get_idling_events_internal_server_error_response_body.py} +1 -1
  129. samsara/types/advanced_idling_get_idling_events_method_not_allowed_error_response_body.py +33 -0
  130. samsara/types/{hos_daily_logs_update_shipping_docs_not_found_error_response_body.py → advanced_idling_get_idling_events_not_found_error_response_body.py} +1 -1
  131. samsara/types/{hos_daily_logs_update_shipping_docs_not_implemented_error_response_body.py → advanced_idling_get_idling_events_not_implemented_error_response_body.py} +1 -1
  132. samsara/types/advanced_idling_get_idling_events_response_body.py +26 -0
  133. samsara/types/{hos_daily_logs_update_shipping_docs_service_unavailable_error_response_body.py → advanced_idling_get_idling_events_service_unavailable_error_response_body.py} +1 -1
  134. samsara/types/{hos_daily_logs_update_shipping_docs_gateway_timeout_error_response_body.py → advanced_idling_get_idling_events_too_many_requests_error_response_body.py} +2 -2
  135. samsara/types/advanced_idling_get_idling_events_unauthorized_error_response_body.py +33 -0
  136. samsara/types/alert_object_asset_response_body.py +63 -0
  137. samsara/types/{assets_create_asset_response_body_type.py → alert_object_asset_response_body_type.py} +1 -1
  138. samsara/types/assets_create_asset_response_body.py +2 -87
  139. samsara/types/assets_update_asset_response_body.py +2 -87
  140. samsara/types/continuous_reading_alert_threshold_response_body.py +49 -0
  141. samsara/types/continuous_reading_alert_threshold_response_body_operation.py +7 -0
  142. samsara/types/continuous_reading_alert_threshold_response_body_unit.py +62 -0
  143. samsara/types/device_response_response_body.py +1 -1
  144. samsara/types/device_response_response_body_model.py +1 -0
  145. samsara/types/dvir_defect_get_defect_bad_gateway_error_response_body.py +33 -0
  146. samsara/types/dvir_defect_get_defect_gateway_timeout_error_response_body.py +33 -0
  147. samsara/types/dvir_defect_get_defect_internal_server_error_response_body.py +33 -0
  148. samsara/types/dvir_defect_get_defect_method_not_allowed_error_response_body.py +33 -0
  149. samsara/types/dvir_defect_get_defect_not_found_error_response_body.py +33 -0
  150. samsara/types/dvir_defect_get_defect_not_implemented_error_response_body.py +33 -0
  151. samsara/types/dvir_defect_get_defect_response_body.py +91 -0
  152. samsara/types/dvir_defect_get_defect_service_unavailable_error_response_body.py +33 -0
  153. samsara/types/dvir_defect_get_defect_too_many_requests_error_response_body.py +33 -0
  154. samsara/types/dvir_defect_get_defect_unauthorized_error_response_body.py +33 -0
  155. samsara/types/dvir_get_dvir_bad_gateway_error_response_body.py +33 -0
  156. samsara/types/dvir_get_dvir_gateway_timeout_error_response_body.py +33 -0
  157. samsara/types/dvir_get_dvir_internal_server_error_response_body.py +33 -0
  158. samsara/types/dvir_get_dvir_method_not_allowed_error_response_body.py +33 -0
  159. samsara/types/dvir_get_dvir_not_found_error_response_body.py +33 -0
  160. samsara/types/dvir_get_dvir_not_implemented_error_response_body.py +33 -0
  161. samsara/types/dvir_get_dvir_response_body.py +99 -0
  162. samsara/types/dvir_get_dvir_response_body_safety_status.py +5 -0
  163. samsara/types/dvir_get_dvir_response_body_type.py +5 -0
  164. samsara/types/dvir_get_dvir_service_unavailable_error_response_body.py +33 -0
  165. samsara/types/dvir_get_dvir_too_many_requests_error_response_body.py +33 -0
  166. samsara/types/dvir_get_dvir_unauthorized_error_response_body.py +33 -0
  167. samsara/types/enum_reading_alert_threshold_response_body.py +31 -0
  168. samsara/types/enum_value_response_body.py +31 -0
  169. samsara/types/equipment_gateway_engine_seconds.py +1 -1
  170. samsara/types/equipment_gateway_j_1939_engine_seconds.py +1 -1
  171. samsara/types/equipment_obd_engine_seconds.py +1 -1
  172. samsara/types/event_location_response_body.py +31 -0
  173. samsara/types/form_submission_request_field_input_object_request_body.py +7 -1
  174. samsara/types/form_submission_request_field_input_object_request_body_type.py +3 -1
  175. samsara/types/{hos_daily_logs_update_shipping_docs_response_body.py → form_submission_request_geofence_object_request_body.py} +9 -3
  176. samsara/types/form_submission_request_geofence_value_object_request_body.py +24 -0
  177. samsara/types/form_submission_response_object_response_body.py +8 -0
  178. samsara/types/{form_template_reference_object_request_body.py → form_template_request_object_request_body.py} +6 -4
  179. samsara/types/form_template_response_object_response_body.py +74 -0
  180. samsara/types/form_template_section_object_response_body.py +47 -0
  181. samsara/types/form_templates_get_form_templates_bad_gateway_error_response_body.py +33 -0
  182. samsara/types/form_templates_get_form_templates_gateway_timeout_error_response_body.py +33 -0
  183. samsara/types/form_templates_get_form_templates_internal_server_error_response_body.py +33 -0
  184. samsara/types/form_templates_get_form_templates_method_not_allowed_error_response_body.py +33 -0
  185. samsara/types/form_templates_get_form_templates_not_found_error_response_body.py +33 -0
  186. samsara/types/form_templates_get_form_templates_not_implemented_error_response_body.py +33 -0
  187. samsara/types/form_templates_get_form_templates_response_body.py +26 -0
  188. samsara/types/form_templates_get_form_templates_service_unavailable_error_response_body.py +33 -0
  189. samsara/types/form_templates_get_form_templates_too_many_requests_error_response_body.py +33 -0
  190. samsara/types/form_templates_get_form_templates_unauthorized_error_response_body.py +33 -0
  191. samsara/types/forms_action_object_response_body.py +43 -0
  192. samsara/types/forms_action_object_response_body_type.py +7 -0
  193. samsara/types/forms_approval_config_object_response_body.py +32 -0
  194. samsara/types/forms_asset_object_response_body.py +8 -1
  195. samsara/types/forms_check_boxes_value_object_response_body.py +7 -0
  196. samsara/types/forms_condition_object_response_body.py +36 -0
  197. samsara/types/forms_condition_object_response_body_type.py +7 -0
  198. samsara/types/forms_conditional_action_object_response_body.py +30 -0
  199. samsara/types/forms_field_definition_object_response_body.py +143 -0
  200. samsara/types/forms_field_definition_object_response_body_allowed_asset_types_item.py +7 -0
  201. samsara/types/forms_field_definition_object_response_body_allowed_date_time_value_type.py +7 -0
  202. samsara/types/forms_field_definition_object_response_body_type.py +22 -0
  203. samsara/types/forms_field_input_object_response_body.py +7 -4
  204. samsara/types/forms_field_input_object_response_body_type.py +20 -0
  205. samsara/types/forms_geofence_object_response_body.py +53 -0
  206. samsara/types/forms_geofence_object_response_body_entry_type.py +5 -0
  207. samsara/types/forms_geofence_value_object_response_body.py +24 -0
  208. samsara/types/forms_multiple_choice_value_object_response_body.py +8 -1
  209. samsara/types/forms_product_submission_approval_details_object_response_body.py +26 -0
  210. samsara/types/forms_select_option_object_response_body.py +47 -0
  211. samsara/types/forms_single_approval_config_object_response_body.py +33 -0
  212. samsara/types/forms_table_cell_object_response_body.py +3 -4
  213. samsara/types/forms_table_cell_object_response_body_type.py +8 -0
  214. samsara/types/forms_table_column_object_response_body.py +3 -4
  215. samsara/types/forms_table_column_object_response_body_type.py +8 -0
  216. samsara/types/forms_table_field_definition_object_response_body.py +91 -0
  217. samsara/types/forms_table_field_definition_object_response_body_allowed_date_time_value_type.py +7 -0
  218. samsara/types/forms_table_field_definition_object_response_body_type.py +8 -0
  219. samsara/types/fuel_cost_object_response_body.py +32 -0
  220. samsara/types/fuel_cost_object_response_body_currency.py +5 -0
  221. samsara/types/fuel_volume_response_body.py +28 -0
  222. samsara/types/fuel_volume_response_body_unit.py +5 -0
  223. samsara/types/gaseous_fuel_cost_object_response_body.py +32 -0
  224. samsara/types/gaseous_fuel_cost_object_response_body_currency.py +7 -0
  225. samsara/types/gateway_details_response_response_body.py +14 -0
  226. samsara/types/harsh_event_trigger_details_object_request_body_types_item.py +1 -0
  227. samsara/types/harsh_event_trigger_details_object_response_body_types_item.py +1 -0
  228. samsara/types/idling_event_object_response_body.py +101 -0
  229. samsara/types/idling_event_object_response_body_address_type.py +17 -0
  230. samsara/types/inline_response_2005.py +24 -0
  231. samsara/types/inline_response_2006.py +24 -0
  232. samsara/types/reading_definition_response_body.py +59 -0
  233. samsara/types/reading_history_response_body.py +47 -0
  234. samsara/types/reading_snapshot_response_body.py +52 -0
  235. samsara/types/reading_trigger_continuous_value_object_request_body.py +51 -0
  236. samsara/types/reading_trigger_continuous_value_object_request_body_operation.py +7 -0
  237. samsara/types/reading_trigger_continuous_value_object_request_body_unit.py +62 -0
  238. samsara/types/reading_trigger_continuous_value_object_response_body.py +51 -0
  239. samsara/types/reading_trigger_continuous_value_object_response_body_operation.py +7 -0
  240. samsara/types/reading_trigger_continuous_value_object_response_body_unit.py +62 -0
  241. samsara/types/reading_trigger_details_object_request_body.py +48 -0
  242. samsara/types/reading_trigger_details_object_response_body.py +48 -0
  243. samsara/types/reading_trigger_details_response_body.py +38 -0
  244. samsara/types/reading_trigger_enum_value_object_request_body.py +31 -0
  245. samsara/types/reading_trigger_enum_value_object_response_body.py +31 -0
  246. samsara/types/reading_type_response_body.py +34 -0
  247. samsara/types/reading_type_response_body_data_type.py +5 -0
  248. samsara/types/readings_get_readings_history_bad_gateway_error_response_body.py +33 -0
  249. samsara/types/{hos_daily_logs_update_shipping_docs_bad_gateway_error_response_body.py → readings_get_readings_history_gateway_timeout_error_response_body.py} +2 -2
  250. samsara/types/readings_get_readings_history_internal_server_error_response_body.py +33 -0
  251. samsara/types/readings_get_readings_history_method_not_allowed_error_response_body.py +33 -0
  252. samsara/types/readings_get_readings_history_not_found_error_response_body.py +33 -0
  253. samsara/types/readings_get_readings_history_not_implemented_error_response_body.py +33 -0
  254. samsara/types/readings_get_readings_history_response_body.py +26 -0
  255. samsara/types/readings_get_readings_history_service_unavailable_error_response_body.py +33 -0
  256. samsara/types/readings_get_readings_history_too_many_requests_error_response_body.py +33 -0
  257. samsara/types/readings_get_readings_history_unauthorized_error_response_body.py +33 -0
  258. samsara/types/readings_get_readings_snapshot_bad_gateway_error_response_body.py +33 -0
  259. samsara/types/readings_get_readings_snapshot_gateway_timeout_error_response_body.py +33 -0
  260. samsara/types/readings_get_readings_snapshot_internal_server_error_response_body.py +33 -0
  261. samsara/types/readings_get_readings_snapshot_method_not_allowed_error_response_body.py +33 -0
  262. samsara/types/readings_get_readings_snapshot_not_found_error_response_body.py +33 -0
  263. samsara/types/readings_get_readings_snapshot_not_implemented_error_response_body.py +33 -0
  264. samsara/types/readings_get_readings_snapshot_response_body.py +26 -0
  265. samsara/types/readings_get_readings_snapshot_service_unavailable_error_response_body.py +33 -0
  266. samsara/types/{hos_daily_logs_update_shipping_docs_unauthorized_error_response_body.py → readings_get_readings_snapshot_too_many_requests_error_response_body.py} +2 -2
  267. samsara/types/readings_get_readings_snapshot_unauthorized_error_response_body.py +33 -0
  268. samsara/types/readings_list_readings_definitions_bad_gateway_error_response_body.py +33 -0
  269. samsara/types/{hos_daily_logs_update_shipping_docs_too_many_requests_error_response_body.py → readings_list_readings_definitions_gateway_timeout_error_response_body.py} +2 -2
  270. samsara/types/readings_list_readings_definitions_internal_server_error_response_body.py +33 -0
  271. samsara/types/readings_list_readings_definitions_method_not_allowed_error_response_body.py +33 -0
  272. samsara/types/readings_list_readings_definitions_not_found_error_response_body.py +33 -0
  273. samsara/types/readings_list_readings_definitions_not_implemented_error_response_body.py +33 -0
  274. samsara/types/readings_list_readings_definitions_response_body.py +26 -0
  275. samsara/types/readings_list_readings_definitions_service_unavailable_error_response_body.py +33 -0
  276. samsara/types/{hos_daily_logs_update_shipping_docs_method_not_allowed_error_response_body.py → readings_list_readings_definitions_too_many_requests_error_response_body.py} +2 -2
  277. samsara/types/readings_list_readings_definitions_unauthorized_error_response_body.py +33 -0
  278. samsara/types/safety_score_configuration_settings_object_response_body.py +7 -0
  279. samsara/types/single_approval_requirements_object_response_body.py +28 -0
  280. samsara/types/sudden_fuel_level_drop_response_body.py +33 -0
  281. samsara/types/sudden_fuel_level_rise_response_body.py +33 -0
  282. samsara/types/trigger_params_object_request_body.py +2 -0
  283. samsara/types/trigger_params_object_response_body.py +2 -0
  284. samsara/types/unit_response_body.py +39 -0
  285. samsara/types/unit_response_body_base_unit.py +62 -0
  286. samsara/types/unit_response_body_measurement_type.py +28 -0
  287. samsara/types/uploaded_media_object_response_body.py +1 -1
  288. samsara/types/uploaded_media_object_response_body_trigger_reason.py +8 -1
  289. samsara/types/v_1_message.py +29 -0
  290. samsara/types/v_1_message_response.py +41 -0
  291. samsara/types/v_1_message_sender.py +27 -0
  292. samsara/types/v_1_messages.py +7 -0
  293. samsara/types/v_1_messages_response.py +7 -0
  294. samsara/types/webhook_response_response_body_event_types_item.py +1 -0
  295. samsara/types/webhooks_get_webhook_response_body_event_types_item.py +1 -0
  296. samsara/types/webhooks_patch_webhook_response_body_event_types_item.py +1 -0
  297. samsara/types/webhooks_post_webhooks_response_body_event_types_item.py +1 -0
  298. samsara/types/workflow_geofence_event_response_object_response_body.py +6 -0
  299. samsara/types/workflow_incident_details_object_response_body.py +2 -0
  300. samsara/types/workflow_trigger_object_request_body.py +1 -0
  301. samsara/types/workflow_trigger_object_response_body.py +1 -0
  302. samsara/user_roles/client.py +21 -11
  303. samsara/user_roles/raw_client.py +39 -9
  304. samsara/users/client.py +21 -11
  305. samsara/users/raw_client.py +39 -8
  306. samsara/v_1_messages/__init__.py +4 -0
  307. samsara/v_1_messages/client.py +258 -0
  308. samsara/v_1_messages/raw_client.py +273 -0
  309. samsara/vehicles/__init__.py +1 -2
  310. samsara/vehicles/client.py +31 -16
  311. samsara/vehicles/immobilizer/client.py +21 -13
  312. samsara/vehicles/immobilizer/raw_client.py +43 -9
  313. samsara/vehicles/locations/client.py +60 -32
  314. samsara/vehicles/locations/raw_client.py +132 -25
  315. samsara/vehicles/raw_client.py +61 -8
  316. samsara/vehicles/stats/client.py +66 -38
  317. samsara/vehicles/stats/raw_client.py +148 -31
  318. samsara/webhooks/client.py +21 -11
  319. samsara/webhooks/raw_client.py +41 -8
  320. samsara/webhooks/types/webhooks_post_webhooks_request_body_event_types_item.py +1 -0
  321. samsara_api-0.0.2.dist-info/METADATA +29 -0
  322. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/RECORD +328 -193
  323. samsara/beta/client.py +0 -161
  324. samsara/drivers/tachograph_activity/client.py +0 -186
  325. samsara/drivers/tachograph_activity/raw_client.py +0 -169
  326. samsara/hours_of_service/__init__.py +0 -7
  327. samsara/hours_of_service/client.py +0 -229
  328. samsara/hours_of_service/raw_client.py +0 -425
  329. samsara/hours_of_service/types/__init__.py +0 -9
  330. samsara/hours_of_service/types/hours_of_service_get_daily_logs_request_driver_activation_status.py +0 -7
  331. samsara/reports/ifta/vehicle/types/vehicle_get_request_quarter.py +0 -5
  332. samsara/reports/vehicles/fuel_energy/types/fuel_energy_get_request_energy_type.py +0 -5
  333. samsara/types/assets_create_asset_response_body_regulation_mode.py +0 -7
  334. samsara/types/assets_update_asset_response_body_regulation_mode.py +0 -7
  335. samsara/types/assets_update_asset_response_body_type.py +0 -7
  336. samsara/types/patch_shipping_docs_response_body_response_body.py +0 -93
  337. samsara_api-0.0.1.dist-info/METADATA +0 -214
  338. /samsara/{beta → forms}/__init__.py +0 -0
  339. /samsara/{drivers/tachograph_activity → readings}/__init__.py +0 -0
  340. /samsara/{drivers/tachograph_files → tachograph/driver}/__init__.py +0 -0
  341. /samsara/{vehicles/tachograph_files → tachograph/vehicles}/__init__.py +0 -0
  342. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/LICENSE +0 -0
  343. {samsara_api-0.0.1.dist-info → samsara_api-0.0.2.dist-info}/WHEEL +0 -0
@@ -17,75 +17,61 @@ from ..errors.not_implemented_error import NotImplementedError
17
17
  from ..errors.service_unavailable_error import ServiceUnavailableError
18
18
  from ..errors.too_many_requests_error import TooManyRequestsError
19
19
  from ..errors.unauthorized_error import UnauthorizedError
20
- from ..types.hos_daily_logs_update_shipping_docs_response_body import HosDailyLogsUpdateShippingDocsResponseBody
20
+ from ..types.form_templates_get_form_templates_response_body import FormTemplatesGetFormTemplatesResponseBody
21
21
 
22
- # this is used as the default value for optional parameters
23
- OMIT = typing.cast(typing.Any, ...)
24
22
 
25
-
26
- class RawBetaClient:
23
+ class RawFormsClient:
27
24
  def __init__(self, *, client_wrapper: SyncClientWrapper):
28
25
  self._client_wrapper = client_wrapper
29
26
 
30
- def update_shipping_docs(
27
+ def get_form_templates(
31
28
  self,
32
29
  *,
33
- hos_date: str,
34
- driver_id: str,
35
- shipping_docs: str,
30
+ ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
31
+ after: typing.Optional[str] = None,
36
32
  request_options: typing.Optional[RequestOptions] = None,
37
- ) -> HttpResponse[HosDailyLogsUpdateShippingDocsResponseBody]:
33
+ ) -> HttpResponse[FormTemplatesGetFormTemplatesResponseBody]:
38
34
  """
39
- Update the shippingDocs field of an existing assignment.
35
+ Returns a list of the organization's form templates for the specified list of IDs. If no IDs are provided, all form templates for the organization will be returned.
40
36
 
41
37
  <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
42
38
 
43
- To use this endpoint, select **Write ELD Hours of Service (US)** under the Compliance category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
39
+ To use this endpoint, select **Read Form Submissions** under the Forms category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
44
40
 
45
41
 
46
42
  **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.
47
43
 
48
44
  Parameters
49
45
  ----------
50
- hos_date : str
51
- A start date in yyyy-mm-dd format. Required.
52
-
53
- driver_id : str
54
- ID of the driver for whom the duty status is being set.
46
+ ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
47
+ A comma-separated list containing up to 100 template IDs to filter on.
55
48
 
56
- shipping_docs : str
57
- ShippingDocs associated with the driver for the day.
49
+ after : typing.Optional[str]
50
+ If specified, this should be the endCursor value from the previous page of results. When present, this request will return the next page of results that occur immediately after the previous page of results.
58
51
 
59
52
  request_options : typing.Optional[RequestOptions]
60
53
  Request-specific configuration.
61
54
 
62
55
  Returns
63
56
  -------
64
- HttpResponse[HosDailyLogsUpdateShippingDocsResponseBody]
57
+ HttpResponse[FormTemplatesGetFormTemplatesResponseBody]
65
58
  OK response.
66
59
  """
67
60
  _response = self._client_wrapper.httpx_client.request(
68
- "hos/daily-logs/log-meta-data",
69
- method="PATCH",
61
+ "form-templates",
62
+ method="GET",
70
63
  params={
71
- "hosDate": hos_date,
72
- "driverID": driver_id,
73
- },
74
- json={
75
- "shippingDocs": shipping_docs,
76
- },
77
- headers={
78
- "content-type": "application/json",
64
+ "ids": ids,
65
+ "after": after,
79
66
  },
80
67
  request_options=request_options,
81
- omit=OMIT,
82
68
  )
83
69
  try:
84
70
  if 200 <= _response.status_code < 300:
85
71
  _data = typing.cast(
86
- HosDailyLogsUpdateShippingDocsResponseBody,
72
+ FormTemplatesGetFormTemplatesResponseBody,
87
73
  parse_obj_as(
88
- type_=HosDailyLogsUpdateShippingDocsResponseBody, # type: ignore
74
+ type_=FormTemplatesGetFormTemplatesResponseBody, # type: ignore
89
75
  object_=_response.json(),
90
76
  ),
91
77
  )
@@ -195,69 +181,58 @@ class RawBetaClient:
195
181
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
196
182
 
197
183
 
198
- class AsyncRawBetaClient:
184
+ class AsyncRawFormsClient:
199
185
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
200
186
  self._client_wrapper = client_wrapper
201
187
 
202
- async def update_shipping_docs(
188
+ async def get_form_templates(
203
189
  self,
204
190
  *,
205
- hos_date: str,
206
- driver_id: str,
207
- shipping_docs: str,
191
+ ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
192
+ after: typing.Optional[str] = None,
208
193
  request_options: typing.Optional[RequestOptions] = None,
209
- ) -> AsyncHttpResponse[HosDailyLogsUpdateShippingDocsResponseBody]:
194
+ ) -> AsyncHttpResponse[FormTemplatesGetFormTemplatesResponseBody]:
210
195
  """
211
- Update the shippingDocs field of an existing assignment.
196
+ Returns a list of the organization's form templates for the specified list of IDs. If no IDs are provided, all form templates for the organization will be returned.
212
197
 
213
198
  <b>Rate limit:</b> 5 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
214
199
 
215
- To use this endpoint, select **Write ELD Hours of Service (US)** under the Compliance category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
200
+ To use this endpoint, select **Read Form Submissions** under the Forms category when creating or editing an API token. <a href="https://developers.samsara.com/docs/authentication#scopes-for-api-tokens" target="_blank">Learn More.</a>
216
201
 
217
202
 
218
203
  **Submit Feedback**: Likes, dislikes, and API feature requests should be filed as feedback in our <a href="https://forms.gle/zkD4NCH7HjKb7mm69" target="_blank">API feedback form</a>. If you encountered an issue or noticed inaccuracies in the API documentation, please <a href="https://www.samsara.com/help" target="_blank">submit a case</a> to our support team.
219
204
 
220
205
  Parameters
221
206
  ----------
222
- hos_date : str
223
- A start date in yyyy-mm-dd format. Required.
207
+ ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
208
+ A comma-separated list containing up to 100 template IDs to filter on.
224
209
 
225
- driver_id : str
226
- ID of the driver for whom the duty status is being set.
227
-
228
- shipping_docs : str
229
- ShippingDocs associated with the driver for the day.
210
+ after : typing.Optional[str]
211
+ If specified, this should be the endCursor value from the previous page of results. When present, this request will return the next page of results that occur immediately after the previous page of results.
230
212
 
231
213
  request_options : typing.Optional[RequestOptions]
232
214
  Request-specific configuration.
233
215
 
234
216
  Returns
235
217
  -------
236
- AsyncHttpResponse[HosDailyLogsUpdateShippingDocsResponseBody]
218
+ AsyncHttpResponse[FormTemplatesGetFormTemplatesResponseBody]
237
219
  OK response.
238
220
  """
239
221
  _response = await self._client_wrapper.httpx_client.request(
240
- "hos/daily-logs/log-meta-data",
241
- method="PATCH",
222
+ "form-templates",
223
+ method="GET",
242
224
  params={
243
- "hosDate": hos_date,
244
- "driverID": driver_id,
245
- },
246
- json={
247
- "shippingDocs": shipping_docs,
248
- },
249
- headers={
250
- "content-type": "application/json",
225
+ "ids": ids,
226
+ "after": after,
251
227
  },
252
228
  request_options=request_options,
253
- omit=OMIT,
254
229
  )
255
230
  try:
256
231
  if 200 <= _response.status_code < 300:
257
232
  _data = typing.cast(
258
- HosDailyLogsUpdateShippingDocsResponseBody,
233
+ FormTemplatesGetFormTemplatesResponseBody,
259
234
  parse_obj_as(
260
- type_=HosDailyLogsUpdateShippingDocsResponseBody, # type: ignore
235
+ type_=FormTemplatesGetFormTemplatesResponseBody, # type: ignore
261
236
  object_=_response.json(),
262
237
  ),
263
238
  )
samsara/function.py ADDED
@@ -0,0 +1,99 @@
1
+ import json
2
+ import os
3
+ from typing import Dict, Any, Optional, Protocol
4
+
5
+
6
+ class SSMClientProtocol(Protocol):
7
+ """Protocol defining the SSM client interface we need."""
8
+
9
+ def get_parameter(self, Name: str, WithDecryption: bool) -> Dict[str, Any]:
10
+ """Get parameter from SSM."""
11
+ ...
12
+
13
+
14
+ class Secrets:
15
+ """
16
+ Handles loading secrets from either local environment or AWS Parameter Store.
17
+ """
18
+
19
+ def __init__(self, client: Optional[SSMClientProtocol]) -> None:
20
+ """
21
+ Initialize the Secrets handler.
22
+
23
+ Args:
24
+ client: SSM client for accessing AWS Parameter Store, or None for local development
25
+ """
26
+ self.__client = client
27
+
28
+ def load(self) -> Dict[str, Any]:
29
+ """
30
+ Load secrets from the appropriate source based on environment.
31
+
32
+ When running locally, secrets are loaded from the
33
+ 'SamsaraFunctionLocalSecretsJson' environment variable.
34
+
35
+ Returns:
36
+ Dict containing the parsed secrets
37
+ """
38
+ if self.__client is None:
39
+ return json.loads(os.environ.get("SamsaraFunctionLocalSecretsJson", "{}"))
40
+
41
+ res = self.__client.get_parameter(
42
+ Name=os.environ["SamsaraFunctionSecretsPath"], WithDecryption=True
43
+ )
44
+
45
+ value = res["Parameter"]["Value"]
46
+ if value == "null":
47
+ return {}
48
+
49
+ return json.loads(value)
50
+
51
+
52
+ class Function:
53
+ """
54
+ Handles environment detection and secrets management.
55
+ """
56
+
57
+ def __init__(
58
+ self, is_local: bool = os.environ.get("AWS_EXECUTION_ENV", "") == ""
59
+ ) -> None:
60
+ """
61
+ Initialize the function with appropriate configuration based on environment.
62
+
63
+ Args:
64
+ is_local: Flag indicating if running in local development environment
65
+
66
+ Note:
67
+ The is_local parameter doesn't need to be set explicitly as it defaults to
68
+ checking if AWS_EXECUTION_ENV is empty. This environment variable is automatically
69
+ set by AWS Lambda when running in the cloud, but will be empty during local
70
+ development, making the detection automatic in most cases.
71
+ """
72
+ if is_local:
73
+ self.__secrets = Secrets(None)
74
+ else:
75
+ # boto3 is always available in the execution enviroment and not required in development.
76
+ import boto3 # type: ignore
77
+
78
+ sts = boto3.client("sts")
79
+ res = sts.assume_role(
80
+ RoleArn=os.environ["SamsaraFunctionExecRoleArn"],
81
+ RoleSessionName=os.environ["SamsaraFunctionName"],
82
+ )
83
+
84
+ credentials = {
85
+ "aws_access_key_id": res["Credentials"]["AccessKeyId"],
86
+ "aws_secret_access_key": res["Credentials"]["SecretAccessKey"],
87
+ "aws_session_token": res["Credentials"]["SessionToken"],
88
+ }
89
+
90
+ self.__secrets = Secrets(boto3.client("ssm", **credentials))
91
+
92
+ def secrets(self) -> Secrets:
93
+ """
94
+ Get the secrets handler.
95
+
96
+ Returns:
97
+ The configured Secrets instance
98
+ """
99
+ return self.__secrets
@@ -3,8 +3,9 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
7
- from ..types.gateways_get_gateways_response_body import GatewaysGetGatewaysResponseBody
8
+ from ..types.gateway_response_object_response_body import GatewayResponseObjectResponseBody
8
9
  from ..types.gateways_post_gateway_response_body import GatewaysPostGatewayResponseBody
9
10
  from .raw_client import AsyncRawGatewaysClient, RawGatewaysClient
10
11
 
@@ -33,7 +34,7 @@ class GatewaysClient:
33
34
  models: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
34
35
  after: typing.Optional[str] = None,
35
36
  request_options: typing.Optional[RequestOptions] = None,
36
- ) -> GatewaysGetGatewaysResponseBody:
37
+ ) -> SyncPager[GatewayResponseObjectResponseBody]:
37
38
  """
38
39
  List all gateways
39
40
 
@@ -57,7 +58,7 @@ class GatewaysClient:
57
58
 
58
59
  Returns
59
60
  -------
60
- GatewaysGetGatewaysResponseBody
61
+ SyncPager[GatewayResponseObjectResponseBody]
61
62
  OK response.
62
63
 
63
64
  Examples
@@ -67,10 +68,14 @@ class GatewaysClient:
67
68
  client = Samsara(
68
69
  token="YOUR_TOKEN",
69
70
  )
70
- client.gateways.list()
71
+ response = client.gateways.list()
72
+ for item in response:
73
+ yield item
74
+ # alternatively, you can paginate page-by-page
75
+ for page in response.iter_pages():
76
+ yield page
71
77
  """
72
- _response = self._raw_client.list(models=models, after=after, request_options=request_options)
73
- return _response.data
78
+ return self._raw_client.list(models=models, after=after, request_options=request_options)
74
79
 
75
80
  def create(
76
81
  self, *, serial: str, request_options: typing.Optional[RequestOptions] = None
@@ -171,7 +176,7 @@ class AsyncGatewaysClient:
171
176
  models: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
172
177
  after: typing.Optional[str] = None,
173
178
  request_options: typing.Optional[RequestOptions] = None,
174
- ) -> GatewaysGetGatewaysResponseBody:
179
+ ) -> AsyncPager[GatewayResponseObjectResponseBody]:
175
180
  """
176
181
  List all gateways
177
182
 
@@ -195,7 +200,7 @@ class AsyncGatewaysClient:
195
200
 
196
201
  Returns
197
202
  -------
198
- GatewaysGetGatewaysResponseBody
203
+ AsyncPager[GatewayResponseObjectResponseBody]
199
204
  OK response.
200
205
 
201
206
  Examples
@@ -210,13 +215,18 @@ class AsyncGatewaysClient:
210
215
 
211
216
 
212
217
  async def main() -> None:
213
- await client.gateways.list()
218
+ response = await client.gateways.list()
219
+ async for item in response:
220
+ yield item
221
+
222
+ # alternatively, you can paginate page-by-page
223
+ async for page in response.iter_pages():
224
+ yield page
214
225
 
215
226
 
216
227
  asyncio.run(main())
217
228
  """
218
- _response = await self._raw_client.list(models=models, after=after, request_options=request_options)
219
- return _response.data
229
+ return await self._raw_client.list(models=models, after=after, request_options=request_options)
220
230
 
221
231
  async def create(
222
232
  self, *, serial: str, request_options: typing.Optional[RequestOptions] = None
@@ -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 ..errors.bad_gateway_error import BadGatewayError
@@ -18,6 +19,7 @@ from ..errors.not_implemented_error import NotImplementedError
18
19
  from ..errors.service_unavailable_error import ServiceUnavailableError
19
20
  from ..errors.too_many_requests_error import TooManyRequestsError
20
21
  from ..errors.unauthorized_error import UnauthorizedError
22
+ from ..types.gateway_response_object_response_body import GatewayResponseObjectResponseBody
21
23
  from ..types.gateways_get_gateways_response_body import GatewaysGetGatewaysResponseBody
22
24
  from ..types.gateways_post_gateway_response_body import GatewaysPostGatewayResponseBody
23
25
 
@@ -35,7 +37,7 @@ class RawGatewaysClient:
35
37
  models: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
36
38
  after: typing.Optional[str] = None,
37
39
  request_options: typing.Optional[RequestOptions] = None,
38
- ) -> HttpResponse[GatewaysGetGatewaysResponseBody]:
40
+ ) -> SyncPager[GatewayResponseObjectResponseBody]:
39
41
  """
40
42
  List all gateways
41
43
 
@@ -59,7 +61,7 @@ class RawGatewaysClient:
59
61
 
60
62
  Returns
61
63
  -------
62
- HttpResponse[GatewaysGetGatewaysResponseBody]
64
+ SyncPager[GatewayResponseObjectResponseBody]
63
65
  OK response.
64
66
  """
65
67
  _response = self._client_wrapper.httpx_client.request(
@@ -73,14 +75,27 @@ class RawGatewaysClient:
73
75
  )
74
76
  try:
75
77
  if 200 <= _response.status_code < 300:
76
- _data = typing.cast(
78
+ _parsed_response = typing.cast(
77
79
  GatewaysGetGatewaysResponseBody,
78
80
  parse_obj_as(
79
81
  type_=GatewaysGetGatewaysResponseBody, # type: ignore
80
82
  object_=_response.json(),
81
83
  ),
82
84
  )
83
- return HttpResponse(response=_response, data=_data)
85
+ _items = _parsed_response.data
86
+ _has_next = False
87
+ _get_next = None
88
+ if _parsed_response.pagination is not None:
89
+ _parsed_next = _parsed_response.pagination.end_cursor
90
+ _has_next = _parsed_next is not None and _parsed_next != ""
91
+ _get_next = lambda: self.list(
92
+ models=models,
93
+ after=_parsed_next,
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
+ )
84
99
  if _response.status_code == 401:
85
100
  raise UnauthorizedError(
86
101
  headers=dict(_response.headers),
@@ -483,7 +498,7 @@ class AsyncRawGatewaysClient:
483
498
  models: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
484
499
  after: typing.Optional[str] = None,
485
500
  request_options: typing.Optional[RequestOptions] = None,
486
- ) -> AsyncHttpResponse[GatewaysGetGatewaysResponseBody]:
501
+ ) -> AsyncPager[GatewayResponseObjectResponseBody]:
487
502
  """
488
503
  List all gateways
489
504
 
@@ -507,7 +522,7 @@ class AsyncRawGatewaysClient:
507
522
 
508
523
  Returns
509
524
  -------
510
- AsyncHttpResponse[GatewaysGetGatewaysResponseBody]
525
+ AsyncPager[GatewayResponseObjectResponseBody]
511
526
  OK response.
512
527
  """
513
528
  _response = await self._client_wrapper.httpx_client.request(
@@ -521,14 +536,30 @@ class AsyncRawGatewaysClient:
521
536
  )
522
537
  try:
523
538
  if 200 <= _response.status_code < 300:
524
- _data = typing.cast(
539
+ _parsed_response = typing.cast(
525
540
  GatewaysGetGatewaysResponseBody,
526
541
  parse_obj_as(
527
542
  type_=GatewaysGetGatewaysResponseBody, # type: ignore
528
543
  object_=_response.json(),
529
544
  ),
530
545
  )
531
- return AsyncHttpResponse(response=_response, data=_data)
546
+ _items = _parsed_response.data
547
+ _has_next = False
548
+ _get_next = None
549
+ if _parsed_response.pagination is not None:
550
+ _parsed_next = _parsed_response.pagination.end_cursor
551
+ _has_next = _parsed_next is not None and _parsed_next != ""
552
+
553
+ async def _get_next():
554
+ return await self.list(
555
+ models=models,
556
+ after=_parsed_next,
557
+ request_options=request_options,
558
+ )
559
+
560
+ return AsyncPager(
561
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
562
+ )
532
563
  if _response.status_code == 401:
533
564
  raise UnauthorizedError(
534
565
  headers=dict(_response.headers),
samsara/hos/__init__.py CHANGED
@@ -2,3 +2,6 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
+ from .types import HosDailyLogsRequestDriverActivationStatus
6
+
7
+ __all__ = ["HosDailyLogsRequestDriverActivationStatus"]