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
@@ -0,0 +1,27 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class V1MessageSender(UniversalBaseModel):
10
+ name: str = pydantic.Field()
11
+ """
12
+ Name of user that is sending the message.
13
+ """
14
+
15
+ type: str = pydantic.Field()
16
+ """
17
+ Type of user that is sending the message. It will be either dispatch or driver.
18
+ """
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .v_1_message import V1Message
6
+
7
+ V1Messages = typing.List[V1Message]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ from .v_1_message_response import V1MessageResponse
6
+
7
+ V1MessagesResponse = typing.List[V1MessageResponse]
@@ -16,6 +16,7 @@ WebhookResponseResponseBodyEventTypesItem = typing.Union[
16
16
  "EngineFaultOff",
17
17
  "EngineFaultOn",
18
18
  "FormSubmitted",
19
+ "FormUpdated",
19
20
  "GatewayUnplugged",
20
21
  "GeofenceEntry",
21
22
  "GeofenceExit",
@@ -16,6 +16,7 @@ WebhooksGetWebhookResponseBodyEventTypesItem = typing.Union[
16
16
  "EngineFaultOff",
17
17
  "EngineFaultOn",
18
18
  "FormSubmitted",
19
+ "FormUpdated",
19
20
  "GatewayUnplugged",
20
21
  "GeofenceEntry",
21
22
  "GeofenceExit",
@@ -16,6 +16,7 @@ WebhooksPatchWebhookResponseBodyEventTypesItem = typing.Union[
16
16
  "EngineFaultOff",
17
17
  "EngineFaultOn",
18
18
  "FormSubmitted",
19
+ "FormUpdated",
19
20
  "GatewayUnplugged",
20
21
  "GeofenceEntry",
21
22
  "GeofenceExit",
@@ -16,6 +16,7 @@ WebhooksPostWebhooksResponseBodyEventTypesItem = typing.Union[
16
16
  "EngineFaultOff",
17
17
  "EngineFaultOn",
18
18
  "FormSubmitted",
19
+ "FormUpdated",
19
20
  "GatewayUnplugged",
20
21
  "GeofenceEntry",
21
22
  "GeofenceExit",
@@ -19,7 +19,7 @@ class WorkOrderItemObjectRequestBody(UniversalBaseModel):
19
19
 
20
20
  type: WorkOrderItemObjectRequestBodyType = pydantic.Field()
21
21
  """
22
- The type of item. Valid values: `DVIR`, `FAULT`, `FORM`, `ISSUE`, `ITEM_TYPE_UNSPECIFIED`, `SCHEDULED_MAINTENANCE`
22
+ The type of item. Valid values: `DVIR`, `FAULT`, `FORM`, `ISSUE`, `ITEM_TYPE_UNSPECIFIED`, `MAINTENANCE_PREDICTION_EVENT`, `SCHEDULED_MAINTENANCE`
23
23
  """
24
24
 
25
25
  if IS_PYDANTIC_V2:
@@ -3,5 +3,14 @@
3
3
  import typing
4
4
 
5
5
  WorkOrderItemObjectRequestBodyType = typing.Union[
6
- typing.Literal["DVIR", "FAULT", "FORM", "ISSUE", "ITEM_TYPE_UNSPECIFIED", "SCHEDULED_MAINTENANCE"], typing.Any
6
+ typing.Literal[
7
+ "DVIR",
8
+ "FAULT",
9
+ "FORM",
10
+ "ISSUE",
11
+ "ITEM_TYPE_UNSPECIFIED",
12
+ "MAINTENANCE_PREDICTION_EVENT",
13
+ "SCHEDULED_MAINTENANCE",
14
+ ],
15
+ typing.Any,
7
16
  ]
@@ -19,7 +19,7 @@ class WorkOrderItemObjectResponseBody(UniversalBaseModel):
19
19
 
20
20
  type: WorkOrderItemObjectResponseBodyType = pydantic.Field()
21
21
  """
22
- The type of item. Valid values: `DVIR`, `FAULT`, `FORM`, `ISSUE`, `ITEM_TYPE_UNSPECIFIED`, `SCHEDULED_MAINTENANCE`
22
+ The type of item. Valid values: `DVIR`, `FAULT`, `FORM`, `ISSUE`, `ITEM_TYPE_UNSPECIFIED`, `MAINTENANCE_PREDICTION_EVENT`, `SCHEDULED_MAINTENANCE`
23
23
  """
24
24
 
25
25
  if IS_PYDANTIC_V2:
@@ -3,5 +3,14 @@
3
3
  import typing
4
4
 
5
5
  WorkOrderItemObjectResponseBodyType = typing.Union[
6
- typing.Literal["DVIR", "FAULT", "FORM", "ISSUE", "ITEM_TYPE_UNSPECIFIED", "SCHEDULED_MAINTENANCE"], typing.Any
6
+ typing.Literal[
7
+ "DVIR",
8
+ "FAULT",
9
+ "FORM",
10
+ "ISSUE",
11
+ "ITEM_TYPE_UNSPECIFIED",
12
+ "MAINTENANCE_PREDICTION_EVENT",
13
+ "SCHEDULED_MAINTENANCE",
14
+ ],
15
+ typing.Any,
7
16
  ]
@@ -3,7 +3,10 @@
3
3
  import typing
4
4
 
5
5
  import pydantic
6
+ import typing_extensions
6
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from ..core.serialization import FieldMetadata
9
+ from .fuel_volume_response_body import FuelVolumeResponseBody
7
10
  from .vehicle_with_gateway_tiny_response_response_body import VehicleWithGatewayTinyResponseResponseBody
8
11
  from .workflow_address_event_with_geofence_object_response_body import (
9
12
  WorkflowAddressEventWithGeofenceObjectResponseBody,
@@ -12,6 +15,9 @@ from .workflow_address_event_with_geofence_object_response_body import (
12
15
 
13
16
  class WorkflowGeofenceEventResponseObjectResponseBody(UniversalBaseModel):
14
17
  address: typing.Optional[WorkflowAddressEventWithGeofenceObjectResponseBody] = None
18
+ fuel_volume: typing_extensions.Annotated[
19
+ typing.Optional[FuelVolumeResponseBody], FieldMetadata(alias="fuelVolume")
20
+ ] = None
15
21
  vehicle: typing.Optional[VehicleWithGatewayTinyResponseResponseBody] = None
16
22
 
17
23
  if IS_PYDANTIC_V2:
@@ -40,6 +40,7 @@ from .out_of_route_response_body import OutOfRouteResponseBody
40
40
  from .outside_geofence_data_response_body import OutsideGeofenceDataResponseBody
41
41
  from .panic_button_response_body import PanicButtonResponseBody
42
42
  from .person_detected_response_body import PersonDetectedResponseBody
43
+ from .reading_trigger_details_response_body import ReadingTriggerDetailsResponseBody
43
44
  from .reefer_temperature_response_body import ReeferTemperatureResponseBody
44
45
  from .route_stop_details_object_response_body import RouteStopDetailsObjectResponseBody
45
46
  from .route_stop_eta_response_body import RouteStopEtaResponseBody
@@ -176,6 +177,7 @@ class WorkflowIncidentDetailsObjectResponseBody(UniversalBaseModel):
176
177
  person_detected: typing_extensions.Annotated[
177
178
  typing.Optional[PersonDetectedResponseBody], FieldMetadata(alias="personDetected")
178
179
  ] = None
180
+ reading: typing.Optional[ReadingTriggerDetailsResponseBody] = None
179
181
  reefer_temperature: typing_extensions.Annotated[
180
182
  typing.Optional[ReeferTemperatureResponseBody], FieldMetadata(alias="reeferTemperature")
181
183
  ] = None
@@ -22,6 +22,7 @@ class WorkflowTriggerObjectRequestBody(UniversalBaseModel):
22
22
  The id of the trigger type. Reference the following list for the ids:
23
23
 
24
24
  Ambient Temperature = 1003
25
+ Asset Reading = 1062
25
26
  DVIR Submitted for Asset = 5005
26
27
  Driver Recorded = 5027
27
28
  Sudden Fuel Level Rise = 5034
@@ -22,6 +22,7 @@ class WorkflowTriggerObjectResponseBody(UniversalBaseModel):
22
22
  The id of the trigger type. Reference the following list for the ids:
23
23
 
24
24
  Ambient Temperature = 1003
25
+ Asset Reading = 1062
25
26
  DVIR Submitted for Asset = 5005
26
27
  Driver Recorded = 5027
27
28
  Sudden Fuel Level Rise = 5034
@@ -3,8 +3,9 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
7
- from ..types.list_user_roles_response import ListUserRolesResponse
8
+ from ..types.user_role import UserRole
8
9
  from .raw_client import AsyncRawUserRolesClient, RawUserRolesClient
9
10
 
10
11
 
@@ -29,7 +30,7 @@ class UserRolesClient:
29
30
  limit: typing.Optional[int] = None,
30
31
  after: typing.Optional[str] = None,
31
32
  request_options: typing.Optional[RequestOptions] = None,
32
- ) -> ListUserRolesResponse:
33
+ ) -> SyncPager[UserRole]:
33
34
  """
34
35
  Returns a list of all user roles in an organization.
35
36
 
@@ -50,7 +51,7 @@ class UserRolesClient:
50
51
 
51
52
  Returns
52
53
  -------
53
- ListUserRolesResponse
54
+ SyncPager[UserRole]
54
55
  List all user roles.
55
56
 
56
57
  Examples
@@ -60,10 +61,14 @@ class UserRolesClient:
60
61
  client = Samsara(
61
62
  token="YOUR_TOKEN",
62
63
  )
63
- client.user_roles.list()
64
+ response = client.user_roles.list()
65
+ for item in response:
66
+ yield item
67
+ # alternatively, you can paginate page-by-page
68
+ for page in response.iter_pages():
69
+ yield page
64
70
  """
65
- _response = self._raw_client.list(limit=limit, after=after, request_options=request_options)
66
- return _response.data
71
+ return self._raw_client.list(limit=limit, after=after, request_options=request_options)
67
72
 
68
73
 
69
74
  class AsyncUserRolesClient:
@@ -87,7 +92,7 @@ class AsyncUserRolesClient:
87
92
  limit: typing.Optional[int] = None,
88
93
  after: typing.Optional[str] = None,
89
94
  request_options: typing.Optional[RequestOptions] = None,
90
- ) -> ListUserRolesResponse:
95
+ ) -> AsyncPager[UserRole]:
91
96
  """
92
97
  Returns a list of all user roles in an organization.
93
98
 
@@ -108,7 +113,7 @@ class AsyncUserRolesClient:
108
113
 
109
114
  Returns
110
115
  -------
111
- ListUserRolesResponse
116
+ AsyncPager[UserRole]
112
117
  List all user roles.
113
118
 
114
119
  Examples
@@ -123,10 +128,15 @@ class AsyncUserRolesClient:
123
128
 
124
129
 
125
130
  async def main() -> None:
126
- await client.user_roles.list()
131
+ response = await client.user_roles.list()
132
+ async for item in response:
133
+ yield item
134
+
135
+ # alternatively, you can paginate page-by-page
136
+ async for page in response.iter_pages():
137
+ yield page
127
138
 
128
139
 
129
140
  asyncio.run(main())
130
141
  """
131
- _response = await self._raw_client.list(limit=limit, after=after, request_options=request_options)
132
- return _response.data
142
+ return await self._raw_client.list(limit=limit, after=after, request_options=request_options)
@@ -5,10 +5,11 @@ 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.list_user_roles_response import ListUserRolesResponse
12
+ from ..types.user_role import UserRole
12
13
 
13
14
 
14
15
  class RawUserRolesClient:
@@ -21,7 +22,7 @@ class RawUserRolesClient:
21
22
  limit: typing.Optional[int] = None,
22
23
  after: typing.Optional[str] = None,
23
24
  request_options: typing.Optional[RequestOptions] = None,
24
- ) -> HttpResponse[ListUserRolesResponse]:
25
+ ) -> SyncPager[UserRole]:
25
26
  """
26
27
  Returns a list of all user roles in an organization.
27
28
 
@@ -42,7 +43,7 @@ class RawUserRolesClient:
42
43
 
43
44
  Returns
44
45
  -------
45
- HttpResponse[ListUserRolesResponse]
46
+ SyncPager[UserRole]
46
47
  List all user roles.
47
48
  """
