curl --request PATCH \
--url https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "São Paulo to Campinas daily morning"
}
'import requests
url = "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}"
payload = { "name": "São Paulo to Campinas daily morning" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'São Paulo to Campinas daily morning'})
};
fetch('https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'São Paulo to Campinas daily morning'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}"
payload := strings.NewReader("{\n \"name\": \"São Paulo to Campinas daily morning\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"São Paulo to Campinas daily morning\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"São Paulo to Campinas daily morning\"\n}"
response = http.request(request)
puts response.read_body{
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"cooperativeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"interval": 1,
"status": "ACTIVE",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"tripScheduleStopId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"point": {
"name": "São Paulo",
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"description": "Terminal Rodoviário Tietê",
"lat": -23.5155,
"lng": -46.6254
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135,
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
}
],
"itineraries": [
{
"tripScheduleItineraryId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
}
],
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"deletedBy": null,
"endAt": "2026-12-31T23:59:59.000Z"
}{
"errors": [
{
"message": "required",
"path": "name"
}
],
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Missing or invalid access token",
"statusCode": 401
}{
"message": "Insufficient permissions",
"statusCode": 403
}{
"message": "Internal Server Error",
"statusCode": 500
}Update Trip Schedule
Updates a trip schedule.
curl --request PATCH \
--url https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "São Paulo to Campinas daily morning"
}
'import requests
url = "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}"
payload = { "name": "São Paulo to Campinas daily morning" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'São Paulo to Campinas daily morning'})
};
fetch('https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'São Paulo to Campinas daily morning'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}"
payload := strings.NewReader("{\n \"name\": \"São Paulo to Campinas daily morning\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"São Paulo to Campinas daily morning\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ops/trip-schedules/{tripScheduleId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"São Paulo to Campinas daily morning\"\n}"
response = http.request(request)
puts response.read_body{
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"cooperativeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"interval": 1,
"status": "ACTIVE",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"tripScheduleStopId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"point": {
"name": "São Paulo",
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"description": "Terminal Rodoviário Tietê",
"lat": -23.5155,
"lng": -46.6254
},
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135,
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
}
],
"itineraries": [
{
"tripScheduleItineraryId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a",
"tripScheduleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b",
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
}
],
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"createdBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"updatedBy": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"deletedBy": null,
"endAt": "2026-12-31T23:59:59.000Z"
}{
"errors": [
{
"message": "required",
"path": "name"
}
],
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Missing or invalid access token",
"statusCode": 401
}{
"message": "Insufficient permissions",
"statusCode": 403
}{
"message": "Internal Server Error",
"statusCode": 500
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Trip schedule identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a"
Query Parameters
Comma-separated list of fields to include in the response. Supports dot notation for nested projection (e.g. id,name,user.email,trips.route.id). Unknown fields are silently dropped.
Body
Update trip schedule payload
Trip schedule name
"São Paulo to Campinas daily morning"
Response
OK
Trip schedule
Trip schedule identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3a"
Cooperative identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3b"
Transport operator identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c"
Route identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d"
Vehicle identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d"
Driver identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
Trip schedule name
"São Paulo to Campinas daily morning"
Trip schedule frequency
DAILY, WEEKLY, MONTHLY "DAILY"
Frequency interval
1
Trip schedule status
ACTIVE, PAUSED, ARCHIVED "ACTIVE"
First scheduled departure
"2026-04-15T08:00:00.000Z"
Trip schedule stops
Show child attributes
Show child attributes
Trip schedule itineraries
Show child attributes
Show child attributes
Created at
"2026-01-01T00:00:00.000Z"
Updated at
"2026-01-01T00:00:00.000Z"
Created by
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
Updated by
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e"
Deleted by
null
Optional recurrence end
"2026-12-31T23:59:59.000Z"