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
samsara/defects/client.py CHANGED
@@ -3,10 +3,12 @@
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.defect_response import DefectResponse
8
9
  from ..types.defects_response import DefectsResponse
9
- from ..types.dvir_defect_stream_defects_response_body import DvirDefectStreamDefectsResponseBody
10
+ from ..types.defects_response_data_response_body import DefectsResponseDataResponseBody
11
+ from ..types.dvir_defect_get_defect_response_body import DvirDefectGetDefectResponseBody
10
12
  from ..types.resolved_by import ResolvedBy
11
13
  from .raw_client import AsyncRawDefectsClient, RawDefectsClient
12
14
 
@@ -39,7 +41,7 @@ class DefectsClient:
39
41
  include_external_ids: typing.Optional[bool] = None,
40
42
  is_resolved: typing.Optional[bool] = None,
41
43
  request_options: typing.Optional[RequestOptions] = None,
42
- ) -> DvirDefectStreamDefectsResponseBody:
44
+ ) -> SyncPager[DefectsResponseDataResponseBody]:
43
45
  """
44
46
  Stream DVIR defects.
45
47
 
@@ -75,7 +77,7 @@ class DefectsClient:
75
77
 
76
78
  Returns
77
79
  -------
78
- DvirDefectStreamDefectsResponseBody
80
+ SyncPager[DefectsResponseDataResponseBody]
79
81
  OK response.
80
82
 
81
83
  Examples
@@ -85,11 +87,16 @@ class DefectsClient:
85
87
  client = Samsara(
86
88
  token="YOUR_TOKEN",
87
89
  )
88
- client.defects.stream(
90
+ response = client.defects.stream(
89
91
  start_time="startTime",
90
92
  )
93
+ for item in response:
94
+ yield item
95
+ # alternatively, you can paginate page-by-page
96
+ for page in response.iter_pages():
97
+ yield page
91
98
  """
92
- _response = self._raw_client.stream(
99
+ return self._raw_client.stream(
93
100
  start_time=start_time,
94
101
  after=after,
95
102
  limit=limit,
@@ -98,6 +105,52 @@ class DefectsClient:
98
105
  is_resolved=is_resolved,
99
106
  request_options=request_options,
100
107
  )
108
+
109
+ def get(
110
+ self,
111
+ id: str,
112
+ *,
113
+ include_external_ids: typing.Optional[bool] = None,
114
+ request_options: typing.Optional[RequestOptions] = None,
115
+ ) -> DvirDefectGetDefectResponseBody:
116
+ """
117
+ Get a single DVIR defect by ID.
118
+
119
+ <b>Rate limit:</b> 10 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
120
+
121
+ To use this endpoint, select **Read Defects** under the Maintenance 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>
122
+
123
+
124
+ **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.
125
+
126
+ Parameters
127
+ ----------
128
+ id : str
129
+ The unique ID of the DVIR defect.
130
+
131
+ include_external_ids : typing.Optional[bool]
132
+ Optional boolean indicating whether to return external IDs on supported entities
133
+
134
+ request_options : typing.Optional[RequestOptions]
135
+ Request-specific configuration.
136
+
137
+ Returns
138
+ -------
139
+ DvirDefectGetDefectResponseBody
140
+ OK response.
141
+
142
+ Examples
143
+ --------
144
+ from samsara import Samsara
145
+
146
+ client = Samsara(
147
+ token="YOUR_TOKEN",
148
+ )
149
+ client.defects.get(
150
+ id="id",
151
+ )
152
+ """
153
+ _response = self._raw_client.get(id, include_external_ids=include_external_ids, request_options=request_options)
101
154
  return _response.data
102
155
 
103
156
  def history(
@@ -254,7 +307,7 @@ class AsyncDefectsClient:
254
307
  include_external_ids: typing.Optional[bool] = None,
255
308
  is_resolved: typing.Optional[bool] = None,
256
309
  request_options: typing.Optional[RequestOptions] = None,
257
- ) -> DvirDefectStreamDefectsResponseBody:
310
+ ) -> AsyncPager[DefectsResponseDataResponseBody]:
258
311
  """
259
312
  Stream DVIR defects.
260
313
 
@@ -290,7 +343,7 @@ class AsyncDefectsClient:
290
343
 
291
344
  Returns
292
345
  -------
293
- DvirDefectStreamDefectsResponseBody
346
+ AsyncPager[DefectsResponseDataResponseBody]
294
347
  OK response.
295
348
 
296
349
  Examples
@@ -305,14 +358,20 @@ class AsyncDefectsClient:
305
358
 
306
359
 
307
360
  async def main() -> None:
308
- await client.defects.stream(
361
+ response = await client.defects.stream(
309
362
  start_time="startTime",
310
363
  )
364
+ async for item in response:
365
+ yield item
366
+
367
+ # alternatively, you can paginate page-by-page
368
+ async for page in response.iter_pages():
369
+ yield page
311
370
 
312
371
 
313
372
  asyncio.run(main())
314
373
  """