48
49
  _response = self._client_wrapper.httpx_client.request(
@@ -56,14 +57,27 @@ class RawUserRolesClient:
56
57
  )
57
58
  try:
58
59
  if 200 <= _response.status_code < 300:
59
- _data = typing.cast(
60
+ _parsed_response = typing.cast(
60
61
  ListUserRolesResponse,
61
62
  parse_obj_as(
62
63
  type_=ListUserRolesResponse, # type: ignore
63
64
  object_=_response.json(),
64
65
  ),
65
66
  )
66
- return HttpResponse(response=_response, data=_data)
67
+ _items = _parsed_response.data
68
+ _has_next = False
69
+ _get_next = None
70
+ if _parsed_response.pagination is not None:
71
+ _parsed_next = _parsed_response.pagination.end_cursor
72
+ _has_next = _parsed_next is not None and _parsed_next != ""
73
+ _get_next = lambda: self.list(
74
+ limit=limit,
75
+ after=_parsed_next,
76
+ request_options=request_options,
77
+ )
78
+ return SyncPager(
79
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
80
+ )
67
81
  _response_json = _response.json()
68
82
  except JSONDecodeError:
69
83
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -80,7 +94,7 @@ class AsyncRawUserRolesClient:
80
94
  limit: typing.Optional[int] = None,
81
95
  after: typing.Optional[str] = None,
82
96
  request_options: typing.Optional[RequestOptions] = None,
83
- ) -> AsyncHttpResponse[ListUserRolesResponse]:
97
+ ) -> AsyncPager[UserRole]:
84
98
  """
85
99
  Returns a list of all user roles in an organization.
86
100
 
@@ -101,7 +115,7 @@ class AsyncRawUserRolesClient:
101
115
 
102
116
  Returns
103
117
  -------
104
- AsyncHttpResponse[ListUserRolesResponse]
118
+ AsyncPager[UserRole]
105
119
  List all user roles.
106
120
  """
