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_locations_list_response import VehicleLocationsListResponse
12
+ from ...types.vehicle_locations_list_response_data import VehicleLocationsListResponseData
12
13
  from ...types.vehicle_locations_response import VehicleLocationsResponse
14
+ from ...types.vehicle_locations_response_data import VehicleLocationsResponseData
13
15
 
14
16
 
15
17
  class RawLocationsClient:
@@ -25,7 +27,7 @@ class RawLocationsClient:
25
27
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
26
28
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
27
29
  request_options: typing.Optional[RequestOptions] = None,
28
- ) -> HttpResponse[VehicleLocationsResponse]:
30
+ ) -> SyncPager[VehicleLocationsResponseData]:
29
31
  """
30
32
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestats) instead.***
31
33
 
@@ -59,7 +61,7 @@ class RawLocationsClient:
59
61
 
60
62
  Returns
61
63
  -------
62
- HttpResponse[VehicleLocationsResponse]
64
+ SyncPager[VehicleLocationsResponseData]
63
65
  List of the most recent locations for the specified vehicles.
64
66
  """
65
67
  _response = self._client_wrapper.httpx_client.request(
@@ -76,14 +78,30 @@ class RawLocationsClient:
76
78
  )
77
79
  try:
78
80
  if 200 <= _response.status_code < 300:
79
- _data = typing.cast(
81
+ _parsed_response = typing.cast(
80
82
  VehicleLocationsResponse,
81
83
  parse_obj_as(
82
84
  type_=VehicleLocationsResponse, # type: ignore
83
85
  object_=_response.json(),
84
86
  ),
85
87
  )
86
- return HttpResponse(response=_response, data=_data)
88
+ _items = _parsed_response.data
89
+ _has_next = False
90
+ _get_next = None
91
+ if _parsed_response.pagination is not None:
92
+ _parsed_next = _parsed_response.pagination.end_cursor
93
+ _has_next = _parsed_next is not None and _parsed_next != ""
94
+ _get_next = lambda: self.list(
95
+ after=_parsed_next,
96
+ time=time,
97
+ parent_tag_ids=parent_tag_ids,
98
+ tag_ids=tag_ids,
99
+ vehicle_ids=vehicle_ids,
100
+ request_options=request_options,
101
+ )
102
+ return SyncPager(
103
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
104
+ )
87
105
  _response_json = _response.json()
88
106
  except JSONDecodeError:
89
107
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -97,7 +115,7 @@ class RawLocationsClient:
97
115
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
98
116
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
99
117
  request_options: typing.Optional[RequestOptions] = None,
100
- ) -> HttpResponse[VehicleLocationsListResponse]:
118
+ ) -> SyncPager[VehicleLocationsListResponseData]:
101
119
  """
102
120
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatsfeed) instead.***
103
121
 
@@ -134,7 +152,7 @@ class RawLocationsClient:
134
152
 
135
153
  Returns
136
154
  -------
137
- HttpResponse[VehicleLocationsListResponse]
155
+ SyncPager[VehicleLocationsListResponseData]
138
156
  List of locations events for the specified vehicles.
139
157
  """
140
158
  _response = self._client_wrapper.httpx_client.request(
@@ -150,14 +168,29 @@ class RawLocationsClient:
150
168
  )
151
169
  try:
152
170
  if 200 <= _response.status_code < 300:
153
- _data = typing.cast(
171
+ _parsed_response = typing.cast(
154
172
  VehicleLocationsListResponse,
155
173
  parse_obj_as(
156
174
  type_=VehicleLocationsListResponse, # type: ignore
157
175
  object_=_response.json(),
158
176
  ),
159
177
  )
160
- return HttpResponse(response=_response, data=_data)
178
+ _items = _parsed_response.data
179
+ _has_next = False
180
+ _get_next = None
181
+ if _parsed_response.pagination is not None:
182
+ _parsed_next = _parsed_response.pagination.end_cursor
183
+ _has_next = _parsed_next is not None and _parsed_next != ""
184
+ _get_next = lambda: self.feed(
185
+ after=_parsed_next,
186
+ parent_tag_ids=parent_tag_ids,
187
+ tag_ids=tag_ids,
188
+ vehicle_ids=vehicle_ids,
189
+ request_options=request_options,
190
+ )
191
+ return SyncPager(
192
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
193
+ )
161
194
  _response_json = _response.json()
162
195
  except JSONDecodeError:
163
196
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -173,7 +206,7 @@ class RawLocationsClient:
173
206
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
174
207
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
175
208
  request_options: typing.Optional[RequestOptions] = None,
176
- ) -> HttpResponse[VehicleLocationsListResponse]:
209
+ ) -> SyncPager[VehicleLocationsListResponseData]:
177
210
  """
178
211
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatshistory) instead.***
179
212
 
@@ -210,7 +243,7 @@ class RawLocationsClient:
210
243
 
211
244
  Returns
212
245
  -------
213
- HttpResponse[VehicleLocationsListResponse]
246
+ SyncPager[VehicleLocationsListResponseData]
214
247
  List of all locations for the specified vehicles and time range.
215
248
  """