315
- _response = await self._raw_client.stream(
374
+ return await self._raw_client.stream(
316
375
  start_time=start_time,
317
376
  after=after,
318
377
  limit=limit,
@@ -321,6 +380,62 @@ class AsyncDefectsClient:
321
380
  is_resolved=is_resolved,
322
381
  request_options=request_options,
323
382
  )
383
+
384
+ async def get(
385
+ self,
386
+ id: str,
387
+ *,
388
+ include_external_ids: typing.Optional[bool] = None,
389
+ request_options: typing.Optional[RequestOptions] = None,
390
+ ) -> DvirDefectGetDefectResponseBody:
391
+ """
392
+ Get a single DVIR defect by ID.
393
+
394
+ <b>Rate limit:</b> 10 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
395
+
396
+ To use this endpoint, select **Read Defects** under the Maintenance 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>
397
+
398
+
399
+ **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.
400
+
401
+ Parameters
402
+ ----------
403
+ id : str
404
+ The unique ID of the DVIR defect.
405
+
406
+ include_external_ids : typing.Optional[bool]
407
+ Optional boolean indicating whether to return external IDs on supported entities
408
+
409
+ request_options : typing.Optional[RequestOptions]
410
+ Request-specific configuration.
411
+
412
+ Returns
413
+ -------
414
+ DvirDefectGetDefectResponseBody
415
+ OK response.
416
+
417
+ Examples
418
+ --------
419
+ import asyncio
420
+
421
+ from samsara import AsyncSamsara
422
+
423
+ client = AsyncSamsara(
424
+ token="YOUR_TOKEN",
425
+ )
426
+
427
+
428
+ async def main() -> None:
429
+ await client.defects.get(
430
+ id="id",
431
+ )
432
+
433
+
434
+ asyncio.run(main())
435
+ """
436
+ _response = await self._raw_client.get(
437
+ id, include_external_ids=include_external_ids, request_options=request_options
438
+ )
324
439
  return _response.data
325
440
 
326
441
  async def history(
@@ -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
@@ -21,6 +22,8 @@ from ..errors.too_many_requests_error import TooManyRequestsError
21
22
  from ..errors.unauthorized_error import UnauthorizedError
22
23
  from ..types.defect_response import DefectResponse
23
24
  from ..types.defects_response import DefectsResponse
25
+ from ..types.defects_response_data_response_body import DefectsResponseDataResponseBody
26
+ from ..types.dvir_defect_get_defect_response_body import DvirDefectGetDefectResponseBody
24
27
  from ..types.dvir_defect_stream_defects_response_body import DvirDefectStreamDefectsResponseBody
25
28
  from ..types.resolved_by import ResolvedBy
26
29
 
@@ -42,7 +45,7 @@ class RawDefectsClient:
42
45
  include_external_ids: typing.Optional[bool] = None,
43
46
  is_resolved: typing.Optional[bool] = None,
44
47
  request_options: typing.Optional[RequestOptions] = None,
45
- ) -> HttpResponse[DvirDefectStreamDefectsResponseBody]:
48
+ ) -> SyncPager[DefectsResponseDataResponseBody]:
46
49
  """
47
50
  Stream DVIR defects.
48
51
 
@@ -78,7 +81,7 @@ class RawDefectsClient:
78
81
 
79
82
  Returns
80
83
  -------
81
- HttpResponse[DvirDefectStreamDefectsResponseBody]
84
+ SyncPager[DefectsResponseDataResponseBody]
82
85
  OK response.
83
86
  """
84
87
  _response = self._client_wrapper.httpx_client.request(
@@ -96,13 +99,185 @@ class RawDefectsClient:
96
99
  )
97
100
  try:
98
101
  if 200 <= _response.status_code < 300:
