차량의 경로는 시간축을 따라 다음과 같이 분해할 수 있습니다(방문 횟수가 n이라고 가정).
  |            |            |          |       |  T[2], |        |      |
  | Transition |  Visit #0  |          |       |  V[2], |        |      |
  |     #0     |    aka     |   T[1]   |  V[1] |  ...   | V[n-1] | T[n] |
  |  aka T[0]  |    V[0]    |          |       | V[n-2],|        |      |
  |            |            |          |       | T[n-1] |        |      |
  ^            ^            ^          ^       ^        ^        ^      ^
vehicle    V[0].start   V[0].end     V[1].   V[1].    V[n].    V[n]. vehicle
 start     (arrival)   (departure)   start   end      start    end     end
다음 예시에는 차이가 있습니다.
- 차량 시작 및 종료, 각 방문의 시작 및 종료(도착 및 출발)와 같은 '정확한 이벤트' 몇 초 안에 발생합니다.
- '시간 간격'(예: 방문 자체, 방문 간 전환) 시간 간격의 지속 시간이 0인 경우도 있지만(예: 시작과 종료 시간이 같을 때) 지속 시간이 양수인 경우가 많습니다.
불변:
- 방문이 n회면 전환은 n+1회입니다.
- 방문은 항상 그 전의 전환(동일한 색인)과 그 후의 전환(색인 + 1)으로 둘러싸여 있습니다.
- 차량 시작 후에는 항상 전환 #0이 뒤따릅니다.
- 차량 끝은 항상 전환 #n 앞에 옵니다.
확대하면 Transition 및 Visit 중에 다음과 같은 일이 발생합니다.
---+-------------------------------------+-----------------------------+-->
   |           TRANSITION[i]             |           VISIT[i]          |
   |                                     |                             |
   |  * TRAVEL: the vehicle moves from   |      PERFORM the visit:     |
   |    VISIT[i-1].departure_location to |                             |
   |    VISIT[i].arrival_location, which |  * Spend some time:         |
   |    takes a given travel duration    |    the "visit duration".    |
   |    and distance                     |                             |
   |                                     |  * Load or unload           |
   |  * BREAKS: the driver may have      |    some quantities from the |
   |    breaks (e.g. lunch break).       |    vehicle: the "demand".   |
   |                                     |                             |
   |  * WAIT: the driver/vehicle does    |                             |
   |    nothing. This can happen for     |                             |
   |    many reasons, for example when   |                             |
   |    the vehicle reaches the next     |                             |
   |    event's destination before the   |                             |
   |    start of its time window         |                             |
   |                                     |                             |
   |  * DELAY: *right before* the next   |                             |
   |    arrival. E.g. the vehicle and/or |                             |
   |    driver spends time unloading.    |                             |
   |                                     |                             |
---+-------------------------------------+-----------------------------+-->
   ^                                     ^                             ^
V[i-1].end                           V[i].start                    V[i].end
마지막으로 전환 중에 TRAVEL, BREAKS, DELAY, WAIT를 배치하는 방법은 다음과 같습니다.
- 겹치지 않습니다.
- 지연은 고유하며 다음 방문 (또는 차량 종료) 직전에 연속된 시간이어야 합니다. 따라서 지연 기간을 알고 있으면 시작 시간과 종료 시간을 알 수 있습니다.
- BREAKS는 중복되지 않는 연속된 시간입니다. 응답은 각 광고 시점의 시작 시간과 길이를 지정합니다.
- TRAVEL 및 WAIT는 '선점 가능'하며 전환 중에 여러 번 중단될 수 있습니다. 클라이언트는 이동이 '가능한 한 빨리' 발생하고 '대기'가 남은 시간을 채울 것이라고 가정할 수 있습니다.
(복잡한) 예시:
                               TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
  ||     |       |           |       |           |         |         ||
  ||  T  |   B   |     T     |       |     B     |         |    D    ||
  ||  r  |   r   |     r     |   W   |     r     |    W    |    e    ||
  ||  a  |   e   |     a     |   a   |     e     |    a    |    l    ||
  ||  v  |   a   |     v     |   i   |     a     |    i    |    a    ||
  ||  e  |   k   |     e     |   t   |     k     |    t    |    y    ||
  ||  l  |       |     l     |       |           |         |         ||
  ||     |       |           |       |           |         |         ||