107
121
  _response = await self._client_wrapper.httpx_client.request(
@@ -115,14 +129,30 @@ class AsyncRawUserRolesClient:
115
129
  )
116
130
  try:
117
131
  if 200 <= _response.status_code < 300:
118
- _data = typing.cast(
132
+ _parsed_response = typing.cast(
119
133
  ListUserRolesResponse,
120
134
  parse_obj_as(
121
135
  type_=ListUserRolesResponse, # type: ignore
122
136
  object_=_response.json(),
123
137
  ),
124
138
  )
125
- return AsyncHttpResponse(response=_response, data=_data)
139
+ _items = _parsed_response.data
140
+ _has_next = False
141
+ _get_next = None
142
+ if _parsed_response.pagination is not None:
143
+ _parsed_next = _parsed_response.pagination.end_cursor
144
+ _has_next = _parsed_next is not None and _parsed_next != ""
145
+
146
+ async def _get_next():
147
+ return await self.list(
148
+ limit=limit,
149
+ after=_parsed_next,
150
+ request_options=request_options,
151
+ )
152
+
153
+ return AsyncPager(
154
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
155
+ )
126
156
  _response_json = _response.json()
127
157
  except JSONDecodeError:
128
158
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
samsara/users/client.py CHANGED
@@ -3,9 +3,10 @@
3
3
  import typing
4
4
 
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
+ from ..core.pagination import AsyncPager, SyncPager
6
7
  from ..core.request_options import RequestOptions
7
8
  from ..types.create_user_request_roles import CreateUserRequestRoles
8
- from ..types.list_users_response import ListUsersResponse
9
+ from ..types.user import User
9
10
  from ..types.user_response import UserResponse
10
11
  from .raw_client import AsyncRawUsersClient, RawUsersClient
11
12
  from .types.create_user_request_auth_type import CreateUserRequestAuthType
@@ -36,7 +37,7 @@ class UsersClient:
36
37
  limit: typing.Optional[int] = None,
37
38
  after: typing.Optional[str] = None,
38
39
  request_options: typing.Optional[RequestOptions] = None,
39
- ) -> ListUsersResponse:
40
+ ) -> SyncPager[User]:
40
41
  """
41
42
  Returns a list of all users in an organization. Users that have expired access will not be returned.
42
43
 
@@ -57,7 +58,7 @@ class UsersClient:
57
58
 
58
59
  Returns
59
60
  -------
60
- ListUsersResponse
61
+ SyncPager[User]
61
62
  List all users.
62
63
 
63
64
  Examples
@@ -67,10 +68,14 @@ class UsersClient:
67
68
  client = Samsara(
68
69
  token="YOUR_TOKEN",
69
70
  )
70
- client.users.list()
71
+ response = client.users.list()
72
+ for item in response:
73
+ yield item
74
+ # alternatively, you can paginate page-by-page
75
+ for page in response.iter_pages():
76
+ yield page
71
77
  """