216
249
  _response = self._client_wrapper.httpx_client.request(
@@ -228,14 +261,31 @@ class RawLocationsClient:
228
261
  )
229
262
  try:
230
263
  if 200 <= _response.status_code < 300:
231
- _data = typing.cast(
264
+ _parsed_response = typing.cast(
232
265
  VehicleLocationsListResponse,
233
266
  parse_obj_as(
234
267
  type_=VehicleLocationsListResponse, # type: ignore
235
268
  object_=_response.json(),
236
269
  ),
237
270
  )
238
- return HttpResponse(response=_response, data=_data)
271
+ _items = _parsed_response.data
272
+ _has_next = False
273
+ _get_next = None
274
+ if _parsed_response.pagination is not None:
275
+ _parsed_next = _parsed_response.pagination.end_cursor
276
+ _has_next = _parsed_next is not None and _parsed_next != ""
277
+ _get_next = lambda: self.history(
278
+ start_time=start_time,
279
+ end_time=end_time,
280
+ after=_parsed_next,
281
+ parent_tag_ids=parent_tag_ids,
282
+ tag_ids=tag_ids,
283
+ vehicle_ids=vehicle_ids,
284
+ request_options=request_options,
285
+ )
286
+ return SyncPager(
287
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
288
+ )
239
289
  _response_json = _response.json()
240
290
  except JSONDecodeError:
241
291
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -255,7 +305,7 @@ class AsyncRawLocationsClient:
255
305
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
256
306
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
257
307
  request_options: typing.Optional[RequestOptions] = None,
258
- ) -> AsyncHttpResponse[VehicleLocationsResponse]:
308
+ ) -> AsyncPager[VehicleLocationsResponseData]:
259
309
  """
260
310
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestats) instead.***
261
311
 
@@ -289,7 +339,7 @@ class AsyncRawLocationsClient:
289
339
 
290
340
  Returns
291
341
  -------
292
- AsyncHttpResponse[VehicleLocationsResponse]
342
+ AsyncPager[VehicleLocationsResponseData]
293
343
  List of the most recent locations for the specified vehicles.
294
344
  """
295
345
  _response = await self._client_wrapper.httpx_client.request(
@@ -306,14 +356,33 @@ class AsyncRawLocationsClient:
306
356
  )
307
357
  try:
308
358
  if 200 <= _response.status_code < 300:
309
- _data = typing.cast(
359
+ _parsed_response = typing.cast(
310
360
  VehicleLocationsResponse,
311
361
  parse_obj_as(
312
362
  type_=VehicleLocationsResponse, # type: ignore
313
363
  object_=_response.json(),
314
364
  ),
315
365
  )
316
- return AsyncHttpResponse(response=_response, data=_data)
366
+ _items = _parsed_response.data
367
+ _has_next = False
368
+ _get_next = None
369
+ if _parsed_response.pagination is not None:
370
+ _parsed_next = _parsed_response.pagination.end_cursor
371
+ _has_next = _parsed_next is not None and _parsed_next != ""
372
+
373
+ async def _get_next():
374
+ return await self.list(
375
+ after=_parsed_next,
376
+ time=time,
377
+ parent_tag_ids=parent_tag_ids,
378
+ tag_ids=tag_ids,
379
+ vehicle_ids=vehicle_ids,
380
+ request_options=request_options,
381
+ )
382
+
383
+ return AsyncPager(
384
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
385
+ )
317
386
  _response_json = _response.json()
318
387
  except JSONDecodeError:
319
388
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -327,7 +396,7 @@ class AsyncRawLocationsClient:
327
396
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
328
397
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
329
398
  request_options: typing.Optional[RequestOptions] = None,
330
- ) -> AsyncHttpResponse[VehicleLocationsListResponse]:
399
+ ) -> AsyncPager[VehicleLocationsListResponseData]:
331
400
  """
332
401
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatsfeed) instead.***
333
402
 
@@ -364,7 +433,7 @@ class AsyncRawLocationsClient:
364
433
 
365
434
  Returns
366
435
  -------
367
- AsyncHttpResponse[VehicleLocationsListResponse]
436
+ AsyncPager[VehicleLocationsListResponseData]
368
437
  List of locations events for the specified vehicles.
369
438
  """
