nextbillionai 0.1.0.pre.alpha.4

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 (794) hide show
  1. checksums.yaml +7 -0
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +44 -0
  4. data/README.md +259 -0
  5. data/SECURITY.md +27 -0
  6. data/lib/nextbillionai/client.rb +168 -0
  7. data/lib/nextbillionai/errors.rb +214 -0
  8. data/lib/nextbillionai/file_part.rb +55 -0
  9. data/lib/nextbillionai/internal/transport/base_client.rb +573 -0
  10. data/lib/nextbillionai/internal/transport/pooled_net_requester.rb +209 -0
  11. data/lib/nextbillionai/internal/type/array_of.rb +167 -0
  12. data/lib/nextbillionai/internal/type/base_model.rb +539 -0
  13. data/lib/nextbillionai/internal/type/base_page.rb +55 -0
  14. data/lib/nextbillionai/internal/type/boolean.rb +77 -0
  15. data/lib/nextbillionai/internal/type/converter.rb +300 -0
  16. data/lib/nextbillionai/internal/type/enum.rb +156 -0
  17. data/lib/nextbillionai/internal/type/file_input.rb +108 -0
  18. data/lib/nextbillionai/internal/type/hash_of.rb +187 -0
  19. data/lib/nextbillionai/internal/type/request_parameters.rb +42 -0
  20. data/lib/nextbillionai/internal/type/union.rb +241 -0
  21. data/lib/nextbillionai/internal/type/unknown.rb +81 -0
  22. data/lib/nextbillionai/internal/util.rb +914 -0
  23. data/lib/nextbillionai/internal.rb +20 -0
  24. data/lib/nextbillionai/models/access.rb +27 -0
  25. data/lib/nextbillionai/models/address.rb +107 -0
  26. data/lib/nextbillionai/models/area_list_params.rb +26 -0
  27. data/lib/nextbillionai/models/area_list_response.rb +44 -0
  28. data/lib/nextbillionai/models/autocomplete_suggest_params.rb +99 -0
  29. data/lib/nextbillionai/models/autocomplete_suggest_response.rb +253 -0
  30. data/lib/nextbillionai/models/autosuggest_suggest_params.rb +99 -0
  31. data/lib/nextbillionai/models/autosuggest_suggest_response.rb +253 -0
  32. data/lib/nextbillionai/models/batch_create_params.rb +54 -0
  33. data/lib/nextbillionai/models/batch_create_response.rb +41 -0
  34. data/lib/nextbillionai/models/batch_retrieve_params.rb +35 -0
  35. data/lib/nextbillionai/models/batch_retrieve_response.rb +76 -0
  36. data/lib/nextbillionai/models/browse_search_params.rb +98 -0
  37. data/lib/nextbillionai/models/browse_search_response.rb +252 -0
  38. data/lib/nextbillionai/models/categories.rb +36 -0
  39. data/lib/nextbillionai/models/contact_object.rb +48 -0
  40. data/lib/nextbillionai/models/contacts.rb +47 -0
  41. data/lib/nextbillionai/models/direction_compute_route_params.rb +684 -0
  42. data/lib/nextbillionai/models/direction_compute_route_response.rb +629 -0
  43. data/lib/nextbillionai/models/discover_retrieve_params.rb +99 -0
  44. data/lib/nextbillionai/models/discover_retrieve_response.rb +253 -0
  45. data/lib/nextbillionai/models/distance_matrix/json_create_params.rb +16 -0
  46. data/lib/nextbillionai/models/distance_matrix/json_retrieve_params.rb +220 -0
  47. data/lib/nextbillionai/models/distance_matrix/json_retrieve_response.rb +82 -0
  48. data/lib/nextbillionai/models/fleetify/document_template_content_request.rb +189 -0
  49. data/lib/nextbillionai/models/fleetify/document_template_content_response.rb +168 -0
  50. data/lib/nextbillionai/models/fleetify/document_template_create_params.rb +50 -0
  51. data/lib/nextbillionai/models/fleetify/document_template_create_response.rb +79 -0
  52. data/lib/nextbillionai/models/fleetify/document_template_delete_params.rb +29 -0
  53. data/lib/nextbillionai/models/fleetify/document_template_delete_response.rb +32 -0
  54. data/lib/nextbillionai/models/fleetify/document_template_list_params.rb +28 -0
  55. data/lib/nextbillionai/models/fleetify/document_template_list_response.rb +85 -0
  56. data/lib/nextbillionai/models/fleetify/document_template_retrieve_params.rb +29 -0
  57. data/lib/nextbillionai/models/fleetify/document_template_retrieve_response.rb +80 -0
  58. data/lib/nextbillionai/models/fleetify/document_template_update_params.rb +50 -0
  59. data/lib/nextbillionai/models/fleetify/document_template_update_response.rb +78 -0
  60. data/lib/nextbillionai/models/fleetify/route_create_params.rb +276 -0
  61. data/lib/nextbillionai/models/fleetify/route_create_response.rb +196 -0
  62. data/lib/nextbillionai/models/fleetify/route_redispatch_params.rb +139 -0
  63. data/lib/nextbillionai/models/fleetify/route_redispatch_response.rb +432 -0
  64. data/lib/nextbillionai/models/fleetify/routes/document_submission.rb +12 -0
  65. data/lib/nextbillionai/models/fleetify/routes/route_step_completion_mode.rb +31 -0
  66. data/lib/nextbillionai/models/fleetify/routes/route_step_geofence_config.rb +53 -0
  67. data/lib/nextbillionai/models/fleetify/routes/route_steps_request.rb +174 -0
  68. data/lib/nextbillionai/models/fleetify/routes/route_steps_response.rb +273 -0
  69. data/lib/nextbillionai/models/fleetify/routes/step_complete_params.rb +69 -0
  70. data/lib/nextbillionai/models/fleetify/routes/step_create_params.rb +193 -0
  71. data/lib/nextbillionai/models/fleetify/routes/step_create_response.rb +40 -0
  72. data/lib/nextbillionai/models/fleetify/routes/step_delete_params.rb +37 -0
  73. data/lib/nextbillionai/models/fleetify/routes/step_delete_response.rb +33 -0
  74. data/lib/nextbillionai/models/fleetify/routes/step_update_params.rb +195 -0
  75. data/lib/nextbillionai/models/fleetify/routes/step_update_response.rb +40 -0
  76. data/lib/nextbillionai/models/fleetify/routing_response.rb +86 -0
  77. data/lib/nextbillionai/models/geocode_batch_create_params.rb +112 -0
  78. data/lib/nextbillionai/models/geocode_batch_create_response.rb +139 -0
  79. data/lib/nextbillionai/models/geocode_retrieve_params.rb +99 -0
  80. data/lib/nextbillionai/models/geocode_retrieve_response.rb +253 -0
  81. data/lib/nextbillionai/models/geocode_structured_retrieve_params.rb +132 -0
  82. data/lib/nextbillionai/models/geocode_structured_retrieve_response.rb +254 -0
  83. data/lib/nextbillionai/models/geofence/batch_create_params.rb +40 -0
  84. data/lib/nextbillionai/models/geofence/batch_create_response.rb +45 -0
  85. data/lib/nextbillionai/models/geofence/batch_delete_params.rb +37 -0
  86. data/lib/nextbillionai/models/geofence/batch_list_params.rb +36 -0
  87. data/lib/nextbillionai/models/geofence/batch_list_response.rb +47 -0
  88. data/lib/nextbillionai/models/geofence/console_preview_params.rb +16 -0
  89. data/lib/nextbillionai/models/geofence/console_preview_response.rb +41 -0
  90. data/lib/nextbillionai/models/geofence/console_search_params.rb +24 -0
  91. data/lib/nextbillionai/models/geofence/console_search_response.rb +62 -0
  92. data/lib/nextbillionai/models/geofence/polygon_geojson.rb +34 -0
  93. data/lib/nextbillionai/models/geofence.rb +202 -0
  94. data/lib/nextbillionai/models/geofence_contains_params.rb +56 -0
  95. data/lib/nextbillionai/models/geofence_contains_response.rb +99 -0
  96. data/lib/nextbillionai/models/geofence_create_params.rb +26 -0
  97. data/lib/nextbillionai/models/geofence_create_response.rb +49 -0
  98. data/lib/nextbillionai/models/geofence_delete_params.rb +26 -0
  99. data/lib/nextbillionai/models/geofence_entity_create.rb +328 -0
  100. data/lib/nextbillionai/models/geofence_list_params.rb +58 -0
  101. data/lib/nextbillionai/models/geofence_list_response.rb +52 -0
  102. data/lib/nextbillionai/models/geofence_retrieve_params.rb +26 -0
  103. data/lib/nextbillionai/models/geofence_retrieve_response.rb +41 -0
  104. data/lib/nextbillionai/models/geofence_update_params.rb +322 -0
  105. data/lib/nextbillionai/models/isochrone_compute_params.rb +153 -0
  106. data/lib/nextbillionai/models/isochrone_compute_response.rb +187 -0
  107. data/lib/nextbillionai/models/lookup_by_id_params.rb +35 -0
  108. data/lib/nextbillionai/models/lookup_by_id_response.rb +94 -0
  109. data/lib/nextbillionai/models/map_create_segment_params.rb +14 -0
  110. data/lib/nextbillionai/models/map_view.rb +43 -0
  111. data/lib/nextbillionai/models/mdm_create_distance_matrix_params.rb +385 -0
  112. data/lib/nextbillionai/models/mdm_create_distance_matrix_response.rb +50 -0
  113. data/lib/nextbillionai/models/mdm_get_distance_matrix_status_params.rb +35 -0
  114. data/lib/nextbillionai/models/mdm_get_distance_matrix_status_response.rb +64 -0
  115. data/lib/nextbillionai/models/multigeocode/place_create_params.rb +276 -0
  116. data/lib/nextbillionai/models/multigeocode/place_create_response.rb +24 -0
  117. data/lib/nextbillionai/models/multigeocode/place_delete_params.rb +28 -0
  118. data/lib/nextbillionai/models/multigeocode/place_delete_response.rb +31 -0
  119. data/lib/nextbillionai/models/multigeocode/place_item.rb +154 -0
  120. data/lib/nextbillionai/models/multigeocode/place_retrieve_params.rb +28 -0
  121. data/lib/nextbillionai/models/multigeocode/place_retrieve_response.rb +107 -0
  122. data/lib/nextbillionai/models/multigeocode/place_update_params.rb +118 -0
  123. data/lib/nextbillionai/models/multigeocode/place_update_response.rb +31 -0
  124. data/lib/nextbillionai/models/multigeocode_search_params.rb +135 -0
  125. data/lib/nextbillionai/models/multigeocode_search_response.rb +117 -0
  126. data/lib/nextbillionai/models/navigation_retrieve_route_params.rb +328 -0
  127. data/lib/nextbillionai/models/navigation_retrieve_route_response.rb +875 -0
  128. data/lib/nextbillionai/models/optimization/driver_assignment_assign_params.rb +679 -0
  129. data/lib/nextbillionai/models/optimization/driver_assignment_assign_response.rb +307 -0
  130. data/lib/nextbillionai/models/optimization/job.rb +460 -0
  131. data/lib/nextbillionai/models/optimization/location.rb +28 -0
  132. data/lib/nextbillionai/models/optimization/shipment.rb +589 -0
  133. data/lib/nextbillionai/models/optimization/v2_retrieve_result_params.rb +37 -0
  134. data/lib/nextbillionai/models/optimization/v2_retrieve_result_response.rb +743 -0
  135. data/lib/nextbillionai/models/optimization/v2_submit_params.rb +1841 -0
  136. data/lib/nextbillionai/models/optimization/vehicle.rb +92 -0
  137. data/lib/nextbillionai/models/optimization_compute_params.rb +212 -0
  138. data/lib/nextbillionai/models/optimization_compute_response.rb +347 -0
  139. data/lib/nextbillionai/models/optimization_re_optimize_params.rb +217 -0
  140. data/lib/nextbillionai/models/position.rb +26 -0
  141. data/lib/nextbillionai/models/post_response.rb +48 -0
  142. data/lib/nextbillionai/models/postalcode_retrieve_coordinates_params.rb +108 -0
  143. data/lib/nextbillionai/models/postalcode_retrieve_coordinates_response.rb +305 -0
  144. data/lib/nextbillionai/models/restriction_create_params.rb +51 -0
  145. data/lib/nextbillionai/models/restriction_delete_params.rb +26 -0
  146. data/lib/nextbillionai/models/restriction_delete_response.rb +25 -0
  147. data/lib/nextbillionai/models/restriction_list_by_bbox_params.rb +197 -0
  148. data/lib/nextbillionai/models/restriction_list_by_bbox_response.rb +9 -0
  149. data/lib/nextbillionai/models/restriction_list_params.rb +197 -0
  150. data/lib/nextbillionai/models/restriction_list_response.rb +62 -0
  151. data/lib/nextbillionai/models/restriction_retrieve_params.rb +34 -0
  152. data/lib/nextbillionai/models/restriction_set_state_params.rb +50 -0
  153. data/lib/nextbillionai/models/restriction_update_params.rb +37 -0
  154. data/lib/nextbillionai/models/restrictions_item_list_params.rb +123 -0
  155. data/lib/nextbillionai/models/restrictions_item_list_response.rb +171 -0
  156. data/lib/nextbillionai/models/revgeocode_retrieve_params.rb +77 -0
  157. data/lib/nextbillionai/models/revgeocode_retrieve_response.rb +253 -0
  158. data/lib/nextbillionai/models/rich_group_request.rb +292 -0
  159. data/lib/nextbillionai/models/rich_group_response.rb +249 -0
  160. data/lib/nextbillionai/models/route_report_create_params.rb +62 -0
  161. data/lib/nextbillionai/models/route_report_create_response.rb +452 -0
  162. data/lib/nextbillionai/models/skynet/asset/event_list_params.rb +96 -0
  163. data/lib/nextbillionai/models/skynet/asset/event_list_response.rb +361 -0
  164. data/lib/nextbillionai/models/skynet/asset/location_get_last_params.rb +48 -0
  165. data/lib/nextbillionai/models/skynet/asset/location_get_last_response.rb +65 -0
  166. data/lib/nextbillionai/models/skynet/asset/location_list_params.rb +130 -0
  167. data/lib/nextbillionai/models/skynet/asset/location_list_response.rb +242 -0
  168. data/lib/nextbillionai/models/skynet/asset/track_location.rb +124 -0
  169. data/lib/nextbillionai/models/skynet/asset_bind_params.rb +40 -0
  170. data/lib/nextbillionai/models/skynet/asset_create_params.rb +116 -0
  171. data/lib/nextbillionai/models/skynet/asset_create_response.rb +59 -0
  172. data/lib/nextbillionai/models/skynet/asset_delete_params.rb +46 -0
  173. data/lib/nextbillionai/models/skynet/asset_details.rb +223 -0
  174. data/lib/nextbillionai/models/skynet/asset_list_params.rb +120 -0
  175. data/lib/nextbillionai/models/skynet/asset_list_response.rb +67 -0
  176. data/lib/nextbillionai/models/skynet/asset_retrieve_params.rb +46 -0
  177. data/lib/nextbillionai/models/skynet/asset_retrieve_response.rb +55 -0
  178. data/lib/nextbillionai/models/skynet/asset_track_params.rb +184 -0
  179. data/lib/nextbillionai/models/skynet/asset_update_attributes_params.rb +48 -0
  180. data/lib/nextbillionai/models/skynet/asset_update_params.rb +104 -0
  181. data/lib/nextbillionai/models/skynet/config_retrieve_params.rb +46 -0
  182. data/lib/nextbillionai/models/skynet/config_retrieve_response.rb +71 -0
  183. data/lib/nextbillionai/models/skynet/config_test_webhook_params.rb +28 -0
  184. data/lib/nextbillionai/models/skynet/config_test_webhook_response.rb +28 -0
  185. data/lib/nextbillionai/models/skynet/config_update_params.rb +55 -0
  186. data/lib/nextbillionai/models/skynet/meta_data.rb +10 -0
  187. data/lib/nextbillionai/models/skynet/metadata.rb +10 -0
  188. data/lib/nextbillionai/models/skynet/monitor.rb +291 -0
  189. data/lib/nextbillionai/models/skynet/monitor_create_params.rb +418 -0
  190. data/lib/nextbillionai/models/skynet/monitor_create_response.rb +55 -0
  191. data/lib/nextbillionai/models/skynet/monitor_delete_params.rb +28 -0
  192. data/lib/nextbillionai/models/skynet/monitor_list_params.rb +89 -0
  193. data/lib/nextbillionai/models/skynet/monitor_list_response.rb +68 -0
  194. data/lib/nextbillionai/models/skynet/monitor_retrieve_params.rb +28 -0
  195. data/lib/nextbillionai/models/skynet/monitor_retrieve_response.rb +54 -0
  196. data/lib/nextbillionai/models/skynet/monitor_update_params.rb +360 -0
  197. data/lib/nextbillionai/models/skynet/namespaced_apikey_create_params.rb +39 -0
  198. data/lib/nextbillionai/models/skynet/namespaced_apikey_create_response.rb +101 -0
  199. data/lib/nextbillionai/models/skynet/namespaced_apikey_delete_params.rb +50 -0
  200. data/lib/nextbillionai/models/skynet/namespaced_apikey_delete_response.rb +35 -0
  201. data/lib/nextbillionai/models/skynet/pagination.rb +50 -0
  202. data/lib/nextbillionai/models/skynet/search/polygon_create_params.rb +295 -0
  203. data/lib/nextbillionai/models/skynet/search/polygon_get_params.rb +190 -0
  204. data/lib/nextbillionai/models/skynet/search_around_params.rb +186 -0
  205. data/lib/nextbillionai/models/skynet/search_bound_params.rb +180 -0
  206. data/lib/nextbillionai/models/skynet/search_response.rb +207 -0
  207. data/lib/nextbillionai/models/skynet/simple_resp.rb +33 -0
  208. data/lib/nextbillionai/models/skynet/trip_delete_params.rb +46 -0
  209. data/lib/nextbillionai/models/skynet/trip_end_params.rb +54 -0
  210. data/lib/nextbillionai/models/skynet/trip_get_summary_params.rb +46 -0
  211. data/lib/nextbillionai/models/skynet/trip_get_summary_response.rb +226 -0
  212. data/lib/nextbillionai/models/skynet/trip_retrieve_params.rb +46 -0
  213. data/lib/nextbillionai/models/skynet/trip_retrieve_response.rb +188 -0
  214. data/lib/nextbillionai/models/skynet/trip_start_params.rb +154 -0
  215. data/lib/nextbillionai/models/skynet/trip_start_response.rb +57 -0
  216. data/lib/nextbillionai/models/skynet/trip_stop.rb +40 -0
  217. data/lib/nextbillionai/models/skynet/trip_update_params.rb +148 -0
  218. data/lib/nextbillionai/models/skynet_subscribe_params.rb +91 -0
  219. data/lib/nextbillionai/models/skynet_subscribe_response.rb +46 -0
  220. data/lib/nextbillionai/models/snap_to_road_snap_params.rb +247 -0
  221. data/lib/nextbillionai/models/snap_to_road_snap_response.rb +272 -0
  222. data/lib/nextbillionai/models.rb +158 -0
  223. data/lib/nextbillionai/request_options.rb +78 -0
  224. data/lib/nextbillionai/resources/areas.rb +39 -0
  225. data/lib/nextbillionai/resources/autocomplete.rb +49 -0
  226. data/lib/nextbillionai/resources/autosuggest.rb +49 -0
  227. data/lib/nextbillionai/resources/batch.rb +70 -0
  228. data/lib/nextbillionai/resources/browse.rb +49 -0
  229. data/lib/nextbillionai/resources/directions.rb +89 -0
  230. data/lib/nextbillionai/resources/discover.rb +49 -0
  231. data/lib/nextbillionai/resources/distance_matrix/json.rb +79 -0
  232. data/lib/nextbillionai/resources/distance_matrix.rb +18 -0
  233. data/lib/nextbillionai/resources/fleetify/document_templates.rb +163 -0
  234. data/lib/nextbillionai/resources/fleetify/routes/steps.rb +202 -0
  235. data/lib/nextbillionai/resources/fleetify/routes.rb +92 -0
  236. data/lib/nextbillionai/resources/fleetify.rb +22 -0
  237. data/lib/nextbillionai/resources/geocode.rb +127 -0
  238. data/lib/nextbillionai/resources/geofence/batch.rb +101 -0
  239. data/lib/nextbillionai/resources/geofence/console.rb +77 -0
  240. data/lib/nextbillionai/resources/geofence.rb +224 -0
  241. data/lib/nextbillionai/resources/isochrone.rb +59 -0
  242. data/lib/nextbillionai/resources/lookup.rb +41 -0
  243. data/lib/nextbillionai/resources/map.rb +32 -0
  244. data/lib/nextbillionai/resources/mdm.rb +100 -0
  245. data/lib/nextbillionai/resources/multigeocode/place.rb +165 -0
  246. data/lib/nextbillionai/resources/multigeocode.rb +70 -0
  247. data/lib/nextbillionai/resources/navigation.rb +72 -0
  248. data/lib/nextbillionai/resources/optimization/driver_assignment.rb +53 -0
  249. data/lib/nextbillionai/resources/optimization/v2.rb +100 -0
  250. data/lib/nextbillionai/resources/optimization.rb +110 -0
  251. data/lib/nextbillionai/resources/postalcode.rb +49 -0
  252. data/lib/nextbillionai/resources/restrictions.rb +325 -0
  253. data/lib/nextbillionai/resources/restrictions_items.rb +44 -0
  254. data/lib/nextbillionai/resources/revgeocode.rb +45 -0
  255. data/lib/nextbillionai/resources/route_report.rb +45 -0
  256. data/lib/nextbillionai/resources/skynet/asset/event.rb +57 -0
  257. data/lib/nextbillionai/resources/skynet/asset/location.rb +88 -0
  258. data/lib/nextbillionai/resources/skynet/asset.rb +303 -0
  259. data/lib/nextbillionai/resources/skynet/config.rb +99 -0
  260. data/lib/nextbillionai/resources/skynet/monitor.rb +206 -0
  261. data/lib/nextbillionai/resources/skynet/namespaced_apikeys.rb +72 -0
  262. data/lib/nextbillionai/resources/skynet/search/polygon.rb +106 -0
  263. data/lib/nextbillionai/resources/skynet/search.rb +114 -0
  264. data/lib/nextbillionai/resources/skynet/trip.rb +220 -0
  265. data/lib/nextbillionai/resources/skynet.rb +67 -0
  266. data/lib/nextbillionai/resources/snap_to_roads.rb +62 -0
  267. data/lib/nextbillionai/version.rb +5 -0
  268. data/lib/nextbillionai.rb +294 -0
  269. data/manifest.yaml +15 -0
  270. data/rbi/nextbillionai/client.rbi +121 -0
  271. data/rbi/nextbillionai/errors.rbi +178 -0
  272. data/rbi/nextbillionai/file_part.rbi +37 -0
  273. data/rbi/nextbillionai/internal/transport/base_client.rbi +301 -0
  274. data/rbi/nextbillionai/internal/transport/pooled_net_requester.rbi +80 -0
  275. data/rbi/nextbillionai/internal/type/array_of.rbi +104 -0
  276. data/rbi/nextbillionai/internal/type/base_model.rbi +310 -0
  277. data/rbi/nextbillionai/internal/type/base_page.rbi +43 -0
  278. data/rbi/nextbillionai/internal/type/boolean.rbi +58 -0
  279. data/rbi/nextbillionai/internal/type/converter.rbi +167 -0
  280. data/rbi/nextbillionai/internal/type/enum.rbi +82 -0
  281. data/rbi/nextbillionai/internal/type/file_input.rbi +59 -0
  282. data/rbi/nextbillionai/internal/type/hash_of.rbi +104 -0
  283. data/rbi/nextbillionai/internal/type/request_parameters.rbi +31 -0
  284. data/rbi/nextbillionai/internal/type/union.rbi +121 -0
  285. data/rbi/nextbillionai/internal/type/unknown.rbi +58 -0
  286. data/rbi/nextbillionai/internal/util.rbi +487 -0
  287. data/rbi/nextbillionai/internal.rbi +18 -0
  288. data/rbi/nextbillionai/models/access.rbi +41 -0
  289. data/rbi/nextbillionai/models/address.rbi +163 -0
  290. data/rbi/nextbillionai/models/area_list_params.rbi +42 -0
  291. data/rbi/nextbillionai/models/area_list_response.rbi +84 -0
  292. data/rbi/nextbillionai/models/autocomplete_suggest_params.rbi +166 -0
  293. data/rbi/nextbillionai/models/autocomplete_suggest_response.rbi +539 -0
  294. data/rbi/nextbillionai/models/autosuggest_suggest_params.rbi +166 -0
  295. data/rbi/nextbillionai/models/autosuggest_suggest_response.rbi +539 -0
  296. data/rbi/nextbillionai/models/batch_create_params.rbi +103 -0
  297. data/rbi/nextbillionai/models/batch_create_response.rbi +67 -0
  298. data/rbi/nextbillionai/models/batch_retrieve_params.rbi +58 -0
  299. data/rbi/nextbillionai/models/batch_retrieve_response.rbi +152 -0
  300. data/rbi/nextbillionai/models/browse_search_params.rbi +167 -0
  301. data/rbi/nextbillionai/models/browse_search_response.rbi +530 -0
  302. data/rbi/nextbillionai/models/categories.rbi +54 -0
  303. data/rbi/nextbillionai/models/contact_object.rbi +98 -0
  304. data/rbi/nextbillionai/models/contacts.rbi +87 -0
  305. data/rbi/nextbillionai/models/direction_compute_route_params.rbi +1442 -0
  306. data/rbi/nextbillionai/models/direction_compute_route_response.rbi +1364 -0
  307. data/rbi/nextbillionai/models/discover_retrieve_params.rbi +166 -0
  308. data/rbi/nextbillionai/models/discover_retrieve_response.rbi +539 -0
  309. data/rbi/nextbillionai/models/distance_matrix/json_create_params.rbi +34 -0
  310. data/rbi/nextbillionai/models/distance_matrix/json_retrieve_params.rbi +439 -0
  311. data/rbi/nextbillionai/models/distance_matrix/json_retrieve_response.rbi +202 -0
  312. data/rbi/nextbillionai/models/fleetify/document_template_content_request.rbi +379 -0
  313. data/rbi/nextbillionai/models/fleetify/document_template_content_response.rbi +330 -0
  314. data/rbi/nextbillionai/models/fleetify/document_template_create_params.rbi +80 -0
  315. data/rbi/nextbillionai/models/fleetify/document_template_create_response.rbi +168 -0
  316. data/rbi/nextbillionai/models/fleetify/document_template_delete_params.rbi +47 -0
  317. data/rbi/nextbillionai/models/fleetify/document_template_delete_response.rbi +46 -0
  318. data/rbi/nextbillionai/models/fleetify/document_template_list_params.rbi +47 -0
  319. data/rbi/nextbillionai/models/fleetify/document_template_list_response.rbi +185 -0
  320. data/rbi/nextbillionai/models/fleetify/document_template_retrieve_params.rbi +47 -0
  321. data/rbi/nextbillionai/models/fleetify/document_template_retrieve_response.rbi +170 -0
  322. data/rbi/nextbillionai/models/fleetify/document_template_update_params.rbi +95 -0
  323. data/rbi/nextbillionai/models/fleetify/document_template_update_response.rbi +166 -0
  324. data/rbi/nextbillionai/models/fleetify/route_create_params.rbi +595 -0
  325. data/rbi/nextbillionai/models/fleetify/route_create_response.rbi +360 -0
  326. data/rbi/nextbillionai/models/fleetify/route_redispatch_params.rbi +307 -0
  327. data/rbi/nextbillionai/models/fleetify/route_redispatch_response.rbi +810 -0
  328. data/rbi/nextbillionai/models/fleetify/routes/document_submission.rbi +12 -0
  329. data/rbi/nextbillionai/models/fleetify/routes/route_step_completion_mode.rbi +59 -0
  330. data/rbi/nextbillionai/models/fleetify/routes/route_step_geofence_config.rbi +111 -0
  331. data/rbi/nextbillionai/models/fleetify/routes/route_steps_request.rbi +362 -0
  332. data/rbi/nextbillionai/models/fleetify/routes/route_steps_response.rbi +538 -0
  333. data/rbi/nextbillionai/models/fleetify/routes/step_complete_params.rbi +107 -0
  334. data/rbi/nextbillionai/models/fleetify/routes/step_create_params.rbi +384 -0
  335. data/rbi/nextbillionai/models/fleetify/routes/step_create_response.rbi +77 -0
  336. data/rbi/nextbillionai/models/fleetify/routes/step_delete_params.rbi +58 -0
  337. data/rbi/nextbillionai/models/fleetify/routes/step_delete_response.rbi +50 -0
  338. data/rbi/nextbillionai/models/fleetify/routes/step_update_params.rbi +393 -0
  339. data/rbi/nextbillionai/models/fleetify/routes/step_update_response.rbi +77 -0
  340. data/rbi/nextbillionai/models/fleetify/routing_response.rbi +136 -0
  341. data/rbi/nextbillionai/models/geocode_batch_create_params.rbi +191 -0
  342. data/rbi/nextbillionai/models/geocode_batch_create_response.rbi +268 -0
  343. data/rbi/nextbillionai/models/geocode_retrieve_params.rbi +166 -0
  344. data/rbi/nextbillionai/models/geocode_retrieve_response.rbi +539 -0
  345. data/rbi/nextbillionai/models/geocode_structured_retrieve_params.rbi +207 -0
  346. data/rbi/nextbillionai/models/geocode_structured_retrieve_response.rbi +543 -0
  347. data/rbi/nextbillionai/models/geofence/batch_create_params.rbi +69 -0
  348. data/rbi/nextbillionai/models/geofence/batch_create_response.rbi +97 -0
  349. data/rbi/nextbillionai/models/geofence/batch_delete_params.rbi +63 -0
  350. data/rbi/nextbillionai/models/geofence/batch_list_params.rbi +58 -0
  351. data/rbi/nextbillionai/models/geofence/batch_list_response.rbi +96 -0
  352. data/rbi/nextbillionai/models/geofence/console_preview_params.rbi +34 -0
  353. data/rbi/nextbillionai/models/geofence/console_preview_response.rbi +104 -0
  354. data/rbi/nextbillionai/models/geofence/console_search_params.rbi +45 -0
  355. data/rbi/nextbillionai/models/geofence/console_search_response.rbi +138 -0
  356. data/rbi/nextbillionai/models/geofence/polygon_geojson.rbi +56 -0
  357. data/rbi/nextbillionai/models/geofence.rbi +326 -0
  358. data/rbi/nextbillionai/models/geofence_contains_params.rbi +90 -0
  359. data/rbi/nextbillionai/models/geofence_contains_response.rbi +255 -0
  360. data/rbi/nextbillionai/models/geofence_create_params.rbi +45 -0
  361. data/rbi/nextbillionai/models/geofence_create_response.rbi +97 -0
  362. data/rbi/nextbillionai/models/geofence_delete_params.rbi +45 -0
  363. data/rbi/nextbillionai/models/geofence_entity_create.rbi +603 -0
  364. data/rbi/nextbillionai/models/geofence_list_params.rbi +97 -0
  365. data/rbi/nextbillionai/models/geofence_list_response.rbi +111 -0
  366. data/rbi/nextbillionai/models/geofence_retrieve_params.rbi +45 -0
  367. data/rbi/nextbillionai/models/geofence_retrieve_response.rbi +96 -0
  368. data/rbi/nextbillionai/models/geofence_update_params.rbi +601 -0
  369. data/rbi/nextbillionai/models/isochrone_compute_params.rbi +248 -0
  370. data/rbi/nextbillionai/models/isochrone_compute_response.rbi +369 -0
  371. data/rbi/nextbillionai/models/lookup_by_id_params.rbi +58 -0
  372. data/rbi/nextbillionai/models/lookup_by_id_response.rbi +174 -0
  373. data/rbi/nextbillionai/models/map_create_segment_params.rbi +32 -0
  374. data/rbi/nextbillionai/models/map_view.rbi +70 -0
  375. data/rbi/nextbillionai/models/mdm_create_distance_matrix_params.rbi +868 -0
  376. data/rbi/nextbillionai/models/mdm_create_distance_matrix_response.rbi +88 -0
  377. data/rbi/nextbillionai/models/mdm_get_distance_matrix_status_params.rbi +58 -0
  378. data/rbi/nextbillionai/models/mdm_get_distance_matrix_status_response.rbi +141 -0
  379. data/rbi/nextbillionai/models/multigeocode/place_create_params.rbi +518 -0
  380. data/rbi/nextbillionai/models/multigeocode/place_create_response.rbi +39 -0
  381. data/rbi/nextbillionai/models/multigeocode/place_delete_params.rbi +47 -0
  382. data/rbi/nextbillionai/models/multigeocode/place_delete_response.rbi +46 -0
  383. data/rbi/nextbillionai/models/multigeocode/place_item.rbi +255 -0
  384. data/rbi/nextbillionai/models/multigeocode/place_retrieve_params.rbi +47 -0
  385. data/rbi/nextbillionai/models/multigeocode/place_retrieve_response.rbi +226 -0
  386. data/rbi/nextbillionai/models/multigeocode/place_update_params.rbi +245 -0
  387. data/rbi/nextbillionai/models/multigeocode/place_update_response.rbi +46 -0
  388. data/rbi/nextbillionai/models/multigeocode_search_params.rbi +205 -0
  389. data/rbi/nextbillionai/models/multigeocode_search_response.rbi +277 -0
  390. data/rbi/nextbillionai/models/navigation_retrieve_route_params.rbi +692 -0
  391. data/rbi/nextbillionai/models/navigation_retrieve_route_response.rbi +1894 -0
  392. data/rbi/nextbillionai/models/optimization/driver_assignment_assign_params.rbi +1306 -0
  393. data/rbi/nextbillionai/models/optimization/driver_assignment_assign_response.rbi +720 -0
  394. data/rbi/nextbillionai/models/optimization/job.rbi +798 -0
  395. data/rbi/nextbillionai/models/optimization/location.rbi +39 -0
  396. data/rbi/nextbillionai/models/optimization/shipment.rbi +1030 -0
  397. data/rbi/nextbillionai/models/optimization/v2_retrieve_result_params.rbi +60 -0
  398. data/rbi/nextbillionai/models/optimization/v2_retrieve_result_response.rbi +1318 -0
  399. data/rbi/nextbillionai/models/optimization/v2_submit_params.rbi +3695 -0
  400. data/rbi/nextbillionai/models/optimization/vehicle.rbi +168 -0
  401. data/rbi/nextbillionai/models/optimization_compute_params.rbi +453 -0
  402. data/rbi/nextbillionai/models/optimization_compute_response.rbi +885 -0
  403. data/rbi/nextbillionai/models/optimization_re_optimize_params.rbi +439 -0
  404. data/rbi/nextbillionai/models/position.rbi +40 -0
  405. data/rbi/nextbillionai/models/post_response.rbi +81 -0
  406. data/rbi/nextbillionai/models/postalcode_retrieve_coordinates_params.rbi +211 -0
  407. data/rbi/nextbillionai/models/postalcode_retrieve_coordinates_response.rbi +661 -0
  408. data/rbi/nextbillionai/models/restriction_create_params.rbi +119 -0
  409. data/rbi/nextbillionai/models/restriction_delete_params.rbi +45 -0
  410. data/rbi/nextbillionai/models/restriction_delete_response.rbi +42 -0
  411. data/rbi/nextbillionai/models/restriction_list_by_bbox_params.rbi +447 -0
  412. data/rbi/nextbillionai/models/restriction_list_by_bbox_response.rbi +13 -0
  413. data/rbi/nextbillionai/models/restriction_list_params.rbi +414 -0
  414. data/rbi/nextbillionai/models/restriction_list_response.rbi +120 -0
  415. data/rbi/nextbillionai/models/restriction_retrieve_params.rbi +59 -0
  416. data/rbi/nextbillionai/models/restriction_set_state_params.rbi +99 -0
  417. data/rbi/nextbillionai/models/restriction_update_params.rbi +65 -0
  418. data/rbi/nextbillionai/models/restrictions_item_list_params.rbi +325 -0
  419. data/rbi/nextbillionai/models/restrictions_item_list_response.rbi +436 -0
  420. data/rbi/nextbillionai/models/revgeocode_retrieve_params.rbi +132 -0
  421. data/rbi/nextbillionai/models/revgeocode_retrieve_response.rbi +539 -0
  422. data/rbi/nextbillionai/models/rich_group_request.rbi +507 -0
  423. data/rbi/nextbillionai/models/rich_group_response.rbi +464 -0
  424. data/rbi/nextbillionai/models/route_report_create_params.rbi +121 -0
  425. data/rbi/nextbillionai/models/route_report_create_response.rbi +982 -0
  426. data/rbi/nextbillionai/models/skynet/asset/event_list_params.rbi +177 -0
  427. data/rbi/nextbillionai/models/skynet/asset/event_list_response.rbi +721 -0
  428. data/rbi/nextbillionai/models/skynet/asset/location_get_last_params.rbi +106 -0
  429. data/rbi/nextbillionai/models/skynet/asset/location_get_last_response.rbi +136 -0
  430. data/rbi/nextbillionai/models/skynet/asset/location_list_params.rbi +265 -0
  431. data/rbi/nextbillionai/models/skynet/asset/location_list_response.rbi +503 -0
  432. data/rbi/nextbillionai/models/skynet/asset/track_location.rbi +209 -0
  433. data/rbi/nextbillionai/models/skynet/asset_bind_params.rbi +66 -0
  434. data/rbi/nextbillionai/models/skynet/asset_create_params.rbi +208 -0
  435. data/rbi/nextbillionai/models/skynet/asset_create_response.rbi +114 -0
  436. data/rbi/nextbillionai/models/skynet/asset_delete_params.rbi +100 -0
  437. data/rbi/nextbillionai/models/skynet/asset_details.rbi +387 -0
  438. data/rbi/nextbillionai/models/skynet/asset_list_params.rbi +213 -0
  439. data/rbi/nextbillionai/models/skynet/asset_list_response.rbi +140 -0
  440. data/rbi/nextbillionai/models/skynet/asset_retrieve_params.rbi +101 -0
  441. data/rbi/nextbillionai/models/skynet/asset_retrieve_response.rbi +122 -0
  442. data/rbi/nextbillionai/models/skynet/asset_track_params.rbi +329 -0
  443. data/rbi/nextbillionai/models/skynet/asset_update_attributes_params.rbi +82 -0
  444. data/rbi/nextbillionai/models/skynet/asset_update_params.rbi +189 -0
  445. data/rbi/nextbillionai/models/skynet/config_retrieve_params.rbi +104 -0
  446. data/rbi/nextbillionai/models/skynet/config_retrieve_response.rbi +163 -0
  447. data/rbi/nextbillionai/models/skynet/config_test_webhook_params.rbi +47 -0
  448. data/rbi/nextbillionai/models/skynet/config_test_webhook_response.rbi +47 -0
  449. data/rbi/nextbillionai/models/skynet/config_update_params.rbi +114 -0
  450. data/rbi/nextbillionai/models/skynet/meta_data.rbi +9 -0
  451. data/rbi/nextbillionai/models/skynet/metadata.rbi +9 -0
  452. data/rbi/nextbillionai/models/skynet/monitor.rbi +568 -0
  453. data/rbi/nextbillionai/models/skynet/monitor_create_params.rbi +792 -0
  454. data/rbi/nextbillionai/models/skynet/monitor_create_response.rbi +114 -0
  455. data/rbi/nextbillionai/models/skynet/monitor_delete_params.rbi +47 -0
  456. data/rbi/nextbillionai/models/skynet/monitor_list_params.rbi +166 -0
  457. data/rbi/nextbillionai/models/skynet/monitor_list_response.rbi +143 -0
  458. data/rbi/nextbillionai/models/skynet/monitor_retrieve_params.rbi +47 -0
  459. data/rbi/nextbillionai/models/skynet/monitor_retrieve_response.rbi +119 -0
  460. data/rbi/nextbillionai/models/skynet/monitor_update_params.rbi +690 -0
  461. data/rbi/nextbillionai/models/skynet/namespaced_apikey_create_params.rbi +64 -0
  462. data/rbi/nextbillionai/models/skynet/namespaced_apikey_create_response.rbi +182 -0
  463. data/rbi/nextbillionai/models/skynet/namespaced_apikey_delete_params.rbi +78 -0
  464. data/rbi/nextbillionai/models/skynet/namespaced_apikey_delete_response.rbi +52 -0
  465. data/rbi/nextbillionai/models/skynet/pagination.rbi +84 -0
  466. data/rbi/nextbillionai/models/skynet/search/polygon_create_params.rbi +583 -0
  467. data/rbi/nextbillionai/models/skynet/search/polygon_get_params.rbi +358 -0
  468. data/rbi/nextbillionai/models/skynet/search_around_params.rbi +346 -0
  469. data/rbi/nextbillionai/models/skynet/search_bound_params.rbi +341 -0
  470. data/rbi/nextbillionai/models/skynet/search_response.rbi +390 -0
  471. data/rbi/nextbillionai/models/skynet/simple_resp.rbi +52 -0
  472. data/rbi/nextbillionai/models/skynet/trip_delete_params.rbi +99 -0
  473. data/rbi/nextbillionai/models/skynet/trip_end_params.rbi +104 -0
  474. data/rbi/nextbillionai/models/skynet/trip_get_summary_params.rbi +104 -0
  475. data/rbi/nextbillionai/models/skynet/trip_get_summary_response.rbi +414 -0
  476. data/rbi/nextbillionai/models/skynet/trip_retrieve_params.rbi +101 -0
  477. data/rbi/nextbillionai/models/skynet/trip_retrieve_response.rbi +354 -0
  478. data/rbi/nextbillionai/models/skynet/trip_start_params.rbi +279 -0
  479. data/rbi/nextbillionai/models/skynet/trip_start_response.rbi +112 -0
  480. data/rbi/nextbillionai/models/skynet/trip_stop.rbi +69 -0
  481. data/rbi/nextbillionai/models/skynet/trip_update_params.rbi +274 -0
  482. data/rbi/nextbillionai/models/skynet_subscribe_params.rbi +170 -0
  483. data/rbi/nextbillionai/models/skynet_subscribe_response.rbi +75 -0
  484. data/rbi/nextbillionai/models/snap_to_road_snap_params.rbi +492 -0
  485. data/rbi/nextbillionai/models/snap_to_road_snap_response.rbi +546 -0
  486. data/rbi/nextbillionai/models.rbi +125 -0
  487. data/rbi/nextbillionai/request_options.rbi +59 -0
  488. data/rbi/nextbillionai/resources/areas.rbi +27 -0
  489. data/rbi/nextbillionai/resources/autocomplete.rbi +75 -0
  490. data/rbi/nextbillionai/resources/autosuggest.rbi +75 -0
  491. data/rbi/nextbillionai/resources/batch.rbi +50 -0
  492. data/rbi/nextbillionai/resources/browse.rbi +74 -0
  493. data/rbi/nextbillionai/resources/directions.rbi +320 -0
  494. data/rbi/nextbillionai/resources/discover.rbi +75 -0
  495. data/rbi/nextbillionai/resources/distance_matrix/json.rbi +129 -0
  496. data/rbi/nextbillionai/resources/distance_matrix.rbi +15 -0
  497. data/rbi/nextbillionai/resources/fleetify/document_templates.rbi +130 -0
  498. data/rbi/nextbillionai/resources/fleetify/routes/steps.rbi +270 -0
  499. data/rbi/nextbillionai/resources/fleetify/routes.rbi +114 -0
  500. data/rbi/nextbillionai/resources/fleetify.rbi +18 -0
  501. data/rbi/nextbillionai/resources/geocode.rbi +164 -0
  502. data/rbi/nextbillionai/resources/geofence/batch.rbi +70 -0
  503. data/rbi/nextbillionai/resources/geofence/console.rbi +89 -0
  504. data/rbi/nextbillionai/resources/geofence.rbi +249 -0
  505. data/rbi/nextbillionai/resources/isochrone.rbi +89 -0
  506. data/rbi/nextbillionai/resources/lookup.rbi +31 -0
  507. data/rbi/nextbillionai/resources/map.rbi +19 -0
  508. data/rbi/nextbillionai/resources/mdm.rbi +182 -0
  509. data/rbi/nextbillionai/resources/multigeocode/place.rbi +155 -0
  510. data/rbi/nextbillionai/resources/multigeocode.rbi +73 -0
  511. data/rbi/nextbillionai/resources/navigation.rbi +152 -0
  512. data/rbi/nextbillionai/resources/optimization/driver_assignment.rbi +54 -0
  513. data/rbi/nextbillionai/resources/optimization/v2.rbi +217 -0
  514. data/rbi/nextbillionai/resources/optimization.rbi +165 -0
  515. data/rbi/nextbillionai/resources/postalcode.rbi +54 -0
  516. data/rbi/nextbillionai/resources/restrictions.rbi +487 -0
  517. data/rbi/nextbillionai/resources/restrictions_items.rbi +46 -0
  518. data/rbi/nextbillionai/resources/revgeocode.rbi +63 -0
  519. data/rbi/nextbillionai/resources/route_report.rbi +41 -0
  520. data/rbi/nextbillionai/resources/skynet/asset/event.rbi +64 -0
  521. data/rbi/nextbillionai/resources/skynet/asset/location.rbi +106 -0
  522. data/rbi/nextbillionai/resources/skynet/asset.rbi +336 -0
  523. data/rbi/nextbillionai/resources/skynet/config.rbi +71 -0
  524. data/rbi/nextbillionai/resources/skynet/monitor.rbi +305 -0
  525. data/rbi/nextbillionai/resources/skynet/namespaced_apikeys.rbi +66 -0
  526. data/rbi/nextbillionai/resources/skynet/search/polygon.rbi +175 -0
  527. data/rbi/nextbillionai/resources/skynet/search.rbi +191 -0
  528. data/rbi/nextbillionai/resources/skynet/trip.rbi +210 -0
  529. data/rbi/nextbillionai/resources/skynet.rbi +60 -0
  530. data/rbi/nextbillionai/resources/snap_to_roads.rbi +103 -0
  531. data/rbi/nextbillionai/version.rbi +5 -0
  532. data/sig/nextbillionai/client.rbs +74 -0
  533. data/sig/nextbillionai/errors.rbs +110 -0
  534. data/sig/nextbillionai/file_part.rbs +21 -0
  535. data/sig/nextbillionai/internal/transport/base_client.rbs +131 -0
  536. data/sig/nextbillionai/internal/transport/pooled_net_requester.rbs +45 -0
  537. data/sig/nextbillionai/internal/type/array_of.rbs +48 -0
  538. data/sig/nextbillionai/internal/type/base_model.rbs +104 -0
  539. data/sig/nextbillionai/internal/type/base_page.rbs +24 -0
  540. data/sig/nextbillionai/internal/type/boolean.rbs +26 -0
  541. data/sig/nextbillionai/internal/type/converter.rbs +62 -0
  542. data/sig/nextbillionai/internal/type/enum.rbs +32 -0
  543. data/sig/nextbillionai/internal/type/file_input.rbs +25 -0
  544. data/sig/nextbillionai/internal/type/hash_of.rbs +48 -0
  545. data/sig/nextbillionai/internal/type/request_parameters.rbs +19 -0
  546. data/sig/nextbillionai/internal/type/union.rbs +52 -0
  547. data/sig/nextbillionai/internal/type/unknown.rbs +26 -0
  548. data/sig/nextbillionai/internal/util.rbs +185 -0
  549. data/sig/nextbillionai/internal.rbs +10 -0
  550. data/sig/nextbillionai/models/access.rbs +19 -0
  551. data/sig/nextbillionai/models/address.rbs +92 -0
  552. data/sig/nextbillionai/models/area_list_params.rbs +23 -0
  553. data/sig/nextbillionai/models/area_list_response.rbs +43 -0
  554. data/sig/nextbillionai/models/autocomplete_suggest_params.rbs +59 -0
  555. data/sig/nextbillionai/models/autocomplete_suggest_response.rbs +236 -0
  556. data/sig/nextbillionai/models/autosuggest_suggest_params.rbs +59 -0
  557. data/sig/nextbillionai/models/autosuggest_suggest_response.rbs +236 -0
  558. data/sig/nextbillionai/models/batch_create_params.rbs +47 -0
  559. data/sig/nextbillionai/models/batch_create_response.rbs +24 -0
  560. data/sig/nextbillionai/models/batch_retrieve_params.rbs +28 -0
  561. data/sig/nextbillionai/models/batch_retrieve_response.rbs +61 -0
  562. data/sig/nextbillionai/models/browse_search_params.rbs +61 -0
  563. data/sig/nextbillionai/models/browse_search_response.rbs +234 -0
  564. data/sig/nextbillionai/models/categories.rbs +23 -0
  565. data/sig/nextbillionai/models/contact_object.rbs +50 -0
  566. data/sig/nextbillionai/models/contacts.rbs +69 -0
  567. data/sig/nextbillionai/models/direction_compute_route_params.rbs +391 -0
  568. data/sig/nextbillionai/models/direction_compute_route_response.rbs +554 -0
  569. data/sig/nextbillionai/models/discover_retrieve_params.rbs +59 -0
  570. data/sig/nextbillionai/models/discover_retrieve_response.rbs +234 -0
  571. data/sig/nextbillionai/models/distance_matrix/json_create_params.rbs +17 -0
  572. data/sig/nextbillionai/models/distance_matrix/json_retrieve_params.rbs +114 -0
  573. data/sig/nextbillionai/models/distance_matrix/json_retrieve_response.rbs +77 -0
  574. data/sig/nextbillionai/models/fleetify/document_template_content_request.rbs +148 -0
  575. data/sig/nextbillionai/models/fleetify/document_template_content_response.rbs +135 -0
  576. data/sig/nextbillionai/models/fleetify/document_template_create_params.rbs +38 -0
  577. data/sig/nextbillionai/models/fleetify/document_template_create_response.rbs +75 -0
  578. data/sig/nextbillionai/models/fleetify/document_template_delete_params.rbs +25 -0
  579. data/sig/nextbillionai/models/fleetify/document_template_delete_response.rbs +21 -0
  580. data/sig/nextbillionai/models/fleetify/document_template_list_params.rbs +25 -0
  581. data/sig/nextbillionai/models/fleetify/document_template_list_response.rbs +75 -0
  582. data/sig/nextbillionai/models/fleetify/document_template_retrieve_params.rbs +25 -0
  583. data/sig/nextbillionai/models/fleetify/document_template_retrieve_response.rbs +75 -0
  584. data/sig/nextbillionai/models/fleetify/document_template_update_params.rbs +44 -0
  585. data/sig/nextbillionai/models/fleetify/document_template_update_response.rbs +75 -0
  586. data/sig/nextbillionai/models/fleetify/route_create_params.rbs +199 -0
  587. data/sig/nextbillionai/models/fleetify/route_create_response.rbs +159 -0
  588. data/sig/nextbillionai/models/fleetify/route_redispatch_params.rbs +118 -0
  589. data/sig/nextbillionai/models/fleetify/route_redispatch_response.rbs +359 -0
  590. data/sig/nextbillionai/models/fleetify/routes/document_submission.rbs +9 -0
  591. data/sig/nextbillionai/models/fleetify/routes/route_step_completion_mode.rbs +22 -0
  592. data/sig/nextbillionai/models/fleetify/routes/route_step_geofence_config.rbs +47 -0
  593. data/sig/nextbillionai/models/fleetify/routes/route_steps_request.rbs +134 -0
  594. data/sig/nextbillionai/models/fleetify/routes/route_steps_response.rbs +223 -0
  595. data/sig/nextbillionai/models/fleetify/routes/step_complete_params.rbs +56 -0
  596. data/sig/nextbillionai/models/fleetify/routes/step_create_params.rbs +148 -0
  597. data/sig/nextbillionai/models/fleetify/routes/step_create_response.rbs +42 -0
  598. data/sig/nextbillionai/models/fleetify/routes/step_delete_params.rbs +32 -0
  599. data/sig/nextbillionai/models/fleetify/routes/step_delete_response.rbs +23 -0
  600. data/sig/nextbillionai/models/fleetify/routes/step_update_params.rbs +159 -0
  601. data/sig/nextbillionai/models/fleetify/routes/step_update_response.rbs +42 -0
  602. data/sig/nextbillionai/models/fleetify/routing_response.rbs +66 -0
  603. data/sig/nextbillionai/models/geocode_batch_create_params.rbs +70 -0
  604. data/sig/nextbillionai/models/geocode_batch_create_response.rbs +128 -0
  605. data/sig/nextbillionai/models/geocode_retrieve_params.rbs +59 -0
  606. data/sig/nextbillionai/models/geocode_retrieve_response.rbs +234 -0
  607. data/sig/nextbillionai/models/geocode_structured_retrieve_params.rbs +94 -0
  608. data/sig/nextbillionai/models/geocode_structured_retrieve_response.rbs +236 -0
  609. data/sig/nextbillionai/models/geofence/batch_create_params.rbs +34 -0
  610. data/sig/nextbillionai/models/geofence/batch_create_response.rbs +45 -0
  611. data/sig/nextbillionai/models/geofence/batch_delete_params.rbs +32 -0
  612. data/sig/nextbillionai/models/geofence/batch_list_params.rbs +30 -0
  613. data/sig/nextbillionai/models/geofence/batch_list_response.rbs +37 -0
  614. data/sig/nextbillionai/models/geofence/console_preview_params.rbs +17 -0
  615. data/sig/nextbillionai/models/geofence/console_preview_response.rbs +49 -0
  616. data/sig/nextbillionai/models/geofence/console_search_params.rbs +25 -0
  617. data/sig/nextbillionai/models/geofence/console_search_response.rbs +56 -0
  618. data/sig/nextbillionai/models/geofence/polygon_geojson.rbs +25 -0
  619. data/sig/nextbillionai/models/geofence.rbs +161 -0
  620. data/sig/nextbillionai/models/geofence_contains_params.rbs +40 -0
  621. data/sig/nextbillionai/models/geofence_contains_response.rbs +105 -0
  622. data/sig/nextbillionai/models/geofence_create_params.rbs +25 -0
  623. data/sig/nextbillionai/models/geofence_create_response.rbs +43 -0
  624. data/sig/nextbillionai/models/geofence_delete_params.rbs +23 -0
  625. data/sig/nextbillionai/models/geofence_entity_create.rbs +216 -0
  626. data/sig/nextbillionai/models/geofence_list_params.rbs +42 -0
  627. data/sig/nextbillionai/models/geofence_list_response.rbs +61 -0
  628. data/sig/nextbillionai/models/geofence_retrieve_params.rbs +23 -0
  629. data/sig/nextbillionai/models/geofence_retrieve_response.rbs +45 -0
  630. data/sig/nextbillionai/models/geofence_update_params.rbs +227 -0
  631. data/sig/nextbillionai/models/isochrone_compute_params.rbs +96 -0
  632. data/sig/nextbillionai/models/isochrone_compute_response.rbs +159 -0
  633. data/sig/nextbillionai/models/lookup_by_id_params.rbs +28 -0
  634. data/sig/nextbillionai/models/lookup_by_id_response.rbs +94 -0
  635. data/sig/nextbillionai/models/map_create_segment_params.rbs +15 -0
  636. data/sig/nextbillionai/models/map_view.rbs +37 -0
  637. data/sig/nextbillionai/models/mdm_create_distance_matrix_params.rbs +270 -0
  638. data/sig/nextbillionai/models/mdm_create_distance_matrix_response.rbs +43 -0
  639. data/sig/nextbillionai/models/mdm_get_distance_matrix_status_params.rbs +28 -0
  640. data/sig/nextbillionai/models/mdm_get_distance_matrix_status_response.rbs +57 -0
  641. data/sig/nextbillionai/models/multigeocode/place_create_params.rbs +226 -0
  642. data/sig/nextbillionai/models/multigeocode/place_create_response.rbs +17 -0
  643. data/sig/nextbillionai/models/multigeocode/place_delete_params.rbs +25 -0
  644. data/sig/nextbillionai/models/multigeocode/place_delete_response.rbs +21 -0
  645. data/sig/nextbillionai/models/multigeocode/place_item.rbs +133 -0
  646. data/sig/nextbillionai/models/multigeocode/place_retrieve_params.rbs +25 -0
  647. data/sig/nextbillionai/models/multigeocode/place_retrieve_response.rbs +95 -0
  648. data/sig/nextbillionai/models/multigeocode/place_update_params.rbs +99 -0
  649. data/sig/nextbillionai/models/multigeocode/place_update_response.rbs +21 -0
  650. data/sig/nextbillionai/models/multigeocode_search_params.rbs +104 -0
  651. data/sig/nextbillionai/models/multigeocode_search_response.rbs +114 -0
  652. data/sig/nextbillionai/models/navigation_retrieve_route_params.rbs +206 -0
  653. data/sig/nextbillionai/models/navigation_retrieve_route_response.rbs +812 -0
  654. data/sig/nextbillionai/models/optimization/driver_assignment_assign_params.rbs +412 -0
  655. data/sig/nextbillionai/models/optimization/driver_assignment_assign_response.rbs +281 -0
  656. data/sig/nextbillionai/models/optimization/job.rbs +225 -0
  657. data/sig/nextbillionai/models/optimization/location.rbs +17 -0
  658. data/sig/nextbillionai/models/optimization/shipment.rbs +313 -0
  659. data/sig/nextbillionai/models/optimization/v2_retrieve_result_params.rbs +30 -0
  660. data/sig/nextbillionai/models/optimization/v2_retrieve_result_response.rbs +555 -0
  661. data/sig/nextbillionai/models/optimization/v2_submit_params.rbs +1138 -0
  662. data/sig/nextbillionai/models/optimization/vehicle.rbs +66 -0
  663. data/sig/nextbillionai/models/optimization_compute_params.rbs +146 -0
  664. data/sig/nextbillionai/models/optimization_compute_response.rbs +386 -0
  665. data/sig/nextbillionai/models/optimization_re_optimize_params.rbs +176 -0
  666. data/sig/nextbillionai/models/position.rbs +19 -0
  667. data/sig/nextbillionai/models/post_response.rbs +38 -0
  668. data/sig/nextbillionai/models/postalcode_retrieve_coordinates_params.rbs +84 -0
  669. data/sig/nextbillionai/models/postalcode_retrieve_coordinates_response.rbs +260 -0
  670. data/sig/nextbillionai/models/restriction_create_params.rbs +48 -0
  671. data/sig/nextbillionai/models/restriction_delete_params.rbs +23 -0
  672. data/sig/nextbillionai/models/restriction_delete_response.rbs +19 -0
  673. data/sig/nextbillionai/models/restriction_list_by_bbox_params.rbs +162 -0
  674. data/sig/nextbillionai/models/restriction_list_by_bbox_response.rbs +8 -0
  675. data/sig/nextbillionai/models/restriction_list_params.rbs +164 -0
  676. data/sig/nextbillionai/models/restriction_list_response.rbs +57 -0
  677. data/sig/nextbillionai/models/restriction_retrieve_params.rbs +30 -0
  678. data/sig/nextbillionai/models/restriction_set_state_params.rbs +43 -0
  679. data/sig/nextbillionai/models/restriction_update_params.rbs +32 -0
  680. data/sig/nextbillionai/models/restrictions_item_list_params.rbs +145 -0
  681. data/sig/nextbillionai/models/restrictions_item_list_response.rbs +166 -0
  682. data/sig/nextbillionai/models/revgeocode_retrieve_params.rbs +40 -0
  683. data/sig/nextbillionai/models/revgeocode_retrieve_response.rbs +236 -0
  684. data/sig/nextbillionai/models/rich_group_request.rbs +207 -0
  685. data/sig/nextbillionai/models/rich_group_response.rbs +207 -0
  686. data/sig/nextbillionai/models/route_report_create_params.rbs +47 -0
  687. data/sig/nextbillionai/models/route_report_create_response.rbs +408 -0
  688. data/sig/nextbillionai/models/skynet/asset/event_list_params.rbs +84 -0
  689. data/sig/nextbillionai/models/skynet/asset/event_list_response.rbs +303 -0
  690. data/sig/nextbillionai/models/skynet/asset/location_get_last_params.rbs +49 -0
  691. data/sig/nextbillionai/models/skynet/asset/location_get_last_response.rbs +60 -0
  692. data/sig/nextbillionai/models/skynet/asset/location_list_params.rbs +105 -0
  693. data/sig/nextbillionai/models/skynet/asset/location_list_response.rbs +216 -0
  694. data/sig/nextbillionai/models/skynet/asset/track_location.rbs +100 -0
  695. data/sig/nextbillionai/models/skynet/asset_bind_params.rbs +30 -0
  696. data/sig/nextbillionai/models/skynet/asset_create_params.rbs +89 -0
  697. data/sig/nextbillionai/models/skynet/asset_create_response.rbs +52 -0
  698. data/sig/nextbillionai/models/skynet/asset_delete_params.rbs +47 -0
  699. data/sig/nextbillionai/models/skynet/asset_details.rbs +175 -0
  700. data/sig/nextbillionai/models/skynet/asset_list_params.rbs +89 -0
  701. data/sig/nextbillionai/models/skynet/asset_list_response.rbs +70 -0
  702. data/sig/nextbillionai/models/skynet/asset_retrieve_params.rbs +47 -0
  703. data/sig/nextbillionai/models/skynet/asset_retrieve_response.rbs +54 -0
  704. data/sig/nextbillionai/models/skynet/asset_track_params.rbs +140 -0
  705. data/sig/nextbillionai/models/skynet/asset_update_attributes_params.rbs +30 -0
  706. data/sig/nextbillionai/models/skynet/asset_update_params.rbs +82 -0
  707. data/sig/nextbillionai/models/skynet/config_retrieve_params.rbs +47 -0
  708. data/sig/nextbillionai/models/skynet/config_retrieve_response.rbs +73 -0
  709. data/sig/nextbillionai/models/skynet/config_test_webhook_params.rbs +25 -0
  710. data/sig/nextbillionai/models/skynet/config_test_webhook_response.rbs +17 -0
  711. data/sig/nextbillionai/models/skynet/config_update_params.rbs +54 -0
  712. data/sig/nextbillionai/models/skynet/meta_data.rbs +7 -0
  713. data/sig/nextbillionai/models/skynet/metadata.rbs +7 -0
  714. data/sig/nextbillionai/models/skynet/monitor.rbs +220 -0
  715. data/sig/nextbillionai/models/skynet/monitor_create_params.rbs +226 -0
  716. data/sig/nextbillionai/models/skynet/monitor_create_response.rbs +52 -0
  717. data/sig/nextbillionai/models/skynet/monitor_delete_params.rbs +25 -0
  718. data/sig/nextbillionai/models/skynet/monitor_list_params.rbs +75 -0
  719. data/sig/nextbillionai/models/skynet/monitor_list_response.rbs +70 -0
  720. data/sig/nextbillionai/models/skynet/monitor_retrieve_params.rbs +25 -0
  721. data/sig/nextbillionai/models/skynet/monitor_retrieve_response.rbs +56 -0
  722. data/sig/nextbillionai/models/skynet/monitor_update_params.rbs +206 -0
  723. data/sig/nextbillionai/models/skynet/namespaced_apikey_create_params.rbs +30 -0
  724. data/sig/nextbillionai/models/skynet/namespaced_apikey_create_response.rbs +94 -0
  725. data/sig/nextbillionai/models/skynet/namespaced_apikey_delete_params.rbs +34 -0
  726. data/sig/nextbillionai/models/skynet/namespaced_apikey_delete_response.rbs +21 -0
  727. data/sig/nextbillionai/models/skynet/pagination.rbs +40 -0
  728. data/sig/nextbillionai/models/skynet/search/polygon_create_params.rbs +193 -0
  729. data/sig/nextbillionai/models/skynet/search/polygon_get_params.rbs +125 -0
  730. data/sig/nextbillionai/models/skynet/search_around_params.rbs +128 -0
  731. data/sig/nextbillionai/models/skynet/search_bound_params.rbs +123 -0
  732. data/sig/nextbillionai/models/skynet/search_response.rbs +185 -0
  733. data/sig/nextbillionai/models/skynet/simple_resp.rbs +21 -0
  734. data/sig/nextbillionai/models/skynet/trip_delete_params.rbs +47 -0
  735. data/sig/nextbillionai/models/skynet/trip_end_params.rbs +52 -0
  736. data/sig/nextbillionai/models/skynet/trip_get_summary_params.rbs +47 -0
  737. data/sig/nextbillionai/models/skynet/trip_get_summary_response.rbs +198 -0
  738. data/sig/nextbillionai/models/skynet/trip_retrieve_params.rbs +47 -0
  739. data/sig/nextbillionai/models/skynet/trip_retrieve_response.rbs +168 -0
  740. data/sig/nextbillionai/models/skynet/trip_start_params.rbs +120 -0
  741. data/sig/nextbillionai/models/skynet/trip_start_response.rbs +52 -0
  742. data/sig/nextbillionai/models/skynet/trip_stop.rbs +29 -0
  743. data/sig/nextbillionai/models/skynet/trip_update_params.rbs +113 -0
  744. data/sig/nextbillionai/models/skynet_subscribe_params.rbs +64 -0
  745. data/sig/nextbillionai/models/skynet_subscribe_response.rbs +38 -0
  746. data/sig/nextbillionai/models/snap_to_road_snap_params.rbs +173 -0
  747. data/sig/nextbillionai/models/snap_to_road_snap_response.rbs +215 -0
  748. data/sig/nextbillionai/models.rbs +115 -0
  749. data/sig/nextbillionai/request_options.rbs +36 -0
  750. data/sig/nextbillionai/resources/areas.rbs +12 -0
  751. data/sig/nextbillionai/resources/autocomplete.rbs +17 -0
  752. data/sig/nextbillionai/resources/autosuggest.rbs +17 -0
  753. data/sig/nextbillionai/resources/batch.rbs +19 -0
  754. data/sig/nextbillionai/resources/browse.rbs +17 -0
  755. data/sig/nextbillionai/resources/directions.rbs +37 -0
  756. data/sig/nextbillionai/resources/discover.rbs +17 -0
  757. data/sig/nextbillionai/resources/distance_matrix/json.rbs +23 -0
  758. data/sig/nextbillionai/resources/distance_matrix.rbs +9 -0
  759. data/sig/nextbillionai/resources/fleetify/document_templates.rbs +41 -0
  760. data/sig/nextbillionai/resources/fleetify/routes/steps.rbs +61 -0
  761. data/sig/nextbillionai/resources/fleetify/routes.rbs +30 -0
  762. data/sig/nextbillionai/resources/fleetify.rbs +11 -0
  763. data/sig/nextbillionai/resources/geocode.rbs +38 -0
  764. data/sig/nextbillionai/resources/geofence/batch.rbs +27 -0
  765. data/sig/nextbillionai/resources/geofence/console.rbs +26 -0
  766. data/sig/nextbillionai/resources/geofence.rbs +65 -0
  767. data/sig/nextbillionai/resources/isochrone.rbs +21 -0
  768. data/sig/nextbillionai/resources/lookup.rbs +13 -0
  769. data/sig/nextbillionai/resources/map.rbs +9 -0
  770. data/sig/nextbillionai/resources/mdm.rbs +34 -0
  771. data/sig/nextbillionai/resources/multigeocode/place.rbs +39 -0
  772. data/sig/nextbillionai/resources/multigeocode.rbs +24 -0
  773. data/sig/nextbillionai/resources/navigation.rbs +26 -0
  774. data/sig/nextbillionai/resources/optimization/driver_assignment.rbs +18 -0
  775. data/sig/nextbillionai/resources/optimization/v2.rbs +35 -0
  776. data/sig/nextbillionai/resources/optimization.rbs +34 -0
  777. data/sig/nextbillionai/resources/postalcode.rbs +16 -0
  778. data/sig/nextbillionai/resources/restrictions.rbs +107 -0
  779. data/sig/nextbillionai/resources/restrictions_items.rbs +21 -0
  780. data/sig/nextbillionai/resources/revgeocode.rbs +15 -0
  781. data/sig/nextbillionai/resources/route_report.rbs +14 -0
  782. data/sig/nextbillionai/resources/skynet/asset/event.rbs +23 -0
  783. data/sig/nextbillionai/resources/skynet/asset/location.rbs +31 -0
  784. data/sig/nextbillionai/resources/skynet/asset.rbs +86 -0
  785. data/sig/nextbillionai/resources/skynet/config.rbs +27 -0
  786. data/sig/nextbillionai/resources/skynet/monitor.rbs +64 -0
  787. data/sig/nextbillionai/resources/skynet/namespaced_apikeys.rbs +22 -0
  788. data/sig/nextbillionai/resources/skynet/search/polygon.rbs +38 -0
  789. data/sig/nextbillionai/resources/skynet/search.rbs +42 -0
  790. data/sig/nextbillionai/resources/skynet/trip.rbs +63 -0
  791. data/sig/nextbillionai/resources/skynet.rbs +26 -0
  792. data/sig/nextbillionai/resources/snap_to_roads.rbs +22 -0
  793. data/sig/nextbillionai/version.rbs +3 -0
  794. metadata +851 -0
