curl --request POST \
--url https://api.example.com/api/v1/ops/trip-schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135
}
],
"itineraries": [
{
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000
}
],
"occurrences": [
"2026-04-15T08:00:00.000Z"
],
"interval": 1,
"endAt": "2026-12-31T23:59:59.000Z"
}
'import requests
url = "https://api.example.com/api/v1/ops/trip-schedules"
payload = {
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135
}
],
"itineraries": [
{
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000
}
],
"occurrences": ["2026-04-15T08:00:00.000Z"],
"interval": 1,
"endAt": "2026-12-31T23:59:59.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
routeId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
transportOperatorId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
vehicleId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
driverId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e',
name: 'São Paulo to Campinas daily morning',
frequency: 'DAILY',
departureAt: '2026-04-15T08:00:00.000Z',
stops: [
{
pointId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
stopOrder: 0,
arrivalOffsetMinutes: 120,
departureOffsetMinutes: 135
}
],
itineraries: [{fromStopOrder: 0, toStopOrder: 1, price: 15000}],
occurrences: ['2026-04-15T08:00:00.000Z'],
interval: 1,
endAt: '2026-12-31T23:59:59.000Z'
})
};
fetch('https://api.example.com/api/v1/ops/trip-schedules', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'routeId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
'transportOperatorId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
'vehicleId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
'driverId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e',
'name' => 'São Paulo to Campinas daily morning',
'frequency' => 'DAILY',
'departureAt' => '2026-04-15T08:00:00.000Z',
'stops' => [
[
'pointId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
'stopOrder' => 0,
'arrivalOffsetMinutes' => 120,
'departureOffsetMinutes' => 135
]
],
'itineraries' => [
[
'fromStopOrder' => 0,
'toStopOrder' => 1,
'price' => 15000
]
],
'occurrences' => [
'2026-04-15T08:00:00.000Z'
],
'interval' => 1,
'endAt' => '2026-12-31T23:59:59.000Z'
]),
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"
payload := strings.NewReader("{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/api/v1/ops/trip-schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ops/trip-schedules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\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
}Create Trip Schedule
Creates a trip schedule.
curl --request POST \
--url https://api.example.com/api/v1/ops/trip-schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135
}
],
"itineraries": [
{
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000
}
],
"occurrences": [
"2026-04-15T08:00:00.000Z"
],
"interval": 1,
"endAt": "2026-12-31T23:59:59.000Z"
}
'import requests
url = "https://api.example.com/api/v1/ops/trip-schedules"
payload = {
"routeId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"transportOperatorId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"vehicleId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d",
"driverId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e",
"name": "São Paulo to Campinas daily morning",
"frequency": "DAILY",
"departureAt": "2026-04-15T08:00:00.000Z",
"stops": [
{
"pointId": "0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c",
"stopOrder": 0,
"arrivalOffsetMinutes": 120,
"departureOffsetMinutes": 135
}
],
"itineraries": [
{
"fromStopOrder": 0,
"toStopOrder": 1,
"price": 15000
}
],
"occurrences": ["2026-04-15T08:00:00.000Z"],
"interval": 1,
"endAt": "2026-12-31T23:59:59.000Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
routeId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
transportOperatorId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
vehicleId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
driverId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e',
name: 'São Paulo to Campinas daily morning',
frequency: 'DAILY',
departureAt: '2026-04-15T08:00:00.000Z',
stops: [
{
pointId: '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
stopOrder: 0,
arrivalOffsetMinutes: 120,
departureOffsetMinutes: 135
}
],
itineraries: [{fromStopOrder: 0, toStopOrder: 1, price: 15000}],
occurrences: ['2026-04-15T08:00:00.000Z'],
interval: 1,
endAt: '2026-12-31T23:59:59.000Z'
})
};
fetch('https://api.example.com/api/v1/ops/trip-schedules', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'routeId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
'transportOperatorId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
'vehicleId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d',
'driverId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e',
'name' => 'São Paulo to Campinas daily morning',
'frequency' => 'DAILY',
'departureAt' => '2026-04-15T08:00:00.000Z',
'stops' => [
[
'pointId' => '0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c',
'stopOrder' => 0,
'arrivalOffsetMinutes' => 120,
'departureOffsetMinutes' => 135
]
],
'itineraries' => [
[
'fromStopOrder' => 0,
'toStopOrder' => 1,
'price' => 15000
]
],
'occurrences' => [
'2026-04-15T08:00:00.000Z'
],
'interval' => 1,
'endAt' => '2026-12-31T23:59:59.000Z'
]),
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"
payload := strings.NewReader("{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.example.com/api/v1/ops/trip-schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/ops/trip-schedules")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"routeId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"transportOperatorId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"vehicleId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d\",\n \"driverId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3e\",\n \"name\": \"São Paulo to Campinas daily morning\",\n \"frequency\": \"DAILY\",\n \"departureAt\": \"2026-04-15T08:00:00.000Z\",\n \"stops\": [\n {\n \"pointId\": \"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c\",\n \"stopOrder\": 0,\n \"arrivalOffsetMinutes\": 120,\n \"departureOffsetMinutes\": 135\n }\n ],\n \"itineraries\": [\n {\n \"fromStopOrder\": 0,\n \"toStopOrder\": 1,\n \"price\": 15000\n }\n ],\n \"occurrences\": [\n \"2026-04-15T08:00:00.000Z\"\n ],\n \"interval\": 1,\n \"endAt\": \"2026-12-31T23:59:59.000Z\"\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.
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
Create trip schedule payload
Route identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3d"
Transport operator identifier
"0195e7a1-8b5c-7d3e-9f4a-2c6b8d0e1f3c"
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"
First scheduled departure
"2026-04-15T08:00:00.000Z"
Trip schedule stops
2Show child attributes
Show child attributes
Trip schedule itineraries
1Show child attributes
Show child attributes
Departure times to materialize
["2026-04-15T08:00:00.000Z"]
Frequency interval
1
Optional recurrence end
"2026-12-31T23:59:59.000Z"
Response
Created
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"