--++-----------------------------------------------------------------++-->
| JSON 표현 | 
|---|
| { "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( | 
| 필드 | |
|---|---|
| vehicleIndex | 
 경로를 수행하는 차량으로, 소스  | 
| vehicleLabel | 
 이 경로를 수행하는 차량의 라벨입니다. 지정된 경우  | 
| vehicleStartTime | 
 차량이 경로를 시작하는 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면  | 
| vehicleEndTime | 
 차량이 경로를 완료하는 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면  | 
| visits[] | 
 경로를 나타내는 방문의 순서가 지정된 순서로서 방문수[i] 는 경로의 i번째 방문입니다. 이 필드가 비어 있으면 차량이 사용되지 않는 것으로 간주됩니다. | 
| transitions[] | 
 경로의 전환 목록(순서 지정)입니다. | 
| hasTrafficInfeasibilities | 
 
 교통정보로 인해 예상 이동 시간( | 
| routePolyline | 
 경로의 인코딩된 폴리라인 표현입니다. 이 필드는  | 
| breaks[] | 
 이 경로를 운행하는 차량에 예정된 휴식 시간입니다.  | 
| metrics | 
 이 경로의 기간, 거리, 부하 측정항목입니다.  | 
| routeCosts | 
 비용 관련 요청 필드별로 나눠진 경로의 비용입니다. 키는 입력 최적화 도구 투어 요청(예: 'model.shipments.pickups.cost')을 기준으로 한 프로토콜 경로(예: 'model.shipments.pickups.cost')이며 값은 해당 비용 필드에서 생성되어 전체 경로에 대해 집계된 총 비용입니다. 즉, costs["model.shipments.pickups.cost"]는 경로의 모든 수령 비용의 합계입니다. 모델에 정의된 모든 비용은 여기에 자세히 보고됩니다. 단, 2022년 1월 현재 집계된 방식으로만 보고되는 TransitionAttributes와 관련된 비용은 예외입니다. 
 | 
| routeTotalCost | 
 경로의 총비용입니다. 비용 지도의 모든 비용의 합계입니다. | 
방문
경로 중에 이루어진 방문입니다. 이 방문은 Shipment의 수령 또는 배송에 해당합니다.
| JSON 표현 | 
|---|
| {
  "shipmentIndex": integer,
  "isPickup": boolean,
  "visitRequestIndex": integer,
  "startTime": string,
  "loadDemands": {
    string: {
      object ( | 
| 필드 | |
|---|---|
| shipmentIndex | 
 소스  | 
| isPickup | 
 이 값이 true이면 방문이  | 
| visitRequestIndex | 
 
 | 
| startTime | 
 방문이 시작되는 시간입니다. 차량이 이보다 일찍 방문 위치에 도착할 수 있습니다. 시간이  RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면  | 
| loadDemands | 
 배송 및 방문 요청  
 | 
| detour | 
 방문 전에 경로에서 방문한 배송 상품과 시간대에서 발생할 수 있는 대기 시간으로 인한 추가 우회 시간입니다. 방문이 배송인 경우 우회 경로는 해당하는 수령 방문에서 계산되며 다음과 같습니다. 그 외의 경우에는 차량  소수점 아래가 최대 9자리까지이고 ' | 
| shipmentLabel | 
 
 | 
| visitLabel | 
 
 | 
| injectedSolutionLocationToken | 
 방문 위치에 대한 정보를 나타내는 불투명 토큰입니다. 이 방문에 대해  | 
전환
경로에서 두 이벤트 간의 전환입니다. ShipmentRoute의 설명을 참고하세요.
차량에 startLocation 또는 endLocation가 없으면 해당 이동 측정항목은 0입니다.
| JSON 표현 | 
|---|
| { "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( | 
| 필드 | |
|---|---|
| travelDuration | 
 이 전환 기간의 이동 시간입니다. 소수점 아래가 최대 9자리까지이고 ' | 
| travelDistanceMeters | 
 전환 중 이동한 거리입니다. | 
| trafficInfoUnavailable | 
 
 | 
| delayDuration | 
 이 전환에 적용된 지연 시간의 합계입니다. 지연 시간이 있는 경우 다음 이벤트 (방문 또는 차량 종료) 정확히  소수점 아래가 최대 9자리까지이고 ' | 
| breakDuration | 
 이 전환 중에 발생한 중단 시간의 합계입니다(있는 경우). 각 광고 시점의 시작 시간 및 시간에 관한 세부정보는  소수점 아래가 최대 9자리까지이고 ' | 
| waitDuration | 
 이 전환 중에 대기한 시간입니다. 대기 시간은 유휴 시간에 해당하며 휴식 시간을 포함하지 않습니다. 또한 이 대기 시간은 연속되지 않은 여러 간격으로 나뉨을 수 있습니다. 소수점 아래가 최대 9자리까지이고 ' | 
| totalDuration | 
 편의상 제공되는 총 전환 기간입니다. 다음과 같습니다. 
 소수점 아래가 최대 9자리까지이고 ' | 
| startTime | 
 이 전환의 시작 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면  | 
| routePolyline | 
 전환 중에 이어지는 경로의 인코딩된 폴리라인 표현입니다. 이 필드는  | 
| vehicleLoads | 
 전환 과정에서 이 차량의  첫 번째 전환 중의 로드는 차량 경로의 시작 로드입니다. 그런 다음 각 방문 후 방문이 수령인지 배달인지에 따라 다음 전환의 로드를 가져오기 위해 방문의  
 | 
EncodedPolyline
다중선의 인코딩된 표현입니다. 폴리라인 인코딩에 관한 자세한 내용은 https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding을 참고하세요.
| JSON 표현 | 
|---|
| { "points": string } | 
| 필드 | |
|---|---|
| points | 
 다중선의 인코딩된 점을 나타내는 문자열입니다. | 
휴식 시간
광고 시점 실행을 나타내는 데이터입니다.
| JSON 표현 | 
|---|
| { "startTime": string, "duration": string } | 
| 필드 | |
|---|---|
| startTime | 
 휴식 시작 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면  | 
| duration | 
 휴식 시간입니다. 소수점 아래가 최대 9자리까지이고 ' |