370
439
  _response = await self._client_wrapper.httpx_client.request(
@@ -380,14 +449,32 @@ class AsyncRawLocationsClient:
380
449
  )
381
450
  try:
382
451
  if 200 <= _response.status_code < 300:
383
- _data = typing.cast(
452
+ _parsed_response = typing.cast(
384
453
  VehicleLocationsListResponse,
385
454
  parse_obj_as(
386
455
  type_=VehicleLocationsListResponse, # type: ignore
387
456
  object_=_response.json(),
388
457
  ),
389
458
  )
390
- return AsyncHttpResponse(response=_response, data=_data)
459
+ _items = _parsed_response.data
460
+ _has_next = False
461
+ _get_next = None
462
+ if _parsed_response.pagination is not None:
463
+ _parsed_next = _parsed_response.pagination.end_cursor
464
+ _has_next = _parsed_next is not None and _parsed_next != ""
465
+
466
+ async def _get_next():
467
+ return await self.feed(
468
+ after=_parsed_next,
469
+ parent_tag_ids=parent_tag_ids,
470
+ tag_ids=tag_ids,
471
+ vehicle_ids=vehicle_ids,
472
+ request_options=request_options,
473
+ )
474
+
475
+ return AsyncPager(
476
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
477
+ )
391
478
  _response_json = _response.json()
392
479
  except JSONDecodeError:
393
480
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -403,7 +490,7 @@ class AsyncRawLocationsClient:
403
490
  tag_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
404
491
  vehicle_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
405
492
  request_options: typing.Optional[RequestOptions] = None,
406
- ) -> AsyncHttpResponse[VehicleLocationsListResponse]:
493
+ ) -> AsyncPager[VehicleLocationsListResponseData]:
407
494
  """
408
495
  ***NOTE: The Vehicle Locations API is an older API that does not combine GPS data with onboard diagnostics. Try our new [Vehicle Stats API](ref:getvehiclestatshistory) instead.***
409
496
 
@@ -440,7 +527,7 @@ class AsyncRawLocationsClient:
440
527
 
441
528
  Returns
442
529
  -------
443
- AsyncHttpResponse[VehicleLocationsListResponse]
530
+ AsyncPager[VehicleLocationsListResponseData]
444
531
  List of all locations for the specified vehicles and time range.
445
532
  """
446
533
  _response = await self._client_wrapper.httpx_client.request(
@@ -458,14 +545,34 @@ class AsyncRawLocationsClient:
458
545
  )
459
546
  try:
460
547
  if 200 <= _response.status_code < 300:
