Create a new transfer with 2 visits
curl --request POST \
--url https://api.raul.ugps.io/api/v1/transfers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"withdrawal": {
"address": "<string>",
"city_id": "<string>",
"visit_date": "<string>",
"technician_id": "<string>",
"mileage": 123,
"hour_meter": 123,
"charge_km_to_client": true,
"charge_visit_to_client": true,
"notify_client_by_email": true,
"notify_technician_by_whatsapp": true
},
"subscription_detail_id": "<string>",
"gps_details_id": "<string>",
"vehicle_id": "<string>",
"destination_vehicle_id": "<string>",
"reason": "<string>"
}
'import requests
url = "https://api.raul.ugps.io/api/v1/transfers"
payload = {
"client_id": "<string>",
"withdrawal": {
"address": "<string>",
"city_id": "<string>",
"visit_date": "<string>",
"technician_id": "<string>",
"mileage": 123,
"hour_meter": 123,
"charge_km_to_client": True,
"charge_visit_to_client": True,
"notify_client_by_email": True,
"notify_technician_by_whatsapp": True
},
"subscription_detail_id": "<string>",
"gps_details_id": "<string>",
"vehicle_id": "<string>",
"destination_vehicle_id": "<string>",
"reason": "<string>"
}
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({
client_id: '<string>',
withdrawal: {
address: '<string>',
city_id: '<string>',
visit_date: '<string>',
technician_id: '<string>',
mileage: 123,
hour_meter: 123,
charge_km_to_client: true,
charge_visit_to_client: true,
notify_client_by_email: true,
notify_technician_by_whatsapp: true
},
subscription_detail_id: '<string>',
gps_details_id: '<string>',
vehicle_id: '<string>',
destination_vehicle_id: '<string>',
reason: '<string>'
})
};
fetch('https://api.raul.ugps.io/api/v1/transfers', 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.raul.ugps.io/api/v1/transfers",
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([
'client_id' => '<string>',
'withdrawal' => [
'address' => '<string>',
'city_id' => '<string>',
'visit_date' => '<string>',
'technician_id' => '<string>',
'mileage' => 123,
'hour_meter' => 123,
'charge_km_to_client' => true,
'charge_visit_to_client' => true,
'notify_client_by_email' => true,
'notify_technician_by_whatsapp' => true
],
'subscription_detail_id' => '<string>',
'gps_details_id' => '<string>',
'vehicle_id' => '<string>',
'destination_vehicle_id' => '<string>',
'reason' => '<string>'
]),
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.raul.ugps.io/api/v1/transfers"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\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.raul.ugps.io/api/v1/transfers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.raul.ugps.io/api/v1/transfers")
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 \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"transfer_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "pending",
"withdrawal": {
"visit_detail_id": "<string>",
"vehicle_id": {},
"license_plate": {},
"vehicle": {
"id": "<string>",
"license_plate": {},
"name": {}
},
"address": {},
"visit_date": {},
"visit_status_id": {},
"visit_status_name": {},
"technician_id": {},
"technician_name": {},
"city_id": {},
"city_name": {},
"notify_client_by_email": {},
"notify_technician_by_whatsapp": {}
},
"installation": {
"visit_detail_id": "<string>",
"vehicle_id": {},
"license_plate": {},
"vehicle": {
"id": "<string>",
"license_plate": {},
"name": {}
},
"address": {},
"visit_date": {},
"visit_status_id": {},
"visit_status_name": {},
"technician_id": {},
"technician_name": {},
"city_id": {},
"city_name": {},
"notify_client_by_email": {},
"notify_technician_by_whatsapp": {}
},
"reason": {},
"client_id": "<string>",
"client_name": {},
"gps_name": {},
"license_plate": {}
}Transfers
Create a new transfer with 2 visits
Operacion: Create a new transfer with 2 visits.
POST
/
api
/
v1
/
transfers
Create a new transfer with 2 visits
curl --request POST \
--url https://api.raul.ugps.io/api/v1/transfers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"client_id": "<string>",
"withdrawal": {
"address": "<string>",
"city_id": "<string>",
"visit_date": "<string>",
"technician_id": "<string>",
"mileage": 123,
"hour_meter": 123,
"charge_km_to_client": true,
"charge_visit_to_client": true,
"notify_client_by_email": true,
"notify_technician_by_whatsapp": true
},
"subscription_detail_id": "<string>",
"gps_details_id": "<string>",
"vehicle_id": "<string>",
"destination_vehicle_id": "<string>",
"reason": "<string>"
}
'import requests
url = "https://api.raul.ugps.io/api/v1/transfers"
payload = {
"client_id": "<string>",
"withdrawal": {
"address": "<string>",
"city_id": "<string>",
"visit_date": "<string>",
"technician_id": "<string>",
"mileage": 123,
"hour_meter": 123,
"charge_km_to_client": True,
"charge_visit_to_client": True,
"notify_client_by_email": True,
"notify_technician_by_whatsapp": True
},
"subscription_detail_id": "<string>",
"gps_details_id": "<string>",
"vehicle_id": "<string>",
"destination_vehicle_id": "<string>",
"reason": "<string>"
}
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({
client_id: '<string>',
withdrawal: {
address: '<string>',
city_id: '<string>',
visit_date: '<string>',
technician_id: '<string>',
mileage: 123,
hour_meter: 123,
charge_km_to_client: true,
charge_visit_to_client: true,
notify_client_by_email: true,
notify_technician_by_whatsapp: true
},
subscription_detail_id: '<string>',
gps_details_id: '<string>',
vehicle_id: '<string>',
destination_vehicle_id: '<string>',
reason: '<string>'
})
};
fetch('https://api.raul.ugps.io/api/v1/transfers', 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.raul.ugps.io/api/v1/transfers",
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([
'client_id' => '<string>',
'withdrawal' => [
'address' => '<string>',
'city_id' => '<string>',
'visit_date' => '<string>',
'technician_id' => '<string>',
'mileage' => 123,
'hour_meter' => 123,
'charge_km_to_client' => true,
'charge_visit_to_client' => true,
'notify_client_by_email' => true,
'notify_technician_by_whatsapp' => true
],
'subscription_detail_id' => '<string>',
'gps_details_id' => '<string>',
'vehicle_id' => '<string>',
'destination_vehicle_id' => '<string>',
'reason' => '<string>'
]),
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.raul.ugps.io/api/v1/transfers"
payload := strings.NewReader("{\n \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\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.raul.ugps.io/api/v1/transfers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.raul.ugps.io/api/v1/transfers")
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 \"client_id\": \"<string>\",\n \"withdrawal\": {\n \"address\": \"<string>\",\n \"city_id\": \"<string>\",\n \"visit_date\": \"<string>\",\n \"technician_id\": \"<string>\",\n \"mileage\": 123,\n \"hour_meter\": 123,\n \"charge_km_to_client\": true,\n \"charge_visit_to_client\": true,\n \"notify_client_by_email\": true,\n \"notify_technician_by_whatsapp\": true\n },\n \"subscription_detail_id\": \"<string>\",\n \"gps_details_id\": \"<string>\",\n \"vehicle_id\": \"<string>\",\n \"destination_vehicle_id\": \"<string>\",\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"transfer_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"status": "pending",
"withdrawal": {
"visit_detail_id": "<string>",
"vehicle_id": {},
"license_plate": {},
"vehicle": {
"id": "<string>",
"license_plate": {},
"name": {}
},
"address": {},
"visit_date": {},
"visit_status_id": {},
"visit_status_name": {},
"technician_id": {},
"technician_name": {},
"city_id": {},
"city_name": {},
"notify_client_by_email": {},
"notify_technician_by_whatsapp": {}
},
"installation": {
"visit_detail_id": "<string>",
"vehicle_id": {},
"license_plate": {},
"vehicle": {
"id": "<string>",
"license_plate": {},
"name": {}
},
"address": {},
"visit_date": {},
"visit_status_id": {},
"visit_status_name": {},
"technician_id": {},
"technician_name": {},
"city_id": {},
"city_name": {},
"notify_client_by_email": {},
"notify_technician_by_whatsapp": {}
},
"reason": {},
"client_id": "<string>",
"client_name": {},
"gps_name": {},
"license_plate": {}
}Authorizations
Token de sesión Better Auth para rutas de backoffice; las rutas de portal usan su token propio.
Body
application/json
Client ID
Withdrawal visit data
Show child attributes
Show child attributes
Subscription detail ID
GPS details ID
Source vehicle ID (for withdrawal)
Destination vehicle ID (for installation)
Transfer reason
Installation visit data (optional, can be added later)
Show child attributes
Show child attributes
Response
201 - application/json
Transfer created
Available options:
pending, in_progress, completed, cancelled Show child attributes
Show child attributes
Show child attributes
Show child attributes