99
- _data = typing.cast(
102
+ _parsed_response = typing.cast(
100
103
  DvirDefectStreamDefectsResponseBody,
101
104
  parse_obj_as(
102
105
  type_=DvirDefectStreamDefectsResponseBody, # type: ignore
103
106
  object_=_response.json(),
104
107
  ),
105
108
  )
109
+ _items = _parsed_response.data
110
+ _has_next = False
111
+ _get_next = None
112
+ if _parsed_response.pagination is not None:
113
+ _parsed_next = _parsed_response.pagination.end_cursor
114
+ _has_next = _parsed_next is not None and _parsed_next != ""
115
+ _get_next = lambda: self.stream(
116
+ start_time=start_time,
117
+ after=_parsed_next,
118
+ limit=limit,
119
+ end_time=end_time,
120
+ include_external_ids=include_external_ids,
121
+ is_resolved=is_resolved,
122
+ request_options=request_options,
123
+ )
124
+ return SyncPager(
125
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
126
+ )
127
+ if _response.status_code == 401:
128
+ raise UnauthorizedError(
129
+ headers=dict(_response.headers),
130
+ body=typing.cast(
131
+ typing.Optional[typing.Any],
132
+ parse_obj_as(
133
+ type_=typing.Optional[typing.Any], # type: ignore
134
+ object_=_response.json(),
135
+ ),
136
+ ),
137
+ )
138
+ if _response.status_code == 404:
139
+ raise NotFoundError(
140
+ headers=dict(_response.headers),
141
+ body=typing.cast(
142
+ typing.Optional[typing.Any],
143
+ parse_obj_as(
144
+ type_=typing.Optional[typing.Any], # type: ignore
145
+ object_=_response.json(),
146
+ ),
147
+ ),
148
+ )
149
+ if _response.status_code == 405:
150
+ raise MethodNotAllowedError(
151
+ headers=dict(_response.headers),
152
+ body=typing.cast(
153
+ typing.Optional[typing.Any],
154
+ parse_obj_as(
155
+ type_=typing.Optional[typing.Any], # type: ignore
156
+ object_=_response.json(),
157
+ ),
158
+ ),
159
+ )
160
+ if _response.status_code == 429:
161
+ raise TooManyRequestsError(
162
+ headers=dict(_response.headers),
163
+ body=typing.cast(
164
+ typing.Optional[typing.Any],
165
+ parse_obj_as(
166
+ type_=typing.Optional[typing.Any], # type: ignore
167
+ object_=_response.json(),
168
+ ),
169
+ ),
170
+ )
171
+ if _response.status_code == 500:
172
+ raise InternalServerError(
173
+ headers=dict(_response.headers),
174
+ body=typing.cast(
175
+ typing.Optional[typing.Any],
176
+ parse_obj_as(
177
+ type_=typing.Optional[typing.Any], # type: ignore
178
+ object_=_response.json(),
179
+ ),
180
+ ),
181
+ )
182
+ if _response.status_code == 501:
183
+ raise NotImplementedError(
184
+ headers=dict(_response.headers),
185
+ body=typing.cast(
186
+ typing.Optional[typing.Any],
187
+ parse_obj_as(
188
+ type_=typing.Optional[typing.Any], # type: ignore
189
+ object_=_response.json(),
190
+ ),
191
+ ),
192
+ )
193
+ if _response.status_code == 502:
194
+ raise BadGatewayError(
195
+ headers=dict(_response.headers),
196
+ body=typing.cast(
197
+ typing.Optional[typing.Any],
198
+ parse_obj_as(
199
+ type_=typing.Optional[typing.Any], # type: ignore
200
+ object_=_response.json(),
201
+ ),
202
+ ),
203
+ )
204
+ if _response.status_code == 503:
205
+ raise ServiceUnavailableError(
206
+ headers=dict(_response.headers),
207
+ body=typing.cast(
208
+ typing.Optional[typing.Any],
209
+ parse_obj_as(
210
+ type_=typing.Optional[typing.Any], # type: ignore
211
+ object_=_response.json(),
212
+ ),
213
+ ),
214
+ )
215
+ if _response.status_code == 504:
216
+ raise GatewayTimeoutError(
217
+ headers=dict(_response.headers),
218
+ body=typing.cast(
219
+ typing.Optional[typing.Any],
220
+ parse_obj_as(
221
+ type_=typing.Optional[typing.Any], # type: ignore
222
+ object_=_response.json(),
223
+ ),
224
+ ),
225
+ )
226
+ _response_json = _response.json()
227
+ except JSONDecodeError:
228
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
229
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
230
+
231
+ def get(
232
+ self,
233
+ id: str,
234
+ *,
235
+ include_external_ids: typing.Optional[bool] = None,
236
+ request_options: typing.Optional[RequestOptions] = None,
237
+ ) -> HttpResponse[DvirDefectGetDefectResponseBody]:
238
+ """
239
+ Get a single DVIR defect by ID.
240
+
241
+ <b>Rate limit:</b> 10 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
242
+
243
+ To use this endpoint, select **Read Defects** under the Maintenance 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>
244
+
245
+
246
+ **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.
247
+
248
+ Parameters
249
+ ----------
250
+ id : str
251
+ The unique ID of the DVIR defect.
252
+
253
+ include_external_ids : typing.Optional[bool]
254
+ Optional boolean indicating whether to return external IDs on supported entities
255
+
256
+ request_options : typing.Optional[RequestOptions]
257
+ Request-specific configuration.
258
+
259
+ Returns
260
+ -------
261
+ HttpResponse[DvirDefectGetDefectResponseBody]
262
+ OK response.
263
+ """
264
+ _response = self._client_wrapper.httpx_client.request(
265
+ f"defects/{jsonable_encoder(id)}",
266
+ method="GET",
267
+ params={
268
+ "includeExternalIds": include_external_ids,
269
+ },
270
+ request_options=request_options,
271
+ )
272
+ try:
273
+ if 200 <= _response.status_code < 300:
274
+ _data = typing.cast(
275
+ DvirDefectGetDefectResponseBody,
276
+ parse_obj_as(
277
+ type_=DvirDefectGetDefectResponseBody, # type: ignore
278
+ object_=_response.json(),
279
+ ),
280
+ )
106
281
  return HttpResponse(response=_response, data=_data)
107
282
  if _response.status_code == 401:
108
283
  raise UnauthorizedError(
@@ -367,7 +542,7 @@ class AsyncRawDefectsClient:
367
542
  include_external_ids: typing.Optional[bool] = None,
368
543
  is_resolved: typing.Optional[bool] = None,
369
544
  request_options: typing.Optional[RequestOptions] = None,
370
- ) -> AsyncHttpResponse[DvirDefectStreamDefectsResponseBody]:
545
+ ) -> AsyncPager[DefectsResponseDataResponseBody]:
371
546
  """
372
547
  Stream DVIR defects.
373
548
 
@@ -403,7 +578,7 @@ class AsyncRawDefectsClient:
403
578
 
404
579
  Returns
405
580
  -------
406
- AsyncHttpResponse[DvirDefectStreamDefectsResponseBody]
581
+ AsyncPager[DefectsResponseDataResponseBody]
407
582
  OK response.
408
583
  """