461
- _data = typing.cast(
548
+ _parsed_response = typing.cast(
462
549
  VehicleLocationsListResponse,
463
550
  parse_obj_as(
464
551
  type_=VehicleLocationsListResponse, # type: ignore
465
552
  object_=_response.json(),
466
553
  ),
467
554
  )
468
- return AsyncHttpResponse(response=_response, data=_data)
555
+ _items = _parsed_response.data
556
+ _has_next = False
557
+ _get_next = None
558
+ if _parsed_response.pagination is not None:
559
+ _parsed_next = _parsed_response.pagination.end_cursor
560
+ _has_next = _parsed_next is not None and _parsed_next != ""
561
+
562
+ async def _get_next():
563
+ return await self.history(
564
+ start_time=start_time,
565
+ end_time=end_time,
566
+ after=_parsed_next,
567
+ parent_tag_ids=parent_tag_ids,
568
+ tag_ids=tag_ids,
569
+ vehicle_ids=vehicle_ids,
570
+ request_options=request_options,
571
+ )
572
+
573
+ return AsyncPager(
574
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
575
+ )
469
576
  _response_json = _response.json()
470
577
  except JSONDecodeError:
471
578
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -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
@@ -24,6 +25,7 @@ from ..types.gross_vehicle_weight import GrossVehicleWeight
24
25
  from ..types.user_identifier_serial import UserIdentifierSerial
25
26
  from ..types.vehicle_regulation_mode import VehicleRegulationMode
26
27
  from ..types.vehicle_response import VehicleResponse
28
+ from ..types.vehicle_response_object_response_body import VehicleResponseObjectResponseBody
27
29
  from ..types.vehicle_type import VehicleType
28
30
  from ..types.vehicles_list_vehicles_response_body import VehiclesListVehiclesResponseBody
29
31
  from .types.update_vehicle_request_aux_input_type_1 import UpdateVehicleRequestAuxInputType1
@@ -59,10 +61,11 @@ class RawVehiclesClient:
59
61
  parent_tag_ids: typing.Optional[str] = None,
60
62
  tag_ids: typing.Optional[str] = None,
61
63
  attribute_value_ids: typing.Optional[str] = None,
64
+ attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
62
65
  updated_after_time: typing.Optional[str] = None,
63
66
  created_after_time: typing.Optional[str] = None,
64
67
  request_options: typing.Optional[RequestOptions] = None,
65
- ) -> HttpResponse[VehiclesListVehiclesResponseBody]:
68
+ ) -> SyncPager[VehicleResponseObjectResponseBody]:
66
69
  """
67
70
  Returns a list of all vehicles.
68
71
 
@@ -90,6 +93,9 @@ class RawVehiclesClient:
90
93
  attribute_value_ids : typing.Optional[str]
91
94
  A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`
92
95
 
96
+ attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
97
+ A filter on the data to return entities having given attributes using name-value pair, separated by semicolon. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributes=ExampleAttributeName:some_value&attributes=SomeOtherAttr:123`
98
+
93
99
  updated_after_time : typing.Optional[str]
94
100
  A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).
95
101
 
@@ -101,7 +107,7 @@ class RawVehiclesClient:
101
107
 
102
108
  Returns
103
109
  -------
104
- HttpResponse[VehiclesListVehiclesResponseBody]
110
+ SyncPager[VehicleResponseObjectResponseBody]
105
111
  OK response.
106
112
  """
107
113
  _response = self._client_wrapper.httpx_client.request(
@@ -113,6 +119,7 @@ class RawVehiclesClient:
113
119
  "parentTagIds": parent_tag_ids,
114
120
  "tagIds": tag_ids,
115
121
  "attributeValueIds": attribute_value_ids,
122
+ "attributes": attributes,
116
123
  "updatedAfterTime": updated_after_time,
117
124
  "createdAfterTime": created_after_time,
118
125
  },
@@ -120,14 +127,33 @@ class RawVehiclesClient:
120
127
  )
121
128
  try:
122
129
  if 200 <= _response.status_code < 300:
