SPOTIO Routes V2 API

API for routes. You can manage routes and calculate route based on stops list. You can also start a new trip based on the route.

Operations 8

POST /api/routes/v2 Create new route.
PATCH /api/routes/v2/{id} Update the route.
GET /api/routes/v2/{id} Get the route by id.
GET /api/routes/v2/preview Get a preview of the first route scheduled for today for the calling user, intended for the home screen widget.
POST /api/routes/v2/calculate Calculate the route.
POST /api/routes/v2/enhance Enhance the route.
POST /api/routes/v2/{id}/start Start the trip based on the route.
POST /api/routes/v2/recommended-stops Get recommended stops for the route.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/spotio-routesv2-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

spotio-routesv2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v1
  title: Spotio 2.0 Routes V2 API
  description: API for routes. You can manage routes and calculate route based on stops list. You can also start a new trip based on the route.
  contact:
    name: Contact us
    url: https://spotio.com/contact/
    email: support@spotio.com
servers:
- url: https://api.spotio2.com
  description: Production
- url: https://app-test.spotio2.com
  description: Test
security:
- Bearer: []
tags:
- name: RoutesV2
  description: API for routes. You can manage routes and calculate route based on stops list. You can also start a new trip based on the route.
paths:
  /api/routes/v2:
    post:
      tags:
      - RoutesV2
      summary: Create new route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2'
          application/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2'
          text/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/{id}:
    patch:
      tags:
      - RoutesV2
      summary: Update the route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Patch.PatchRouteRequestV2'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Morcatko.AspNetCore.JsonMergePatch.JsonMergePatchDocument`1[[Spotio.Frontend.ViewModel.Appointment.V2.PatchAppointmentV2, Spotio.Frontend.ViewModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
          application/json:
            schema:
              $ref: '#/components/schemas/Morcatko.AspNetCore.JsonMergePatch.JsonMergePatchDocument`1[[Spotio.Frontend.ViewModel.Appointment.V2.PatchAppointmentV2, Spotio.Frontend.ViewModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
          text/json:
            schema:
              $ref: '#/components/schemas/Morcatko.AspNetCore.JsonMergePatch.JsonMergePatchDocument`1[[Spotio.Frontend.ViewModel.Appointment.V2.PatchAppointmentV2, Spotio.Frontend.ViewModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Morcatko.AspNetCore.JsonMergePatch.JsonMergePatchDocument`1[[Spotio.Frontend.ViewModel.Appointment.V2.PatchAppointmentV2, Spotio.Frontend.ViewModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
    get:
      tags:
      - RoutesV2
      summary: Get the route by id.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      - name: id
        in: path
        description: Id of the route.
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/preview:
    get:
      tags:
      - RoutesV2
      summary: Get a preview of the first route scheduled for today for the calling user, intended for the home screen widget.
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RoutePreview'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RoutePreview'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RoutePreview'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/calculate:
    post:
      tags:
      - RoutesV2
      summary: Calculate the route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Calculate.CalculateRouteRequestV2'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Calculate.CalculateRouteRequestV2'
          application/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Calculate.CalculateRouteRequestV2'
          text/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Calculate.CalculateRouteRequestV2'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Calculate.CalculateRouteRequestV2'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.CalculatedRouteV2'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.CalculatedRouteV2'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.CalculatedRouteV2'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/enhance:
    post:
      tags:
      - RoutesV2
      summary: Enhance the route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.EnhancedRoute'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.EnhancedRoute'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.EnhancedRoute'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/{id}/start:
    post:
      tags:
      - RoutesV2
      summary: Start the trip based on the route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      - name: id
        in: path
        description: Id of the route.
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.TripV2'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.TripV2'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.TripV2'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
  /api/routes/v2/recommended-stops:
    post:
      tags:
      - RoutesV2
      summary: Get recommended stops for the route.
      parameters:
      - name: x-app-version
        in: header
        schema:
          type: string
      - name: filterId
        in: query
        schema:
          type: string
      requestBody:
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsRequest'
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsRequest'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            application/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
            text/json:
              schema:
                $ref: '#/components/schemas/ResultType.Results.Error'
        '401':
          description: Unauthorized
      security:
      - Bearer: []
      servers:
      - url: https://api.spotio2.com
        description: Production
      - url: https://app-test.spotio2.com
        description: Test
