> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# TripStop

> Paradas físicas na sequência de uma viagem, referenciando Points do catálogo global com horários

## Campos

| Campo         | Tipo        | Descrição                                              |
| ------------- | ----------- | ------------------------------------------------------ |
| `tripStopId`  | `UUID`      | Identificador único                                    |
| `tripId`      | `UUID`      | Referência à viagem                                    |
| `pointId`     | `UUID`      | Referência ao Point do catálogo global                 |
| `stopOrder`   | `Int`       | Posição ordinal da parada na sequência da viagem       |
| `arrivalAt`   | `DateTime?` | Data/hora de chegada (null para primeira parada)       |
| `departureAt` | `DateTime?` | Data/hora de partida (null para última parada)         |
| `createdBy`   | `UUID?`     | Usuário que criou o registro, quando aplicável         |
| `createdAt`   | `DateTime`  | Data de criação                                        |
| `updatedBy`   | `UUID?`     | Usuário que fez a última atualização, quando aplicável |
| `updatedAt`   | `DateTime`  | Data da última atualização                             |

## Relacionamentos

* Relaciona-se com [Trip](/data-modelling/operations/trip)
* Relaciona-se com [Point](/data-modelling/operations/point)
* Relaciona-se com múltiplos [TripItinerary](/data-modelling/operations/trip-itinerary) (como origem via `fromStopId`)
* Relaciona-se com múltiplos [TripItinerary](/data-modelling/operations/trip-itinerary) (como destino via `toStopId`)
* Relaciona-se com múltiplos [TripEvent](/data-modelling/operations/trip-event)

## Regras de Negócio

* Cada posição ordinal é única dentro de uma viagem.
* Nome e coordenadas da parada vivem em **Point** — TripStop só referencia via `pointId`.
* A primeira parada (`stopOrder = 0`) tem `arrivalAt = null` (é o ponto de partida).
* A última parada tem `departureAt = null` (é o destino final).
* Os horários são preenchidos conforme a viagem progride — na criação, representam estimativas.
* Paradas definem a timeline real da viagem; dados geográficos são centralizados no catálogo global de Points.

## Sequência de paradas

Viagem SP → Campinas → Ribeirão Preto (nomes resolvidos via Point):

| stopOrder | Point          | arrivalAt | departureAt |
| --------- | -------------- | --------- | ----------- |
| 0         | São Paulo      | null      | 08:00       |
| 1         | Campinas       | 09:30     | 09:45       |
| 2         | Ribeirão Preto | 12:00     | null        |

## Example

```json theme={null}
{
  "tripStopId": "0197a810-1ec9-7a9a-9a41-df98334b870e",
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "pointId": "0197a80b-3f5c-7f5c-86e9-ff4f8a6ce1dc",
  "stopOrder": 0,
  "arrivalAt": null,
  "departureAt": "2026-07-04T08:00:00.000Z",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-03T15:31:00.000Z",
  "updatedBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "updatedAt": "2026-07-03T15:31:00.000Z"
}
```