72
- _response = self._raw_client.list(limit=limit, after=after, request_options=request_options)
73
- return _response.data
78
+ return self._raw_client.list(limit=limit, after=after, request_options=request_options)
74
79
 
75
80
  def create(
76
81
  self,
@@ -294,7 +299,7 @@ class AsyncUsersClient:
294
299
  limit: typing.Optional[int] = None,
295
300
  after: typing.Optional[str] = None,
296
301
  request_options: typing.Optional[RequestOptions] = None,
297
- ) -> ListUsersResponse:
302
+ ) -> AsyncPager[User]:
298
303
  """
299
304
  Returns a list of all users in an organization. Users that have expired access will not be returned.
300
305
 
@@ -315,7 +320,7 @@ class AsyncUsersClient:
315
320
 
316
321
  Returns
317
322
  -------
318
- ListUsersResponse
323
+ AsyncPager[User]
319
324
  List all users.
320
325
 
321
326
  Examples
@@ -330,13 +335,18 @@ class AsyncUsersClient:
330
335
 
331
336
 
332
337
  async def main() -> None:
333
- await client.users.list()
338
+ response = await client.users.list()
339
+ async for item in response:
340
+ yield item
341
+
342
+ # alternatively, you can paginate page-by-page
343
+ async for page in response.iter_pages():
344
+ yield page
334
345
 
335
346
 
336
347
  asyncio.run(main())
337
348
  """