components:
  schemas:
    Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.ActivityLoggedAtTripStop:
      type: object
      additionalProperties: false
      properties:
        id:
          type:
          - string
          - 'null'
        activityTemplateId:
          type:
          - string
          - 'null'
        resultId:
          type:
          - string
          - 'null'
    Spotio.Frontend.ViewModel.UserTracking.LastUserPosition:
      type: object
      additionalProperties: false
      properties:
        lat:
          type:
          - number
          - 'null'
          description: Latitude of the user's last known position; null when unknown.
          format: double
        lng:
          type:
          - number
          - 'null'
          description: Longitude of the user's last known position; null when unknown.
          format: double
        updatedAt:
          type:
          - string
          - 'null'
          description: When the position was recorded; null when unknown.
          format: date-time
    Spotio.UserTracking.Client.DTO.Routing.TravelTypeDto:
      type: string
      enum:
      - Driving
      - Walking
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStops.GetRecommendedStopsResponse:
      type: object
      additionalProperties: false
      properties:
        stops:
          type:
          - array
          - 'null'
          description: List of the recommended stops.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStop'
    Spotio.UserTracking.Client.DTO.Routing.StopStatusDto:
      type: string
      enum:
      - Visible
      - NotVisible
    Spotio.UserTracking.Client.DTO.Routing.OptimizationDto:
      type: string
      enum:
      - Distance
      - Schedule
      - Manually
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Enhance.EnhanceRouteRequest:
      type: object
      additionalProperties: false
      properties:
        options:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.Options'
        stops:
          type:
          - array
          - 'null'
          description: List of the route stops.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutingStopV2'
        scheduledDate:
          type:
          - string
          - 'null'
          description: The scheduled date of the route.
          format: date-time
        ownerId:
          type:
          - string
          - 'null'
          description: The id of the route owner.
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Create.CreateRouteRequestV2:
      type: object
      additionalProperties: false
      properties:
        name:
          type:
          - string
          - 'null'
          description: The name of the route.
        notes:
          type:
          - string
          - 'null'
          description: Additional notes about the route.
        status:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.RouteStatusDto'
        options:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.Options'
        stops:
          type:
          - array
          - 'null'
          description: List of the route stops.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteStopWithOptionalIdV2'
        scheduledDate:
          type:
          - string
          - 'null'
          description: The scheduled date of the route.
          format: date-time
        ownerId:
          type:
          - string
          - 'null'
          description: The id of the route owner.
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2:
      type: object
      additionalProperties: false
      properties:
        id:
          type:
          - string
          - 'null'
          description: The id of the route.
        ownerId:
          type:
          - string
          - 'null'
          description: The id of the route owner.
        notes:
          type:
          - string
          - 'null'
          description: Additional notes about the route.
        name:
          type:
          - string
          - 'null'
          description: The name of the route.
        status:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.RouteStatusDto'
        options:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.Options'
        totalDistance:
          type: integer
          description: The total distance of the route in meters.
          format: int64
        totalTimeInSeconds:
          type: integer
          description: The total time of the route in seconds.
          format: int64
        stops:
          type:
          - array
          - 'null'
          description: List of the route stops.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteStopDetailsV2'
        overviewPolyline:
          type:
          - string
          - 'null'
          description: The overview polyline of the route.
        permissionsStatus:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.RouteStatusDto'
        scheduledDate:
          type:
          - string
          - 'null'
          description: The scheduled date of the route.
          format: date-time
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutingStopV2:
      type: object
      additionalProperties: false
      properties:
        dataObjectId:
          type:
          - string
          - 'null'
          description: The ID of the data object associated with the stop.
        lat:
          type: number
          description: The latitude of the stop.
          format: double
        lng:
          type: number
          description: The longitude of the stop.
          format: double
        address:
          type:
          - string
          - 'null'
          description: The address of the stop.
        placeId:
          type:
          - string
          - 'null'
          description: The google place id of the stop.
        type:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.StopTypeDto'
        name:
          type:
          - string
          - 'null'
          description: The stop name.
        enhanced:
          type: boolean
          description: Whether the stop was added by route enhancement.
    ResultType.Results.IError:
      type: object
      additionalProperties: false
      properties:
        message:
          type:
          - string
          - 'null'
          readOnly: true
        memberName:
          type:
          - string
          - 'null'
          readOnly: true
        filePath:
          type:
          - string
          - 'null'
          readOnly: true
        line:
          type: integer
          format: int32
          readOnly: true
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RoutePreview:
      type: object
      additionalProperties: false
      properties:
        route:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RouteDetailsV2'
        recommendedStops:
          type:
          - array
          - 'null'
          description: Recommended stops to overlay on the route.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.RecommendedStop'
        mapCenter:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.UserTracking.LastUserPosition'
    Spotio.UserTracking.Client.DTO.Routing.TripStopDataObjectAccessDto:
      type: string
      enum:
      - Visible
      - NotVisible
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.EnhancedRouteStop:
      type: object
      additionalProperties: false
      properties:
        dataObjectId:
          type:
          - string
          - 'null'
          description: The ID of the data object associated with the stop.
        address:
          type:
          - string
          - 'null'
          description: The address of the stop.
        pinId:
          type:
          - string
          - 'null'
          description: The pin id of the stop.
        lat:
          type: number
          description: The latitude of the stop.
          format: double
        lng:
          type: number
          description: The longitude of the stop.
          format: double
        stageId:
          type:
          - string
          - 'null'
          description: The stage id of the record associated with the stop.
        timeToNextStopInSeconds:
          type: integer
          description: The time to the next stop in seconds.
          format: int64
        distanceToNextStop:
          type: integer
          description: The distance to the next stop in meters.
          format: int64
        activities:
          type:
          - array
          - 'null'
          description: The list of activities associated with the stop.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutingActivity'
        placeId:
          type:
          - string
          - 'null'
          description: The google place id of the stop.
        type:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.StopTypeDto'
        dataObjectTypeId:
          type:
          - string
          - 'null'
          description: The ID of the data object type associated with the stop.
        name:
          type:
          - string
          - 'null'
          description: The stop name.
        color:
          type:
          - string
          - 'null'
          description: Color of the stop.
        scoreLabel:
          type:
          - string
          - 'null'
          description: Score label assigned to the object.
        nba:
          type:
          - string
          - 'null'
          description: Next best action assigned to the object.
        enhanced:
          type: boolean
          description: Indicates whether the stop was added by the enhancement.
    Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.TripStopDetailsV2:
      type: object
      additionalProperties: false
      properties:
        id:
          type:
          - string
          - 'null'
          description: The id of the stop.
        status:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.TripStopStatusDto'
        visitDurationInSeconds:
          type:
          - integer
          - 'null'
          description: The visit duration in seconds associated with the stop.
          format: int32
        loggedActivity:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.TripsV2.ActivityLoggedAtTripStop'
        addressUnit:
          type:
          - string
          - 'null'
          description: The address unit of the record associated with the stop.
        phones:
          type:
          - array
          - 'null'
          description: The list of phone numbers of the record associated with the stop.
          items:
            type: string
        dataObjectAccess:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.TripStopDataObjectAccessDto'
        dataObjectId:
          type:
          - string
          - 'null'
          description: The ID of the data object associated with the stop.
        address:
          type:
          - string
          - 'null'
          description: The address of the stop.
        pinId:
          type:
          - string
          - 'null'
          description: The pin id of the stop.
        lat:
          type: number
          description: The latitude of the stop.
          format: double
        lng:
          type: number
          description: The longitude of the stop.
          format: double
        stageId:
          type:
          - string
          - 'null'
          description: The stage id of the record associated with the stop.
        timeToNextStopInSeconds:
          type: integer
          description: The time to the next stop in seconds.
          format: int64
        distanceToNextStop:
          type: integer
          description: The distance to the next stop in meters.
          format: int64
        activities:
          type:
          - array
          - 'null'
          description: The list of activities associated with the stop.
          items:
            $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.RoutingActivity'
        placeId:
          type:
          - string
          - 'null'
          description: The google place id of the stop.
        type:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.StopTypeDto'
        dataObjectTypeId:
          type:
          - string
          - 'null'
          description: The ID of the data object type associated with the stop.
        name:
          type:
          - string
          - 'null'
          description: The stop name.
        color:
          type:
          - string
          - 'null'
          description: Color of the stop.
        scoreLabel:
          type:
          - string
          - 'null'
          description: Score label assigned to the object.
        nba:
          type:
          - string
          - 'null'
          description: Next best action assigned to the object.
        enhanced:
          type:
          - boolean
          - 'null'
          description: Whether the stop was added by route enhancement.
    Spotio.Frontend.ViewModel.RoutesAndTrips.RoutesV2.Patch.PatchRouteRequestV2:
      type: object
      additionalProperties: false
      properties:
        name:
          type:
          - string
          - 'null'
          description: The name of the route.
        ownerId:
          type:
          - string
          - 'null'
          description: The id of the route owner.
        notes:
          type:
          - string
          - 'null'
          description: Additional notes about the route.
        status:
          $ref: '#/components/schemas/Spotio.UserTracking.Client.DTO.Routing.RouteStatusDto'
        options:
          $ref: '#/components/schemas/Spotio.Frontend.ViewModel.RoutesAndTrips.OptionsPatch'
        stops:
          type:
          - array
          - 'null'
          description: L

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spotio/refs/heads/main/openapi/spotio-routesv2-api-openapi.yml