123
- _data = typing.cast(
130
+ _parsed_response = typing.cast(
124
131
  VehiclesListVehiclesResponseBody,
125
132
  parse_obj_as(
126
133
  type_=VehiclesListVehiclesResponseBody, # type: ignore
127
134
  object_=_response.json(),
128
135
  ),
129
136
  )
130
- return HttpResponse(response=_response, data=_data)
137
+ _items = _parsed_response.data
138
+ _has_next = False
139
+ _get_next = None
140
+ if _parsed_response.pagination is not None:
141
+ _parsed_next = _parsed_response.pagination.end_cursor
142
+ _has_next = _parsed_next is not None and _parsed_next != ""
143
+ _get_next = lambda: self.list(
144
+ limit=limit,
145
+ after=_parsed_next,
146
+ parent_tag_ids=parent_tag_ids,
147
+ tag_ids=tag_ids,
148
+ attribute_value_ids=attribute_value_ids,
149
+ attributes=attributes,
150
+ updated_after_time=updated_after_time,
151
+ created_after_time=created_after_time,
152
+ request_options=request_options,
153
+ )
154
+ return SyncPager(
155
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
156
+ )
131
157
  if _response.status_code == 401:
132
158
  raise UnauthorizedError(
133
159
  headers=dict(_response.headers),
@@ -483,10 +509,11 @@ class AsyncRawVehiclesClient:
483
509
  parent_tag_ids: typing.Optional[str] = None,
484
510
  tag_ids: typing.Optional[str] = None,
485
511
  attribute_value_ids: typing.Optional[str] = None,
512
+ attributes: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
486
513
  updated_after_time: typing.Optional[str] = None,
487
514
  created_after_time: typing.Optional[str] = None,
488
515
  request_options: typing.Optional[RequestOptions] = None,
489
- ) -> AsyncHttpResponse[VehiclesListVehiclesResponseBody]:
516
+ ) -> AsyncPager[VehicleResponseObjectResponseBody]:
490
517
  """
491
518
  Returns a list of all vehicles.
492
519
 
@@ -514,6 +541,9 @@ class AsyncRawVehiclesClient:
514
541
  attribute_value_ids : typing.Optional[str]
515
542
  A filter on the data based on this comma-separated list of attribute value IDs. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributeValueIds=076efac2-83b5-47aa-ba36-18428436dcac,6707b3f0-23b9-4fe3-b7be-11be34aea544`
516
543
 
544
+ attributes : typing.Optional[typing.Union[str, typing.Sequence[str]]]
545
+ A filter on the data to return entities having given attributes using name-value pair, separated by semicolon. Only entities associated with ALL of the referenced values will be returned (i.e. the intersection of the sets of entities with each value). Example: `attributes=ExampleAttributeName:some_value&attributes=SomeOtherAttr:123`
546
+
517
547
  updated_after_time : typing.Optional[str]
518
548
  A filter on data to have an updated at time after or equal to this specified time in RFC 3339 format. Millisecond precision and timezones are supported. (Examples: 2019-06-13T19:08:25Z, 2019-06-13T19:08:25.455Z, OR 2015-09-15T14:00:12-04:00).
519
549
 
@@ -525,7 +555,7 @@ class AsyncRawVehiclesClient:
525
555
 
526
556
  Returns
527
557
  -------
528
- AsyncHttpResponse[VehiclesListVehiclesResponseBody]
558
+ AsyncPager[VehicleResponseObjectResponseBody]
529
559
  OK response.
530
560
  """
531
561
  _response = await self._client_wrapper.httpx_client.request(
@@ -537,6 +567,7 @@ class AsyncRawVehiclesClient:
537
567
  "parentTagIds": parent_tag_ids,
538
568
  "tagIds": tag_ids,
539
569
  "attributeValueIds": attribute_value_ids,
570
+ "attributes": attributes,
540
571
  "updatedAfterTime": updated_after_time,
541
572
  "createdAfterTime": created_after_time,
542
573
  },
@@ -544,14 +575,36 @@ class AsyncRawVehiclesClient:
544
575
  )
545
576
  try:
546
577
  if 200 <= _response.status_code < 300:
547
- _data = typing.cast(
578
+ _parsed_response = typing.cast(
548
579
  VehiclesListVehiclesResponseBody,
549
580
  parse_obj_as(
550
581
  type_=VehiclesListVehiclesResponseBody, # type: ignore
551
582
  object_=_response.json(),
552
583
  ),
553
584
  )
554
- return AsyncHttpResponse(response=_response, data=_data)
585
+ _items = _parsed_response.data
586
+ _has_next = False
587
+ _get_next = None
588
+ if _parsed_response.pagination is not None:
589
+ _parsed_next = _parsed_response.pagination.end_cursor
590
+ _has_next = _parsed_next is not None and _parsed_next != ""
591
+
592
+ async def _get_next():
593
+ return await self.list(
594
+ limit=limit,
595
+ after=_parsed_next,
596
+ parent_tag_ids=parent_tag_ids,
597
+ tag_ids=tag_ids,
598
+ attribute_value_ids=attribute_value_ids,
599
+ attributes=attributes,
600
+ updated_after_time=updated_after_time,
601
+ created_after_time=created_after_time,
602
+ request_options=request_options,
603
+ )
604
+
605
+ return AsyncPager(
606
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
607
+ )
555
608
  if _response.status_code == 401:
556
609
  raise UnauthorizedError(
557
610
  headers=dict(_response.headers),