338
- _response = await self._raw_client.list(limit=limit, after=after, request_options=request_options)
339
- return _response.data
349
+ return await self._raw_client.list(limit=limit, after=after, request_options=request_options)
340
350
 
341
351
  async def create(
342
352
  self,
@@ -7,11 +7,13 @@ 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
13
14
  from ..types.create_user_request_roles import CreateUserRequestRoles
14
15
  from ..types.list_users_response import ListUsersResponse
16
+ from ..types.user import User
15
17
  from ..types.user_response import UserResponse
16
18
  from .types.create_user_request_auth_type import CreateUserRequestAuthType
17
19
  from .types.update_user_request_auth_type import UpdateUserRequestAuthType
@@ -30,7 +32,7 @@ class RawUsersClient:
30
32
  limit: typing.Optional[int] = None,
31
33
  after: typing.Optional[str] = None,
32
34
  request_options: typing.Optional[RequestOptions] = None,
33
- ) -> HttpResponse[ListUsersResponse]:
35
+ ) -> SyncPager[User]:
34
36
  """
35
37
  Returns a list of all users in an organization. Users that have expired access will not be returned.
36
38
 
@@ -51,7 +53,7 @@ class RawUsersClient:
51
53
 
52
54
  Returns
53
55
  -------
54
- HttpResponse[ListUsersResponse]
56
+ SyncPager[User]
55
57
  List all users.
56
58
  """