@@ -0,0 +1,1030 @@
1
+ # typed: strong
2
+
3
+ module Nextbillionai
4
+ module Models
5
+ module Optimization
6
+ class Shipment < Nextbillionai::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Nextbillionai::Optimization::Shipment,
11
+ Nextbillionai::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # Specify the details of the delivery step of the shipment.
16
+ sig { returns(Nextbillionai::Optimization::Shipment::Delivery) }
17
+ attr_reader :delivery
18
+
19
+ sig do
20
+ params(
21
+ delivery: Nextbillionai::Optimization::Shipment::Delivery::OrHash
22
+ ).void
23
+ end
24
+ attr_writer :delivery
25
+
26
+ # Specify the details of the pickup step of the shipment.
27
+ sig { returns(Nextbillionai::Optimization::Shipment::Pickup) }
28
+ attr_reader :pickup
29
+
30
+ sig do
31
+ params(
32
+ pickup: Nextbillionai::Optimization::Shipment::Pickup::OrHash
33
+ ).void
34
+ end
35
+ attr_writer :pickup
36
+
37
+ # This parameter defines the quantity that needs to be shipped. This attribute
38
+ # supports multidimensional quantities, to support shipment of quantities of
39
+ # different units/dimensions. It is recommended to keep the dimensions of amount
40
+ # in shipments and that of capacity in vehicles consistent.
41
+ #
42
+ # Please note that the amount will be added to the assigned vehicle’s initial
43
+ # load.
44
+ #
45
+ # Read more about the behavior of this attribute in the
46
+ # [Multi-Dimensional Parameters](#multi-dimensional-parameters) section.
47
+ sig { returns(T.nilable(T::Array[Integer])) }
48
+ attr_reader :amount
49
+
50
+ sig { params(amount: T::Array[Integer]).void }
51
+ attr_writer :amount
52
+
53
+ # Specify whether the shipment route should follow LIFO (last in, first out). Use
54
+ # this parameter when the loading or unloading sequence of cargo is important. The
55
+ # default value is \false\.
56
+ sig { returns(T.nilable(T::Boolean)) }
57
+ attr_reader :follow_lifo_order
58
+
59
+ sig { params(follow_lifo_order: T::Boolean).void }
60
+ attr_writer :follow_lifo_order
61
+
62
+ # Use this parameter to specify the type of loads which are incompatible with the
63
+ # shipment’s load type. Once this property is configured, the shipment can only be
64
+ # serviced by a vehicle which has not serviced any other task with an incompatible
65
+ # load_types . Add multiple load types to indicate all the types which are
66
+ # incompatible for this shipment. The incompatible load type considerations are
67
+ # ignored for the first task of the route.
68
+ #
69
+ # For example, an input value of \[“groceries”, “food”\] means that shipment’s
70
+ # load is incompatible with both groceries and food type of loads. Consequently,
71
+ # the optimizer will not assign this shipment to a vehicle which has served any
72
+ # task with load_types as either groceries or food.
73
+ #
74
+ # Please note that if the shipment is part of any relations then, configured
75
+ # incompatible_load_types might be ignored.
76
+ sig { returns(T.nilable(T::Array[String])) }
77
+ attr_reader :incompatible_load_types
78
+
79
+ sig { params(incompatible_load_types: T::Array[String]).void }
80
+ attr_writer :incompatible_load_types
81
+
82
+ # Specify a joint order group ID that this shipment is associated with. Tasks
83
+ # having the same joint order group ID are treated as a single unit: either all
84
+ # tasks in the group are assigned, or none are. Users can add tasks of both jobs
85
+ # and shipments types to a single joint order group by using the same unique ID.
86
+ # Please note that:
87
+ #
88
+ # - Each shipment in a single joint order group will be fulfilled by a unique
89
+ # vehicle.
90
+ # - Shipments belonging to a joint order group can be served in any sequence while
91
+ # maintaining the pickup -> delivery sequence for an individual shipment.
92
+ # - Joint order settings will not be effective if \solution\ or \relations\
93
+ # attributes are also provided in the input request.
94
+ sig { returns(T.nilable(Integer)) }
95
+ attr_reader :joint_order
96
+
97
+ sig { params(joint_order: Integer).void }
98
+ attr_writer :joint_order
99
+
100
+ # Use this parameter to specify the type of loads for the given shipment. Once
101
+ # this property is configured, the shipment can not be served by a vehicle which
102
+ # has serviced any task whose load is incompatible with any of theload_types
103
+ # provided in this input. The load type considerations are ignored for the first
104
+ # task of the route.
105
+ #
106
+ # For example, an input value of \[“groceries”, “food”\] means that shipment’s
107
+ # load characteristics belong to either one or both types. Consequently, the
108
+ # optimizer will assign this shipment to a vehicle which has served other tasks
109
+ # whose incompatible_load_types do not contain either groceries or food.
110
+ #
111
+ # Please note that if the shipment is part of any relations then, configured
112
+ # load_types might be ignored.
113
+ sig { returns(T.nilable(T::Array[String])) }
114
+ attr_reader :load_types
115
+
116
+ sig { params(load_types: T::Array[String]).void }
117
+ attr_writer :load_types
118
+
119
+ # Use this parameter to limit the drive time for which a shipment stays in the
120
+ # vehicle. The time-in-vehicle calculations start once the pickup leg of shipment
121
+ # is completed after serving any setup and service time that may have been
122
+ # configured for it. For the delivery leg, time-in-vehicle calculations wouldn’t
123
+ # consider any setup and service time that needs to be served for completing the
124
+ # delivery. The service or setup times of other tasks performed in between will
125
+ # also be not accumulated against the time-in-vehicle limit.
126
+ #
127
+ # Please note that this property would be overridden if any relations
128
+ # configuration is used except for “precedence” type. If “precedence” type
129
+ # relations is used then max_time_in_vehicle will override it.
130
+ sig { returns(T.nilable(Integer)) }
131
+ attr_reader :max_time_in_vehicle
132
+
133
+ sig { params(max_time_in_vehicle: Integer).void }
134
+ attr_writer :max_time_in_vehicle
135
+
136
+ # Specify the cost of keeping this shipment unassigned, namely, the cost of
137
+ # outsourcing the shipment. When provided, the optimizer weighs the cost of
138
+ # assigning the shipment against the cost of keeping it unassigned and chooses a
139
+ # solution with lower cost. In the solution, the outsourcing_cost of unassigned
140
+ # shipments is added to the total cost of the solution.
141
+ #
142
+ # If the outsourcing_cost is not provided, which is to say that the shipment can
143
+ # not be outsourced, then the optimizer tries to fulfill the shipment irrespective
144
+ # of the cost incurred, subject to other constraints.
145
+ #
146
+ # Please note that revenue and outsourcing_cost can not be specified
147
+ # simultaneously for a shipment. Also, the outsourcing_cost would override the
148
+ # priority settings of the shipment.
149
+ sig { returns(T.nilable(Integer)) }
150
+ attr_reader :outsourcing_cost
151
+
152
+ sig { params(outsourcing_cost: Integer).void }
153
+ attr_writer :outsourcing_cost
154
+
155
+ # Describe the priority of this shipment. The valid values are in the range of
156
+ # \[0, 100\]. Default value is 0.
157
+ #
158
+ # Please note that setting a priority will only decide whether this shipment will
159
+ # be assigned or not, but has nothing to do with the sequence of fulfilling
160
+ # shipments.
161
+ sig { returns(T.nilable(Integer)) }
162
+ attr_reader :priority
163
+
164
+ sig { params(priority: Integer).void }
165
+ attr_writer :priority
166
+
167
+ # Specify the revenue earned by completing this shipment. The optimizer uses the
168
+ # revenue input to identify the potential profit earned by fulfilling this
169
+ # shipment after taking into account the costs incurred to do so.
170
+ # Theoptions.objective and vehicles.costs input are taken into account to identify
171
+ # the costs of fulfilling the shipment.
172
+ #
173
+ # In general, the optimizer will prefer fulfilling the tasks with higher profits
174
+ # over the tasks with lower profits, should it need to reject some tasks in order
175
+ # to honor other constraints. In case the profit from fulfilling a shipment is
176
+ # negative, it will remain unassigned whatsoever.
177
+ sig { returns(T.nilable(Integer)) }
178
+ attr_reader :revenue
179
+
180
+ sig { params(revenue: Integer).void }
181
+ attr_writer :revenue
182
+
183
+ # Define the skills needed to complete the shipment. This attribute supports
184
+ # multidimensional skills allowing users to add multiple skills for a shipment.
185
+ #
186
+ # Read more about the behavior of this attribute in the
187
+ # [Multi-Dimensional Parameters](#multi-dimensional-parameters) section.
188
+ sig { returns(T.nilable(T::Array[Integer])) }
189
+ attr_reader :skills
190
+
191
+ sig { params(skills: T::Array[Integer]).void }
192
+ attr_writer :skills
193
+
194
+ # Specify the dimensions and alignment configurations for the cargo associated
195
+ # with the shipment. These inputs will be used to arrange the items into the
196
+ # loading compartment of the vehicle to utilize the three-dimensional space. If a
197
+ # shipment consists of several different items, each with its own dimensions,
198
+ # please specify the final characteristics for the task: total height, total
199
+ # depth, total width.
200
+ #
201
+ # Please note that vehicles which contain the volume input, will only be
202
+ # considered for arranging such items.
203
+ sig do
204
+ returns(T.nilable(Nextbillionai::Optimization::Shipment::Volume))
205
+ end
206
+ attr_reader :volume
207
+
208
+ sig do
209
+ params(
210
+ volume: Nextbillionai::Optimization::Shipment::Volume::OrHash
211
+ ).void
212
+ end
213
+ attr_writer :volume
214
+
215
+ # An array of integers specifying the IDs of the zone(s) that this shipment
216
+ # belongs to. The shipment can be fulfilled by all vehicles which are allowed to
217
+ # complete tasks in the zone(s) assigned to this shipment. If the pickup and
218
+ # delivery steps belong to different zones, then a vehicle should be allowed to
219
+ # fulfil tasks in both zones to take up such shipments. Please note following
220
+ # points about shipment zones:
221
+ #
222
+ # - If zone IDs are provided for any one of the shipments, then all other
223
+ # shipments should also be specified with zone IDs. Zone IDs provided here will
224
+ # override any zone geometries provided in the zones attribute and these IDs
225
+ # will be used for allocating appropriate vehicles.
226
+ # - Shipment steps can be auto-allocated to zones if this parameter is not
227
+ # specified while the zone geometries (either zones.geometry or
228
+ # zones.geofence_id) are provided.
229
+ # - Shipments not falling in any zones can be fulfilled by only those vehicles
230
+ # which are allowed to take up tasks outside zones as well. Refer to vehicles
231
+ # attribute for more information.
232
+ sig { returns(T.nilable(T::Array[Integer])) }
233
+ attr_reader :zones
234
+
235
+ sig { params(zones: T::Array[Integer]).void }
236
+ attr_writer :zones
237
+
238
+ sig do
239
+ params(
240
+ delivery: Nextbillionai::Optimization::Shipment::Delivery::OrHash,
241
+ pickup: Nextbillionai::Optimization::Shipment::Pickup::OrHash,
242
+ amount: T::Array[Integer],
243
+ follow_lifo_order: T::Boolean,
244
+ incompatible_load_types: T::Array[String],
245
+ joint_order: Integer,
246
+ load_types: T::Array[String],
247
+ max_time_in_vehicle: Integer,
248
+ outsourcing_cost: Integer,
249
+ priority: Integer,
250
+ revenue: Integer,
251
+ skills: T::Array[Integer],
252
+ volume: Nextbillionai::Optimization::Shipment::Volume::OrHash,
253
+ zones: T::Array[Integer]
254
+ ).returns(T.attached_class)
255
+ end
256
+ def self.new(
257
+ # Specify the details of the delivery step of the shipment.
258
+ delivery:,
259
+ # Specify the details of the pickup step of the shipment.
260
+ pickup:,
261
+ # This parameter defines the quantity that needs to be shipped. This attribute
262
+ # supports multidimensional quantities, to support shipment of quantities of
263
+ # different units/dimensions. It is recommended to keep the dimensions of amount
264
+ # in shipments and that of capacity in vehicles consistent.
265
+ #
266
+ # Please note that the amount will be added to the assigned vehicle’s initial
267
+ # load.
268
+ #
269
+ # Read more about the behavior of this attribute in the
270
+ # [Multi-Dimensional Parameters](#multi-dimensional-parameters) section.
271
+ amount: nil,
272
+ # Specify whether the shipment route should follow LIFO (last in, first out). Use
273
+ # this parameter when the loading or unloading sequence of cargo is important. The
274
+ # default value is \false\.
275
+ follow_lifo_order: nil,
276
+ # Use this parameter to specify the type of loads which are incompatible with the
277
+ # shipment’s load type. Once this property is configured, the shipment can only be
278
+ # serviced by a vehicle which has not serviced any other task with an incompatible
279
+ # load_types . Add multiple load types to indicate all the types which are
280
+ # incompatible for this shipment. The incompatible load type considerations are
281
+ # ignored for the first task of the route.
282
+ #
283
+ # For example, an input value of \[“groceries”, “food”\] means that shipment’s
284
+ # load is incompatible with both groceries and food type of loads. Consequently,
285
+ # the optimizer will not assign this shipment to a vehicle which has served any
286
+ # task with load_types as either groceries or food.
287
+ #
288
+ # Please note that if the shipment is part of any relations then, configured
289
+ # incompatible_load_types might be ignored.
290
+ incompatible_load_types: nil,
291
+ # Specify a joint order group ID that this shipment is associated with. Tasks
292
+ # having the same joint order group ID are treated as a single unit: either all
293
+ # tasks in the group are assigned, or none are. Users can add tasks of both jobs
294
+ # and shipments types to a single joint order group by using the same unique ID.
295
+ # Please note that:
296
+ #
297
+ # - Each shipment in a single joint order group will be fulfilled by a unique
298
+ # vehicle.
299
+ # - Shipments belonging to a joint order group can be served in any sequence while
300
+ # maintaining the pickup -> delivery sequence for an individual shipment.
301
+ # - Joint order settings will not be effective if \solution\ or \relations\
302
+ # attributes are also provided in the input request.
303
+ joint_order: nil,
304
+ # Use this parameter to specify the type of loads for the given shipment. Once
305
+ # this property is configured, the shipment can not be served by a vehicle which
306
+ # has serviced any task whose load is incompatible with any of theload_types
307
+ # provided in this input. The load type considerations are ignored for the first
308
+ # task of the route.
309
+ #
310
+ # For example, an input value of \[“groceries”, “food”\] means that shipment’s
311
+ # load characteristics belong to either one or both types. Consequently, the
312
+ # optimizer will assign this shipment to a vehicle which has served other tasks
313
+ # whose incompatible_load_types do not contain either groceries or food.
314
+ #
315
+ # Please note that if the shipment is part of any relations then, configured
316
+ # load_types might be ignored.
317
+ load_types: nil,
318
+ # Use this parameter to limit the drive time for which a shipment stays in the
319
+ # vehicle. The time-in-vehicle calculations start once the pickup leg of shipment
320
+ # is completed after serving any setup and service time that may have been
321
+ # configured for it. For the delivery leg, time-in-vehicle calculations wouldn’t
322
+ # consider any setup and service time that needs to be served for completing the
323
+ # delivery. The service or setup times of other tasks performed in between will
324
+ # also be not accumulated against the time-in-vehicle limit.
325
+ #
326
+ # Please note that this property would be overridden if any relations
327
+ # configuration is used except for “precedence” type. If “precedence” type
328
+ # relations is used then max_time_in_vehicle will override it.
329
+ max_time_in_vehicle: nil,
330
+ # Specify the cost of keeping this shipment unassigned, namely, the cost of
331
+ # outsourcing the shipment. When provided, the optimizer weighs the cost of
332
+ # assigning the shipment against the cost of keeping it unassigned and chooses a
333
+ # solution with lower cost. In the solution, the outsourcing_cost of unassigned
334
+ # shipments is added to the total cost of the solution.
335
+ #
336
+ # If the outsourcing_cost is not provided, which is to say that the shipment can
337
+ # not be outsourced, then the optimizer tries to fulfill the shipment irrespective
338
+ # of the cost incurred, subject to other constraints.
339
+ #
340
+ # Please note that revenue and outsourcing_cost can not be specified
341
+ # simultaneously for a shipment. Also, the outsourcing_cost would override the
342
+ # priority settings of the shipment.
343
+ outsourcing_cost: nil,
344
+ # Describe the priority of this shipment. The valid values are in the range of
345
+ # \[0, 100\]. Default value is 0.
346
+ #
347
+ # Please note that setting a priority will only decide whether this shipment will
348
+ # be assigned or not, but has nothing to do with the sequence of fulfilling
349
+ # shipments.
350
+ priority: nil,
351
+ # Specify the revenue earned by completing this shipment. The optimizer uses the
352
+ # revenue input to identify the potential profit earned by fulfilling this
353
+ # shipment after taking into account the costs incurred to do so.
354
+ # Theoptions.objective and vehicles.costs input are taken into account to identify
355
+ # the costs of fulfilling the shipment.
356
+ #
357
+ # In general, the optimizer will prefer fulfilling the tasks with higher profits
358
+ # over the tasks with lower profits, should it need to reject some tasks in order
359
+ # to honor other constraints. In case the profit from fulfilling a shipment is
360
+ # negative, it will remain unassigned whatsoever.
361
+ revenue: nil,
362
+ # Define the skills needed to complete the shipment. This attribute supports
363
+ # multidimensional skills allowing users to add multiple skills for a shipment.
364
+ #
365
+ # Read more about the behavior of this attribute in the
366
+ # [Multi-Dimensional Parameters](#multi-dimensional-parameters) section.
367
+ skills: nil,
368
+ # Specify the dimensions and alignment configurations for the cargo associated
369
+ # with the shipment. These inputs will be used to arrange the items into the
370
+ # loading compartment of the vehicle to utilize the three-dimensional space. If a
371
+ # shipment consists of several different items, each with its own dimensions,
372
+ # please specify the final characteristics for the task: total height, total
373
+ # depth, total width.
374
+ #
375
+ # Please note that vehicles which contain the volume input, will only be
376
+ # considered for arranging such items.
377
+ volume: nil,
378
+ # An array of integers specifying the IDs of the zone(s) that this shipment
379
+ # belongs to. The shipment can be fulfilled by all vehicles which are allowed to
380
+ # complete tasks in the zone(s) assigned to this shipment. If the pickup and
381
+ # delivery steps belong to different zones, then a vehicle should be allowed to
382
+ # fulfil tasks in both zones to take up such shipments. Please note following
383
+ # points about shipment zones:
384
+ #
385
+ # - If zone IDs are provided for any one of the shipments, then all other
386
+ # shipments should also be specified with zone IDs. Zone IDs provided here will
387
+ # override any zone geometries provided in the zones attribute and these IDs
388
+ # will be used for allocating appropriate vehicles.
389
+ # - Shipment steps can be auto-allocated to zones if this parameter is not
390
+ # specified while the zone geometries (either zones.geometry or
391
+ # zones.geofence_id) are provided.
392
+ # - Shipments not falling in any zones can be fulfilled by only those vehicles
393
+ # which are allowed to take up tasks outside zones as well. Refer to vehicles
394
+ # attribute for more information.
395
+ zones: nil
396
+ )
397
+ end
398
+
399
+ sig do
400
+ override.returns(
401
+ {
402
+ delivery: Nextbillionai::Optimization::Shipment::Delivery,
403
+ pickup: Nextbillionai::Optimization::Shipment::Pickup,
404
+ amount: T::Array[Integer],
405
+ follow_lifo_order: T::Boolean,
406
+ incompatible_load_types: T::Array[String],
407
+ joint_order: Integer,
408
+ load_types: T::Array[String],
409
+ max_time_in_vehicle: Integer,
410
+ outsourcing_cost: Integer,
411
+ priority: Integer,
412
+ revenue: Integer,
413
+ skills: T::Array[Integer],
414
+ volume: Nextbillionai::Optimization::Shipment::Volume,
415
+ zones: T::Array[Integer]
416
+ }
417
+ )
418
+ end
419
+ def to_hash
420
+ end
421
+
422
+ class Delivery < Nextbillionai::Internal::Type::BaseModel
423
+ OrHash =
424
+ T.type_alias do
425
+ T.any(
426
+ Nextbillionai::Optimization::Shipment::Delivery,
427
+ Nextbillionai::Internal::AnyHash
428
+ )
429
+ end
430
+
431
+ # Indicate the ID of this shipment delivery step. An error will be reported if
432
+ # there are duplicate IDs for multiple shipment deliveries. The IDs are case
433
+ # sensitive. Please note id is mandatory when using the shipments attribute.
434
+ sig { returns(String) }
435
+ attr_accessor :id
436
+
437
+ # Indicate the index of location for this shipment delivery. The index references
438
+ # the locations present in the location array. The valid range of value is \[0,
439
+ # length of location array).
440
+ #
441
+ # Please note location_index is mandatory when using the shipment attribute.
442
+ sig { returns(Integer) }
443
+ attr_accessor :location_index
444
+
445
+ # Specify a custom description for the shipment delivery step.
446
+ sig { returns(T.nilable(String)) }
447
+ attr_reader :description
448
+
449
+ sig { params(description: String).void }
450
+ attr_writer :description
451
+
452
+ # It determines the allowable delay, in seconds, to begin a shipment delivery
453
+ # after its designated time window has concluded. Please note that this parameter
454
+ # would override the constraint.max_visit_lateness (global) if both are specified.
455
+ sig { returns(T.nilable(Integer)) }
456
+ attr_reader :max_visit_lateness
457
+
458
+ sig { params(max_visit_lateness: Integer).void }
459
+ attr_writer :max_visit_lateness
460
+
461
+ # Specify any custom data that should be attached along with delivery fulfilment
462
+ # details in the step attribute of the optimized solution. Users can leverage this
463
+ # property to provide additional details/context when sharing information about
464
+ # the delivery step with integrated systems (TMS, Fleet Management, Driver
465
+ # dispatch etc).
466
+ #
467
+ # Please note that the metadata content must always be specified in a key : value
468
+ # pair format, where the “key” is always a string.
469
+ sig { returns(T.nilable(T.anything)) }
470
+ attr_reader :metadata
471
+
472
+ sig { params(metadata: T.anything).void }
473
+ attr_writer :metadata
474
+
475
+ # Use this parameter to prioritize completing the shipment delivery relative to
476
+ # certain other tasks. A task configured with a sequence_order of 2 will be done
477
+ # after the task with sequence_order of 1, but before the task with sequence_order
478
+ # of 3. Valid range of values for this input is \[0,100\].
479
+ #
480
+ # Please note that:
481
+ #
482
+ # - The shipment delivery's sequence order must be greater than or equal to its
483
+ # corresponding pickup's sequence order.
484
+ # - Only the tasks within the same route are compared and ordered as per their
485
+ # sequence_order.
486
+ # - Tasks without a sequence_order are not involved in the comparison.
487
+ # - Following is the precedence of sequence_order when used along side some of the
488
+ # other constraints:
489
+ #
490
+ # - relations are prioritized over sequence_order comparisons.
491
+ # - sequence_order will override order_grouping configurations.
492
+ sig { returns(T.nilable(Integer)) }
493
+ attr_reader :sequence_order
494
+
495
+ sig { params(sequence_order: Integer).void }
496
+ attr_writer :sequence_order
497
+
498
+ # Provide the time duration, in seconds, needed to complete the shipment delivery.
499
+ # Default value is 0.
500
+ sig { returns(T.nilable(Integer)) }
501
+ attr_reader :service
502
+
503
+ sig { params(service: Integer).void }
504
+ attr_writer :service
505
+
506
+ # Specify the set-up duration, in seconds, for the delivery. setup is the one-time
507
+ # effort needed apart from working on the original task- for example, effort to
508
+ # record some information for compliance, or effort to set-up the equipment, or
509
+ # perform any other action for completing all steps required to fulfil the job.
510
+ #
511
+ # Please note that setup time is applied only once for a given task location.
512
+ # setup time, unlike service time, is not repeated in case there are multiple
513
+ # tasks at the same location.
514
+ sig { returns(T.nilable(Integer)) }
515
+ attr_reader :setup
516
+
517
+ sig { params(setup: Integer).void }
518
+ attr_writer :setup
519
+
520
+ # Describe time periods within which the shipment delivery should start. The time
521
+ # periods should be expressed as a UNIX timestamp in seconds.
522
+ #
523
+ # Please note that the time periods should not overlap with each other and should
524
+ # always follow the format of \[start_timestamp, end_timestamp\].
525
+ sig { returns(T.nilable(T::Array[T::Array[Integer]])) }
526
+ attr_reader :time_windows
527
+
528
+ sig { params(time_windows: T::Array[T::Array[Integer]]).void }
529
+ attr_writer :time_windows
530
+
531
+ # Specify the details of the delivery step of the shipment.
532
+ sig do
533
+ params(
534
+ id: String,
535
+ location_index: Integer,
536
+ description: String,
537
+ max_visit_lateness: Integer,
538
+ metadata: T.anything,
539
+ sequence_order: Integer,
540
+ service: Integer,
541
+ setup: Integer,
542
+ time_windows: T::Array[T::Array[Integer]]
543
+ ).returns(T.attached_class)
544
+ end
545
+ def self.new(
546
+ # Indicate the ID of this shipment delivery step. An error will be reported if
547
+ # there are duplicate IDs for multiple shipment deliveries. The IDs are case
548
+ # sensitive. Please note id is mandatory when using the shipments attribute.
549
+ id:,
550
+ # Indicate the index of location for this shipment delivery. The index references
551
+ # the locations present in the location array. The valid range of value is \[0,
552
+ # length of location array).
553
+ #
554
+ # Please note location_index is mandatory when using the shipment attribute.
555
+ location_index:,
556
+ # Specify a custom description for the shipment delivery step.
557
+ description: nil,
558
+ # It determines the allowable delay, in seconds, to begin a shipment delivery
559
+ # after its designated time window has concluded. Please note that this parameter
560
+ # would override the constraint.max_visit_lateness (global) if both are specified.
561
+ max_visit_lateness: nil,
562
+ # Specify any custom data that should be attached along with delivery fulfilment
563
+ # details in the step attribute of the optimized solution. Users can leverage this
564
+ # property to provide additional details/context when sharing information about
565
+ # the delivery step with integrated systems (TMS, Fleet Management, Driver
566
+ # dispatch etc).
567
+ #
568
+ # Please note that the metadata content must always be specified in a key : value
569
+ # pair format, where the “key” is always a string.
570
+ metadata: nil,
571
+ # Use this parameter to prioritize completing the shipment delivery relative to
572
+ # certain other tasks. A task configured with a sequence_order of 2 will be done
573
+ # after the task with sequence_order of 1, but before the task with sequence_order
574
+ # of 3. Valid range of values for this input is \[0,100\].
575
+ #
576
+ # Please note that:
577
+ #
578
+ # - The shipment delivery's sequence order must be greater than or equal to its
579
+ # corresponding pickup's sequence order.
580
+ # - Only the tasks within the same route are compared and ordered as per their
581
+ # sequence_order.
582
+ # - Tasks without a sequence_order are not involved in the comparison.
583
+ # - Following is the precedence of sequence_order when used along side some of the
584
+ # other constraints:
585
+ #
586
+ # - relations are prioritized over sequence_order comparisons.
587
+ # - sequence_order will override order_grouping configurations.
588
+ sequence_order: nil,
589
+ # Provide the time duration, in seconds, needed to complete the shipment delivery.
590
+ # Default value is 0.
591
+ service: nil,
592
+ # Specify the set-up duration, in seconds, for the delivery. setup is the one-time
593
+ # effort needed apart from working on the original task- for example, effort to
594
+ # record some information for compliance, or effort to set-up the equipment, or
595
+ # perform any other action for completing all steps required to fulfil the job.
596
+ #
597
+ # Please note that setup time is applied only once for a given task location.
598
+ # setup time, unlike service time, is not repeated in case there are multiple
599
+ # tasks at the same location.
600
+ setup: nil,
601
+ # Describe time periods within which the shipment delivery should start. The time
602
+ # periods should be expressed as a UNIX timestamp in seconds.
603
+ #
604
+ # Please note that the time periods should not overlap with each other and should
605
+ # always follow the format of \[start_timestamp, end_timestamp\].
606
+ time_windows: nil
607
+ )
608
+ end
609
+
610
+ sig do
611
+ override.returns(
612
+ {
613
+ id: String,
614
+ location_index: Integer,
615
+ description: String,
616
+ max_visit_lateness: Integer,
617
+ metadata: T.anything,
618
+ sequence_order: Integer,
619
+ service: Integer,
620
+ setup: Integer,
621
+ time_windows: T::Array[T::Array[Integer]]
622
+ }
623
+ )
624
+ end
625
+ def to_hash
626
+ end
627
+ end
628
+
629
+ class Pickup < Nextbillionai::Internal::Type::BaseModel
630
+ OrHash =
631
+ T.type_alias do
632
+ T.any(
633
+ Nextbillionai::Optimization::Shipment::Pickup,
634
+ Nextbillionai::Internal::AnyHash
635
+ )
636
+ end
637
+
638
+ # Indicate the ID of this shipment pickup step. An error will be reported if there
639
+ # are duplicate IDs for multiple shipment pick-ups. The IDs are case-sensitive.
640
+ # Please note id is mandatory when using the shipments attribute.
641
+ sig { returns(String) }
642
+ attr_accessor :id
643
+
644
+ # Indicate the index of the location for this shipment pickup. The index
645
+ # references the locations present in the location array. The valid range of value
646
+ # is \[0, length of location array).
647
+ sig { returns(Integer) }
648
+ attr_accessor :location_index
649
+
650
+ # Specify a custom description for the shipment pickup step.
651
+ sig { returns(T.nilable(String)) }
652
+ attr_reader :description
653
+
654
+ sig { params(description: String).void }
655
+ attr_writer :description
656
+
657
+ # It determines the allowable delay, in seconds, to begin a shipment pickup after
658
+ # its designated time window has concluded. Please note that this parameter would
659
+ # override the constraint.max_visit_lateness (global) if both are specified.
660
+ sig { returns(T.nilable(Integer)) }
661
+ attr_reader :max_visit_lateness
662
+
663
+ sig { params(max_visit_lateness: Integer).void }
664
+ attr_writer :max_visit_lateness
665
+
666
+ # Specify any custom data that should be attached along with pickup fulfilment
667
+ # details in the steps attribute of the optimized solution. Users can leverage
668
+ # this property to provide additional details/context when sharing information
669
+ # about the pickup step with integrated systems (TMS, Fleet Management, Driver
670
+ # dispatch etc).
671
+ #
672
+ # Please note that the metadata content must always be specified in akey : value
673
+ # pair format, where the “key” is always a string.
674
+ sig { returns(T.nilable(T.anything)) }
675
+ attr_reader :metadata
676
+
677
+ sig { params(metadata: T.anything).void }
678
+ attr_writer :metadata
679
+
680
+ # Use this parameter to prioritize completing the shipment pickup relative to
681
+ # certain other tasks. A task configured with a sequence_order of 2 will be done
682
+ # after the task with sequence_order of 1, but before the task with sequence_order
683
+ # of 3. Valid range of values for this input is \[0,100\].
684
+ #
685
+ # Please note that:
686
+ #
687
+ # - The shipment pickups's sequence order must be lesser than or equal to its
688
+ # corresponding delivery's sequence order.
689
+ # - Only the tasks within the same route are compared and ordered as per their
690
+ # sequence_order.
691
+ # - Tasks without a sequence_order are not involved in the comparison.
692
+ # - Following is the precedence of sequence_order when used along side some of the
693
+ # other constraints:
694
+ #
695
+ # - relations are prioritized over sequence_order comparisons.
696
+ # - sequence_order will override order_grouping configurations.
697
+ sig { returns(T.nilable(Integer)) }
698
+ attr_reader :sequence_order
699
+
700
+ sig { params(sequence_order: Integer).void }
701
+ attr_writer :sequence_order
702
+
703
+ # Provide the time duration, in seconds, needed to complete the shipment pickup.
704
+ # Default value is 0.
705
+ sig { returns(T.nilable(Integer)) }
706
+ attr_reader :service
707
+
708
+ sig { params(service: Integer).void }
709
+ attr_writer :service
710
+
711
+ # Specify the set-up duration, in seconds, for the pickup. setup is the one-time
712
+ # effort needed apart from working on the original task- for example, effort to
713
+ # record some information for compliance, or effort to set-up the equipment, or
714
+ # perform any other action for completing all steps required to fulfil the job.
715
+ #
716
+ # Please note that setup time is applied only once for a given task location.
717
+ # setup time, unlike service time, is not repeated in case there are multiple
718
+ # tasks at the same location.
719
+ sig { returns(T.nilable(Integer)) }
720
+ attr_reader :setup
721
+
722
+ sig { params(setup: Integer).void }
723
+ attr_writer :setup
724
+
725
+ # Describe time periods within which the shipment pickup should be start. The time
726
+ # periods should be expressed as a UNIX timestamp in seconds.
727
+ #
728
+ # Please note that the time periods should not overlap with each other and should
729
+ # always follow the format of \[start_timestamp, end_timestamp\]
730
+ sig { returns(T.nilable(T::Array[T::Array[Integer]])) }
731
+ attr_reader :time_windows
732
+
733
+ sig { params(time_windows: T::Array[T::Array[Integer]]).void }
734
+ attr_writer :time_windows
735
+
736
+ # Specify the details of the pickup step of the shipment.
737
+ sig do
738
+ params(
739
+ id: String,
740
+ location_index: Integer,
741
+ description: String,
742
+ max_visit_lateness: Integer,
743
+ metadata: T.anything,
744
+ sequence_order: Integer,
745
+ service: Integer,
746
+ setup: Integer,
747
+ time_windows: T::Array[T::Array[Integer]]
748
+ ).returns(T.attached_class)
749
+ end
750
+ def self.new(
751
+ # Indicate the ID of this shipment pickup step. An error will be reported if there
752
+ # are duplicate IDs for multiple shipment pick-ups. The IDs are case-sensitive.
753
+ # Please note id is mandatory when using the shipments attribute.
754
+ id:,
755
+ # Indicate the index of the location for this shipment pickup. The index
756
+ # references the locations present in the location array. The valid range of value
757
+ # is \[0, length of location array).
758
+ location_index:,
759
+ # Specify a custom description for the shipment pickup step.
760
+ description: nil,
761
+ # It determines the allowable delay, in seconds, to begin a shipment pickup after
762
+ # its designated time window has concluded. Please note that this parameter would
763
+ # override the constraint.max_visit_lateness (global) if both are specified.
764
+ max_visit_lateness: nil,
765
+ # Specify any custom data that should be attached along with pickup fulfilment
766
+ # details in the steps attribute of the optimized solution. Users can leverage
767
+ # this property to provide additional details/context when sharing information
768
+ # about the pickup step with integrated systems (TMS, Fleet Management, Driver
769
+ # dispatch etc).
770
+ #
771
+ # Please note that the metadata content must always be specified in akey : value
772
+ # pair format, where the “key” is always a string.
773
+ metadata: nil,
774
+ # Use this parameter to prioritize completing the shipment pickup relative to
775
+ # certain other tasks. A task configured with a sequence_order of 2 will be done
776
+ # after the task with sequence_order of 1, but before the task with sequence_order
777
+ # of 3. Valid range of values for this input is \[0,100\].
778
+ #
779
+ # Please note that:
780
+ #
781
+ # - The shipment pickups's sequence order must be lesser than or equal to its
782
+ # corresponding delivery's sequence order.
783
+ # - Only the tasks within the same route are compared and ordered as per their
784
+ # sequence_order.
785
+ # - Tasks without a sequence_order are not involved in the comparison.
786
+ # - Following is the precedence of sequence_order when used along side some of the
787
+ # other constraints:
788
+ #
789
+ # - relations are prioritized over sequence_order comparisons.
790
+ # - sequence_order will override order_grouping configurations.
791
+ sequence_order: nil,
792
+ # Provide the time duration, in seconds, needed to complete the shipment pickup.
793
+ # Default value is 0.
794
+ service: nil,
795
+ # Specify the set-up duration, in seconds, for the pickup. setup is the one-time
796
+ # effort needed apart from working on the original task- for example, effort to
797
+ # record some information for compliance, or effort to set-up the equipment, or
798
+ # perform any other action for completing all steps required to fulfil the job.
799
+ #
800
+ # Please note that setup time is applied only once for a given task location.
801
+ # setup time, unlike service time, is not repeated in case there are multiple
802
+ # tasks at the same location.
803
+ setup: nil,
804
+ # Describe time periods within which the shipment pickup should be start. The time
805
+ # periods should be expressed as a UNIX timestamp in seconds.
806
+ #
807
+ # Please note that the time periods should not overlap with each other and should
808
+ # always follow the format of \[start_timestamp, end_timestamp\]
809
+ time_windows: nil
810
+ )
811
+ end
812
+
813
+ sig do
814
+ override.returns(
815
+ {
816
+ id: String,
817
+ location_index: Integer,
818
+ description: String,
819
+ max_visit_lateness: Integer,
820
+ metadata: T.anything,
821
+ sequence_order: Integer,
822
+ service: Integer,
823
+ setup: Integer,
824
+ time_windows: T::Array[T::Array[Integer]]
825
+ }
826
+ )
827
+ end
828
+ def to_hash
829
+ end
830
+ end
831
+
832
+ class Volume < Nextbillionai::Internal::Type::BaseModel
833
+ OrHash =
834
+ T.type_alias do
835
+ T.any(
836
+ Nextbillionai::Optimization::Shipment::Volume,
837
+ Nextbillionai::Internal::AnyHash
838
+ )
839
+ end
840
+
841
+ # Refers to the orientation of the cargo in the loading compartment. It supports
842
+ # the following values:
843
+ #
844
+ # - **" "** : A blank space to indicate that the dimension check for the cargo
845
+ # should be skipped. This is also the default value.
846
+ # - **strict :** In this orientation, the cargo must fit within the vehicle’s
847
+ # dimensions exactly as is—no rotation is allowed. All dimensions of the cargo
848
+ # must be less than or equal to the corresponding dimensions of the vehicle. If
849
+ # any dimension exceeds that of the vehicle, the cargo cannot be loaded.
850
+ # - **parallel :** With parallel orientation, the cargo can be rotated around any
851
+ # one of the axes to help it fit into the loading compartment. For example, if
852
+ # the cargo is wider than the vehicle, it can still be loaded by rotating it
853
+ # around the vertical axis (so the width aligns with the vehicle’s depth) or the
854
+ # horizontal axis (so the width aligns with the vehicle’s height). Using this
855
+ # orientation, even a cargo whose one dimension is larger than the corresponding
856
+ # dimension of the vehicle but smaller than other dimensions, can also be
857
+ # loaded.
858
+ # - **fixed_bottom :** In this orientation, the cargo can only be rotated around
859
+ # the vertical axis, meaning its base stays fixed and it cannot be tilted or
860
+ # turned over. The height of the cargo remains aligned with the vehicle’s height
861
+ # and cannot be adjusted. As a result, if the cargo’s height exceeds the
862
+ # vehicle’s available height, it cannot be loaded into the compartment.
863
+ sig do
864
+ returns(
865
+ T.nilable(
866
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::OrSymbol
867
+ )
868
+ )
869
+ end
870
+ attr_reader :alignment
871
+
872
+ sig do
873
+ params(
874
+ alignment:
875
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::OrSymbol
876
+ ).void
877
+ end
878
+ attr_writer :alignment
879
+
880
+ # Cargo length, in meters.
881
+ sig { returns(T.nilable(Float)) }
882
+ attr_reader :depth
883
+
884
+ sig { params(depth: Float).void }
885
+ attr_writer :depth
886
+
887
+ # Cargo height, in meters.
888
+ sig { returns(T.nilable(Float)) }
889
+ attr_reader :height
890
+
891
+ sig { params(height: Float).void }
892
+ attr_writer :height
893
+
894
+ # Cargo width, in meters.
895
+ sig { returns(T.nilable(Float)) }
896
+ attr_reader :width
897
+
898
+ sig { params(width: Float).void }
899
+ attr_writer :width
900
+
901
+ # Specify the dimensions and alignment configurations for the cargo associated
902
+ # with the shipment. These inputs will be used to arrange the items into the
903
+ # loading compartment of the vehicle to utilize the three-dimensional space. If a
904
+ # shipment consists of several different items, each with its own dimensions,
905
+ # please specify the final characteristics for the task: total height, total
906
+ # depth, total width.
907
+ #
908
+ # Please note that vehicles which contain the volume input, will only be
909
+ # considered for arranging such items.
910
+ sig do
911
+ params(
912
+ alignment:
913
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::OrSymbol,
914
+ depth: Float,
915
+ height: Float,
916
+ width: Float
917
+ ).returns(T.attached_class)
918
+ end
919
+ def self.new(
920
+ # Refers to the orientation of the cargo in the loading compartment. It supports
921
+ # the following values:
922
+ #
923
+ # - **" "** : A blank space to indicate that the dimension check for the cargo
924
+ # should be skipped. This is also the default value.
925
+ # - **strict :** In this orientation, the cargo must fit within the vehicle’s
926
+ # dimensions exactly as is—no rotation is allowed. All dimensions of the cargo
927
+ # must be less than or equal to the corresponding dimensions of the vehicle. If
928
+ # any dimension exceeds that of the vehicle, the cargo cannot be loaded.
929
+ # - **parallel :** With parallel orientation, the cargo can be rotated around any
930
+ # one of the axes to help it fit into the loading compartment. For example, if
931
+ # the cargo is wider than the vehicle, it can still be loaded by rotating it
932
+ # around the vertical axis (so the width aligns with the vehicle’s depth) or the
933
+ # horizontal axis (so the width aligns with the vehicle’s height). Using this
934
+ # orientation, even a cargo whose one dimension is larger than the corresponding
935
+ # dimension of the vehicle but smaller than other dimensions, can also be
936
+ # loaded.
937
+ # - **fixed_bottom :** In this orientation, the cargo can only be rotated around
938
+ # the vertical axis, meaning its base stays fixed and it cannot be tilted or
939
+ # turned over. The height of the cargo remains aligned with the vehicle’s height
940
+ # and cannot be adjusted. As a result, if the cargo’s height exceeds the
941
+ # vehicle’s available height, it cannot be loaded into the compartment.
942
+ alignment: nil,
943
+ # Cargo length, in meters.
944
+ depth: nil,
945
+ # Cargo height, in meters.
946
+ height: nil,
947
+ # Cargo width, in meters.
948
+ width: nil
949
+ )
950
+ end
951
+
952
+ sig do
953
+ override.returns(
954
+ {
955
+ alignment:
956
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::OrSymbol,
957
+ depth: Float,
958
+ height: Float,
959
+ width: Float
960
+ }
961
+ )
962
+ end
963
+ def to_hash
964
+ end
965
+
966
+ # Refers to the orientation of the cargo in the loading compartment. It supports
967
+ # the following values:
968
+ #
969
+ # - **" "** : A blank space to indicate that the dimension check for the cargo
970
+ # should be skipped. This is also the default value.
971
+ # - **strict :** In this orientation, the cargo must fit within the vehicle’s
972
+ # dimensions exactly as is—no rotation is allowed. All dimensions of the cargo
973
+ # must be less than or equal to the corresponding dimensions of the vehicle. If
974
+ # any dimension exceeds that of the vehicle, the cargo cannot be loaded.
975
+ # - **parallel :** With parallel orientation, the cargo can be rotated around any
976
+ # one of the axes to help it fit into the loading compartment. For example, if
977
+ # the cargo is wider than the vehicle, it can still be loaded by rotating it
978
+ # around the vertical axis (so the width aligns with the vehicle’s depth) or the
979
+ # horizontal axis (so the width aligns with the vehicle’s height). Using this
980
+ # orientation, even a cargo whose one dimension is larger than the corresponding
981
+ # dimension of the vehicle but smaller than other dimensions, can also be
982
+ # loaded.
983
+ # - **fixed_bottom :** In this orientation, the cargo can only be rotated around
984
+ # the vertical axis, meaning its base stays fixed and it cannot be tilted or
985
+ # turned over. The height of the cargo remains aligned with the vehicle’s height
986
+ # and cannot be adjusted. As a result, if the cargo’s height exceeds the
987
+ # vehicle’s available height, it cannot be loaded into the compartment.
988
+ module Alignment
989
+ extend Nextbillionai::Internal::Type::Enum
990
+
991
+ TaggedSymbol =
992
+ T.type_alias do
993
+ T.all(
994
+ Symbol,
995
+ Nextbillionai::Optimization::Shipment::Volume::Alignment
996
+ )
997
+ end
998
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
999
+
1000
+ STRICT =
1001
+ T.let(
1002
+ :strict,
1003
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::TaggedSymbol
1004
+ )
1005
+ PARALLEL =
1006
+ T.let(
1007
+ :parallel,
1008
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::TaggedSymbol
1009
+ )
1010
+ FIXED_BOTTOM =
1011
+ T.let(
1012
+ :fixed_bottom,
1013
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::TaggedSymbol
1014
+ )
1015
+
1016
+ sig do
1017
+ override.returns(
1018
+ T::Array[
1019
+ Nextbillionai::Optimization::Shipment::Volume::Alignment::TaggedSymbol
1020
+ ]
1021
+ )
1022
+ end
1023
+ def self.values
1024
+ end
1025
+ end
1026
+ end
1027
+ end
1028
+ end
1029
+ end
1030
+ end