409
584
  _response = await self._client_wrapper.httpx_client.request(
@@ -421,13 +596,188 @@ class AsyncRawDefectsClient:
421
596
  )
422
597
  try:
423
598
  if 200 <= _response.status_code < 300:
424
- _data = typing.cast(
599
+ _parsed_response = typing.cast(
425
600
  DvirDefectStreamDefectsResponseBody,
426
601
  parse_obj_as(
427
602
  type_=DvirDefectStreamDefectsResponseBody, # type: ignore
428
603
  object_=_response.json(),
429
604
  ),
430
605
  )
606
+ _items = _parsed_response.data
607
+ _has_next = False
608
+ _get_next = None
609
+ if _parsed_response.pagination is not None:
610
+ _parsed_next = _parsed_response.pagination.end_cursor
611
+ _has_next = _parsed_next is not None and _parsed_next != ""
612
+
613
+ async def _get_next():
614
+ return await self.stream(
615
+ start_time=start_time,
616
+ after=_parsed_next,
617
+ limit=limit,
618
+ end_time=end_time,
619
+ include_external_ids=include_external_ids,
620
+ is_resolved=is_resolved,
621
+ request_options=request_options,
622
+ )
623
+
624
+ return AsyncPager(
625
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
626
+ )
627
+ if _response.status_code == 401:
628
+ raise UnauthorizedError(
629
+ headers=dict(_response.headers),
630
+ body=typing.cast(
631
+ typing.Optional[typing.Any],
632
+ parse_obj_as(
633
+ type_=typing.Optional[typing.Any], # type: ignore
634
+ object_=_response.json(),
635
+ ),
636
+ ),
637
+ )
638
+ if _response.status_code == 404:
639
+ raise NotFoundError(
640
+ headers=dict(_response.headers),
641
+ body=typing.cast(
642
+ typing.Optional[typing.Any],
643
+ parse_obj_as(
644
+ type_=typing.Optional[typing.Any], # type: ignore
645
+ object_=_response.json(),
646
+ ),
647
+ ),
648
+ )
649
+ if _response.status_code == 405:
650
+ raise MethodNotAllowedError(
651
+ headers=dict(_response.headers),
652
+ body=typing.cast(
653
+ typing.Optional[typing.Any],
654
+ parse_obj_as(
655
+ type_=typing.Optional[typing.Any], # type: ignore
656
+ object_=_response.json(),
657
+ ),
658
+ ),
659
+ )
660
+ if _response.status_code == 429:
661
+ raise TooManyRequestsError(
662
+ headers=dict(_response.headers),
663
+ body=typing.cast(
664
+ typing.Optional[typing.Any],
665
+ parse_obj_as(
666
+ type_=typing.Optional[typing.Any], # type: ignore
667
+ object_=_response.json(),
668
+ ),
669
+ ),
670
+ )
671
+ if _response.status_code == 500:
672
+ raise InternalServerError(
673
+ headers=dict(_response.headers),
674
+ body=typing.cast(
675
+ typing.Optional[typing.Any],
676
+ parse_obj_as(
677
+ type_=typing.Optional[typing.Any], # type: ignore
678
+ object_=_response.json(),
679
+ ),
680
+ ),
681
+ )
682
+ if _response.status_code == 501:
683
+ raise NotImplementedError(
684
+ headers=dict(_response.headers),
685
+ body=typing.cast(
686
+ typing.Optional[typing.Any],
687
+ parse_obj_as(
688
+ type_=typing.Optional[typing.Any], # type: ignore
689
+ object_=_response.json(),
690
+ ),
691
+ ),
692
+ )
693
+ if _response.status_code == 502:
694
+ raise BadGatewayError(
695
+ headers=dict(_response.headers),
696
+ body=typing.cast(
697
+ typing.Optional[typing.Any],
698
+ parse_obj_as(
699
+ type_=typing.Optional[typing.Any], # type: ignore
700
+ object_=_response.json(),
701
+ ),
702
+ ),
703
+ )
704
+ if _response.status_code == 503:
705
+ raise ServiceUnavailableError(
706
+ headers=dict(_response.headers),
707
+ body=typing.cast(
708
+ typing.Optional[typing.Any],
709
+ parse_obj_as(
710
+ type_=typing.Optional[typing.Any], # type: ignore
711
+ object_=_response.json(),
712
+ ),
713
+ ),
714
+ )
715
+ if _response.status_code == 504:
716
+ raise GatewayTimeoutError(
717
+ headers=dict(_response.headers),
718
+ body=typing.cast(
719
+ typing.Optional[typing.Any],
720
+ parse_obj_as(
721
+ type_=typing.Optional[typing.Any], # type: ignore
722
+ object_=_response.json(),
723
+ ),
724
+ ),
725
+ )
726
+ _response_json = _response.json()
727
+ except JSONDecodeError:
728
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
729
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
730
+
731
+ async def get(
732
+ self,
733
+ id: str,
734
+ *,
735
+ include_external_ids: typing.Optional[bool] = None,
736
+ request_options: typing.Optional[RequestOptions] = None,
737
+ ) -> AsyncHttpResponse[DvirDefectGetDefectResponseBody]:
738
+ """
739
+ Get a single DVIR defect by ID.
740
+
741
+ <b>Rate limit:</b> 10 requests/sec (learn more about rate limits <a href="https://developers.samsara.com/docs/rate-limits" target="_blank">here</a>).
742
+
743
+ To use this endpoint, select **Read Defects** under the Maintenance 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>
744
+
745
+
746
+ **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.
747
+
748
+ Parameters
749
+ ----------
750
+ id : str
751
+ The unique ID of the DVIR defect.
752
+
753
+ include_external_ids : typing.Optional[bool]
754
+ Optional boolean indicating whether to return external IDs on supported entities
755
+
756
+ request_options : typing.Optional[RequestOptions]
757
+ Request-specific configuration.
758
+
759
+ Returns
760
+ -------
761
+ AsyncHttpResponse[DvirDefectGetDefectResponseBody]
762
+ OK response.
763
+ """
764
+ _response = await self._client_wrapper.httpx_client.request(
765
+ f"defects/{jsonable_encoder(id)}",
766
+ method="GET",
767
+ params={
768
+ "includeExternalIds": include_external_ids,
769
+ },
770
+ request_options=request_options,
771
+ )
772
+ try:
773
+ if 200 <= _response.status_code < 300:
774
+ _data = typing.cast(
775
+ DvirDefectGetDefectResponseBody,
776
+ parse_obj_as(
777
+ type_=DvirDefectGetDefectResponseBody, # type: ignore
778
+ object_=_response.json(),
779
+ ),
780
+ )
431
781
  return AsyncHttpResponse(response=_response, data=_data)
432
782
  if _response.status_code == 401:
433
783
  raise UnauthorizedError(