57
59
  _response = self._client_wrapper.httpx_client.request(
@@ -65,14 +67,27 @@ class RawUsersClient:
65
67
  )
66
68
  try:
67
69
  if 200 <= _response.status_code < 300:
68
- _data = typing.cast(
70
+ _parsed_response = typing.cast(
69
71
  ListUsersResponse,
70
72
  parse_obj_as(
71
73
  type_=ListUsersResponse, # type: ignore
72
74
  object_=_response.json(),
73
75
  ),
74
76
  )
75
- return HttpResponse(response=_response, data=_data)
77
+ _items = _parsed_response.data
78
+ _has_next = False
79
+ _get_next = None
80
+ if _parsed_response.pagination is not None:
81
+ _parsed_next = _parsed_response.pagination.end_cursor
82
+ _has_next = _parsed_next is not None and _parsed_next != ""
83
+ _get_next = lambda: self.list(
84
+ limit=limit,
85
+ after=_parsed_next,
86
+ request_options=request_options,
87
+ )
88
+ return SyncPager(
89
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
90
+ )
76
91
  _response_json = _response.json()
77
92
  except JSONDecodeError:
78
93
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -324,7 +339,7 @@ class AsyncRawUsersClient:
324
339
  limit: typing.Optional[int] = None,
325
340
  after: typing.Optional[str] = None,
326
341
  request_options: typing.Optional[RequestOptions] = None,
327
- ) -> AsyncHttpResponse[ListUsersResponse]:
342
+ ) -> AsyncPager[User]:
328
343
  """
329
344
  Returns a list of all users in an organization. Users that have expired access will not be returned.
330
345
 
@@ -345,7 +360,7 @@ class AsyncRawUsersClient:
345
360
 
346
361
  Returns
347
362
  -------
348
- AsyncHttpResponse[ListUsersResponse]
363
+ AsyncPager[User]
349
364
  List all users.
350
365
  """
351
366
  _response = await self._client_wrapper.httpx_client.request(
@@ -359,14 +374,30 @@ class AsyncRawUsersClient:
359
374
  )
360
375
  try:
361
376
  if 200 <= _response.status_code < 300:
362
- _data = typing.cast(
377
+ _parsed_response = typing.cast(
363
378
  ListUsersResponse,
364
379
  parse_obj_as(
365
380
  type_=ListUsersResponse, # type: ignore
366
381
  object_=_response.json(),
367
382
  ),
368
383
  )
369
- return AsyncHttpResponse(response=_response, data=_data)
384
+ _items = _parsed_response.data
385
+ _has_next = False
386
+ _get_next = None
387
+ if _parsed_response.pagination is not None:
388
+ _parsed_next = _parsed_response.pagination.end_cursor
389
+ _has_next = _parsed_next is not None and _parsed_next != ""
390
+
391
+ async def _get_next():
392
+ return await self.list(
393
+ limit=limit,
394
+ after=_parsed_next,
395
+ request_options=request_options,
396
+ )
397
+
398
+ return AsyncPager(
399
+ has_next=_has_next, items=_items, get_next=_get_next, response=BaseHttpResponse(response=_response)
400
+ )
370
401
  _response_json = _response.json()
371
402
  except JSONDecodeError:
372
403
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -0,0 +1,4 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+