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,1841 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Nextbillionai
4
+ module Models
5
+ module Optimization
6
+ # @see Nextbillionai::Resources::Optimization::V2#submit
7
+ class V2SubmitParams < Nextbillionai::Internal::Type::BaseModel
8
+ extend Nextbillionai::Internal::Type::RequestParameters::Converter
9
+ include Nextbillionai::Internal::Type::RequestParameters
10
+
11
+ # @!attribute key
12
+ # A key is a unique identifier that is required to authenticate a request to the
13
+ # API.
14
+ #
15
+ # @return [String]
16
+ required :key, String
17
+
18
+ # @!attribute locations
19
+ # The locations object is used to define all the locations that will be used
20
+ # during the optimization process. Read more about this attribute in the
21
+ # [Location Object](#location-object) section.
22
+ #
23
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Locations]
24
+ required :locations, -> { Nextbillionai::Optimization::V2SubmitParams::Locations }
25
+
26
+ # @!attribute vehicles
27
+ # The vehicles attribute describes the characteristics and constraints of the
28
+ # vehicles that will be used for fulfilling the tasks. Read more about this
29
+ # attribute in the [Vehicle Object](#vehicle-object) section.
30
+ #
31
+ # @return [Array<Nextbillionai::Models::Optimization::Vehicle>]
32
+ required :vehicles,
33
+ -> {
34
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Vehicle]
35
+ }
36
+
37
+ # @!attribute cost_matrix
38
+ # An array of arrays to denote the user-defined costs of traveling between each
39
+ # pair of geographic coordinates mentioned in the location array. The number of
40
+ # arrays should be equal to the number of coordinate points mentioned in the
41
+ # location array and each array should contain the same number of elements as
42
+ # well. Please note that cost_matrix is effective only when
43
+ # travel_cost=customized. Read more about this attribute in the
44
+ # [Custom Cost Matrix](#custom-cost-matrix) section.
45
+ #
46
+ # @return [Array<Array<Integer>>, nil]
47
+ optional :cost_matrix,
48
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
49
+
50
+ # @!attribute depots
51
+ # depots object is used to collect the details of a depot. Depots can be used as a
52
+ # starting point and/or ending point for the routes and vehicles. They also can be
53
+ # used to fulfil pickup and delivery typejobs . The loads which are to be
54
+ # delivered at task locations will be picked from depots and loads picked-up from
55
+ # task locations will be delivered back to the depots. A depot can be configured
56
+ # using the following fields:
57
+ #
58
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Depot>, nil]
59
+ optional :depots,
60
+ -> {
61
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Depot]
62
+ }
63
+
64
+ # @!attribute description
65
+ # Define the optimization job using any custom message. This description is
66
+ # returned as is in the response.
67
+ #
68
+ # @return [String, nil]
69
+ optional :description, String
70
+
71
+ # @!attribute distance_matrix
72
+ # An array of arrays to denote the user-defined distances, in meters, for
73
+ # travelling between each pair of geographic coordinates mentioned in the location
74
+ # array. When this input is provided, actual distances between the locations will
75
+ # be ignored in favor of the values provided in this input for any distance
76
+ # calculations during the optimization process. The values provided here will also
77
+ # be used for cost calculations when travel_cost is “distance”.
78
+ #
79
+ # The number of arrays in the input should be equal to the number of coordinate
80
+ # points mentioned in the location array and each array, in turn, should contain
81
+ # the same number of elements as well.
82
+ #
83
+ # **Note:**
84
+ #
85
+ # - duration_matrix is mandatory when usingdistance_matrix.
86
+ # - When using distance_matrix route geometry will not be available in the
87
+ # optimized solution.
88
+ #
89
+ # @return [Array<Array<Integer>>, nil]
90
+ optional :distance_matrix,
91
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
92
+
93
+ # @!attribute duration_matrix
94
+ # An array of arrays to denote the user-defined durations, in seconds, for
95
+ # travelling between each pair of geographic coordinates mentioned in the location
96
+ # array. When this input is provided, actual durations between the locations will
97
+ # be ignored in favor of the values provided in the matrix for any ETA
98
+ # calculations during the optimization process. The values provided in the matrix
99
+ # will also be used for cost calculations when travel_cost is “duration”.
100
+ #
101
+ # The number of arrays in the input should be equal to the number of coordinate
102
+ # points mentioned in the location array and each array, in turn, should contain
103
+ # the same number of elements as well.
104
+ #
105
+ # Please note that, unlike distance_matrix, duration_matrix can be used
106
+ # independently in following cases:
107
+ #
108
+ # - when travel_cost is “duration”
109
+ # - when travel_cost is “customized” and a cost_matrix is provided
110
+ #
111
+ # Also, the route geometry will not be available in the optimized solution when
112
+ # using duration_matrix.
113
+ #
114
+ # @return [Array<Array<Integer>>, nil]
115
+ optional :duration_matrix,
116
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
117
+
118
+ # @!attribute existing_solution_id
119
+ # The previous optimization request id used to retrieve solution for
120
+ # reoptimization
121
+ #
122
+ # @return [String, nil]
123
+ optional :existing_solution_id, String
124
+
125
+ # @!attribute jobs
126
+ # jobs object is used to collect the details of a particular job or task that
127
+ # needs to be completed as part of the optimization process. Each job can have
128
+ # either a pickup or delivery step, but not both. Read more about this attribute
129
+ # in the [Job Object](#job-object) section.
130
+ #
131
+ # Please note that either the jobs or the shipments attribute should be specified
132
+ # to build a valid request.
133
+ #
134
+ # @return [Array<Nextbillionai::Models::Optimization::Job>, nil]
135
+ optional :jobs, -> { Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Job] }
136
+
137
+ # @!attribute options
138
+ # It represents the set of options that can be used to configure optimization
139
+ # algorithms so that the solver provides a solution that meets the desired
140
+ # business objectives.
141
+ #
142
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options, nil]
143
+ optional :options, -> { Nextbillionai::Optimization::V2SubmitParams::Options }
144
+
145
+ # @!attribute relations
146
+ # relations attribute is an array of individual relation objects. type parameter
147
+ # and steps object are mandatory when using this attribute.
148
+ #
149
+ # Please note:
150
+ #
151
+ # - The soft constraints are **not** effective when using the relations attribute.
152
+ # - In case a given relation can't be satisfied, the optimizer will flag all the
153
+ # tasks involved in that "relation" as unassigned.
154
+ #
155
+ # Read more about this attribute in the [Relations Object](#relations-object)
156
+ # section.
157
+ #
158
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation>, nil]
159
+ optional :relations,
160
+ -> {
161
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Relation]
162
+ }
163
+
164
+ # @!attribute shipments
165
+ # The shipments object is used to collect the details of shipments that need to be
166
+ # completed as part of the optimization process.
167
+ #
168
+ # Each shipment should have a pickup and the corresponding delivery step.
169
+ #
170
+ # Please note that either the jobs or the shipments attribute should be specified
171
+ # to build a valid request.
172
+ #
173
+ # @return [Array<Nextbillionai::Models::Optimization::Shipment>, nil]
174
+ optional :shipments,
175
+ -> {
176
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::Shipment]
177
+ }
178
+
179
+ # @!attribute solution
180
+ # This attribute is related to the re-optimization feature. It allows for the
181
+ # previous optimization result to be provided in case new orders are received and
182
+ # the solution needs to be re-planned. The solution attribute should contain the
183
+ # same routes as the previous optimization result. solution attribute is an array
184
+ # of objects with each object corresponding to one route.
185
+ #
186
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution>, nil]
187
+ optional :solution,
188
+ -> {
189
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Solution]
190
+ }
191
+
192
+ # @!attribute unassigned
193
+ # unassigned attribute is related to the re-optimization feature. This attribute
194
+ # should contain the tasks that were not assigned during an earlier optimization
195
+ # process. Please note that the unassigned part in request should be consistent
196
+ # with the unassigned part in the previous optimization result.
197
+ #
198
+ # Users can reduce the number of unassigned tasks in the re-optimized solution, by
199
+ # following strategies such as:
200
+ #
201
+ # - Extending the time windows for vehicles or tasks to give more flexibility
202
+ # - Adding more vehicles to the optimization problem
203
+ # - Adjusting the priority of different tasks to balance the workload more evenly
204
+ # - Modifying other constraints or parameters to make the problem more solvable
205
+ #
206
+ # Ultimately, the goal is to minimize the number of unassigned tasks while still
207
+ # meeting all the necessary constraints and objectives.
208
+ #
209
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned, nil]
210
+ optional :unassigned, -> { Nextbillionai::Optimization::V2SubmitParams::Unassigned }
211
+
212
+ # @!attribute zones
213
+ # An array of objects to specify geometry of all the zones involved. Each object
214
+ # corresponds to a single zone. A valid zone can be a
215
+ # [geoJSON](https://datatracker.ietf.org/doc/html/rfc7946#page-9) polygon,
216
+ # multi-polygon or a geofence created using
217
+ # [NextBillion.ai](http://NextBillion.ai)’s
218
+ # [Geofence API](https://docs.nextbillion.ai/docs/tracking/api/geofence).
219
+ #
220
+ # Please note that
221
+ #
222
+ # - Each zone should have a geometry specified either throughgeometry or through
223
+ # the geofence_id parameter.
224
+ # - When zone IDs are not provided for individual tasks (jobs or shipments) then
225
+ # the API will automatically allocate zones based on the task’s geolocation and
226
+ # the geometries of the zones provided here. Otherwise, if the zone IDs are
227
+ # provided while configuring individual tasks, the zone IDs will override the
228
+ # geometries provided here.
229
+ #
230
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Zone>, nil]
231
+ optional :zones,
232
+ -> {
233
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Zone]
234
+ }
235
+
236
+ # @!method initialize(key:, locations:, vehicles:, cost_matrix: nil, depots: nil, description: nil, distance_matrix: nil, duration_matrix: nil, existing_solution_id: nil, jobs: nil, options: nil, relations: nil, shipments: nil, solution: nil, unassigned: nil, zones: nil, request_options: {})
237
+ # Some parameter documentations has been truncated, see
238
+ # {Nextbillionai::Models::Optimization::V2SubmitParams} for more details.
239
+ #
240
+ # @param key [String] A key is a unique identifier that is required to authenticate a request to the A
241
+ #
242
+ # @param locations [Nextbillionai::Models::Optimization::V2SubmitParams::Locations] The locations object is used to define all the locations that will be used durin
243
+ #
244
+ # @param vehicles [Array<Nextbillionai::Models::Optimization::Vehicle>] The vehicles attribute describes the characteristics and constraints of the vehi
245
+ #
246
+ # @param cost_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined costs of traveling between each pa
247
+ #
248
+ # @param depots [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Depot>] depots object is used to collect the details of a depot. Depots can be used as a
249
+ #
250
+ # @param description [String] Define the optimization job using any custom message. This description is return
251
+ #
252
+ # @param distance_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined distances, in meters, for travelli
253
+ #
254
+ # @param duration_matrix [Array<Array<Integer>>] An array of arrays to denote the user-defined durations, in seconds, for travell
255
+ #
256
+ # @param existing_solution_id [String] The previous optimization request id used to retrieve solution for reoptimizatio
257
+ #
258
+ # @param jobs [Array<Nextbillionai::Models::Optimization::Job>] jobs object is used to collect the details of a particular job or task that need
259
+ #
260
+ # @param options [Nextbillionai::Models::Optimization::V2SubmitParams::Options] It represents the set of options that can be used to configure optimization algo
261
+ #
262
+ # @param relations [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation>] relations attribute is an array of individual relation objects. type parameter a
263
+ #
264
+ # @param shipments [Array<Nextbillionai::Models::Optimization::Shipment>] The shipments object is used to collect the details of shipments that need to be
265
+ #
266
+ # @param solution [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution>] This attribute is related to the re-optimization feature. It allows for the prev
267
+ #
268
+ # @param unassigned [Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned] unassigned attribute is related to the re-optimization feature. This attribute s
269
+ #
270
+ # @param zones [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Zone>] An array of objects to specify geometry of all the zones involved. Each object c
271
+ #
272
+ # @param request_options [Nextbillionai::RequestOptions, Hash{Symbol=>Object}]
273
+
274
+ class Locations < Nextbillionai::Internal::Type::BaseModel
275
+ # @!attribute location
276
+ # Indicate all the location coordinates that will be used during optimization. The
277
+ # coordinates should be specified in the format “latitude, longitude”. It is
278
+ # recommended to avoid adding duplicate location coordinates to this array. In
279
+ # case there are multiple tasks at the same location, users can repeat the index
280
+ # of the location while configuring all such tasks.
281
+ #
282
+ # Please use this array to determine the index of a location when setting the
283
+ # location_index parameter in jobs, shipments, vehicles or other parts of the
284
+ # request. The length of this array determines the valid values for location_index
285
+ # parameter.
286
+ #
287
+ # @return [Array<String>]
288
+ required :location, Nextbillionai::Internal::Type::ArrayOf[String]
289
+
290
+ # @!attribute id
291
+ # A unique ID for the set of locations. It should be a positive integer.
292
+ #
293
+ # @return [Integer, nil]
294
+ optional :id, Integer
295
+
296
+ # @!attribute approaches
297
+ # Describe if the location is curbside. An array of strings indicates the side of
298
+ # the road from which to approach the location in the calculated route. If
299
+ # provided, the number of approaches must be equal to the number of locations.
300
+ # However, you can skip a coordinate and show its position in the list using “”
301
+ # (empty string). Please note these values are case-sensitive.
302
+ #
303
+ # @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Locations::Approach>, nil]
304
+ optional :approaches,
305
+ -> {
306
+ Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Locations::Approach]
307
+ }
308
+
309
+ # @!method initialize(location:, id: nil, approaches: nil)
310
+ # Some parameter documentations has been truncated, see
311
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Locations} for more
312
+ # details.
313
+ #
314
+ # The locations object is used to define all the locations that will be used
315
+ # during the optimization process. Read more about this attribute in the
316
+ # [Location Object](#location-object) section.
317
+ #
318
+ # @param location [Array<String>] Indicate all the location coordinates that will be used during optimization. The
319
+ #
320
+ # @param id [Integer] A unique ID for the set of locations. It should be a positive integer.
321
+ #
322
+ # @param approaches [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Locations::Approach>] Describe if the location is curbside. An array of strings indicates the side of
323
+
324
+ module Approach
325
+ extend Nextbillionai::Internal::Type::Enum
326
+
327
+ UNRESTRICTED = :unrestricted
328
+ CURB = :curb
329
+ EMPTY_STRING = :"\"\"(empty string)"
330
+
331
+ # @!method self.values
332
+ # @return [Array<Symbol>]
333
+ end
334
+ end
335
+
336
+ class Depot < Nextbillionai::Internal::Type::BaseModel
337
+ # @!attribute id
338
+ # Provide an unique ID for the depot. The IDs are case sensitive.
339
+ #
340
+ # @return [String]
341
+ required :id, String
342
+
343
+ # @!attribute location_index
344
+ # Specify the index of coordinates (in the location array) denoting the depot’s
345
+ # location. The valid range of values is \[0, length of location array). If the
346
+ # location index exceeds the count of input locations in the location array, the
347
+ # API will report an error.
348
+ #
349
+ # Please note the location_index is mandatory when using the depots object.
350
+ #
351
+ # @return [Integer]
352
+ required :location_index, Integer
353
+
354
+ # @!attribute description
355
+ # Add a custom description for the depot.
356
+ #
357
+ # @return [String, nil]
358
+ optional :description, String
359
+
360
+ # @!attribute service
361
+ # Specify the time duration, in seconds, needed to load or unload the vehicle each
362
+ # time it starts or arrives at a depot, respectively. Default value is 0.
363
+ #
364
+ # @return [Integer, nil]
365
+ optional :service, Integer
366
+
367
+ # @!attribute time_windows
368
+ # Specify the time-windows during which the depot is operational and allows
369
+ # vehicles to be loaded / unloaded. The time periods should be expressed as a UNIX
370
+ # timestamp in seconds.
371
+ #
372
+ # Please note that:
373
+ #
374
+ # - Multiple time-windows can be provided but those time windows should not
375
+ # overlap with each other.
376
+ # - Time windows should always be specified in the format of \[start_timestamp,
377
+ # end_timestamp\].
378
+ # - Depot's time-windows are ineffective used when max_activity_waiting_time is
379
+ # specified in the input.
380
+ # - Using relations along with depot time-window is not allowed and the service
381
+ # will return an error.
382
+ #
383
+ # @return [Array<Array<Integer>>, nil]
384
+ optional :time_windows,
385
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Integer]]
386
+
387
+ # @!method initialize(id:, location_index:, description: nil, service: nil, time_windows: nil)
388
+ # Some parameter documentations has been truncated, see
389
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Depot} for more details.
390
+ #
391
+ # @param id [String] Provide an unique ID for the depot. The IDs are case sensitive.
392
+ #
393
+ # @param location_index [Integer] Specify the index of coordinates (in the location array) denoting the depot’s lo
394
+ #
395
+ # @param description [String] Add a custom description for the depot.
396
+ #
397
+ # @param service [Integer] Specify the time duration, in seconds, needed to load or unload the vehicle each
398
+ #
399
+ # @param time_windows [Array<Array<Integer>>] Specify the time-windows during which the depot is operational and allows vehicl
400
+ end
401
+
402
+ class Options < Nextbillionai::Internal::Type::BaseModel
403
+ # @!attribute constraint
404
+ # This attribute defines both the soft and hard constraints for an optimization
405
+ # job.
406
+ #
407
+ # Soft constraints are constraints that do not necessarily have to be satisfied,
408
+ # but the optimization algorithm will try to satisfy them as much as possible.
409
+ # Whereas the hard constraints are the constraints that will not be violated by
410
+ # the solver. Users can use multiple constraints together.
411
+ #
412
+ # Please note that soft constraints are ineffective when using relations attribute
413
+ # in a request. The hard constraint, max_activity_waiting_time, is effective only
414
+ # when relation type is in_same_route and ineffective for all other types.
415
+ #
416
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint, nil]
417
+ optional :constraint, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Constraint }
418
+
419
+ # @!attribute grouping
420
+ # Set grouping rules for the tasks and routes.
421
+ #
422
+ # - Use order_grouping to group nearby tasks
423
+ # - Use route_grouping to control route sequencing.
424
+ #
425
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping, nil]
426
+ optional :grouping, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping }
427
+
428
+ # @!attribute objective
429
+ # This attribute is used to configure the objective of the optimization job.
430
+ #
431
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective, nil]
432
+ optional :objective, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective }
433
+
434
+ # @!attribute routing
435
+ # This attribute is used to define the routing configurations for the optimization
436
+ # job.
437
+ #
438
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing, nil]
439
+ optional :routing, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Routing }
440
+
441
+ # @!method initialize(constraint: nil, grouping: nil, objective: nil, routing: nil)
442
+ # Some parameter documentations has been truncated, see
443
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options} for more details.
444
+ #
445
+ # It represents the set of options that can be used to configure optimization
446
+ # algorithms so that the solver provides a solution that meets the desired
447
+ # business objectives.
448
+ #
449
+ # @param constraint [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint] This attribute defines both the soft and hard constraints for an optimization jo
450
+ #
451
+ # @param grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping] Set grouping rules for the tasks and routes.
452
+ #
453
+ # @param objective [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective] This attribute is used to configure the objective of the optimization job.
454
+ #
455
+ # @param routing [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing] This attribute is used to define the routing configurations for the optimization
456
+
457
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#constraint
458
+ class Constraint < Nextbillionai::Internal::Type::BaseModel
459
+ # @!attribute max_activity_waiting_time
460
+ # This is a hard constraint which specifies the maximum waiting time, in seconds,
461
+ # for each step. It ensures that the vehicles do not have unreasonable wait times
462
+ # between jobs or shipments. This feature is useful for use cases where avoiding
463
+ # long wait times between jobs or shipments is a primary concern.
464
+ #
465
+ # Please note that the waiting time constraint applies to all tasks in the
466
+ # optimization request, ensuring that no single task exceeds the specified maximum
467
+ # waiting time. When being used together with relations attribute, this parameter
468
+ # is effective only for in_same_route relation type.
469
+ #
470
+ # @return [Integer, nil]
471
+ optional :max_activity_waiting_time, Integer
472
+
473
+ # @!attribute max_vehicle_overtime
474
+ # This is a soft constraint for vehicle overtime. Overtime is defined as the time
475
+ # that a vehicle spends to complete a set of jobs after its time window has ended.
476
+ # max_vehicle_overtime attribute specifies the maximum amount of overtime a
477
+ # vehicle can have, in seconds. If a vehicle’s overtime exceeds this value, it
478
+ # will be considered a violation of this constraint.
479
+ #
480
+ # Please note that this constraint applies to all vehicles in the optimization
481
+ # request.
482
+ #
483
+ # @return [Integer, nil]
484
+ optional :max_vehicle_overtime, Integer
485
+
486
+ # @!attribute max_visit_lateness
487
+ # This is a soft constraint for permissible delay, in seconds, to complete a job
488
+ # or shipment after its time window is over. If a job or shipment’s lateness
489
+ # exceeds this value, it will be considered a violation of this constraint.
490
+ #
491
+ # Please note that this constraint applies to all tasks in the optimization
492
+ # request. In case lateness duration needs to be applied for individual tasks,
493
+ # please use the max_visit_lateness parameter under jobs and shipments
494
+ #
495
+ # @return [Integer, nil]
496
+ optional :max_visit_lateness, Integer
497
+
498
+ # @!method initialize(max_activity_waiting_time: nil, max_vehicle_overtime: nil, max_visit_lateness: nil)
499
+ # Some parameter documentations has been truncated, see
500
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Constraint} for
501
+ # more details.
502
+ #
503
+ # This attribute defines both the soft and hard constraints for an optimization
504
+ # job.
505
+ #
506
+ # Soft constraints are constraints that do not necessarily have to be satisfied,
507
+ # but the optimization algorithm will try to satisfy them as much as possible.
508
+ # Whereas the hard constraints are the constraints that will not be violated by
509
+ # the solver. Users can use multiple constraints together.
510
+ #
511
+ # Please note that soft constraints are ineffective when using relations attribute
512
+ # in a request. The hard constraint, max_activity_waiting_time, is effective only
513
+ # when relation type is in_same_route and ineffective for all other types.
514
+ #
515
+ # @param max_activity_waiting_time [Integer] This is a hard constraint which specifies the maximum waiting time, in seconds,
516
+ #
517
+ # @param max_vehicle_overtime [Integer] This is a soft constraint for vehicle overtime. Overtime is defined as the time
518
+ #
519
+ # @param max_visit_lateness [Integer] This is a soft constraint for permissible delay, in seconds, to complete a job o
520
+ end
521
+
522
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#grouping
523
+ class Grouping < Nextbillionai::Internal::Type::BaseModel
524
+ # @!attribute order_grouping
525
+ # Specify the criteria for grouping nearby tasks. The grouped tasks will be
526
+ # treated as one stop by the optimizer and no cost would be incurred when driver
527
+ # travels to different tasks within a group. Users can use this feature to model
528
+ # use cases like multiple deliveries in a building complex or a condo.
529
+ #
530
+ # Please note that when the multiple tasks are grouped together, only one setup
531
+ # time is considered for all such tasks. The durations of this setup time is equal
532
+ # to maximum setup time among all grouped tasks, if provided. On the other hand,
533
+ # the service time is applied to each task individually, as per the input provided
534
+ # when configuring those tasks.
535
+ #
536
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping, nil]
537
+ optional :order_grouping,
538
+ -> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping }
539
+
540
+ # @!attribute proximity_factor
541
+ # When specified, routes are built taking into account the distance to the nearest
542
+ # tasks. A higher proximity factor helps build routes with closer distances
543
+ # between neighboring tasks, whereas a lower proximity factor helps build routes
544
+ # with farther distances between neighboring tasks. As a result, the total number
545
+ # of routes in the solution can vary based on the configured proximity factor -
546
+ # more routes for higher factor and less routes with lower factor.
547
+ #
548
+ # In practice, such routes are more resistant to changes in task time windows:
549
+ # when the time window is postponed, the driver can drive to the next task and
550
+ # then return to the previous one.
551
+ #
552
+ # Please note that:
553
+ #
554
+ # - Valid values are \[0,10\]
555
+ # - Default value is 0.0.
556
+ # - It is recommended to use values lower values, in the range of \[0, 1\]. Higher
557
+ # values may adversely impact the solution metrics due to higher number of
558
+ # resulting routes: costs, mileage etc.
559
+ #
560
+ # @return [Float, nil]
561
+ optional :proximity_factor, Float
562
+
563
+ # @!attribute route_grouping
564
+ # Specify the criteria for prioritising routes in a zone over routes that are part
565
+ # of another zone. As a result, all the tasks falling in a zone will be fulfilled
566
+ # before any tasks that are part of a different zone.
567
+ #
568
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping, nil]
569
+ optional :route_grouping,
570
+ -> { Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping }
571
+
572
+ # @!method initialize(order_grouping: nil, proximity_factor: nil, route_grouping: nil)
573
+ # Some parameter documentations has been truncated, see
574
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping} for
575
+ # more details.
576
+ #
577
+ # Set grouping rules for the tasks and routes.
578
+ #
579
+ # - Use order_grouping to group nearby tasks
580
+ # - Use route_grouping to control route sequencing.
581
+ #
582
+ # @param order_grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping] Specify the criteria for grouping nearby tasks. The grouped tasks will be treate
583
+ #
584
+ # @param proximity_factor [Float] When specified, routes are built taking into account the distance to the nearest
585
+ #
586
+ # @param route_grouping [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping] Specify the criteria for prioritising routes in a zone over routes that are part
587
+
588
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping#order_grouping
589
+ class OrderGrouping < Nextbillionai::Internal::Type::BaseModel
590
+ # @!attribute grouping_diameter
591
+ # Specify the straight line distance, in meters, which will be used to identify
592
+ # the tasks that should be grouped together. The default value is null.
593
+ #
594
+ # @return [Float, nil]
595
+ optional :grouping_diameter, Float
596
+
597
+ # @!method initialize(grouping_diameter: nil)
598
+ # Some parameter documentations has been truncated, see
599
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::OrderGrouping}
600
+ # for more details.
601
+ #
602
+ # Specify the criteria for grouping nearby tasks. The grouped tasks will be
603
+ # treated as one stop by the optimizer and no cost would be incurred when driver
604
+ # travels to different tasks within a group. Users can use this feature to model
605
+ # use cases like multiple deliveries in a building complex or a condo.
606
+ #
607
+ # Please note that when the multiple tasks are grouped together, only one setup
608
+ # time is considered for all such tasks. The durations of this setup time is equal
609
+ # to maximum setup time among all grouped tasks, if provided. On the other hand,
610
+ # the service time is applied to each task individually, as per the input provided
611
+ # when configuring those tasks.
612
+ #
613
+ # @param grouping_diameter [Float] Specify the straight line distance, in meters, which will be used to identify th
614
+ end
615
+
616
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping#route_grouping
617
+ class RouteGrouping < Nextbillionai::Internal::Type::BaseModel
618
+ # @!attribute penalty_factor
619
+ # Specify a non-negative value which indicates the penalty of crossing zones on
620
+ # the same route. Default penalty value is 0.
621
+ #
622
+ # A higher value, for example 30.0, will place a higher penalty on zone violations
623
+ # and hence push the optimizer to prefer a solution without any zone violations,
624
+ # where all tasks in a single region are fulfilled before any tasks in other
625
+ # regions or outside the current region. Whereas a lower value, say 5.0, will
626
+ # place a lower penalty allowing the optimizer to return solutions which may have
627
+ # few violations, say a couple of routing zone violations in our example. A still
628
+ # lower penalty factor, like 1.0, may have several zone violations.
629
+ #
630
+ # @return [Float, nil]
631
+ optional :penalty_factor, Float
632
+
633
+ # @!attribute zone_diameter
634
+ # Specify the diameter of the zone, routes within which will be prioritised before
635
+ # routes falling in other zones. Please note that zone_diameter is the straight
636
+ # line distance, in meters.
637
+ #
638
+ # @return [Float, nil]
639
+ optional :zone_diameter, Float
640
+
641
+ # @!attribute zone_source
642
+ # Specify the source for creating boundaries of the routing zones. The default
643
+ # value is “system_generated”.
644
+ #
645
+ # - system_generated - Routing zone boundaries are created automatically by the
646
+ # optimizer based on the zone_diameter provided.
647
+ # - custom_definition - Custom routing zone boundaries should be provided by the
648
+ # user in input using the zones attribute. An error would be returned if the
649
+ # zones attribute is null or missing in the input request.
650
+ #
651
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource, nil]
652
+ optional :zone_source,
653
+ enum: -> {
654
+ Nextbillionai::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource
655
+ }
656
+
657
+ # @!method initialize(penalty_factor: nil, zone_diameter: nil, zone_source: nil)
658
+ # Some parameter documentations has been truncated, see
659
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping}
660
+ # for more details.
661
+ #
662
+ # Specify the criteria for prioritising routes in a zone over routes that are part
663
+ # of another zone. As a result, all the tasks falling in a zone will be fulfilled
664
+ # before any tasks that are part of a different zone.
665
+ #
666
+ # @param penalty_factor [Float] Specify a non-negative value which indicates the penalty of crossing zones on th
667
+ #
668
+ # @param zone_diameter [Float] Specify the diameter of the zone, routes within which will be prioritised before
669
+ #
670
+ # @param zone_source [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping::ZoneSource] Specify the source for creating boundaries of the routing zones. The default val
671
+
672
+ # Specify the source for creating boundaries of the routing zones. The default
673
+ # value is “system_generated”.
674
+ #
675
+ # - system_generated - Routing zone boundaries are created automatically by the
676
+ # optimizer based on the zone_diameter provided.
677
+ # - custom_definition - Custom routing zone boundaries should be provided by the
678
+ # user in input using the zones attribute. An error would be returned if the
679
+ # zones attribute is null or missing in the input request.
680
+ #
681
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Grouping::RouteGrouping#zone_source
682
+ module ZoneSource
683
+ extend Nextbillionai::Internal::Type::Enum
684
+
685
+ SYSTEM_GENERATED = :system_generated
686
+ CUSTOM_DEFINITION = :custom_definition
687
+
688
+ # @!method self.values
689
+ # @return [Array<Symbol>]
690
+ end
691
+ end
692
+ end
693
+
694
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#objective
695
+ class Objective < Nextbillionai::Internal::Type::BaseModel
696
+ # @!attribute allow_early_arrival
697
+ # Choose where the optimizer should schedule the driver’s wait time. When set to
698
+ # true the driver waits at the location of the task until its time window allows
699
+ # him to start the task. When set to false the driver waits at the location of the
700
+ # previous task and starts driving only at such a time that makes him arrive at
701
+ # the next task location in time to start the task as soon as he reaches.
702
+ #
703
+ # @return [Boolean, nil]
704
+ optional :allow_early_arrival, Nextbillionai::Internal::Type::Boolean
705
+
706
+ # @!attribute custom
707
+ # The custom parameter is used to define special objectives apart from the simpler
708
+ # travel cost minimization objectives.
709
+ #
710
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom, nil]
711
+ optional :custom, -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom }
712
+
713
+ # @!attribute minimise_num_depots
714
+ # Specify whether to minimize the number of depots used in optimization routes.
715
+ #
716
+ # @return [Boolean, nil]
717
+ optional :minimise_num_depots, Nextbillionai::Internal::Type::Boolean
718
+
719
+ # @!attribute solver_mode
720
+ # If the input doesn’t include features of soft constraints, customized
721
+ # objectives, re-optimization, relations, max travel cost or automatic fixed cost,
722
+ # then user can select “optimal” to achieve a higher-speed and higher-quality
723
+ # optimization.
724
+ #
725
+ # If “optimal” mode is unable to process some features in the input, then it will
726
+ # still goes to “flexible” mode.
727
+ #
728
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::SolverMode, nil]
729
+ optional :solver_mode,
730
+ enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::SolverMode }
731
+
732
+ # @!attribute solving_time_limit
733
+ # Specify the number of seconds within which the optimizer should ideally solve
734
+ # the optimization request.
735
+ #
736
+ # Please note that:
737
+ #
738
+ # - In case the specified time limit is not enough to generate a solution for a
739
+ # given problem set, the optimizer will continue processing until it arrives at
740
+ # a solution.
741
+ # - It is recommended to specify a duration of at least 5-7 minutes in case the
742
+ # input problem contains a large set of tasks or vehicles.
743
+ #
744
+ # @return [Integer, nil]
745
+ optional :solving_time_limit, Integer
746
+
747
+ # @!attribute travel_cost
748
+ # The travel_cost parameter specifies the type of cost used by the solver to
749
+ # determine the routes.
750
+ #
751
+ # If the travel_cost parameter is set to distance, the solver will minimize the
752
+ # total distance traveled by vehicles while determining a solution. This objective
753
+ # would be useful in cases where the primary objective is to reduce fuel
754
+ # consumption or travel expenses.
755
+ #
756
+ # If the travel_cost parameter is set to duration, the solver will minimize the
757
+ # total time taken by the vehicles to complete all tasks while determining a
758
+ # solution. This objective would be useful in cases where the primary objective is
759
+ # to minimize completion time or maximize the number of orders fulfilled within a
760
+ # given time window.
761
+ #
762
+ # If the travel_cost parameter is set to air_distance, the solver will try to
763
+ # calculate the distance,in meters, between two points using the great-circle
764
+ # distance formula (i.e., the shortest distance between two points on a sphere)
765
+ # instead of the actual road distance. This would be useful in cases where the
766
+ # delivery locations are far apart and the road distance between them is
767
+ # significantly longer than the actual straight-line distance. For example, in
768
+ # Drone Delivery services.
769
+ #
770
+ # If the travel_cost is set to customized the solver would use the custom cost
771
+ # values provided by the user (in cost_matrix attribute) and prefer a solution
772
+ # with lower overall cost. This enables the user to have greater control over the
773
+ # routes preferred by the solver and hence the sequence in which the jobs are
774
+ # completed.
775
+ #
776
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::TravelCost, nil]
777
+ optional :travel_cost,
778
+ enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Objective::TravelCost }
779
+
780
+ # @!method initialize(allow_early_arrival: nil, custom: nil, minimise_num_depots: nil, solver_mode: nil, solving_time_limit: nil, travel_cost: nil)
781
+ # Some parameter documentations has been truncated, see
782
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective} for
783
+ # more details.
784
+ #
785
+ # This attribute is used to configure the objective of the optimization job.
786
+ #
787
+ # @param allow_early_arrival [Boolean] Choose where the optimizer should schedule the driver’s wait time. When set to t
788
+ #
789
+ # @param custom [Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom] The custom parameter is used to define special objectives apart from the simpler
790
+ #
791
+ # @param minimise_num_depots [Boolean] Specify whether to minimize the number of depots used in optimization routes.
792
+ #
793
+ # @param solver_mode [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::SolverMode] If the input doesn’t include features of soft constraints, customized objectives
794
+ #
795
+ # @param solving_time_limit [Integer] Specify the number of seconds within which the optimizer should ideally solve th
796
+ #
797
+ # @param travel_cost [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::TravelCost] The travel_cost parameter specifies the type of cost used by the solver to deter
798
+
799
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#custom
800
+ class Custom < Nextbillionai::Internal::Type::BaseModel
801
+ # @!attribute type
802
+ # The type parameter accepts two inputs:
803
+ #
804
+ # - min: This type of customized objective will minimize the metric provided in
805
+ # the value parameter.
806
+ # - min-max: This type of customized objective will approximate an even
807
+ # distribution of the metric provided in the value parameter, among all the
808
+ # routes in solution.
809
+ #
810
+ # Please note that type is mandatory only when using custom attribute.
811
+ #
812
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Type]
813
+ required :type,
814
+ enum: -> {
815
+ Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom::Type
816
+ }
817
+
818
+ # @!attribute value
819
+ # The value parameter accepts four inputs, two of them are valid for min type and
820
+ # other two are valid for min-max type custom objective. Let’s look at the values
821
+ # for min type objective:
822
+ #
823
+ # - vehicles: Solver will minimize the number of vehicles used in the solution.
824
+ # - completion_time: Solver will minimize the total time taken to complete all
825
+ # tasks.
826
+ #
827
+ # The next set of values are acceptable when type is set to min-max.
828
+ #
829
+ # - tasks: Solver will evenly distribute the tasks on each route.
830
+ # - travel_cost: Solver will assign tasks such that the traveling cost of each
831
+ # route is within a close range of other routes. The travel cost metric
832
+ # considered here is the one set using objective.travel_cost .
833
+ #
834
+ # Please note that value is mandatory only when using custom attribute. The above
835
+ # values provide flexibility to tune the optimization algorithm to fulfill
836
+ # practical objectives beyond the relatively simpler time or distance minimization
837
+ # approaches.
838
+ #
839
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Value]
840
+ required :value,
841
+ enum: -> {
842
+ Nextbillionai::Optimization::V2SubmitParams::Options::Objective::Custom::Value
843
+ }
844
+
845
+ # @!method initialize(type:, value:)
846
+ # Some parameter documentations has been truncated, see
847
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom}
848
+ # for more details.
849
+ #
850
+ # The custom parameter is used to define special objectives apart from the simpler
851
+ # travel cost minimization objectives.
852
+ #
853
+ # @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Type] The type parameter accepts two inputs:
854
+ #
855
+ # @param value [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom::Value] The value parameter accepts four inputs, two of them are valid for min type and
856
+
857
+ # The type parameter accepts two inputs:
858
+ #
859
+ # - min: This type of customized objective will minimize the metric provided in
860
+ # the value parameter.
861
+ # - min-max: This type of customized objective will approximate an even
862
+ # distribution of the metric provided in the value parameter, among all the
863
+ # routes in solution.
864
+ #
865
+ # Please note that type is mandatory only when using custom attribute.
866
+ #
867
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom#type
868
+ module Type
869
+ extend Nextbillionai::Internal::Type::Enum
870
+
871
+ MIN = :min
872
+ MIN_MAX = :"min-max"
873
+
874
+ # @!method self.values
875
+ # @return [Array<Symbol>]
876
+ end
877
+
878
+ # The value parameter accepts four inputs, two of them are valid for min type and
879
+ # other two are valid for min-max type custom objective. Let’s look at the values
880
+ # for min type objective:
881
+ #
882
+ # - vehicles: Solver will minimize the number of vehicles used in the solution.
883
+ # - completion_time: Solver will minimize the total time taken to complete all
884
+ # tasks.
885
+ #
886
+ # The next set of values are acceptable when type is set to min-max.
887
+ #
888
+ # - tasks: Solver will evenly distribute the tasks on each route.
889
+ # - travel_cost: Solver will assign tasks such that the traveling cost of each
890
+ # route is within a close range of other routes. The travel cost metric
891
+ # considered here is the one set using objective.travel_cost .
892
+ #
893
+ # Please note that value is mandatory only when using custom attribute. The above
894
+ # values provide flexibility to tune the optimization algorithm to fulfill
895
+ # practical objectives beyond the relatively simpler time or distance minimization
896
+ # approaches.
897
+ #
898
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective::Custom#value
899
+ module Value
900
+ extend Nextbillionai::Internal::Type::Enum
901
+
902
+ VEHICLES = :vehicles
903
+ COMPLETION_TIME = :completion_time
904
+ TRAVEL_COST = :travel_cost
905
+ TASKS = :tasks
906
+
907
+ # @!method self.values
908
+ # @return [Array<Symbol>]
909
+ end
910
+ end
911
+
912
+ # If the input doesn’t include features of soft constraints, customized
913
+ # objectives, re-optimization, relations, max travel cost or automatic fixed cost,
914
+ # then user can select “optimal” to achieve a higher-speed and higher-quality
915
+ # optimization.
916
+ #
917
+ # If “optimal” mode is unable to process some features in the input, then it will
918
+ # still goes to “flexible” mode.
919
+ #
920
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#solver_mode
921
+ module SolverMode
922
+ extend Nextbillionai::Internal::Type::Enum
923
+
924
+ FLEXIBLE = :flexible
925
+ FAST = :fast
926
+ INTERNAL = :internal
927
+
928
+ # @!method self.values
929
+ # @return [Array<Symbol>]
930
+ end
931
+
932
+ # The travel_cost parameter specifies the type of cost used by the solver to
933
+ # determine the routes.
934
+ #
935
+ # If the travel_cost parameter is set to distance, the solver will minimize the
936
+ # total distance traveled by vehicles while determining a solution. This objective
937
+ # would be useful in cases where the primary objective is to reduce fuel
938
+ # consumption or travel expenses.
939
+ #
940
+ # If the travel_cost parameter is set to duration, the solver will minimize the
941
+ # total time taken by the vehicles to complete all tasks while determining a
942
+ # solution. This objective would be useful in cases where the primary objective is
943
+ # to minimize completion time or maximize the number of orders fulfilled within a
944
+ # given time window.
945
+ #
946
+ # If the travel_cost parameter is set to air_distance, the solver will try to
947
+ # calculate the distance,in meters, between two points using the great-circle
948
+ # distance formula (i.e., the shortest distance between two points on a sphere)
949
+ # instead of the actual road distance. This would be useful in cases where the
950
+ # delivery locations are far apart and the road distance between them is
951
+ # significantly longer than the actual straight-line distance. For example, in
952
+ # Drone Delivery services.
953
+ #
954
+ # If the travel_cost is set to customized the solver would use the custom cost
955
+ # values provided by the user (in cost_matrix attribute) and prefer a solution
956
+ # with lower overall cost. This enables the user to have greater control over the
957
+ # routes preferred by the solver and hence the sequence in which the jobs are
958
+ # completed.
959
+ #
960
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Objective#travel_cost
961
+ module TravelCost
962
+ extend Nextbillionai::Internal::Type::Enum
963
+
964
+ DURATION = :duration
965
+ DISTANCE = :distance
966
+ AIR_DISTANCE = :air_distance
967
+ CUSTOMIZED = :customized
968
+
969
+ # @!method self.values
970
+ # @return [Array<Symbol>]
971
+ end
972
+ end
973
+
974
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options#routing
975
+ class Routing < Nextbillionai::Internal::Type::BaseModel
976
+ # @!attribute allow
977
+ #
978
+ # @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Allow>, nil]
979
+ optional :allow,
980
+ -> {
981
+ Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Allow]
982
+ }
983
+
984
+ # @!attribute avoid
985
+ # Specify the type of objects/maneuvers that the route should avoid.
986
+ #
987
+ # Please note that:
988
+ #
989
+ # - The values are case-sensitive.
990
+ # - When using avoid:bbox feature, users need to specify the boundaries of the
991
+ # bounding box to be avoided. Multiple bounding boxes can be provided
992
+ # simultaneously. Please note that bounding box is a hard filter and if it
993
+ # blocks all possible routes between given locations, a 4xx error is returned.
994
+ # Mention the bounding box boundaries in the following format: bbox:
995
+ # min_latitude,min_longitude,max_latitude,max_longitude.
996
+ # - When using avoid=sharp_turn, the range of allowed turn angles is \[120,240\]
997
+ # in the clockwise direction from the current road. Any roads with turn angles
998
+ # outside the range will be avoided.
999
+ # - If none is provided along with other values, an error is returned as a valid
1000
+ # route is not feasible.
1001
+ #
1002
+ # @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Avoid>, nil]
1003
+ optional :avoid,
1004
+ -> {
1005
+ Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Avoid]
1006
+ }
1007
+
1008
+ # @!attribute context
1009
+ # Use this parameter to apply a single speed value for all ETA and drive time
1010
+ # calculations. In case, the travel_cost is set to duration then setting this
1011
+ # parameter also impacts the cost of the solution.
1012
+ #
1013
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Context, nil]
1014
+ optional :context,
1015
+ enum: -> {
1016
+ Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Context
1017
+ }
1018
+
1019
+ # @!attribute cross_border
1020
+ # Specify if crossing an international border is allowed for operations near
1021
+ # border areas. When set to false, the API will prohibit any routes crossing
1022
+ # international borders. When set to true, the service will return routes which
1023
+ # cross the borders between countries, if required for the given set locations
1024
+ #
1025
+ # This feature is available in North America region only. Please get in touch with
1026
+ # [support@nextbillion.ai](mailto:support@nextbillion.ai) to enquire/enable other
1027
+ # areas.
1028
+ #
1029
+ # @return [Boolean, nil]
1030
+ optional :cross_border, Nextbillionai::Internal::Type::Boolean
1031
+
1032
+ # @!attribute disable_cache
1033
+ # Specify if the optimizer should cache the matrix result set (containing ETAs and
1034
+ # distances) for the given set of locations in the request. Once the results are
1035
+ # cached, the optimizer can use it during the next 60 mins if exactly the same set
1036
+ # of locations are provided again. Please note that if a cached result is
1037
+ # retrieved, the timer is reset and that result will be available for another 60
1038
+ # mins.
1039
+ #
1040
+ # If the users want to regenerate the result set, they can set this parameter to
1041
+ # true and optimizer will not use the cached results.
1042
+ #
1043
+ # This feature is helpful in expediting the optimization process and generate
1044
+ # results quickly. It also helps users to quickly simulate route plans for
1045
+ # different combinations of constraints for a given set of locations.
1046
+ #
1047
+ # @return [Boolean, nil]
1048
+ optional :disable_cache, Nextbillionai::Internal::Type::Boolean
1049
+
1050
+ # @!attribute hazmat_type
1051
+ # Specify the type of hazardous material being carried and the service will avoid
1052
+ # roads which are not suitable for the type of goods specified. Provide multiple
1053
+ # values separated by a comma , .
1054
+ #
1055
+ # Please note that this parameter is effective only when mode=truck.
1056
+ #
1057
+ # @return [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::HazmatType>, nil]
1058
+ optional :hazmat_type,
1059
+ -> {
1060
+ Nextbillionai::Internal::Type::ArrayOf[enum: Nextbillionai::Optimization::V2SubmitParams::Options::Routing::HazmatType]
1061
+ }
1062
+
1063
+ # @!attribute mode
1064
+ # Define the traveling mode to be used for determining the optimized routes.
1065
+ #
1066
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Mode, nil]
1067
+ optional :mode, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Options::Routing::Mode }
1068
+
1069
+ # @!attribute profiles
1070
+ # Defines all the vehicle profiles. profiles is implemented as a dictionary of
1071
+ # objects where each profile name is the unique key and the associated value is an
1072
+ # object describing the routing properties of that profile. All routing properties
1073
+ # available in options.routing can be added as values for a given profile.
1074
+ #
1075
+ # Please note:
1076
+ #
1077
+ # - The routing properties configured using options.routing (and not part of any
1078
+ # \profiles\) are considered as default route settings i.e. they are applied to
1079
+ # vehicles which are not associated with any profile.
1080
+ # - The default route settings are independent from those defined for any profiles
1081
+ # . Consequently, for vehicles which are tagged to a given profile, only the
1082
+ # routing properties configured for the given profile will apply.
1083
+ # - If the "mode" is not specified for any profile, by default it is considered to
1084
+ # be car .
1085
+ # - "default" is a reserved keyword and can not be used as the name for any custom
1086
+ # profile.
1087
+ # - profiles can't be nested in other profiles.
1088
+ # - The number of profiles, including default route settings, are limited to
1089
+ #
1090
+ # - 15, if 0 < number of location <= 100
1091
+ # - 6, if 100 < number of location <= 600,
1092
+ # - 2, if 600 < number of location <= 1200,
1093
+ # - 1, if number of location > 1200
1094
+ #
1095
+ # Routing profiles attribute is useful for configuring fleets containing multiple
1096
+ # vehicles types. Check
1097
+ # [Routing Profiles](https://docs.nextbillion.ai/docs/optimization/api/route-optimization-flexible/tutorials/routing-profiles)
1098
+ # tutorial to learn more.
1099
+ #
1100
+ # @return [Object, nil]
1101
+ optional :profiles, Nextbillionai::Internal::Type::Unknown
1102
+
1103
+ # @!attribute traffic_timestamp
1104
+ # Specify the general time when the job needs to be carried out. The time should
1105
+ # be expressed as an UNIX timestamp in seconds format. The solver will take into
1106
+ # account the general traffic conditions at the given time to determine the routes
1107
+ # and their ETAs.
1108
+ #
1109
+ # @return [Integer, nil]
1110
+ optional :traffic_timestamp, Integer
1111
+
1112
+ # @!attribute truck_axle_load
1113
+ # Specify the total load per axle (including the weight of trailers and shipped
1114
+ # goods) of the truck, in tonnes. When used, the optimizer will use only those
1115
+ # routes which are legally allowed to carry the load specified per axle.
1116
+ #
1117
+ # Please note this parameter is effective only when mode=truck.
1118
+ #
1119
+ # @return [Float, nil]
1120
+ optional :truck_axle_load, Float
1121
+
1122
+ # @!attribute truck_size
1123
+ # Specify the truck dimensions, in centimeters, in the format of
1124
+ # “height,width,length”. Please note that this parameter is effective only when
1125
+ # mode=truck.
1126
+ #
1127
+ # @return [String, nil]
1128
+ optional :truck_size, String
1129
+
1130
+ # @!attribute truck_weight
1131
+ # Specify the truck weight including the trailers and shipped goods, in kilograms.
1132
+ # Please note that this parameter is effective only when mode=truck.
1133
+ #
1134
+ # @return [Integer, nil]
1135
+ optional :truck_weight, Integer
1136
+
1137
+ # @!method initialize(allow: nil, avoid: nil, context: nil, cross_border: nil, disable_cache: nil, hazmat_type: nil, mode: nil, profiles: nil, traffic_timestamp: nil, truck_axle_load: nil, truck_size: nil, truck_weight: nil)
1138
+ # Some parameter documentations has been truncated, see
1139
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing} for more
1140
+ # details.
1141
+ #
1142
+ # This attribute is used to define the routing configurations for the optimization
1143
+ # job.
1144
+ #
1145
+ # @param allow [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Allow>]
1146
+ #
1147
+ # @param avoid [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Avoid>] Specify the type of objects/maneuvers that the route should avoid.
1148
+ #
1149
+ # @param context [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Context] Use this parameter to apply a single speed value for all ETA and drive time calc
1150
+ #
1151
+ # @param cross_border [Boolean] Specify if crossing an international border is allowed for operations near borde
1152
+ #
1153
+ # @param disable_cache [Boolean] Specify if the optimizer should cache the matrix result set (containing ETAs and
1154
+ #
1155
+ # @param hazmat_type [Array<Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::HazmatType>] Specify the type of hazardous material being carried and the service will avoid
1156
+ #
1157
+ # @param mode [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing::Mode] Define the traveling mode to be used for determining the optimized routes.
1158
+ #
1159
+ # @param profiles [Object] Defines all the vehicle profiles. profiles is implemented as a dictionary of obj
1160
+ #
1161
+ # @param traffic_timestamp [Integer] Specify the general time when the job needs to be carried out. The time should b
1162
+ #
1163
+ # @param truck_axle_load [Float] Specify the total load per axle (including the weight of trailers and shipped go
1164
+ #
1165
+ # @param truck_size [String] Specify the truck dimensions, in centimeters, in the format of “height,width,len
1166
+ #
1167
+ # @param truck_weight [Integer] Specify the truck weight including the trailers and shipped goods, in kilograms.
1168
+
1169
+ module Allow
1170
+ extend Nextbillionai::Internal::Type::Enum
1171
+
1172
+ TAXI = :taxi
1173
+ HOV = :hov
1174
+
1175
+ # @!method self.values
1176
+ # @return [Array<Symbol>]
1177
+ end
1178
+
1179
+ module Avoid
1180
+ extend Nextbillionai::Internal::Type::Enum
1181
+
1182
+ TOLL = :toll
1183
+ HIGHWAY = :highway
1184
+ BBOX = :bbox
1185
+ LEFT_TURN = :left_turn
1186
+ RIGHT_TURN = :right_turn
1187
+ SHARP_TURN = :sharp_turn
1188
+ UTURN = :uturn
1189
+ SERVICE_ROAD = :service_road
1190
+ FERRY = :ferry
1191
+ NONE = :"none "
1192
+
1193
+ # @!method self.values
1194
+ # @return [Array<Symbol>]
1195
+ end
1196
+
1197
+ # Use this parameter to apply a single speed value for all ETA and drive time
1198
+ # calculations. In case, the travel_cost is set to duration then setting this
1199
+ # parameter also impacts the cost of the solution.
1200
+ #
1201
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing#context
1202
+ module Context
1203
+ extend Nextbillionai::Internal::Type::Enum
1204
+
1205
+ AVGSPEED = :avgspeed
1206
+
1207
+ # @!method self.values
1208
+ # @return [Array<Symbol>]
1209
+ end
1210
+
1211
+ module HazmatType
1212
+ extend Nextbillionai::Internal::Type::Enum
1213
+
1214
+ GENERAL = :general
1215
+ CIRCUMSTANTIAL = :circumstantial
1216
+ EXPLOSIVE = :explosive
1217
+ HARMFUL_TO_WATER = :harmful_to_water
1218
+
1219
+ # @!method self.values
1220
+ # @return [Array<Symbol>]
1221
+ end
1222
+
1223
+ # Define the traveling mode to be used for determining the optimized routes.
1224
+ #
1225
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Options::Routing#mode
1226
+ module Mode
1227
+ extend Nextbillionai::Internal::Type::Enum
1228
+
1229
+ CAR = :car
1230
+ TRUCK = :truck
1231
+
1232
+ # @!method self.values
1233
+ # @return [Array<Symbol>]
1234
+ end
1235
+ end
1236
+ end
1237
+
1238
+ class Relation < Nextbillionai::Internal::Type::BaseModel
1239
+ # @!attribute steps
1240
+ # The steps property specifies the tasks or steps that are part of the relation
1241
+ # and must be carried out in a manner defined in the type parameter. Please note
1242
+ # you can add any number of steps here, except when relation type is precedence
1243
+ # where only 2 tasks can be added.
1244
+ #
1245
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step>]
1246
+ required :steps,
1247
+ -> {
1248
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Relation::Step]
1249
+ }
1250
+
1251
+ # @!attribute type
1252
+ # Specifies the type of relation constraint. The following types are supported:
1253
+ #
1254
+ # - in_same_route: Ensures that all steps are covered in the same route in
1255
+ # solution.
1256
+ # - in_sequence: Ensures that all steps are in the same route and their sequence
1257
+ # matches the order specified in the steps field. Insertion of new steps between
1258
+ # the steps specified, is allowed.
1259
+ # - in_direct_sequence: Similar to in_sequence, but insertion of new steps is not
1260
+ # allowed in the final route.
1261
+ # - precedence: Restricts the travel time between the first step and second step.
1262
+ # If the precedence requirement cannot be satisfied, then the task specified at
1263
+ # the second step will not be assigned. Only 2 steps can be specified in a
1264
+ # single precedence type relations. Please use multiple precedence relations to
1265
+ # apply restrictions on more than 2 tasks.
1266
+ #
1267
+ # If the vehicle field is specified in the relations input, all steps will be
1268
+ # served by that particular vehicle. Otherwise, the route can be allocated to any
1269
+ # feasible vehicle.
1270
+ #
1271
+ # Please note that the type field is mandatory when using the relations object.
1272
+ #
1273
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Type]
1274
+ required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Relation::Type }
1275
+
1276
+ # @!attribute id
1277
+ # **Deprecated! Please use the** vehicle **parameter to specify the vehicle ID.**
1278
+ #
1279
+ # Specifies the ID of the vehicle that would fulfil the steps. ID should be
1280
+ # consistent with input IDs provided in the vehicles object.
1281
+ #
1282
+ # @return [Integer, nil]
1283
+ optional :id, Integer
1284
+
1285
+ # @!attribute max_duration
1286
+ # This attribute is effective only when precedence type relation is used.
1287
+ # max_duration restricts the travel time of the vehicle to go from location of
1288
+ # first task to the location of second task specified in steps object. The unit
1289
+ # for this parameter is seconds. It accepts values greater than 0 only.
1290
+ #
1291
+ # Please note that max_duration is a hard constraint. Hence, if aggressive
1292
+ # durations are provided such that the second task cannot be reached within the
1293
+ # specified max_duration, it might be done before the first task (usually in case
1294
+ # of jobs) or remain un-assigned (usually in case of shipments).
1295
+ #
1296
+ # @return [Integer, nil]
1297
+ optional :max_duration, Integer
1298
+
1299
+ # @!attribute min_duration
1300
+ # This attribute is effective only when precedence type relation is used. Use
1301
+ # min_duration to enforce a minimum time-gap between the two tasks specified in
1302
+ # steps object. When specified, the second task will get completed after a gap of
1303
+ # min_duration with respect to the first task. The unit for this parameter is
1304
+ # seconds.
1305
+ #
1306
+ # Please note that min_duration is implemented as a soft constraint and it can be
1307
+ # violated in presence of other relation types. The optimizer will tend to provide
1308
+ # solutions where min_duration is not violated, but it is not guaranteed.
1309
+ #
1310
+ # @return [Integer, nil]
1311
+ optional :min_duration, Integer
1312
+
1313
+ # @!attribute vehicle
1314
+ # Specifies the ID of the vehicle that would fulfill the steps. Providing the same
1315
+ # vehicle ID to multiple ‘relations’ is prohibited. The vehicle ID provided here
1316
+ # should be consistent with ID provided in the vehicles attribute.
1317
+ #
1318
+ # @return [String, nil]
1319
+ optional :vehicle, String
1320
+
1321
+ # @!method initialize(steps:, type:, id: nil, max_duration: nil, min_duration: nil, vehicle: nil)
1322
+ # Some parameter documentations has been truncated, see
1323
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Relation} for more
1324
+ # details.
1325
+ #
1326
+ # @param steps [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step>] The steps property specifies the tasks or steps that are part of the relation an
1327
+ #
1328
+ # @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Type] Specifies the type of relation constraint. The following types are supported:
1329
+ #
1330
+ # @param id [Integer] **Deprecated! Please use the** vehicle **parameter to specify the vehicle ID.**
1331
+ #
1332
+ # @param max_duration [Integer] This attribute is effective only when precedence type relation is used. max_dura
1333
+ #
1334
+ # @param min_duration [Integer] This attribute is effective only when precedence type relation is used. Use
1335
+ # min\_
1336
+ #
1337
+ # @param vehicle [String] Specifies the ID of the vehicle that would fulfill the steps. Providing the same
1338
+
1339
+ class Step < Nextbillionai::Internal::Type::BaseModel
1340
+ # @!attribute type
1341
+ # Specifies the type of the step. The start and end step types have to be the
1342
+ # first and last steps, respectively, in a relation.
1343
+ #
1344
+ # Please note that the type is mandatory when using the relations object.
1345
+ #
1346
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step::Type]
1347
+ required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Relation::Step::Type }
1348
+
1349
+ # @!attribute id
1350
+ # This represents the ID of the task and should be consistent with the input IDs
1351
+ # provided in the jobs or shipments objects for a given step. The id is required
1352
+ # for all steps other than start and end.
1353
+ #
1354
+ # @return [String, nil]
1355
+ optional :id, String
1356
+
1357
+ # @!method initialize(type:, id: nil)
1358
+ # Some parameter documentations has been truncated, see
1359
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step} for more
1360
+ # details.
1361
+ #
1362
+ # @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step::Type] Specifies the type of the step. The start and end step types have to be the firs
1363
+ #
1364
+ # @param id [String] This represents the ID of the task and should be consistent with the input IDs p
1365
+
1366
+ # Specifies the type of the step. The start and end step types have to be the
1367
+ # first and last steps, respectively, in a relation.
1368
+ #
1369
+ # Please note that the type is mandatory when using the relations object.
1370
+ #
1371
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Relation::Step#type
1372
+ module Type
1373
+ extend Nextbillionai::Internal::Type::Enum
1374
+
1375
+ START = :start
1376
+ END_ = :end
1377
+ JOB = :job
1378
+ PICKUP = :pickup
1379
+ DELIVERY = :delivery
1380
+
1381
+ # @!method self.values
1382
+ # @return [Array<Symbol>]
1383
+ end
1384
+ end
1385
+
1386
+ # Specifies the type of relation constraint. The following types are supported:
1387
+ #
1388
+ # - in_same_route: Ensures that all steps are covered in the same route in
1389
+ # solution.
1390
+ # - in_sequence: Ensures that all steps are in the same route and their sequence
1391
+ # matches the order specified in the steps field. Insertion of new steps between
1392
+ # the steps specified, is allowed.
1393
+ # - in_direct_sequence: Similar to in_sequence, but insertion of new steps is not
1394
+ # allowed in the final route.
1395
+ # - precedence: Restricts the travel time between the first step and second step.
1396
+ # If the precedence requirement cannot be satisfied, then the task specified at
1397
+ # the second step will not be assigned. Only 2 steps can be specified in a
1398
+ # single precedence type relations. Please use multiple precedence relations to
1399
+ # apply restrictions on more than 2 tasks.
1400
+ #
1401
+ # If the vehicle field is specified in the relations input, all steps will be
1402
+ # served by that particular vehicle. Otherwise, the route can be allocated to any
1403
+ # feasible vehicle.
1404
+ #
1405
+ # Please note that the type field is mandatory when using the relations object.
1406
+ #
1407
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Relation#type
1408
+ module Type
1409
+ extend Nextbillionai::Internal::Type::Enum
1410
+
1411
+ IN_SAME_ROUTE = :in_same_route
1412
+ IN_SEQUENCE = :in_sequence
1413
+ IN_DIRECT_SEQUENCE = :in_direct_sequence
1414
+ PRECEDENCE = :precedence
1415
+
1416
+ # @!method self.values
1417
+ # @return [Array<Symbol>]
1418
+ end
1419
+ end
1420
+
1421
+ class Solution < Nextbillionai::Internal::Type::BaseModel
1422
+ # @!attribute cost
1423
+ # Specify the cost of the route.
1424
+ #
1425
+ # @return [Integer]
1426
+ required :cost, Integer
1427
+
1428
+ # @!attribute steps
1429
+ # Describe the steps in this route.
1430
+ #
1431
+ # @return [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step>]
1432
+ required :steps,
1433
+ -> {
1434
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Optimization::V2SubmitParams::Solution::Step]
1435
+ }
1436
+
1437
+ # @!attribute vehicle
1438
+ # Specify the ID of the vehicle that was assigned to the route. This field is
1439
+ # mandatory when using the solution attribute and providing an empty string would
1440
+ # result in error. The IDs are case-sensitive.
1441
+ #
1442
+ # **Note:** Since the vehicles can be configured using either a string or an
1443
+ # integer ID, please ensure that the same value type is provided for this field as
1444
+ # was used in the original request.
1445
+ #
1446
+ # @return [String]
1447
+ required :vehicle, String
1448
+
1449
+ # @!attribute delivery
1450
+ # Specify the total quantities, for each dimension (or unit), of deliveries
1451
+ # performed in the route.
1452
+ #
1453
+ # @return [Array<Integer>, nil]
1454
+ optional :delivery, Nextbillionai::Internal::Type::ArrayOf[Integer]
1455
+
1456
+ # @!attribute description
1457
+ # Specify the description of the assigned vehicle.
1458
+ #
1459
+ # @return [String, nil]
1460
+ optional :description, String
1461
+
1462
+ # @!attribute distance
1463
+ # Specify the total distance of the route, in meters.
1464
+ #
1465
+ # @return [Integer, nil]
1466
+ optional :distance, Integer
1467
+
1468
+ # @!attribute duration
1469
+ # Specify the total drive duration of the route, in seconds.
1470
+ #
1471
+ # @return [Integer, nil]
1472
+ optional :duration, Integer
1473
+
1474
+ # @!attribute geometry
1475
+ # Specify the geometry of this route encoded in polyline format.
1476
+ #
1477
+ # @return [String, nil]
1478
+ optional :geometry, String
1479
+
1480
+ # @!attribute pickup
1481
+ # Specify the total quantities, for each dimension (or unit), of pickups performed
1482
+ # in the route.
1483
+ #
1484
+ # @return [Array<Integer>, nil]
1485
+ optional :pickup, Nextbillionai::Internal::Type::ArrayOf[Integer]
1486
+
1487
+ # @!attribute priority
1488
+ # Specify the sum of priorities of all tasks on the route.
1489
+ #
1490
+ # @return [Integer, nil]
1491
+ optional :priority, Integer
1492
+
1493
+ # @!attribute service
1494
+ # Specify the total service time for the route, in seconds.
1495
+ #
1496
+ # @return [Integer, nil]
1497
+ optional :service, Integer
1498
+
1499
+ # @!attribute setup
1500
+ # Specify the total set-up duration, in seconds, needed for the tasks on the
1501
+ # route.
1502
+ #
1503
+ # @return [Integer, nil]
1504
+ optional :setup, Integer
1505
+
1506
+ # @!attribute waiting_time
1507
+ # Specify the total waiting time of the vehicle on the route, in seconds.
1508
+ #
1509
+ # @return [Integer, nil]
1510
+ optional :waiting_time, Integer
1511
+
1512
+ # @!method initialize(cost:, steps:, vehicle:, delivery: nil, description: nil, distance: nil, duration: nil, geometry: nil, pickup: nil, priority: nil, service: nil, setup: nil, waiting_time: nil)
1513
+ # Some parameter documentations has been truncated, see
1514
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Solution} for more
1515
+ # details.
1516
+ #
1517
+ # @param cost [Integer] Specify the cost of the route.
1518
+ #
1519
+ # @param steps [Array<Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step>] Describe the steps in this route.
1520
+ #
1521
+ # @param vehicle [String] Specify the ID of the vehicle that was assigned to the route. This field is mand
1522
+ #
1523
+ # @param delivery [Array<Integer>] Specify the total quantities, for each dimension (or unit), of deliveries perfor
1524
+ #
1525
+ # @param description [String] Specify the description of the assigned vehicle.
1526
+ #
1527
+ # @param distance [Integer] Specify the total distance of the route, in meters.
1528
+ #
1529
+ # @param duration [Integer] Specify the total drive duration of the route, in seconds.
1530
+ #
1531
+ # @param geometry [String] Specify the geometry of this route encoded in polyline format.
1532
+ #
1533
+ # @param pickup [Array<Integer>] Specify the total quantities, for each dimension (or unit), of pickups performed
1534
+ #
1535
+ # @param priority [Integer] Specify the sum of priorities of all tasks on the route.
1536
+ #
1537
+ # @param service [Integer] Specify the total service time for the route, in seconds.
1538
+ #
1539
+ # @param setup [Integer] Specify the total set-up duration, in seconds, needed for the tasks on the route
1540
+ #
1541
+ # @param waiting_time [Integer] Specify the total waiting time of the vehicle on the route, in seconds.
1542
+
1543
+ class Step < Nextbillionai::Internal::Type::BaseModel
1544
+ # @!attribute id
1545
+ # The ID of the step. This field is mandatory for all steps except for start and
1546
+ # end type.
1547
+ #
1548
+ # Please note that the ID provided here must also be present in either the jobs or
1549
+ # the shipments objects.
1550
+ #
1551
+ # **Note:** We have modified the data type of this field. The latest change is
1552
+ # backward compatible and both integer and string type IDs are valid for this
1553
+ # field, as long as they match the IDs of the jobs or shipments already
1554
+ # configured.
1555
+ #
1556
+ # @return [String]
1557
+ required :id, String
1558
+
1559
+ # @!attribute arrival
1560
+ # Specify the time at which the vehicle arrives at the step location. If
1561
+ # time_windows is provided, then arrival will be an UNIX timestamp expressed in
1562
+ # seconds. Otherwise, it will be the total duration, in seconds, elapsed since the
1563
+ # start of the route.
1564
+ #
1565
+ # Please note that arrival is mandatory when using the solution object.
1566
+ #
1567
+ # @return [Integer]
1568
+ required :arrival, Integer
1569
+
1570
+ # @!attribute type
1571
+ # Specify the type of the step.
1572
+ #
1573
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step::Type]
1574
+ required :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Solution::Step::Type }
1575
+
1576
+ # @!attribute description
1577
+ # Specify the description of this step.
1578
+ #
1579
+ # @return [String, nil]
1580
+ optional :description, String
1581
+
1582
+ # @!attribute distance
1583
+ # Specify the distance covered, in meters, from the start of the route up until
1584
+ # the current step.
1585
+ #
1586
+ # Please note that the value of this parameter accumulates with each step. In case
1587
+ # , the travel_cost: air_distance, then the distance here should be the straight
1588
+ # line distance.
1589
+ #
1590
+ # @return [Integer, nil]
1591
+ optional :distance, Integer
1592
+
1593
+ # @!attribute duration
1594
+ # Specify the drive time, in seconds, from the start of the route up until the
1595
+ # start of the step. Please note that the value of this parameter accumulates with
1596
+ # each step.
1597
+ #
1598
+ # @return [Integer, nil]
1599
+ optional :duration, Integer
1600
+
1601
+ # @!attribute load_
1602
+ # Specify the load on the vehicle after completing this step. In case of multiple
1603
+ # dimensions, please specify the load for each type.
1604
+ #
1605
+ # @return [Array<Integer>, nil]
1606
+ optional :load_, Nextbillionai::Internal::Type::ArrayOf[Integer], api_name: :load
1607
+
1608
+ # @!attribute location
1609
+ # Specify the location coordinates of the step in the \[latitude, longitude\]
1610
+ # format. Alternatively, location_index property can also be used to specify the
1611
+ # location of the step.
1612
+ #
1613
+ # Please note that either location or location_index is mandatory.
1614
+ #
1615
+ # @return [Array<Float>, nil]
1616
+ optional :location, Nextbillionai::Internal::Type::ArrayOf[Float]
1617
+
1618
+ # @!attribute location_index
1619
+ # Specify the index (in the location array) of the location coordinates where the
1620
+ # step is performed. The valid range of values is \[0, length of location array).
1621
+ # Alternatively, location property can also be used to specify the location.
1622
+ #
1623
+ # Please note that either location or location_index is mandatory.
1624
+ #
1625
+ # @return [Integer, nil]
1626
+ optional :location_index, Integer
1627
+
1628
+ # @!attribute service
1629
+ # Specify the service time, in seconds, at this step.
1630
+ #
1631
+ # @return [Integer, nil]
1632
+ optional :service, Integer
1633
+
1634
+ # @!attribute setup
1635
+ # Specify the set-up duration, in seconds, needed at the step.
1636
+ #
1637
+ # @return [Integer, nil]
1638
+ optional :setup, Integer
1639
+
1640
+ # @!attribute waiting_time
1641
+ # Specify the wait time of the vehicle at this step, in seconds.
1642
+ #
1643
+ # @return [Integer, nil]
1644
+ optional :waiting_time, Integer
1645
+
1646
+ # @!method initialize(id:, arrival:, type:, description: nil, distance: nil, duration: nil, load_: nil, location: nil, location_index: nil, service: nil, setup: nil, waiting_time: nil)
1647
+ # Some parameter documentations has been truncated, see
1648
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step} for more
1649
+ # details.
1650
+ #
1651
+ # Describe details about a step of a route
1652
+ #
1653
+ # @param id [String] The ID of the step. This field is mandatory for all steps except for start and e
1654
+ #
1655
+ # @param arrival [Integer] Specify the time at which the vehicle arrives at the step location. If time_wind
1656
+ #
1657
+ # @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step::Type] Specify the type of the step.
1658
+ #
1659
+ # @param description [String] Specify the description of this step.
1660
+ #
1661
+ # @param distance [Integer] Specify the distance covered, in meters, from the start of the route up until th
1662
+ #
1663
+ # @param duration [Integer] Specify the drive time, in seconds, from the start of the route up until the sta
1664
+ #
1665
+ # @param load_ [Array<Integer>] Specify the load on the vehicle after completing this step. In case of multiple
1666
+ #
1667
+ # @param location [Array<Float>] Specify the location coordinates of the step in the \[latitude, longitude\] form
1668
+ #
1669
+ # @param location_index [Integer] Specify the index (in the location array) of the location coordinates where the
1670
+ #
1671
+ # @param service [Integer] Specify the service time, in seconds, at this step.
1672
+ #
1673
+ # @param setup [Integer] Specify the set-up duration, in seconds, needed at the step.
1674
+ #
1675
+ # @param waiting_time [Integer] Specify the wait time of the vehicle at this step, in seconds.
1676
+
1677
+ # Specify the type of the step.
1678
+ #
1679
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Solution::Step#type
1680
+ module Type
1681
+ extend Nextbillionai::Internal::Type::Enum
1682
+
1683
+ START = :start
1684
+ END_ = :end
1685
+ JOB = :job
1686
+ PICKUP = :pickup
1687
+ DELIVERY = :delivery
1688
+ BREAK = :break
1689
+
1690
+ # @!method self.values
1691
+ # @return [Array<Symbol>]
1692
+ end
1693
+ end
1694
+ end
1695
+
1696
+ class Unassigned < Nextbillionai::Internal::Type::BaseModel
1697
+ # @!attribute jobs
1698
+ # Specify the unassigned job IDs from the previous optimization result. Please
1699
+ # note the IDs should also be present in the jobs part of the input.
1700
+ #
1701
+ # **Note:** We have modified the data type of this field. However, the latest
1702
+ # change is backward compatible and both integer and string type job IDs are valid
1703
+ # for this field, as long as they match the IDs of the jobs already configured.
1704
+ # Providing mixed value types in the array, will lead to an error.
1705
+ #
1706
+ # @return [Array<String>, nil]
1707
+ optional :jobs, Nextbillionai::Internal::Type::ArrayOf[String]
1708
+
1709
+ # @!attribute shipments
1710
+ # Specify the unassigned shipment pickup & delivery IDs from the previous
1711
+ # optimization result. Both the pickup & delivery steps of a shipment should be
1712
+ # part of the same array.
1713
+ #
1714
+ # **Note:** We have modified the data type of this field. However, the latest
1715
+ # change is backward compatible and both integer and string type shipment IDs are
1716
+ # valid for this field, as long as they match the IDs of the shipments already
1717
+ # configured. Providing mixed value types in the array, will lead to an error.
1718
+ #
1719
+ # @return [Array<Array<String>>, nil]
1720
+ optional :shipments,
1721
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[String]]
1722
+
1723
+ # @!method initialize(jobs: nil, shipments: nil)
1724
+ # Some parameter documentations has been truncated, see
1725
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Unassigned} for more
1726
+ # details.
1727
+ #
1728
+ # unassigned attribute is related to the re-optimization feature. This attribute
1729
+ # should contain the tasks that were not assigned during an earlier optimization
1730
+ # process. Please note that the unassigned part in request should be consistent
1731
+ # with the unassigned part in the previous optimization result.
1732
+ #
1733
+ # Users can reduce the number of unassigned tasks in the re-optimized solution, by
1734
+ # following strategies such as:
1735
+ #
1736
+ # - Extending the time windows for vehicles or tasks to give more flexibility
1737
+ # - Adding more vehicles to the optimization problem
1738
+ # - Adjusting the priority of different tasks to balance the workload more evenly
1739
+ # - Modifying other constraints or parameters to make the problem more solvable
1740
+ #
1741
+ # Ultimately, the goal is to minimize the number of unassigned tasks while still
1742
+ # meeting all the necessary constraints and objectives.
1743
+ #
1744
+ # @param jobs [Array<String>] Specify the unassigned job IDs from the previous optimization result. Please not
1745
+ #
1746
+ # @param shipments [Array<Array<String>>] Specify the unassigned shipment pickup & delivery IDs from the previous optimiza
1747
+ end
1748
+
1749
+ class Zone < Nextbillionai::Internal::Type::BaseModel
1750
+ # @!attribute id
1751
+ # Provide an ID for the zone. This field is mandatory when adding zones.
1752
+ #
1753
+ # @return [Integer]
1754
+ required :id, Integer
1755
+
1756
+ # @!attribute geofence_id
1757
+ # Provide the ID of a pre-created geofence using the
1758
+ # [Geofence API](https://docs.nextbillion.ai/docs/tracking/api/geofence).
1759
+ #
1760
+ # Please note that one of geometry or geofence_id should be provided.
1761
+ #
1762
+ # @return [String, nil]
1763
+ optional :geofence_id, String
1764
+
1765
+ # @!attribute geometry
1766
+ # It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9)
1767
+ # with details of the geographic boundaries of the zone. Only “Polygon” and
1768
+ # “MultiPolygon” geoJSON types are supported.
1769
+ #
1770
+ # Please note that one of geometry or geofence_id should be provided.
1771
+ #
1772
+ # @return [Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry, nil]
1773
+ optional :geometry, -> { Nextbillionai::Optimization::V2SubmitParams::Zone::Geometry }
1774
+
1775
+ # @!method initialize(id:, geofence_id: nil, geometry: nil)
1776
+ # Some parameter documentations has been truncated, see
1777
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Zone} for more details.
1778
+ #
1779
+ # @param id [Integer] Provide an ID for the zone. This field is mandatory when adding zones.
1780
+ #
1781
+ # @param geofence_id [String] Provide the ID of a pre-created geofence using the [Geofence API](https://docs.n
1782
+ #
1783
+ # @param geometry [Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry] It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9) w
1784
+
1785
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Zone#geometry
1786
+ class Geometry < Nextbillionai::Internal::Type::BaseModel
1787
+ # @!attribute coordinates
1788
+ # An array of coordinates in the \[longitude, latitude\] format, representing the
1789
+ # zone boundary.
1790
+ #
1791
+ # @return [Array<Array<Float>>, nil]
1792
+ optional :coordinates,
1793
+ Nextbillionai::Internal::Type::ArrayOf[Nextbillionai::Internal::Type::ArrayOf[Float]]
1794
+
1795
+ # @!attribute description
1796
+ # Provide a description to identify the zone
1797
+ #
1798
+ # @return [String, nil]
1799
+ optional :description, String
1800
+
1801
+ # @!attribute type
1802
+ # Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
1803
+ #
1804
+ # @return [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry::Type, nil]
1805
+ optional :type, enum: -> { Nextbillionai::Optimization::V2SubmitParams::Zone::Geometry::Type }
1806
+
1807
+ # @!method initialize(coordinates: nil, description: nil, type: nil)
1808
+ # Some parameter documentations has been truncated, see
1809
+ # {Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry} for more
1810
+ # details.
1811
+ #
1812
+ # It is a [geoJSON object](https://datatracker.ietf.org/doc/html/rfc7946#page-9)
1813
+ # with details of the geographic boundaries of the zone. Only “Polygon” and
1814
+ # “MultiPolygon” geoJSON types are supported.
1815
+ #
1816
+ # Please note that one of geometry or geofence_id should be provided.
1817
+ #
1818
+ # @param coordinates [Array<Array<Float>>] An array of coordinates in the \[longitude, latitude\] format, representing the
1819
+ #
1820
+ # @param description [String] Provide a description to identify the zone
1821
+ #
1822
+ # @param type [Symbol, Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry::Type] Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
1823
+
1824
+ # Type of the geoJSON geometry. Should always be Polygon or MultiPolygon.
1825
+ #
1826
+ # @see Nextbillionai::Models::Optimization::V2SubmitParams::Zone::Geometry#type
1827
+ module Type
1828
+ extend Nextbillionai::Internal::Type::Enum
1829
+
1830
+ POLYGON = :Polygon
1831
+ MULTI_POLYGON = :MultiPolygon
1832
+
1833
+ # @!method self.values
1834
+ # @return [Array<Symbol>]
1835
+ end
1836
+ end
1837
+ end
1838
+ end
1839
+ end
1840
+ end
1841
+ end