Introduction
Welcome to the Route4Me API Reference! You can use our API to access and use Route4Me’s services for creating optimal and sequenced driving and maintenance routes. You can also use it to manage the various resources and features in your Route4Me account, such as address books, members, drivers, vehicles, tracking, avoidance zones, notes, etc.
Our unique routing engine is 100% RESTful and has portable algorithm backends that solve a variety of complex problems in a single HTTP request.
We have language bindings in C#, VB.NET, Python, Java, Node, C++, Ruby, PHP, Go, Erlang, Perl, cURL (using cmd and Bash), and VBScript. View the code examples of the respective languages at the right, and click the tabs to switch from one language to another.
Our API documentation is regularly updated. Kindly check back here often to see the revised and updated content. If you have any questions regarding this documentation, or any feedback or suggestion to improve it, please feel free to reach us at support@route4me.com.
Helper Libraries
Here are the helper libraries officially maintained and provided by Route4Me. Download the library for your preferred language and use it to follow the code examples provided in this documentation.
C# | C++ |
Erlang | Go |
Java | Node |
Perl | PHP |
Python | Ruby |
VB.NET | VBScript (WSH) |
Delphi |
HTTP Verbs
Our API uses the appropriate HTTP verb for these actions:
Verb | Description |
---|---|
GET | Used for retrieving resources |
PUT | Used for updating resources |
POST | Used for creating resources |
DELETE | Used for deleting resources |
Making Requests
When making requests to our API, here are a few things to keep in mind:
-
A POST request must have a JSON-encoded body and provide the
Content-Type: application/json
value as its header. -
A GET request must provide the parameter values in the URL’s query string and should be URL-encoded.
-
All requests must be made over HTTPS.
Responses
Almost all of our API responses are JSON-encoded, and only a few are XML-encoded.
As a rule, a response contains:
- A success flag - a Boolean value indicating whether or not the call was successful, or resulted in an error.
- A message - an error message if the API call was unsuccessful, or “Success” otherwise.
- A response - the actual data returned by the API call.
Authentication
Every Route4Me SDK instance needs a unique API key. Your API key can be found inside your Route4Me.com account, by going to menu My Account > API.
In the code examples, make sure to replace the
11111111111111111111111111111111
(32 characters) demo API key with your API key.
Demo API Key Restrictions
The default demo API key 11111111111111111111111111111111
only permits you to test and optimize routes using a predefined list of latitude and longitude coordinates.
Also, Route4Me expects that the demo API key be included in all API requests to the server as part of the query string that looks like the following:
or
Platform API’s
Optimizations
An Optimization Problem refers to a collection of addresses that need to be visited.
The optimization problem takes into consideration all of the addresses that need to be visited and all the constraints associated with each address and depot.
It is preferable to create an optimization problem with as many orders in it as possible so that the optimization engine can consider the entire problem set.
This is different from a Route, which is a sequence of addresses that need to be visited by a single vehicle and driver in a fixed period. Solving an Optimization Problem results in many routes (possibly recurring in the future).
See the Optimization Response JSON Schema in our GitHub repository.
Optimization Properties
Attribute | Type | Description |
---|---|---|
optimization_problem_id | string | A unique ID |
state | integer | state of optimization [1 - 6] |
user_errors | array | User errors |
sent_to_background | boolean | backgound computing |
parameters | array | Route Parameters. See the Route Parameters JSON schema as a guide. |
addresses | array | Route Addresses. See the Address JSON Schema as a guide. |
routes | array | Routes. See the Route JSON Schema as a guide. |
links | array | Links. See the Links JSON Schema as a guide. |
tracking_history | array | Device tracking data. See the Tracking History JSON Schema as a guide. |
directions | array | Directions. See the Direction JSON Schema as a guide. |
Create an Optimization
a) Create a new optimization
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Optimization Create JSON Schema as a guide. |
<job id="Create New Optimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of creating a new optimization.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_new_optimization_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates the process of creating a new optimization.
ECHO ON
curl -o file1.txt -g -k -X POST -d "@create_new_optimization_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
curl -o file1.txt -g -k -X POST -d "@create_new_optimization_data.json" "$url?api_key=$apikey"
# The example demonstrates the process of creating a new optimization.
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public DataObject SingleDriverRoute10Stops()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Prepare the addresses
Address[] addresses = new Address[]
{
#region Addresses
new Address() { AddressString = "151 Arbor Way Milledgeville GA 31061",
// Indicate that this is a departure stop.
// Single depot routes can only have one departure depot.
IsDepot = true,
// Required coordinates for every departure and stop on the route.
Latitude = 33.132675170898,
Longitude = -83.244743347168,
// The expected time on site, in seconds. This value is incorporated into the optimization engine.
// It also adjusts the estimated and dynamic ETA for a route.
Time = 0,
// Input as many custom fields as needed. Custom data is passed through to mobile devices and to the manifest.
CustomFields = new Dictionary<string, string>() {{"color", "red"}, {"size", "huge"}}
},
new Address() { AddressString = "230 Arbor Way Milledgeville GA 31061",
Latitude = 33.129695892334,
Longitude = -83.24577331543,
Time = 0 },
new Address() { AddressString = "148 Bass Rd NE Milledgeville GA 31061",
Latitude = 33.143497,
Longitude = -83.224487,
Time = 0 },
new Address() { AddressString = "117 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.141784667969,
Longitude = -83.237518310547,
Time = 0 },
new Address() { AddressString = "119 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.141086578369,
Longitude = -83.238258361816,
Time = 0 },
new Address() { AddressString = "131 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.142036437988,
Longitude = -83.238845825195,
Time = 0 },
new Address() { AddressString = "138 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.14307,
Longitude = -83.239334,
Time = 0 },
new Address() { AddressString = "139 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.142734527588,
Longitude = -83.237442016602,
Time = 0 },
new Address() { AddressString = "145 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.143871307373,
Longitude = -83.237342834473,
Time = 0 },
new Address() { AddressString = "221 Blake Cir Milledgeville GA 31061",
Latitude = 33.081462860107,
Longitude = -83.208511352539,
Time = 0 }
#endregion
};
// Set parameters
RouteParameters parameters = new RouteParameters()
{
AlgorithmType = AlgorithmType.TSP,
StoreRoute = false,
RouteName = "Single Driver Route 10 Stops",
RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
RouteTime = 60 * 60 * 7,
Optimize = Optimize.Distance.Description(),
DistanceUnit = DistanceUnit.MI.Description(),
DeviceType = DeviceType.Web.Description()
};
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
Addresses = addresses,
Parameters = parameters
};
// Run the query
string errorString;
DataObject dataObject = route4Me.RunOptimization(optimizationParameters, out errorString);
// Output the result
PrintExampleOptimizationResult("SingleDriverRoute10Stops", dataObject, errorString);
return dataObject;
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Function SingleDriverRoute10Stops() As DataObject
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Prepare the addresses
'#Region "Addresses"
' Indicate that this is a departure stop.
' Single depot routes can only have one departure depot.
' Required coordinates for every departure and stop on the route.
' The expected time on site, in seconds. This value is incorporated into the optimization engine.
' It also adjusts the estimated and dynamic ETA for a route.
' Input as many custom fields as needed. Custom data is passed through to mobile devices and to the manifest.
'#End Region
Dim addresses As Address() = New Address() {New Address() With { _
.AddressString = "151 Arbor Way Milledgeville GA 31061", _
.IsDepot = True, _
.Latitude = 33.132675170898, _
.Longitude = -83.244743347168, _
.Time = 0, _
.CustomFields = New Dictionary(Of String, String)() From { _
{"color", "red"}, _
{"size", "huge"} _
} _
}, New Address() With { _
.AddressString = "230 Arbor Way Milledgeville GA 31061", _
.Latitude = 33.129695892334, _
.Longitude = -83.24577331543, _
.Time = 0 _
}, New Address() With { _
.AddressString = "148 Bass Rd NE Milledgeville GA 31061", _
.Latitude = 33.143497, _
.Longitude = -83.224487, _
.Time = 0 _
}, New Address() With { _
.AddressString = "117 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.141784667969, _
.Longitude = -83.237518310547, _
.Time = 0 _
}, New Address() With { _
.AddressString = "119 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.141086578369, _
.Longitude = -83.238258361816, _
.Time = 0 _
}, New Address() With { _
.AddressString = "131 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.142036437988, _
.Longitude = -83.238845825195, _
.Time = 0 _
}, _
New Address() With { _
.AddressString = "138 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.14307, _
.Longitude = -83.239334, _
.Time = 0 _
}, New Address() With { _
.AddressString = "139 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.142734527588, _
.Longitude = -83.237442016602, _
.Time = 0 _
}, New Address() With { _
.AddressString = "145 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.143871307373, _
.Longitude = -83.237342834473, _
.Time = 0 _
}, New Address() With { _
.AddressString = "221 Blake Cir Milledgeville GA 31061", _
.Latitude = 33.081462860107, _
.Longitude = -83.208511352539, _
.Time = 0 _
}}
' Set parameters
Dim parameters As New RouteParameters() With { _
.AlgorithmType = AlgorithmType.TSP, _
.StoreRoute = False, _
.RouteName = "Single Driver Route 10 Stops", _
.RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.[Date].AddDays(1)), _
.RouteTime = 60 * 60 * 7, _
.Optimize = EnumHelper.GetEnumDescription(Optimize.Distance), _
.DistanceUnit = EnumHelper.GetEnumDescription(DistanceUnit.MI), _
.DeviceType = EnumHelper.GetEnumDescription(DeviceType.Web) _
}
Dim optimizationParameters As New OptimizationParameters() With { _
.Addresses = addresses, _
.Parameters = parameters _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.RunOptimization(optimizationParameters, errorString)
' Output the result
PrintExampleOptimizationResult("SingleDriverRoute10Stops", dataObject, errorString)
Return dataObject
End Function
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
ALGORITHM_TYPE,
OPTIMIZE,
DEVICE_TYPE,
TRAVEL_MODE,
DISTANCE_UNIT,
)
from route4me.api_endpoints import ROUTE_HOST
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
address = route4me.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Optimization Example')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
address.add_address(
address='555 W 57th St New York, NY 10019',
lat=40.7718005,
lng=-73.9897716,
alias='BMW of Manhattan',
time=0
)
address.add_address(
address='57 W 57th St New York, NY 10019',
lat=40.7558695,
lng=-73.9862019,
alias='Verizon Wireless',
time=0
)
response = route4me.run_optimization()
print 'Optimization Link: %s' % response.links.view
for address in response.addresses:
print 'Route %s link: %sroute_id=%s' % (address.address,
ROUTE_HOST,
address.route_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples;
import com.route4me.sdk.Route4Me;
import com.route4me.sdk.model.Address;
import com.route4me.sdk.model.DataObject;
import com.route4me.sdk.managers.OptimizationManager;
import com.route4me.sdk.model.Parameters;
import com.route4me.sdk.model.enums.Constants.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SingleDriverRoute10Stops {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
Route4Me route4me = new Route4Me(apiKey);
OptimizationManager optimizationManager = route4me.getOptimizationManager();
Map<String, String> params = new HashMap<>();
optimizationManager.setParams(params);
DataObject data = new DataObject();
Parameters parameters = new Parameters();
List<Address> addresses = new ArrayList<>();
data.setParameters(parameters);
data.setAddresses(addresses);
parameters.setAlgorithm_type(AlgorithmType.TSP.getValue());
parameters.setStore_route(Boolean.FALSE);
parameters.setShare_route(Boolean.FALSE);
parameters.setRoute_name("Single Driver Route 10 Stops");
parameters.setOptimize(Optimize.DISTANCE.toString());
parameters.setDistance_unit(DistanceUnit.MI.toString());
parameters.setDevice_type(DeviceType.WEB.toString());
addresses.add(new Address("1604 PARKRIDGE PKWY, Louisville, KY, 40214",Boolean.TRUE, 38.141598, -85.793846, 300, 29400, 30000));
addresses.add(new Address("1407 MCCOY, Louisville, KY, 40215",38.202496,-85.786514,300,30000,30600));
addresses.add(new Address("4805 BELLEVUE AVE, Louisville, KY, 40215",38.178844,-85.774864,300,30600,31200));
addresses.add(new Address("730 CECIL AVENUE, Louisville, KY, 40211",38.248684,-85.821121,300,31200,31800));
addresses.add(new Address("650 SOUTH 29TH ST UNIT 315, Louisville, KY, 40211",38.251923,-85.800034,300,31800,32400));
addresses.add(new Address("4629 HILLSIDE DRIVE, Louisville, KY, 40216",38.176067,-85.824638,300,32400,33000));
addresses.add(new Address("4738 BELLEVUE AVE, Louisville, KY, 40215",38.179806,-85.775558,300,33000,33600));
addresses.add(new Address("318 SO. 39TH STREET, Louisville, KY, 40212",38.259335,-85.815094,300,33600,34200));
addresses.add(new Address("1324 BLUEGRASS AVE, Louisville, KY, 40215",38.179253,-85.785118,300,34200,34800));
addresses.add(new Address("7305 ROYAL WOODS DR, Louisville, KY, 40214",38.162472,-85.792854,300,34800,35400));
addresses.add(new Address("1661 W HILL ST, Louisville, KY, 40210",38.229584,-85.783966,300,35400,36000));
optimizationManager.setData(data);
DataObject responseObject = optimizationManager.runOptimization();
System.out.println("Optimization Problem ID:" + responseObject.getOptimization_problem_id());
System.out.println("State:" + OptimizationState.get(responseObject.getState().intValue()));
if (responseObject.getAddresses() != null) {
for (Address address : responseObject.getAddresses()) {
System.out.println("Address:" + address.getAddress());
System.out.println("Route ID:" + address.getRoute_id());
}
}
}
}
package SingleDriverRoute10Stops;
use strict;
use warnings FATAL => 'all';
use JSON;
use Data::Dumper;
sub SingleDriverRoute10Stops {
my $route4Me = Route4MeManager->new(ExamplesInfrastructure->ApiKey);
my $addresses = [
Address->new(address => "151 Arbor Way Milledgeville GA 31061", is_depot => 1, lat => 33.132675170898,
lng => -83.244743347168, time => 0, custom_fields => {'color' => 'red', 'size' => 'huge'}),
Address->new(address => "230 Arbor Way Milledgeville GA 31061", lat => 33.129695892334, lng => -83.24577331543, time => 0),
Address->new(address => "148 Bass Rd NE Milledgeville GA 31061", lat => 33.143497, lng => -83.224487, time => 0),
Address->new(address => "117 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.141784667969, lng => -83.237518310547, time => 0),
Address->new(address => "119 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.141086578369, lng => -83.238258361816, time => 0),
Address->new(address => "131 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.142036437988, lng => -83.238845825195, time => 0),
Address->new(address => "138 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.14307, lng => -83.239334, time => 0),
Address->new(address => "139 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.142734527588, lng => -83.237442016602, time => 0),
Address->new(address => "145 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.143871307373, lng => -83.237342834473, time => 0),
Address->new(address => "221 Blake Cir Milledgeville GA 31061", lat => 33.081462860107, lng => -83.208511352539, time => 0)
];
my $parameters = RouteParameters->new(
algorithm_type => AlgorithmType->TSP,
store_route => 0,
route_name => "Single Driver Route 10 Stops",
route_date => time, # check! R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
route_time => 60 * 60 * 7,
optimize => Optimize->Distance,
distance_unit => DistanceUnit->MI,
device_type => DeviceType->Web
);
my $optimizationParameters = OptimizationParameters->new(
addresses => $addresses,
parameters => $parameters
);
my $errorString = "";
my $dataObject = $route4Me->runOptimization($optimizationParameters, \$errorString);
ExamplesInfrastructure->PrintExampleOptimizationResult("SingleDriverRoute10Stops", $dataObject, $errorString);
return $dataObject;
}
1;
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := &route4me.NewClient("11111111111111111111111111111111")
service := &routing.Service{Client: client}
addresses := []*routing.Address{&routing.Address{AddressString: "151 Arbor Way Milledgeville GA 31061",
// Indicate that this is a departure stop.
// Single depot routes can only have one departure depot.
IsDepot: true,
// Required coordinates for every departure and stop on the route.
Latitude: 33.132675170898,
Longitude: -83.244743347168,
// The expected time on site, in seconds. This value is incorporated into the optimization engine.
// It also adjusts the estimated and dynamic ETA for a route.
Time: 0,
// Input as many custom fields as needed. Custom data is passed through to mobile devices and to the manifest.
CustomFields: map[string]string{{"color", "red"}, {"size", "huge"}},
},
&routing.Address{AddressString: "230 Arbor Way Milledgeville GA 31061",
Latitude: 33.129695892334,
Longitude: -83.24577331543,
Time: 0},
&routing.Address{AddressString: "148 Bass Rd NE Milledgeville GA 31061",
Latitude: 33.143497,
Longitude: -83.224487,
Time: 0},
&routing.Address{AddressString: "117 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.141784667969,
Longitude: -83.237518310547,
Time: 0},
&routing.Address{AddressString: "119 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.141086578369,
Longitude: -83.238258361816,
Time: 0},
&routing.Address{AddressString: "131 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.142036437988,
Longitude: -83.238845825195,
Time: 0},
&routing.Address{AddressString: "138 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.14307,
Longitude: -83.239334,
Time: 0},
&routing.Address{AddressString: "139 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.142734527588,
Longitude: -83.237442016602,
Time: 0},
&routing.Address{AddressString: "145 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude: 33.143871307373,
Longitude: -83.237342834473,
Time: 0},
&routing.Address{AddressString: "221 Blake Cir Milledgeville GA 31061",
Latitude: 33.081462860107,
Longitude: -83.208511352539,
Time: 0},
}
routeParams := &routing.RouteParameters{
AlgorithmType: routing.TSP,
StoreRoute: false,
Name: "Single Driver Route 10 Stops",
RouteDate: time.Now().Unix(),
RouteTime: 60 * 60 * 7,
Optimize: routing.Distance,
DistanceUnit: routing.Miles,
DeviceType: routing.Web,
TravelMode: routing.Driving,
}
optParams := &routing.OptimizationParameters{
Addresses: addresses,
Parameters: routeParams,
}
_, err := service.RunOptimization(optParams)
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\OptimizationType;
use Route4Me\OptimizationProblem;
use Route4Me\OptimizationProblemParams;
use Route4Me\Enum\AlgorithmType;
use Route4Me\Enum\DistanceUnit;
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\TravelMode;
use Route4Me\Enum\Metric;
use Route4Me\RouteParameters;
use Route4Me\Address;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Huge list of addresses
$json = json_decode(file_get_contents('./addresses.json'), true);
$json = array_slice($json, 0, 10);
$addresses = array();
foreach($json as $address) {
$addresses[] = Address::fromArray($address);
}
$parameters = RouteParameters::fromArray(array(
"algorithm_type" => AlgorithmType::TSP,
"distance_unit" => DistanceUnit::MILES,
"device_type" => DeviceType::WEB,
"optimize" => OptimizationType::DISTANCE,
"travel_mode" => TravelMode::DRIVING,
"route_max_duration" => 86400,
"vehicle_capacity" => 1,
"vehicle_max_distance_mi" => 10000,
"rt" => true
));
$optimizationParams = new OptimizationProblemParams;
$optimizationParams->setAddresses($addresses);
$optimizationParams->setParameters($parameters);
$problems = OptimizationProblem::optimize($optimizationParams);
foreach ($problems as $problem) {
if (is_array($problem) || is_object($problem)) {
foreach ($problem as $key => $value) {
if (!is_object($value)) {
echo $key." --> ".$value."<br>";
}
}
}
}
unit SingleDriverRoute10StopsUnit;
interface
uses SysUtils, DataObjectUnit, BaseOptimizationExampleUnit;
type
TSingleDriverRoute10Stops = class(TBaseOptimizationExample)
public
function Execute: TDataObject;
end;
implementation
uses
IOptimizationParametersProviderUnit, OptimizationParametersUnit,
SingleDriverRoute10StopsTestDataProviderUnit;
function TSingleDriverRoute10Stops.Execute: TDataObject;
var
DataProvider: IOptimizationParametersProvider;
ErrorString: String;
Parameters: TOptimizationParameters;
begin
DataProvider := TSingleDriverRoute10StopsTestDataProvider.Create;
Parameters := DataProvider.OptimizationParameters;
try
Result := Route4MeManager.Optimization.Run(Parameters, ErrorString);
finally
FreeAndNil(Parameters);
end;
PrintExampleOptimizationResult('SingleDriverRoute10Stops', Result, ErrorString);
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Single driver route 10 stops
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("addr.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
Json::Value params(Json::objectValue);
params["route_name"] = "Single driver route 10 stops";
params["algorithm_type"] = CRoute4Me::TSP;
params["share_route"] = 0;
params["optimize"] = CRoute4Me::Distance;
params["distance_unit"] = CRoute4Me::MI;
params["device_type"] = CRoute4Me::Web;
int ret = 0;
Json::Value addr0, addr;
inf >> addr0;
for(int i = 0; i < 10; i++)
addr[i] = addr0[i];
if(route.run_optimization(addr, params) == 0)
{
// use Json::StyledWriter instead of Json::FastWriter for a human friendly output
cout << "Single driver route 10 stops:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include <json.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
const char file_name[] = "new_optimization.json";
char* data = NULL;
if (deserialize(file_name, &data))
{
printf("Data file not found!\n");
return -1;
}
if (!add_optimization(data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...
See the sample JSON response of this method.
b) Create a new optimization with callback URL
The callback URL is a URL that gets called when the optimization is solved, or if there is an error. The callback is called with a POST request. The POST data sent are: timestamp (seconds), optimization_problem_id, and the ID of the optimization state. The state can be one of these values: 4 = OPTIMIZATION_STATE_OPTIMIZED, which means the optimization was successful; or 5 = OPTIMIZATION_STATE_ERROR, which means there was an error in solving the optimization.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimized_callback_url | string | Callback URL |
input data | POST data | A valid JSON object string. See the Optimization Create JSON Schema as a guide. |
<job id="Create Optimization With Callback URL">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of creating an optimization with a callback URL.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
optimized_callback_url="https://requestb.in/1o6cgge1"
url=url&"?api_key="&apikey
url=url&"&optimized_callback_url="&optimized_callback_url
jFile="create_new_optimization_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
SET "optimized_callback_url=https://requestb.in/1o6cgge1"
:: The example demonstrates the process of creating an optimization with a callback URL.
ECHO ON
curl -o create_new_optimization_RESPONSE.json -k -X POST -d "@create_new_optimization_data.json" "%url%?api_key=%apikey%&optimized_callback_url=%optimized_callback_url%"
timeout /t 30
#!/bin/bash
# The callback URL was created on this site: https://requestb.in
# This URL will expire in a few days.
# To run this, please update the optimized_callback_url creating
# one link in the page mentioned above.
url=https://api.route4me.com/api.v4/optimization_problem.php
api_key=11111111111111111111111111111111
optimized_callback_url=https://requestb.in/p59ihlp5
curl -o create_new_optimization_RESPONSE.json -k -X POST -d "@create_new_optimization_data.json" "$url?api_key=$api_key&optimized_callback_url=$optimized_callback_url"
echo "Finished..."
sleep 15
public DataObject OptimizationWithCallbackUrl()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// The example refers to the process of creating a new optimization with a callback URL.
// Prepare the addresses
Address[] addresses = new Address[]
{
#region Addresses
new Address() { AddressString = "3634 W Market St, Fairlawn, OH 44333",
// All possible originating locations are depots and should be marked as true.
// Stylistically, we recommend all depots should be at the top of the destinations list.
IsDepot = true,
Latitude = 41.135762259364,
Longitude = -81.629313826561,
TimeWindowStart = null,
TimeWindowEnd = null,
TimeWindowStart2 = null,
TimeWindowEnd2 = null,
Time = null
},
new Address() { AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
Latitude = 41.135762259364,
Longitude = -81.629313826561,
// Together, these two specify the time window of a destination.
// Seconds offset relative to the route start time for the open availability of a destination
TimeWindowStart = 6 * 3600 + 00 * 60,
// Seconds offset relative to the route end time for the open availability of a destination
TimeWindowEnd = 6 * 3600 + 30 * 60,
// Second 'TimeWindowStart'
TimeWindowStart2 = 7 * 3600 + 00 * 60,
// Second 'TimeWindowEnd'
TimeWindowEnd2 = 7 * 3600 + 20 * 60,
// The number of seconds at the destination.
Time = 300
},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
TimeWindowStart = 7 * 3600 + 30 * 60,
TimeWindowEnd = 7 * 3600 + 40 * 60,
TimeWindowStart2 = 8 * 3600 + 00 * 60,
TimeWindowEnd2 = 8 * 3600 + 10 * 60,
Time = 300
},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
TimeWindowStart = 8 * 3600 + 30 * 60,
TimeWindowEnd = 8 * 3600 + 40 * 60,
TimeWindowStart2 = 8 * 3600 + 50 * 60,
TimeWindowEnd2 = 9 * 3600 + 00 * 60,
Time = 100
},
new Address() { AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221",
Latitude = 41.162971496582,
Longitude = -81.479049682617,
TimeWindowStart = 9 * 3600 + 00 * 60,
TimeWindowEnd = 9 * 3600 + 15 * 60,
TimeWindowStart2 = 9 * 3600 + 30 * 60,
TimeWindowEnd2 = 9 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "1659 Hibbard Dr, Stow, OH 44224",
Latitude = 41.194505989552,
Longitude = -81.443351581693,
TimeWindowStart = 10 * 3600 + 00 * 60,
TimeWindowEnd = 10 * 3600 + 15 * 60,
TimeWindowStart2 = 10 * 3600 + 30 * 60,
TimeWindowEnd2 = 10 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "2705 N River Rd, Stow, OH 44224",
Latitude = 41.145240783691,
Longitude = -81.410247802734,
TimeWindowStart = 11 * 3600 + 00 * 60,
TimeWindowEnd = 11 * 3600 + 15 * 60,
TimeWindowStart2 = 11 * 3600 + 30 * 60,
TimeWindowEnd2 = 11 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "10159 Bissell Dr, Twinsburg, OH 44087",
Latitude = 41.340042114258,
Longitude = -81.421226501465,
TimeWindowStart = 12 * 3600 + 00 * 60,
TimeWindowEnd = 12 * 3600 + 15 * 60,
TimeWindowStart2 = 12 * 3600 + 30 * 60,
TimeWindowEnd2 = 12 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
TimeWindowStart = 13 * 3600 + 00 * 60,
TimeWindowEnd = 13 * 3600 + 15 * 60,
TimeWindowStart2 = 13 * 3600 + 30 * 60,
TimeWindowEnd2 = 13 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
TimeWindowStart = 14 * 3600 + 00 * 60,
TimeWindowEnd = 14 * 3600 + 15 * 60,
TimeWindowStart2 = 14 * 3600 + 30 * 60,
TimeWindowEnd2 = 14 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
TimeWindowStart = 15 * 3600 + 00 * 60,
TimeWindowEnd = 15 * 3600 + 15 * 60,
TimeWindowStart2 = 15 * 3600 + 30 * 60,
TimeWindowEnd2 = 15 * 3600 + 45 * 60,
Time = 300
},
new Address() { AddressString = "559 W Aurora Rd, Northfield, OH 44067",
Latitude = 41.315116882324,
Longitude = -81.558746337891,
TimeWindowStart = 16 * 3600 + 00 * 60,
TimeWindowEnd = 16 * 3600 + 15 * 60,
TimeWindowStart2 = 16 * 3600 + 30 * 60,
TimeWindowEnd2 = 17 * 3600 + 00 * 60,
Time = 50
}
#endregion
};
// Set parameters
RouteParameters parameters = new RouteParameters()
{
AlgorithmType = AlgorithmType.TSP,
StoreRoute = false,
RouteName = "Single Driver Multiple TimeWindows 12 Stops",
SharedPublicly = "true",
RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
RouteTime = 5 * 3600 + 30 * 60,
Optimize = Optimize.Distance.Description(),
DistanceUnit = DistanceUnit.MI.Description(),
DeviceType = DeviceType.Web.Description()
};
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
Addresses = addresses,
OptimizedCallbackURL = @"https://requestb.in/1o6cgge1",
ShowDirections = true,
Redirect = false,
Parameters = parameters
};
// Run the query
string errorString;
DataObject dataObject = route4Me.RunOptimization(optimizationParameters, out errorString);
// Output the result
PrintExampleOptimizationResult("SingleDriverMultipleTimeWindows", dataObject, errorString);
return dataObject;
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Function OptimizationWithCallbackUrl() As DataObject
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
' The example refers to the process of creating a new optimization with a callback URL.
Dim addresses As Address() = New Address() {New Address() With {
.AddressString = "3634 W Market St, Fairlawn, OH 44333",
.IsDepot = True,
.Latitude = 41.135762259364,
.Longitude = -81.629313826561,
.TimeWindowStart = Nothing,
.TimeWindowEnd = Nothing,
.TimeWindowStart2 = Nothing,
.TimeWindowEnd2 = Nothing,
.Time = Nothing
}, New Address() With {
.AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
.Latitude = 41.135762259364,
.Longitude = -81.629313826561,
.TimeWindowStart = 6 * 3600 + 0 * 60,
.TimeWindowEnd = 6 * 3600 + 30 * 60,
.TimeWindowStart2 = 7 * 3600 + 0 * 60,
.TimeWindowEnd2 = 7 * 3600 + 20 * 60,
.Time = 300
}, New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.TimeWindowStart = 7 * 3600 + 30 * 60,
.TimeWindowEnd = 7 * 3600 + 40 * 60,
.TimeWindowStart2 = 8 * 3600 + 0 * 60,
.TimeWindowEnd2 = 8 * 3600 + 10 * 60,
.Time = 300
}, New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.TimeWindowStart = 8 * 3600 + 30 * 60,
.TimeWindowEnd = 8 * 3600 + 40 * 60,
.TimeWindowStart2 = 8 * 3600 + 50 * 60,
.TimeWindowEnd2 = 9 * 3600 + 0 * 60,
.Time = 100
}, New Address() With {
.AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221",
.Latitude = 41.162971496582,
.Longitude = -81.479049682617,
.TimeWindowStart = 9 * 3600 + 0 * 60,
.TimeWindowEnd = 9 * 3600 + 15 * 60,
.TimeWindowStart2 = 9 * 3600 + 30 * 60,
.TimeWindowEnd2 = 9 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "1659 Hibbard Dr, Stow, OH 44224",
.Latitude = 41.194505989552,
.Longitude = -81.443351581693,
.TimeWindowStart = 10 * 3600 + 0 * 60,
.TimeWindowEnd = 10 * 3600 + 15 * 60,
.TimeWindowStart2 = 10 * 3600 + 30 * 60,
.TimeWindowEnd2 = 10 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "2705 N River Rd, Stow, OH 44224",
.Latitude = 41.145240783691,
.Longitude = -81.410247802734,
.TimeWindowStart = 11 * 3600 + 0 * 60,
.TimeWindowEnd = 11 * 3600 + 15 * 60,
.TimeWindowStart2 = 11 * 3600 + 30 * 60,
.TimeWindowEnd2 = 11 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "10159 Bissell Dr, Twinsburg, OH 44087",
.Latitude = 41.340042114258,
.Longitude = -81.421226501465,
.TimeWindowStart = 12 * 3600 + 0 * 60,
.TimeWindowEnd = 12 * 3600 + 15 * 60,
.TimeWindowStart2 = 12 * 3600 + 30 * 60,
.TimeWindowEnd2 = 12 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
.Latitude = 41.148578643799,
.Longitude = -81.429229736328,
.TimeWindowStart = 13 * 3600 + 0 * 60,
.TimeWindowEnd = 13 * 3600 + 15 * 60,
.TimeWindowStart2 = 13 * 3600 + 30 * 60,
.TimeWindowEnd2 = 13 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
.Latitude = 41.148578643799,
.Longitude = -81.429229736328,
.TimeWindowStart = 14 * 3600 + 0 * 60,
.TimeWindowEnd = 14 * 3600 + 15 * 60,
.TimeWindowStart2 = 14 * 3600 + 30 * 60,
.TimeWindowEnd2 = 14 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.TimeWindowStart = 15 * 3600 + 0 * 60,
.TimeWindowEnd = 15 * 3600 + 15 * 60,
.TimeWindowStart2 = 15 * 3600 + 30 * 60,
.TimeWindowEnd2 = 15 * 3600 + 45 * 60,
.Time = 300
}, New Address() With {
.AddressString = "559 W Aurora Rd, Northfield, OH 44067",
.Latitude = 41.315116882324,
.Longitude = -81.558746337891,
.TimeWindowStart = 16 * 3600 + 0 * 60,
.TimeWindowEnd = 16 * 3600 + 15 * 60,
.TimeWindowStart2 = 16 * 3600 + 30 * 60,
.TimeWindowEnd2 = 17 * 3600 + 0 * 60,
.Time = 50
}}
Dim parameters As RouteParameters = New RouteParameters() With {
.AlgorithmType = AlgorithmType.TSP,
.StoreRoute = False,
.RouteName = "Single Driver Multiple TimeWindows 12 Stops",
.SharedPublicly = "true",
.RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
.RouteTime = 5 * 3600 + 30 * 60,
.Optimize = Optimize.Distance.GetEnumDescription(),
.DistanceUnit = DistanceUnit.MI.GetEnumDescription(),
.DeviceType = DeviceType.Web.GetEnumDescription()
}
Dim optimizationParameters As OptimizationParameters = New OptimizationParameters() With {
.Addresses = addresses,
.OptimizedCallbackURL = "https://requestb.in/1o6cgge1",
.ShowDirections = True,
.Redirect = False,
.Parameters = parameters
}
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.RunOptimization(optimizationParameters, errorString)
PrintExampleOptimizationResult("SingleDriverMultipleTimeWindows", dataObject, errorString)
Return dataObject
End Function
End Class
End Namespace
from route4me import Route4Me
from route4me.api_endpoints import ROUTE_HOST
from route4me.constants import (
ALGORITHM_TYPE,
OPTIMIZE,
DEVICE_TYPE,
TRAVEL_MODE,
DISTANCE_UNIT,
)
KEY = "11111111111111111111111111111111"
def main():
callback_url = 'https://requestb.in/y8bybfy8'
route4me = Route4Me(KEY)
optimization = route4me.optimization
address = route4me.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Optimization Example')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
optimization.optimized_callback_url(callback_url)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
address.add_address(
address='555 W 57th St New York, NY 10019',
lat=40.7718005,
lng=-73.9897716,
alias='BMW of Manhattan',
time=0
)
address.add_address(
address='57 W 57th St New York, NY 10019',
lat=40.7558695,
lng=-73.9862019,
alias='Verizon Wireless',
time=0
)
response = route4me.run_optimization()
print('Optimization Problem ID: {}'.format(response['optimization_problem_id']))
print('Optimization Link: {}'.format(response['links']['view']))
for address in response['addresses']:
print('Route {0} \tlink: {1}route_id: {2}'.format(address['address'],
ROUTE_HOST,
address['route_id']))
print('\nPlease open this URL {0}?inspect.')
print('Verify that there is a POST request with this {1} \
optimization_problem_id'.format(callback_url,
response['optimization_problem_id']))
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\OptimizationType;
use Route4Me\OptimizationProblem;
use Route4Me\OptimizationProblemParams;
use Route4Me\Enum\AlgorithmType;
use Route4Me\Enum\DistanceUnit;
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\TravelMode;
use Route4Me\Enum\Metric;
use Route4Me\RouteParameters;
use Route4Me\Address;
use Route4Me\Route;
// The example refers to the process of creating a new optimization with a callback URL.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Huge list of addresses
$json = json_decode(file_get_contents('../addresses.json'), true);
$addresses = array();
foreach ($json as $address) {
$addresses[] = Address::fromArray($address);
}
$parameters = RouteParameters::fromArray(array(
"algorithm_type" => Algorithmtype::TSP,
"store_route" => FALSE,
"route_name" => "Single Driver Multiple TimeWindows 12 Stops",
"shared_publicly" => TRUE,
"route_date" => time() + 24 * 60 * 60,
"route_time" => 5 * 3600 + 30 * 60,
"distance_unit" => DistanceUnit::MILES,
"device_type" => DeviceType::WEB,
"optimize" => OptimizationType::DISTANCE
));
$optimizationParams = OptimizationProblemParams::fromArray(array(
"addresses" => $addresses,
"parameters" => $parameters,
"optimized_callback_url" => @"https://requestb.in/1o6cgge1",
"show_directions" => TRUE,
"redirect" => FALSE
));
$optimizationParams = new OptimizationProblemParams;
$optimizationParams->setAddresses($addresses);
$optimizationParams->setParameters($parameters);
$problem = OptimizationProblem::optimize($optimizationParams);
foreach ((array)$problem as $key => $value) {
if (is_string($value)) {
echo $key." --> ".$value."<br>";
} else {
echo "************ $key ************* <br>";
Route4Me::simplePrint((array)$value, true);
echo "******************************* <br>";
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimized_callback_url=...
See the sample JSON response of this method.
c) Create a new optimization using separate depots section
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | |
---|---|---|---|
api_key | string | API key of the user | |
parameters | array | Route Parameters. See the Route Parameters JSON schema as a guide. | |
depots | array | A valid JSON array of Depot objects. See the Depot JSON Schema as a guide. | POST |
addresses | array | A valid JSON array of Address objects. See the Address JSON Schema as a guide. | POST |
<job id="Multiple Depots Separate Section">
<script language="VBScript" src="Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of creating an optimization using separate section of the depots in the route parameters.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="multiple_separate_depots_data.json"
Set r4m=New Route4Me
r4m.OutputFile = "multiple_separate_depots_RESPONSE.json"
r4m.HttpPostRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: The example refers to the process of creating an optimization using separate section of the depots in the route parameters.
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
ECHO ON
curl -o multiple_separate_depots_RESPONSE.json -g -X POST -k -d "@multiple_separate_depots_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# The example refers to the process of creating an optimization using separate section of the depots in the route parameters.
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
curl -o multiple_separate_depots_RESPONSE.json -g -X POST -k -d "@multiple_separate_depots_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void MultipleSeparateDepostMultipleDriverTest()
{
if (skip == "yes") return;
// Create the manager with the api key
var route4Me = new Route4MeManager(c_ApiKey);
#region Depots
Address[] depots = new Address[]
{
new Address() { AddressString = "3634 W Market St, Fairlawn, OH 44333",
Latitude = 41.135762259364,
Longitude = -81.629313826561 },
new Address() { AddressString = "2705 N River Rd, Stow, OH 44224",
Latitude = 41.145240783691,
Longitude = -81.410247802734 }
};
#endregion
// Prepare the addresses
Address[] addresses = new Address[]
{
#region Addresses
new Address() { AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
Latitude = 41.135762259364,
Longitude = -81.629313826561,
Time = 300,
TimeWindowStart = 29465,
TimeWindowEnd = 30529},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 300,
TimeWindowStart = 30529,
TimeWindowEnd = 33779},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 100,
TimeWindowStart = 33779,
TimeWindowEnd = 33944},
new Address() { AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221",
Latitude = 41.162971496582,
Longitude = -81.479049682617,
Time = 300,
TimeWindowStart = 33944,
TimeWindowEnd = 34801},
new Address() { AddressString = "1659 Hibbard Dr, Stow, OH 44224",
Latitude = 41.194505989552,
Longitude = -81.443351581693,
Time = 300,
TimeWindowStart = 34801,
TimeWindowEnd = 36366},
new Address() { AddressString = "10159 Bissell Dr, Twinsburg, OH 44087",
Latitude = 41.340042114258,
Longitude = -81.421226501465,
Time = 300,
TimeWindowStart = 39173,
TimeWindowEnd = 41617},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
Time = 300,
TimeWindowStart = 41617,
TimeWindowEnd = 43660},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
Time = 300,
TimeWindowStart = 43660,
TimeWindowEnd = 46392},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 300,
TimeWindowStart = 46392,
TimeWindowEnd = 48389},
new Address() { AddressString = "559 W Aurora Rd, Northfield, OH 44067",
Latitude = 41.315116882324,
Longitude = -81.558746337891,
Time = 50,
TimeWindowStart = 48389,
TimeWindowEnd = 48449},
new Address() { AddressString = "3933 Klein Ave, Stow, OH 44224",
Latitude = 41.169467926025,
Longitude = -81.429420471191,
Time = 300,
TimeWindowStart = 48449,
TimeWindowEnd = 50152},
new Address() { AddressString = "2148 8th St, Cuyahoga Falls, OH 44221",
Latitude = 41.136692047119,
Longitude = -81.493492126465,
Time = 300,
TimeWindowStart = 50152,
TimeWindowEnd = 51982},
new Address() { AddressString = "3731 Osage St, Stow, OH 44224",
Latitude = 41.161357879639,
Longitude = -81.42293548584,
Time = 100,
TimeWindowStart = 51982,
TimeWindowEnd = 52180},
new Address() { AddressString = "3731 Osage St, Stow, OH 44224",
Latitude = 41.161357879639,
Longitude = -81.42293548584,
Time = 300,
TimeWindowStart = 52180,
TimeWindowEnd = 54379}
#endregion
};
// Set parameters
var parameters = new RouteParameters()
{
//specify capacitated vehicle routing with time windows and multiple depots, with multiple drivers
AlgorithmType = AlgorithmType.CVRP_TW_MD,
//set an arbitrary route name
//this value shows up in the website, and all the connected mobile device
RouteName = "Multiple Separate Depots, Multiple Driver",
//the route start date in UTC, unix timestamp seconds (Tomorrow)
RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
//the time in UTC when a route is starting (7AM)
RouteTime = 60 * 60 * 7,
//the maximum duration of a route
RouteMaxDuration = 86400,
VehicleCapacity = 1,
VehicleMaxDistanceMI = 10000,
Optimize = Optimize.Distance.Description(),
DistanceUnit = DistanceUnit.MI.Description(),
DeviceType = DeviceType.Web.Description(),
TravelMode = TravelMode.Driving.Description(),
Metric = Metric.Geodesic
};
var optimizationParameters = new OptimizationParameters()
{
Addresses = addresses,
Parameters = parameters,
Depots = depots
};
// Run the query
dataObject = route4Me.RunOptimization(optimizationParameters, out string errorString);
Assert.IsNotNull(dataObject, "MultipleSeparateDepostMultipleDriverTest failed. " + errorString);
var optimizationDepots = dataObject.Addresses.Where(x => x.IsDepot == true);
Assert.IsTrue(optimizationDepots.Count() == depots.Length, "The depots number is not "+ depots.Length);
List<string> depotAddresses = depots.Select(x => x.AddressString).ToList();
foreach (var depot in optimizationDepots)
{
Assert.IsTrue(depotAddresses.Contains(depot.AddressString), "The address "+ depot.AddressString+" is not depot");
}
tdr.RemoveOptimization(new string[] { dataObject.OptimizationProblemId });
}
Public Sub MultipleSeparateDepostMultipleDriverTest()
If skip = "yes" Then Return
Dim route4Me = New Route4MeManager(c_ApiKey)
Dim depots As Address() = New Address() {
New Address() With {
.AddressString = "3634 W Market St, Fairlawn, OH 44333",
.Latitude = 41.135762259364,
.Longitude = -81.629313826561
},
New Address() With {
.AddressString = "2705 N River Rd, Stow, OH 44224",
.Latitude = 41.145240783691,
.Longitude = -81.410247802734
}
}
#Region "Addresses"
Dim addresses As Address() = New Address() {
New Address() With {
.AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
.Latitude = 41.135762259364,
.Longitude = -81.629313826561,
.Time = 300,
.TimeWindowStart = 29465,
.TimeWindowEnd = 30529
},
New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.Time = 300,
.TimeWindowStart = 30529,
.TimeWindowEnd = 33779
},
New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.Time = 100,
.TimeWindowStart = 33779,
.TimeWindowEnd = 33944
},
New Address() With {
.AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221",
.Latitude = 41.162971496582,
.Longitude = -81.479049682617,
.Time = 300,
.TimeWindowStart = 33944,
.TimeWindowEnd = 34801
},
New Address() With {
.AddressString = "1659 Hibbard Dr, Stow, OH 44224",
.Latitude = 41.194505989552,
.Longitude = -81.443351581693,
.Time = 300,
.TimeWindowStart = 34801,
.TimeWindowEnd = 36366
},
New Address() With {
.AddressString = "10159 Bissell Dr, Twinsburg, OH 44087",
.Latitude = 41.340042114258,
.Longitude = -81.421226501465,
.Time = 300,
.TimeWindowStart = 39173,
.TimeWindowEnd = 41617
},
New Address() With {
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
.Latitude = 41.148578643799,
.Longitude = -81.429229736328,
.Time = 300,
.TimeWindowStart = 41617,
.TimeWindowEnd = 43660
},
New Address() With {
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
.Latitude = 41.148578643799,
.Longitude = -81.429229736328,
.Time = 300,
.TimeWindowStart = 43660,
.TimeWindowEnd = 46392
},
New Address() With {
.AddressString = "512 Florida Pl, Barberton, OH 44203",
.Latitude = 41.003671512008,
.Longitude = -81.598461046815,
.Time = 300,
.TimeWindowStart = 46392,
.TimeWindowEnd = 48389
},
New Address() With {
.AddressString = "559 W Aurora Rd, Northfield, OH 44067",
.Latitude = 41.315116882324,
.Longitude = -81.558746337891,
.Time = 50,
.TimeWindowStart = 48389,
.TimeWindowEnd = 48449
},
New Address() With {
.AddressString = "3933 Klein Ave, Stow, OH 44224",
.Latitude = 41.169467926025,
.Longitude = -81.429420471191,
.Time = 300,
.TimeWindowStart = 48449,
.TimeWindowEnd = 50152
},
New Address() With {
.AddressString = "2148 8th St, Cuyahoga Falls, OH 44221",
.Latitude = 41.136692047119,
.Longitude = -81.493492126465,
.Time = 300,
.TimeWindowStart = 50152,
.TimeWindowEnd = 51982
},
New Address() With {
.AddressString = "3731 Osage St, Stow, OH 44224",
.Latitude = 41.161357879639,
.Longitude = -81.42293548584,
.Time = 100,
.TimeWindowStart = 51982,
.TimeWindowEnd = 52180
},
New Address() With {
.AddressString = "3731 Osage St, Stow, OH 44224",
.Latitude = 41.161357879639,
.Longitude = -81.42293548584,
.Time = 300,
.TimeWindowStart = 52180,
.TimeWindowEnd = 54379
}}
#End Region
Dim parameters = New RouteParameters() With {
.AlgorithmType = AlgorithmType.CVRP_TW_MD,
.RouteName = "Multiple Separate Depots, Multiple Driver",
.RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
.RouteTime = 60 * 60 * 7,
.RouteMaxDuration = 86400,
.VehicleCapacity = 1,
.VehicleMaxDistanceMI = 10000,
.Optimize = Optimize.Distance.GetEnumDescription(),
.DistanceUnit = DistanceUnit.MI.GetEnumDescription(),
.DeviceType = DeviceType.Web.GetEnumDescription(),
.TravelMode = TravelMode.Driving.GetEnumDescription(),
.Metric = Metric.Geodesic
}
Dim optimizationParameters = New OptimizationParameters() With {
.Addresses = addresses,
.Parameters = parameters,
.Depots = depots
}
Dim errorString As String = Nothing
dataObject = route4Me.RunOptimization(optimizationParameters, errorString)
Assert.IsNotNull(dataObject, "MultipleSeparateDepostMultipleDriverTest failed. " & errorString)
Dim optimizationDepots = dataObject.Addresses.Where(Function(x) x.IsDepot = True)
Assert.IsTrue(optimizationDepots.Count() = depots.Length, "The depots number is not " & depots.Length)
Dim depotAddresses As List(Of String) = depots.[Select](Function(x) x.AddressString).ToList()
For Each depot In optimizationDepots
Assert.IsTrue(depotAddresses.Contains(depot.AddressString), "The address " & depot.AddressString & " is not depot")
Next
tdr.RemoveOptimization(New String() {dataObject.OptimizationProblemId})
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../');
require $root.'/vendor/autoload.php';
use Route4Me\Enum\OptimizationType;
use Route4Me\Enum\AlgorithmType;
use Route4Me\Enum\DistanceUnit;
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\TravelMode;
use Route4Me\Enum\Metric;
// Set the api key in the Route4me class
// This example is not available for demo API key
Route4Me::setApiKey('11111111111111111111111111111111');
// List of addresses
$jsonAddresses = json_decode(file_get_contents('./addresses_only.json'), true);
$addresses = [];
foreach ($jsonAddresses as $address) {
$addresses[] = Address::fromArray($address);
}
$jsonDepots = json_decode(file_get_contents('./depots.json'), true);
// List of depots
$depots = [];
foreach ($jsonDepots as $depot) {
$depots[] = Address::fromArray($depot);
}
$parameters = RouteParameters::fromArray([
'route_name' => 'Multiple Depots Seprate Section '.date('Y-m-d H:i'),
'algorithm_type' => AlgorithmType::CVRP_TW_MD,
'distance_unit' => DistanceUnit::MILES,
'device_type' => DeviceType::WEB,
'optimize' => OptimizationType::TIME,
'metric' => Metric::GEODESIC,
'route_max_duration' => 86400 * 2,
'travel_mode' => TravelMode::DRIVING,
'vehicle_capacity' => 50,
'vehicle_max_distance_mi' => 10000,
'parts' => 50,
]);
$optimizationParams = new OptimizationProblemParams();
$optimizationParams->setAddresses($addresses);
$optimizationParams->setDepots($depots);
$optimizationParams->setParameters($parameters);
$problem = OptimizationProblem::optimize($optimizationParams);
Route4Me::simplePrint((array) $problem, true);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/optimization_problem.php?api_key=...
See the sample JSON response of this method.
Get an Optimization
Get a single optimization using the optimization_problem_id
parameter.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimization_problem_id | string | Optimization Problem ID |
<job id="GetOptimizationSingle">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a single optimization problem.
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
opi="07372F2CF3814EC6DFFAFE92E22771AA"
url=url&"?api_key="&apikey
url=url&"&optimization_problem_id="&opi
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetOptimization(string optimizationProblemID)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
OptimizationProblemID = optimizationProblemID
};
// Run the query
string errorString;
DataObject dataObject = route4Me.GetOptimization(optimizationParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
Console.WriteLine("State: {0}", dataObject.State);
}
else
{
Console.WriteLine("GetOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetOptimization(optimizationProblemID As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim optimizationParameters As New OptimizationParameters() With { _
.OptimizationProblemID = optimizationProblemID _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.GetOptimization(optimizationParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("GetOptimization executed successfully")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("GetOptimization error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
response = optimization.get_optimizations(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
optimizations = response.optimizations
optimization_problem_id = optimizations[0].optimization_problem_id
response = optimization.get_optimization(
optimization_problem_id=optimization_problem_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
optimization_problem_id = response.optimization_problem_id
print '\tOptimization ID: {}'.format(optimization_problem_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.optimizations;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.OptimizationParameters;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetOptimization {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<DataObject> data = manager.getOptimizations(10, 5);
String optimizationProblemID = data.get(0).getOptimizationProblemId();
DataObject optimization = manager.getOptimization(new OptimizationParameters().setProblemId(optimizationProblemID));
System.out.println(optimization);
} catch (APIException e) {
// handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\OptimizationProblem;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random optimization problem ID
$optimization = new OptimizationProblem();
$optimizationProblemId = $optimization->getRandomOptimizationId(0, 10);
assert(!is_null($optimizationProblemId), "Can't retrieve a random optimization problem ID");
// Get an optimization problem
$optimizationProblemParams = array(
"optimization_problem_id" => $optimizationProblemId
);
$optimizationProblem = $optimization->get($optimizationProblemParams);
foreach ((array)$optimizationProblem as $probParts) {
Route4Me::simplePrint((array)$probParts);
}
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
optimization, err = service.GetOptimization(&OptimizationParameters{ProblemID: optimizations[0].ProblemID})
if err != nil {
// handle errors
return
}
// do something with optimization
}
package GetOptimization;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::OptimizationState;
sub GetOptimization {
my ($self, $optimizationProblemID) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $optimizationParameters = OptimizationParameters->new(
optimization_problem_id => $optimizationProblemID
);
my $errorString;
my $dataObject = $route4Me->getOptimization($optimizationParameters, \$errorString);
if ($dataObject) {
print "GetOptimization executed successfully\n";
printf "Optimization Problem ID: %s\n", $dataObject->optimization_problem_id;
printf "State: %s\n", OptimizationState->get_optimization_state($dataObject->state);
} else {
printf "GetOptimization error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
SET optprobid=07372F2CF3814EC6DFFAFE92E22771AA
:: The example demonstrates the process of getting a single optimization problem.
ECHO ON
curl -o file1.txt -g -X GET -k "%URL%/api.v4/optimization_problem.php?api_key=%apikey%&optimization_problem_id=%optprobid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
optprobid=07372F2CF3814EC6DFFAFE92E22771AA
# The example demonstrates the process of getting a single optimization problem.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&optimization_problem_id=$optprobid"
echo "Finished..."
sleep 15
unit GetOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetOptimization = class(TBaseExample)
public
procedure Execute(OptimizationProblemId: String);
end;
implementation
uses
OptimizationParametersUnit, DataObjectUnit, EnumsUnit;
procedure TGetOptimization.Execute(OptimizationProblemId: String);
var
Parameters: TOptimizationParameters;
DataObject: TDataObject;
ErrorString: String;
begin
Parameters := TOptimizationParameters.Create;
try
Parameters.OptimizationProblemID := OptimizationProblemId;
DataObject := Route4MeManager.Optimization.Get(Parameters, ErrorString);
try
WriteLn('');
if (DataObject <> nil) then
begin
WriteLn('GetOptimization executed successfully');
WriteLn(Format('Optimization Problem ID: %s',
[DataObject.OptimizationProblemId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(DataObject.State)]]));
end
else
WriteLn(Format('GetOptimization error: "%s"', [ErrorString]));
finally
FreeAndNil(DataObject);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *id = "2FB5F91365317758045DB9F19DF5A522";
int ret = route.get_optimization(id);
if (ret == 0)
cout << "Optimization: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Optimization not found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const optimizationId = "07372F2CF3814EC6DFFAFE92E22771AA"
route4me.Optimizations.get(optimizationId, (err, optimization) => {
debug("error ", err)
debug("result ", optimization)
// Expectations about result
expect(err).is.null
expect(optimization).has.property("optimization_problem_id", "07372F2CF3814EC6DFFAFE92E22771AA")
// TODO: remove `done` call from examples
done()
})
})
})
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char opt_id[] = "c46648541ca5d716a31ffae6f405a37d";
init(key, 1);
if (!get_optimization(opt_id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimization_problem_id=...
See the sample JSON response of this method.
Get Optimizations
a) Get all optimizations belonging to a user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
state | string | A comma-separated list of states. |
limit | integer | The number of records to return. |
offset | integer | Search starting position |
<job id="GetOptimizations">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a limited number of optimization problems.
url="https://api.route4me.com/api.v4/optimization_problem.php"
state="1,2,3"
apikey="11111111111111111111111111111111"
limit="10"
offset="0"
url=url&"?state="&state
url=url&"&api_key="&apikey
url=url&"&limit="&limit
url=url&"&offset="&offset
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetOptimizations()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery queryParameters = new RouteParametersQuery()
{
Limit = 10,
Offset = 5
};
// Run the query
string errorString;
DataObject[] dataObjects = route4Me.GetOptimizations(queryParameters, out errorString);
Console.WriteLine("");
if (dataObjects != null)
{
Console.WriteLine("GetOptimizations executed successfully, {0} optimizations returned", dataObjects.Length);
Console.WriteLine("");
dataObjects.ForEach(optimization =>
{
Console.WriteLine("Optimization Problem ID: {0}", optimization.OptimizationProblemId);
Console.WriteLine("");
});
}
else
{
Console.WriteLine("GetOptimizations error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetOptimizations()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim queryParameters As New RouteParametersQuery() With { _
.Limit = 10, _
.Offset = 5 _
}
' Run the query
Dim errorString As String = ""
Dim dataObjects As DataObject() = route4Me.GetOptimizations(queryParameters, errorString)
Console.WriteLine("")
If dataObjects IsNot Nothing Then
Console.WriteLine("GetOptimizations executed successfully, {0} optimizations returned", dataObjects.Length)
Console.WriteLine("")
For Each optimization As DataObject In dataObjects
Console.WriteLine("Optimization Problem ID: {0}", optimization.OptimizationProblemId)
Console.WriteLine("")
Next
Else
Console.WriteLine("GetOptimizations error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
response = optimization.get_optimizations(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print response
for i, optimization in enumerate(response.optimizations):
optimization_problem_id = optimization.optimization_problem_id
print 'Optimization #{}'.format(i + 1)
print '\tOptimization ID: {}'.format(optimization_problem_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.optimizations;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetOptimizations {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<DataObject> data = manager.getOptimizations(10, 5);
for (DataObject optimization : data) {
System.out.println(optimization);
}
} catch (APIException e) {
// handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$routeParameters = array(
'limit' => 5,
'offset' => 0
);
$optimizationProblem = new OptimizationProblem();
$optimizations = $optimizationProblem->get($routeParameters);
foreach ($optimizations as $optimization) {
echo "Optimization problem ID -> ".$optimization->optimization_problem_id."<br>";
}
package GetOptimizations;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::RouteParametersQuery;
sub GetOptimizations {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $queryParameters = RouteParametersQuery->new(
limit => 10,
offset => 5
);
my $errorString;
my $dataObjects = $route4Me->getOptimizations($queryParameters, $errorString);
print "\n";
if ($dataObjects) {
printf "GetOptimizations executed successfully, %s optimizations returned\n\n", scalar @{$dataObjects->optimizations};
foreach my $dataObject (@{$dataObjects->optimizations})
{
printf "Optimization Problem ID: %s\n", $dataObject->optimization_problem_id;
}
} else {
printf "GetOptimizations error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
:: The example demonstrates the process of getting a limited number of optimization problems.
ECHO ON
curl -o file1.txt -g -X GET -k "%URL%/api.v4/optimization_problem.php?state=1,2,3&api_key=%apikey%&limit=10&offset=0"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
state=1,2,3
limit=10
offset=0
# The example demonstrates the process of getting a limited number of optimization problems.
curl -o file1.txt -g -X GET -k "$url?state=$state&api_key=$apikey&limit=$limit&offset=$offset"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
optimizations, err := service.GetOptimizations(&RouteQuery{Limit: 5})
if err != nil {
// handle errors
return
}
// do something with optimizations
}
unit GetOptimizationsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetOptimizations = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses RouteParametersQueryUnit, DataObjectUnit;
procedure TGetOptimizations.Execute;
var
Parameters: TRouteParametersQuery;
DataObjects: TArray<TDataObject>;
DataObject: TDataObject;
ErrorString: String;
i: integer;
begin
Parameters := TRouteParametersQuery.Create;
try
Parameters.Limit := 10;
Parameters.Offset := 5;
DataObjects := Route4MeManager.Optimization.Get(Parameters, ErrorString);
try
WriteLn('');
if Length(DataObjects) > 0 then
begin
WriteLn(Format(
'GetOptimizations executed successfully, %d optimizations returned',
[Length(DataObjects)]));
WriteLn('');
for DataObject in DataObjects do
WriteLn(Format('Optimization Problem ID: %s', [DataObject.OptimizationProblemId]));
end
else
WriteLn(Format('GetOptimizations error: "%s"', [ErrorString]));
finally
for i := Length(DataObjects) - 1 downto 0 do
FreeAndNil(DataObjects[i]);
end;
finally
FreeAndNil(Parameters);
end;
end;
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = route.get_optimizations("1,2,3", 10, 5);
if (ret == 0)
cout << "Optimizations: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Optimizations not found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
if (!get_optimizations("states",0,10))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...&limit=...&offset=...
See the sample JSON response of this method.
b) Get the optimizations scheduled for the specified date range.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
start_date | string | Start date (e.g. 2019-09-15) |
end_date | string | Start date (e.g. 2019-09-20) |
<job id="View Optimizations From Date Range">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of getting the optimizations scheduled for the specified date range.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
start_date="2019-09-15"
end_date="2019-09-20"
url=url&"?api_key="&apikey
url=url&"&strat_date="&start_date
url=url&"&limit"&end_date
Set r4m=New Route4Me
r4m.OutputFile="get_optimizations_from_date_range_RESPONSE.json"
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
SET "start_date=2019-10-16"
SET "end_date=2019-10-20"
:: The example refers to the process of getting the optimizations scheduled for the specified date range.
ECHO ON
curl -o get_optimizations_from_date_range_RESPONSE.json -g -X GET -k "%url%?api_key=%apikey%&start_date=%start_date%&start_date=%start_date%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
start_date="2019-10-15"
end_date="2019-10-20"
# The example refers to the process of getting the optimizations scheduled for the specified date range.
curl -o file1.txt -g -X GET -k "$url?state=$state&api_key=$apikey&start_date=$start_date&end_date=$end_date"
echo "Finished..."
sleep 15
public void GetOptimizationsFromDateRangeTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OptimizationParameters queryParameters = new OptimizationParameters()
{
StartDate = "2019-09-15",
EndDate = "2019-09-20"
};
// Run the query
string errorString;
DataObject[] dataObjects = route4Me.GetOptimizations(queryParameters, out errorString);
Assert.IsInstanceOfType(dataObjects, typeof(DataObject[]), "GetOptimizationsFromDateRangeTest failed... " + errorString);
}
Public Sub GetOptimizationsFromDateRangeTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim queryParameters As New RouteParametersQuery() With {
.StartDate = "2019-09-15",
.EndtDate = "2019-09-20"
}
' Run the query
Dim errorString As String = ""
Dim dataObjects As DataObject() = route4Me.GetOptimizations(queryParameters, errorString)
Assert.IsInstanceOfType(dataObjects, GetType(DataObject()), "GetOptimizationsFromDateRangeTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$optimizationParameters = [
'start_date' => '2019-10-15',
'end_date' => '2019-10-20'
];
$optimizationProblem = new OptimizationProblem();
$optimizations = $optimizationProblem->get($optimizationParameters);
foreach ($optimizations as $optimization) {
echo 'Optimization problem ID -> '.$optimization->optimization_problem_id.'<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/optimization_problem.php?api_key=...&start_date=...&end_date=...
See the sample JSON response of this method.
Remove an Optimization
Removes an existing optimization belonging to a user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimization_problem_id | string | Optimization Problem ID |
<job id="DeleteOptimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the removal of existing optimization problems.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
redirect=0
url=url&"?api_key="&apikey
url=url&"&redirect="&redirect
jFile="delete_optimization_data.json"
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
SET optprobid=DE62B03510AB5A6A876093F30F6C7BF5
SET redirect=0
ECHO ON
:: The example demonstrates the removal of existing optimization problems.
curl -o file1.txt -g -k -X DELETE -d "@delete_optimization_data.json" "%url%?api_key=%apikey%&redirect=%redirect%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
optprobid=DE62B03510AB5A6A876093F30F6C7BF5
redirect=0
# The example demonstrates the removal of existing optimization problems.
curl -o file1.txt -g -k -X DELETE -d "@delete_optimization_data.json" "$url?api_key=$apikey&redirect=$redirect"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void RemoveOptimization(string optimizationProblemID)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool removed = route4Me.RemoveOptimization(optimizationProblemID, out errorString);
Console.WriteLine("");
if (removed)
{
Console.WriteLine("RemoveOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}", optimizationProblemID);
}
else
{
Console.WriteLine("RemoveOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Remove Optimization
''' </summary>
''' <param name="optimizationProblemIDs"> Optimization Problem IDs </param>
Public Sub RemoveOptimization(optimizationProblemIDs As String())
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim deleted As Boolean = route4Me.RemoveOptimization(optimizationProblemIDs, errorString)
Console.WriteLine("")
If deleted Then
Console.WriteLine("RemoveOptimization executed successfully")
Console.WriteLine("Optimization Problem ID: {0}", optimizationProblemIDs)
Else
Console.WriteLine("RemoveOptimization error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
ALGORITHM_TYPE,
OPTIMIZE,
DISTANCE_UNIT,
DEVICE_TYPE,
TRAVEL_MODE
)
KEY = "11111111111111111111111111111111"
# codebeat:disable[LOC, ABC]
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
address = route4me.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Optimization Example')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
address.add_address(
address='555 W 57th St New York, NY 10019',
lat=40.7718005,
lng=-73.9897716,
alias='BMW of Manhattan',
time=0
)
address.add_address(
address='57 W 57th St New York, NY 10019',
lat=40.7558695,
lng=-73.9862019,
alias='Verizon Wireless',
time=0
)
response = route4me.run_optimization()
optimization_id = response.addresses[0].optimization_problem_id
print 'Deleting Optimization Problem: {}'.format(optimization_id)
response = route4me.optimization.delete_optimization(
optimization_problem_ids=[optimization_id, ])
print (response)
# codebeat:enable[LOC, ABC]
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
err = service.DeleteOptimization({optimizationId})
if err != nil {
// handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\OptimizationProblem;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the removal of existing optimization problems.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random optimization problem ID
$optimization = new OptimizationProblem();
$optimizationProblemId = $optimization->getRandomOptimizationId(0, 10);
assert(!is_null($optimizationProblemId), "Can't retrieve a random optimization problem ID");
// Remove an optimization
$params = array (
"optimization_problem_ids" => array(
"0" => $optimizationProblemId
),
"redirect" => 0
);
$result = $optimization->removeOptimization($params);
var_dump($result);
unit RemoveOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TRemoveOptimization = class(TBaseExample)
public
procedure Execute(OptimizationProblemId: String);
end;
implementation
procedure TRemoveOptimization.Execute(OptimizationProblemId: String);
var
ErrorString: String;
Removed: boolean;
begin
Removed := Route4MeManager.Optimization.Remove(OptimizationProblemID, ErrorString);
WriteLn('');
if (Removed) then
begin
WriteLn('RemoveOptimization executed successfully');
WriteLn(Format('Optimization Problem ID: %s', [OptimizationProblemID]));
end
else
WriteLn(Format('RemoveOptimization error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
ifstream inf("delete_optimization_data.json");
if(!inf.is_open()) {
cout << "Can't find a file with route data" << endl;
return -1;
}
Json::Value input_data;
inf >> input_data;
int ret = route.remove_optimization(input_data);
if (ret == 0)
cout << "Optimization removed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Optimization not removed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char file_name[] = "delete_optimization_data.json";
char* data = NULL;
if (0 != deserialize(file_name, &data))
{
printf("File delete_optimization_data.json not found!\n");
return -1;
}
init(key, 1);
if (!remove_optimization(data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimization_problem_ids=[...]
You can expect this API response:
{
"status":true,
"removed":1
}
Insert an Address into an Optimization
Insert an address into an optimization, resulting in the recalculation of optimal routes.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
optimization_problem_id | string | Optimization Problem ID | GET |
reoptimize | integer | If 1, reoptimize. If 0, don’t. | GET |
addresses | array | A valid JSON array of Address objects. See the Address JSON Schema as a guide. | POST |
<job id="AddAddressToOptimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
optprobid="07372F2CF3814EC6DFFAFE92E22771AA"
url=url&"?api_key="&apikey&"&optimization_problem_id="&optprobid&"&reoptimize=1"
jFile="address_for_optimization.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void AddDestinationToOptimization(string optimizationProblemID, bool andReOptimize)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Prepare the address that we are going to add to an existing route optimization
Address[] addresses = new Address[]
{
new Address() { AddressString = "717 5th Ave New York, NY 10021",
Alias = "Giorgio Armani",
Latitude = 40.7669692,
Longitude = -73.9693864,
Time = 0
}
};
// Optionally change any route parameters, such as maximum route duration, maximum cubic constraints, etc.
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
OptimizationProblemID = optimizationProblemID,
Addresses = addresses,
ReOptimize = andReOptimize
};
// Execute the optimization to re-optimize and rebalance all the routes in this optimization
string errorString;
DataObject dataObject = route4Me.UpdateOptimization(optimizationParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("AddDestinationToOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
Console.WriteLine("State: {0}", dataObject.State);
}
else
{
Console.WriteLine("AddDestinationToOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub AddDestinationToOptimization(optimizationProblemID As String, andReOptimize As Boolean)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Prepare the address that we are going to add to an existing route optimization
Dim addresses As Address() = New Address() {New Address() With { _
.AddressString = "717 5th Ave New York, NY 10021", _
.[Alias] = "Giorgio Armani", _
.Latitude = 40.7669692, _
.Longitude = -73.9693864, _
.Time = 0 _
}}
' Optionally change any route parameters, such as maximum route duration, maximum cubic constraints, etc.
Dim optimizationParameters As New OptimizationParameters() With { _
.OptimizationProblemID = optimizationProblemID, _
.Addresses = addresses, _
.ReOptimize = andReOptimize _
}
' Execute the optimization to re-optimize and rebalance all the routes in this optimization
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.UpdateOptimization(optimizationParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("AddDestinationToOptimization executed successfully")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("AddDestinationToOptimization error: {0}", errorString)
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
response = optimization.get_optimizations(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
optimization_problem_id = response.optimizations[0].optimization_problem_id
response = optimization.get_optimization(optimization_problem_id=optimization_problem_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Addresses to include'
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i+1)
print '\tAddress: {}'.format(address.address)
print '\tLatitude: {}'.format(address.lat)
print '\tLongitude: {}'.format(address.lng)
print '\tAlias: {}'.format(address.alias)
addresses = [{'address': '555 W 57th St New York, NY 10019',
'lat': 40.7718005,
'lng': -73.9897716,
'alias': 'BMW of Manhattan',
'time': 0
},
{'address': '57 W 57th St New York, NY 10019',
'lat': 40.7558695,
'lng': -73.9862019,
'alias': 'Verizon Wireless',
'time': 0
}]
print 'Addresses to include'
for i, address in enumerate(addresses):
print 'Address #{}'.format(i+1)
print '\tAddress: {}'.format(address.get('address'))
print '\tLatitude: {}'.format(address.get('lat'))
print '\tLongitude: {}'.format(address.get('lng'))
print '\tAlias: {}'.format(address.get('alias'))
response = optimization.update_optimization(optimization_problem_id=optimization_problem_id,
addresses=addresses,
reoptimize=True)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Current Addresses'
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i+1)
print '\tAddress: {}'.format(address.address)
print '\tLatitude: {}'.format(address.lat)
print '\tLongitude: {}'.format(address.lng)
print '\tAlias: {}'.format(address.alias)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\OptimizationProblem;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route ID");
// Get random address ID from selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$optimization_problem_id = $addressRand['optimization_problem_id'];
assert(!is_null($optimization_problem_id), "Can't retrieve random address");
// Add an address to the optimization
$addresses = array();
$address1 = (array)Address::fromArray(array(
'address' => '717 5th Ave New York, NY 10021',
'alias' => 'Giorgio Armani',
'lat' => 40.7669692,
'lng' => 73.9693864,
'time' => 0
));
$addresses[0] = $address1;
$OptimizationParameters = (array)OptimizationProblem::fromArray(array(
"optimization_problem_id" => $optimization_problem_id,
"addresses" => $addresses,
"reoptimize" => 1,
));
$optimizationproblem = new OptimizationProblem();
$result = $optimizationproblem->update($OptimizationParameters);
Route4Me::simplePrint($result);
package AddDestinationToOptimization;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::OptimizationState;
sub AddDestinationToOptimization {
my ($self, $optimizationProblemID, $andReOptimize) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $addresses = [
Address->new( address => "717 5th Ave New York, NY 10021",
alias => "Giorgio Armani",
lat => 40.7669692,
lng => -73.9693864,
time => 0
)
];
my $optimizationParameters = OptimizationParameters->new({
optimization_problem_id => $optimizationProblemID,
reoptimize => $andReOptimize,
addresses => $addresses,
});
my $errorString = "";
my $dataObject = $route4Me->updateOptimization( $optimizationParameters, \$errorString );
print "\n";
if ($dataObject) {
print "AddDestinationToOptimization executed successfully\n";
printf "Optimization Problem ID: %s\n", $optimizationProblemID;
printf "State: %s\n", OptimizationState->get_optimization_state($dataObject->state);
} else {
printf "AddDestinationToOptimization error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
SET optprobid=07372F2CF3814EC6DFFAFE92E22771AA
ECHO ON
:: You should insert real test data and use your API key for accurate testing.
curl -o file1.txt -g -X PUT -k -d "@address_for_reoptimization.json" "%url%?api_key=%apikey%&optimization_problem_id=%optprobid%&reoptimize=1"
timeout /t 30
#!/bin/bash
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey=11111111111111111111111111111111
optprobid=07372F2CF3814EC6DFFAFE92E22771AA
opt=1
# Warning: The data in the JSON file isn't real. You should use real test data for accurate testing.
curl -o file1.txt -g -X PUT -k -d "@address_for_optimization.json" "$url?api_key=$apikey&optimization_problem_id=$optprobid&reoptimize=$opt"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
addresses := []routing.Address{
// address to be added
routing.Address{
AddressString: "717 5th Ave New York, NY 10021",
Alias: "Giorgio Armani",
Latitude: 40.7669692,
Longitude: -73.9693864,
Time: 0,
},
}
updated, err := service.UpdateOptimization(&OptimizationParameters{ProblemID: "problem_id", Addresses: addresses, Reoptimize: true})
if err != nil {
// handle errors
return
}
// do something with the updated optimization
}
unit AddDestinationToOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit, DataObjectUnit;
type
TAddDestinationToOptimization = class(TBaseExample)
public
function Execute(OptimizationId: String;
AndReOptimize: boolean): TDataObject;
end;
implementation
uses AddressUnit, OptimizationParametersUnit, EnumsUnit;
function TAddDestinationToOptimization.Execute(OptimizationId: String;
AndReOptimize: boolean): TDataObject;
var
Address: TAddress;
Parameters: TOptimizationParameters;
ErrorString: String;
begin
Address := TAddress.Create;
Address.AddressString := '717 5th Ave New York, NY 10021';
Address.Alias := 'Giorgio Armani';
Address.Latitude := 40.7669692;
Address.Longitude := -73.9693864;
Address.Time := 0;
Parameters := TOptimizationParameters.Create;
try
Parameters.OptimizationProblemID := OptimizationId;
Parameters.AddAddress(Address);
Parameters.ReOptimize := AndReOptimize;
Result := Route4MeManager.Optimization.Update(Parameters, ErrorString);
WriteLn('');
if (Result <> nil) then
begin
WriteLn('AddDestinationToOptimization executed successfully');
WriteLn(Format('Optimization Problem ID: %s', [Result.OptimizationProblemId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(Result.State)]]));
end
else
WriteLn(Format('AddDestinationToOptimization error: %s', [ErrorString]));
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *opt_id = "07372F2CF3814EC6DFFAFE92E22771AA";
ifstream inf("address_for_optimization.json");
if(!inf.is_open()) {
cout << "Can't find a file with address data" << endl;
return -1;
}
Json::Value input_data;
inf >> input_data;
if (route.add_address_to_optimization(input_data, opt_id) == 0) {
cout << "Route updated:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Error updating route: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char opt_id[] = "07372F2CF3814EC6DFFAFE92E22771AA";
char file_name[] = "address_for_optimization.json";
int reoptimize = 1;
char* data = NULL;
if (0 != deserialize(file_name, &data))
{
printf("File address_for_optimization.json not found!\n");
return -1;
}
init(key, 1);
if (!add_address_to_optimization(opt_id, data, reoptimize))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimization_problem_id=...&reoptimize=...
You can expect this API response:
{
"optimization_problem_id": "07372F2CF3814EC6DFFAFE92E22771AA",
"user_errors": [],
"optimization_errors": [],
"state": 4,
"created_timestamp": 1460240759,
"scheduled_for": 1460260800,
"optimization_completed_timestamp": 1475314595,
"parameters": {
"is_upload": false,
"rt": true,
"route_name": "Sunday 10th of April 2016 01:20 AM (+03:00)",
"route_date": 1460246400,
"route_time": 14400,
"shared_publicly": false,
"disable_optimization": false,
"optimize": "Time",
"lock_last": false,
"vehicle_capacity": null,
"vehicle_max_cargo_weight": null,
"vehicle_max_cargo_volume": null,
"vehicle_max_distance_mi": null,
"subtour_max_revenue": null,
"distance_unit": "mi",
"travel_mode": "Driving",
"avoid": "",
"avoidance_zones": [],
"vehicle_id": null,
"driver_id": null,
"dev_lat": null,
"dev_lng": null,
"route_max_duration": 36000,
"route_email": "[email protected]",
"store_route": true,
"metric": 4,
"algorithm_type": 3,
"member_id": 1,
"ip": 3584951549,
"dm": 1,
"dirm": 5,
"parts": 99,
"parts_min": 1,
"device_id": null,
"device_type": "web",
"first_drive_then_wait_between_stops": false,
"has_trailer": false,
"trailer_weight_t": 0,
"limited_weight_t": 36,
"weight_per_axle_t": 0,
"truck_height": 0,
"truck_width": 0,
"truck_length": 0,
"truck_hazardous_goods": "",
"optimization_quality": 2,
"override_addresses": {},
"max_tour_size": null,
"min_tour_size": 0,
"uturn": 1,
"leftturn": 1,
"rightturn": 1
},
"sent_to_background": false,
"addresses": [
{
"route_destination_id": 154456307,
"alias": "",
"member_id": 1,
"address": "US",
"is_depot": false,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 38.89037,
"lng": -77.03196,
"curbside_lat": 38.89037,
"curbside_lng": -77.03196,
"priority": null,
"route_id": "1C9C05D3854FC30E82C942DC057B84DC",
"original_route_id": "",
"optimization_problem_id": "07372F2CF3814EC6DFFAFE92E22771AA",
"sequence_no": 1,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"order_id": null,
"address_stop_type": "DELIVERY",
"is_visited": false,
"timestamp_last_visited": null,
"visited_lat": null,
"visited_lng": null,
"is_departed": false,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": null,
"group": null,
"customer_po": null,
"invoice_no": null,
"reference_no": null,
"order_no": null,
"weight": 0,
"cost": 0,
"revenue": 0,
"cube": 0,
"pieces": 0,
"first_name": null,
"last_name": null,
"email": null,
"phone": null,
"destination_note_count": 0,
"drive_time_to_next_destination": null,
"abnormal_traffic_time_to_next_destination": null,
"uncongested_time_to_next_destination": null,
"traffic_time_to_next_destination": null,
"distance_to_next_destination": null,
"channel_name": "114678d00de3bf082ccf8d448427da0c",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": null,
"time_window_end": null,
"time_window_start_2": null,
"time_window_end_2": null,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 0,
"tracking_number": "E1XVXL7R",
"custom_fields": {
"timeframe_violation_rate": "0",
"notes": "",
"client name": "Veronica Hill",
"address line 1": "5161 San Felipe #390",
"city\/town": "Houston",
"state\/province\/region": "TX",
"zip\/postal code": "77056",
"demand": "",
"demand2": "",
"demand3": "",
"time of service": "5",
"opening time 1": "",
"closing time 1": "",
"opening time 2": "",
"closing time 2": "",
"required skills": ""
},
"custom_fields_str_json": "{\"timeframe_violation_rate\":\"0\",\"notes\":\"\",\"client name\":\"Veronica Hill\",\"address line 1\":\"5161 San Felipe #390\",\"city\\\/town\":\"Houston\",\"state\\\/province\\\/region\":\"TX\",\"zip\\\/postal code\":\"77056\",\"demand\":\"\",\"demand2\":\"\",\"demand3\":\"\",\"time of service\":\"5\",\"opening time 1\":\"\",\"closing time 1\":\"\",\"opening time 2\":\"\",\"closing time 2\":\"\",\"required skills\":\"\"}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": []
}
],
"routes": [
{
"route_id": "1C9C05D3854FC30E82C942DC057B84DC",
"optimization_problem_id": "07372F2CF3814EC6DFFAFE92E22771AA",
"user_route_rating": null,
"member_id": 1,
"member_email": "[email protected]",
"member_first_name": "Administrator",
"member_last_name": "Administrator",
"channel_name": "e270dd0a5fa56bce2612fc56c37afabd",
"vehicle_alias": "N\/A",
"driver_alias": "N\/A",
"trip_distance": 0,
"is_unrouted": false,
"route_cost": 0,
"route_revenue": 0,
"net_revenue_per_distance_unit": 0,
"created_timestamp": 1475314596,
"mpg": 10,
"gas_price": 2,
"route_duration_sec": null,
"planned_total_route_duration": 0,
"actual_travel_distance": 0,
"actual_travel_time": 0,
"actual_footsteps": 0,
"working_time": 0,
"driving_time": 0,
"idling_time": 0,
"paying_miles": 0,
"geofence_polygon_type": "circle",
"geofence_polygon_size": 200,
"parameters": {
"is_upload": false,
"rt": true,
"route_name": "Sunday 10th of April 2016 01:20 AM (+03:00)",
"route_date": 1460246400,
"route_time": 14400,
"shared_publicly": false,
"disable_optimization": false,
"optimize": "Time",
"lock_last": false,
"vehicle_capacity": null,
"vehicle_max_cargo_weight": null,
"vehicle_max_cargo_volume": null,
"vehicle_max_distance_mi": null,
"subtour_max_revenue": null,
"distance_unit": "mi",
"travel_mode": "Driving",
"avoid": "",
"avoidance_zones": [],
"vehicle_id": null,
"driver_id": null,
"dev_lat": null,
"dev_lng": null,
"route_max_duration": 36000,
"route_email": null,
"store_route": true,
"metric": 4,
"algorithm_type": 3,
"member_id": 1,
"ip": 3584951549,
"dm": 1,
"dirm": 5,
"parts": 10,
"parts_min": 1,
"device_id": null,
"device_type": "web",
"first_drive_then_wait_between_stops": false,
"has_trailer": false,
"trailer_weight_t": 0,
"limited_weight_t": 36,
"weight_per_axle_t": 0,
"truck_height": 0,
"truck_width": 0,
"truck_length": 0,
"truck_hazardous_goods": "",
"optimization_quality": 2,
"override_addresses": {},
"max_tour_size": null,
"min_tour_size": 0,
"uturn": 1,
"leftturn": 1,
"rightturn": 1
},
"addresses": [
{
"route_destination_id": 154456307,
"alias": "",
"member_id": 1,
"address": "US",
"is_depot": false,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 38.89037,
"lng": -77.03196,
"curbside_lat": 38.89037,
"curbside_lng": -77.03196,
"priority": null,
"route_id": "1C9C05D3854FC30E82C942DC057B84DC",
"original_route_id": "",
"optimization_problem_id": "07372F2CF3814EC6DFFAFE92E22771AA",
"sequence_no": 1,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"order_id": null,
"address_stop_type": "DELIVERY",
"is_visited": false,
"timestamp_last_visited": null,
"visited_lat": null,
"visited_lng": null,
"is_departed": false,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": null,
"group": null,
"customer_po": null,
"invoice_no": null,
"reference_no": null,
"order_no": null,
"weight": 0,
"cost": 0,
"revenue": 0,
"cube": 0,
"pieces": 0,
"first_name": null,
"last_name": null,
"email": null,
"phone": null,
"destination_note_count": 0,
"drive_time_to_next_destination": null,
"abnormal_traffic_time_to_next_destination": null,
"uncongested_time_to_next_destination": null,
"traffic_time_to_next_destination": null,
"distance_to_next_destination": null,
"channel_name": "114678d00de3bf082ccf8d448427da0c",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": null,
"time_window_end": null,
"time_window_start_2": null,
"time_window_end_2": null,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 0,
"tracking_number": "E1XVXL7R",
"custom_fields": {
"timeframe_violation_rate": "0",
"notes": "",
"client name": "Veronica Hill",
"address line 1": "5161 San Felipe #390",
"city\/town": "Houston",
"state\/province\/region": "TX",
"zip\/postal code": "77056",
"demand": "",
"demand2": "",
"demand3": "",
"time of service": "5",
"opening time 1": "",
"closing time 1": "",
"opening time 2": "",
"closing time 2": "",
"required skills": ""
},
"custom_fields_str_json": "{\"timeframe_violation_rate\":\"0\",\"notes\":\"\",\"client name\":\"Veronica Hill\",\"address line 1\":\"5161 San Felipe #390\",\"city\\\/town\":\"Houston\",\"state\\\/province\\\/region\":\"TX\",\"zip\\\/postal code\":\"77056\",\"demand\":\"\",\"demand2\":\"\",\"demand3\":\"\",\"time of service\":\"5\",\"opening time 1\":\"\",\"closing time 1\":\"\",\"opening time 2\":\"\",\"closing time 2\":\"\",\"required skills\":\"\"}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": [],
"wait_time_to_next_destination": null,
"manifest": {
"running_service_time": 0,
"running_travel_time": 0,
"running_wait_time": 0,
"running_distance": 0,
"fuel_from_start": 0,
"fuel_cost_from_start": 0,
"projected_arrival_time_ts": 1460260800,
"projected_departure_time_ts": 1460260800,
"actual_arrival_time_ts": null,
"actual_departure_time_ts": null,
"estimated_arrival_time_ts": 1460260800,
"estimated_departure_time_ts": 1460260800,
"time_impact": null
}
}
],
"links": {
"route": "http:\/\/api.route4me.com\/api.v4\/route.php?route_id=1C9C05D3854FC30E82C942DC057B84DC&api_key=11111111111111111111111111111111&member_id=44143&device_tracking_history=0&original=0¬es=0",
"optimization_problem_id": "http:\/\/api.route4me.com\/api.v4\/optimization_problem.php?optimization_problem_id=07372F2CF3814EC6DFFAFE92E22771AA&api_key=11111111111111111111111111111111&member_id=44143"
},
"notes": []
}
],
"links": {
"view": "http:\/\/api.route4me.com\/api.v4\/optimization_problem.php?optimization_problem_id=07372F2CF3814EC6DFFAFE92E22771AA&api_key=11111111111111111111111111111111&member_id=1"
}
}
Remove an Address from an Optimization
Removes a destination (an address) with specified route_destination_id
from an optimization problem with specified optimization_problem_id
.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimization_problem_id | string | Optimization problem ID |
route_destination_id | string | Route destination ID |
<job id="DeleteDestinationFromOptimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
opi="123974C887534E84B6114F18A65847E3"
rdi="154456307"
url=url&"?api_key="&apikey
url=url&"&optimization_problem_id="&opi
url=url&"&route_destination_id="&rdi
jFile=""
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
SET optprobid=123974C887534E84B6114F18A65847E3
SET routedestinationid=154456307
ECHO ON
curl -o file1.txt -g -X DELETE -k "%url%/api.v4/address.php?api_key=%apikey%&optimization_problem_id=%optprobid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
optprobid=123974C887534E84B6114F18A65847E3
routedestinationid=154456307
curl -o file1.txt -g -X DELETE -k "$url?api_key=$apikey&optimization_problem_id=$optprobid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void RemoveDestinationFromOptimization(string optimizationId, int destinationId, bool andReOptimize)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool removed = route4Me.RemoveDestinationFromOptimization(optimizationId, destinationId, out errorString);
Console.WriteLine("");
if (removed)
{
Console.WriteLine("RemoveAddressFromOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}, Destination ID: {1}", optimizationId, destinationId);
}
else
{
Console.WriteLine("RemoveAddressFromOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub RemoveAddressFromOptimization(optimizationId As String, destinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim deleted As Boolean = route4Me.RemoveAddressFromOptimization(optimizationId, destinationId, errorString)
Console.WriteLine("")
If deleted Then
Console.WriteLine("RemoveAddressFromOptimization executed successfully")
Console.WriteLine("Destination ID: {0}", destinationId)
Else
Console.WriteLine("RemoveRouteDestination error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
ALGORITHM_TYPE,
OPTIMIZE,
DISTANCE_UNIT,
DEVICE_TYPE,
TRAVEL_MODE
)
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
address = route4me.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Optimization Example')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
address.add_address(
address='555 W 57th St New York, NY 10019',
lat=40.7718005,
lng=-73.9897716,
alias='BMW of Manhattan',
time=0
)
address.add_address(
address='57 W 57th St New York, NY 10019',
lat=40.7558695,
lng=-73.9862019,
alias='Verizon Wireless',
time=0
)
response = route4me.run_optimization()
optimization_id = response.addresses[0].optimization_problem_id
route_destination_id = response.addresses[1].route_destination_id
print 'Deleting Address: {0} from Optimization Problem: {1}'.format(
route_destination_id,
optimization_id
)
response = route4me.optimization.delete_address_from_optimization(
optimization_problem_id=optimization_id,
route_destination_id=route_destination_id
)
print(response)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
deletedRouteDestinationID, err := service.DeleteAddress(optimizationProblemId,routeID)
if err != nil {
// handle errors
return
}
// do
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Address;
use Route4Me\OptimizationProblem;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random optimization problem from test optimization problems
$optimization = new OptimizationProblem();
$optimization_problem_id = $optimization->getRandomOptimizationId(0, 10);
assert(!is_null($optimization_problem_id), "Can't retrieve a random optimization problem ID");
// Get random destination from selected optimization above
$addressRand = (array)$optimization->getRandomAddressFromOptimization($optimization_problem_id);
assert(!is_null($addressRand), "Can't retrieve random address");
if (isset($addressRand['is_depot'])) {
if ($addressRand['is_depot']) {
echo "This address is a depot! Try again.";
return;
}
}
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Remove the destination from the optimization
$params = array (
"optimization_problem_id" => $optimization_problem_id,
"route_destination_id" => $route_destination_id
);
$result = $optimization->removeAddress($params);
var_dump($result);
unit RemoveDestinationFromOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TRemoveDestinationFromOptimization = class(TBaseExample)
public
procedure Execute(
OptimizationId: String; DestinationId: integer; AndReOptimize: boolean);
end;
implementation
procedure TRemoveDestinationFromOptimization.Execute(
OptimizationId: String; DestinationId: integer; AndReOptimize: boolean);
var
ErrorString: String;
Removed: boolean;
begin
Removed := Route4MeManager.Optimization.RemoveDestination(
OptimizationId, DestinationId, ErrorString);
WriteLn('');
if (Removed) then
begin
WriteLn('RemoveAddressFromOptimization executed successfully');
WriteLn(Format('Optimization Problem ID: %s, Destination ID: %d',
[OptimizationId, DestinationId]));
end
else
WriteLn(Format('RemoveAddressFromOptimization error: %s', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char opt_id[] = "123974C887534E84B6114F18A65847E3";
char address[] = "154456307";
init(key, 1);
if (!remove_address_from_optimization(address, opt_id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/address.php.php?api_key=...&optimization_problem_id=...&route_destination_id=...
You can expect this API response:
{
"deleted": true,
"route_destination_id": 154456307
}
Re-Optimize an Optimization
Re-optimize existing optimizations by changing some parameters or addresses.
See the sample input JSON data for this method.
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
reoptimize | integer | If equal to 1, it will be reoptimized. If 0, then no reoptimization. |
optimization_problem_id | string | Optimization problem ID |
input data | POST data | A valid JSON object string. See the Optimization Create JSON Schema as a guide. |
<job id="Reoptimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
opi="07372F2CF3814EC6DFFAFE92E22771AA"
url=url&"?api_key="&apikey
url=url&"&optimization_problem_id="&opi
url=url&"&reoptimize=1"
jFile="addresses_for_reoptimization.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void ReOptimization(string optimizationProblemID)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
OptimizationProblemID = optimizationProblemID,
ReOptimize = true
};
// Run the query
string errorString;
DataObject dataObject = route4Me.UpdateOptimization(optimizationParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("ReOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
Console.WriteLine("State: {0}", dataObject.State);
}
else
{
Console.WriteLine("ReOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub ReOptimization(optimizationProblemID As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim optimizationParameters As New OptimizationParameters() With { _
.OptimizationProblemID = optimizationProblemID, _
.ReOptimize = True _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.UpdateOptimization(optimizationParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("ReOptimization executed successfully")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("ReOptimization error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import OPTIMIZATION_STATE
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
response = optimization.get_optimizations(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
optimizations = response.optimizations
optimization_problem_id = optimizations[0].optimization_problem_id
print 'Reoptimization problem ID: {}'.format(optimization_problem_id)
response = route4me.reoptimization(optimization_problem_id)
print 'Reoptimization status: %s' % \
OPTIMIZATION_STATE.reverse_mapping.get(response.state)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.optimizations;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.OptimizationParameters;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class ReOptimization {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<DataObject> data = manager.getOptimizations(10, 5);
DataObject obj = data.get(0);
OptimizationParameters parameters = new OptimizationParameters();
parameters.setProblemId(obj.getOptimizationProblemId());
parameters.setReoptimize(true);
DataObject updated = manager.updateOptimization(parameters);
System.out.println(updated);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\OptimizationProblem;
use Route4Me\Route4Me;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random optimization problem ID
$optimization = new OptimizationProblem();
$optimizationProblemId = $optimization->getRandomOptimizationId(0, 10);
assert(!is_null($optimizationProblemId), "Can't retrieve a random optimization problem ID");
// Reoptimize an optimization
$problemParams = array(
'optimization_problem_id' => $optimizationProblemId
);
$problem = OptimizationProblem::reoptimize($problemParams);
Route4Me::simplePrint($problem);
package routing
import (
"math/rand"
"reflect"
"strconv"
"testing"
"time"
"github.com/route4me/route4me-go-sdk"
)
var client = route4me.NewClient("11111111111111111111111111111111")
var service = &Service{Client: client}
func TestIntegrationUpdateOptimization(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration tests in short mode.")
}
optimizations, err := service.GetOptimizations(&RouteQuery{Limit: 1})
if err != nil {
t.Error("Error in external function (getOptimizations): ", err)
return
}
if len(optimizations) < 1 {
t.Skip("Not enough optimizations in the getOptimizations")
}
updated, err := service.UpdateOptimization(&OptimizationParameters{ProblemID: optimizations[0].ProblemID, Reoptimize: true})
if err != nil {
t.Error(err)
return
}
get, err := service.GetOptimization(&OptimizationParameters{ProblemID: optimizations[0].ProblemID})
if err != nil {
t.Error(err)
return
}
updated.SentToBackground = false
if !reflect.DeepEqual(get, updated) {
t.Error("Optimizations do not match")
}
}
package ReOptimization;
use strict;
use warnings FATAL => 'all';
sub ReOptimization {
my ($self, $optimizationProblemID) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $optimizationParameters = OptimizationParameters->new({
optimization_problem_id => $optimizationProblemID,
reoptimize => 1
});
my $errorString = "";
my $dataObject = $route4Me->updateOptimization( $optimizationParameters, \$errorString );
print "\n";
if ($dataObject) {
print "ReOptimization executed successfully\n";
printf "Optimization Problem ID: %s\n", $optimizationProblemID;
printf "State: %s\n", OptimizationState->get_optimization_state($dataObject->state);
} else {
printf "ReOptimization error: %s\n", $errorString;
}
1;
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
SET optprobid=07372F2CF3814EC6DFFAFE92E22771AA
:: The example demonstrates how to reoptimize an existing optimization.
ECHO ON
curl -o file1.txt -g -X PUT -k -d "@addresses_for_reoptimization.json" "%URL%/api.v4/optimization_problem.php?api_key=%apikey%&optimization_problem_id=%optprobid%&reoptimize=1"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
optprobid=07372F2CF3814EC6DFFAFE92E22771AA
# The example demonstrates how to reoptimize an existing optimization.
curl -o file1.txt -g -X PUT -k -d "@addresses_for_reoptimization.json" "$url?api_key=$apikey&optimization_problem_id=$optprobid&reoptimize=1"
echo "Finished.."
sleep 15
unit ReOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TReOptimization = class(TBaseExample)
public
procedure Execute(OptimizationProblemId: String);
end;
implementation
uses OptimizationParametersUnit, DataObjectUnit, EnumsUnit;
procedure TReOptimization.Execute(OptimizationProblemId: String);
var
Parameters: TOptimizationParameters;
ErrorString: String;
DataObject: TDataObject;
begin
Parameters := TOptimizationParameters.Create;
try
Parameters.OptimizationProblemID := OptimizationProblemId;
Parameters.ReOptimize := True;
DataObject := Route4MeManager.Optimization.Update(Parameters, ErrorString);
WriteLn('');
try
if (DataObject <> nil) then
begin
WriteLn('ReOptimization executed successfully');
WriteLn(Format('Optimization Problem ID: %s',
[DataObject.OptimizationProblemId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(DataObject.State)]]));
end
else
WriteLn(Format('ReOptimization error: "%s"', [ErrorString]));
finally
FreeAndNil(DataObject);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("addr.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
Json::Value params(Json::objectValue);
params["route_name"] = "Single Driver Round Trip";
params["algorithm_type"] = CRoute4Me::TSP;
params["remote_ip"] = 0;
params["member_id"] = 1;
params["route_time"] = 0;
params["route_max_duration"] = 86400;
params["optimize"] = CRoute4Me::Distance;
params["distance_unit"] = CRoute4Me::MI;
params["travel_mode"] = CRoute4Me::Driving;
params["store_route"] = 1;
params["device_type"] = CRoute4Me::Web;
params["vehicle_capacity"] = 1;
params["vehicle_max_distance_mi"] = 10000;
params["directions"] = 1;
int ret = 0;
Json::Value addr;
inf >> addr;
if(route.run_optimization(addr, params) == 0)
{
Json::Value id = route.get_json_resp()["optimization_problem_id"];
if(!id.isNull())
{
cout << "Optimized problem ID is " << id.asString() << " => reoptimizing..." << endl;
if(route.reoptimize(id.asCString()) == 0)
{
cout << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
Json::Value state = route.get_json_resp()["state"];
if(state.isNull())
cout << "Unknown response format" << endl;
else
cout << "The problem is reoptimized Ok; state is " << state;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
}
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include <json.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
const char file_name[] = "new_optimization.json";
char* data = NULL;
char id[100] = "";
if (deserialize(file_name, &data))
{
printf("Data file not found!\n");
return -1;
}
if (!add_optimization(data))
{
json_object* opt_lst = getJSONResponse();
json_object* opt_problem = json_object_object_get(opt_lst, "optimization_problem_id");
printf("Optimization problem created: %s\n", json_object_to_json_string(opt_problem));
strip_quotes(id, json_object_to_json_string(opt_problem));
printf("ID = %s\n", id);
if (!reoptimize(id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
}
cleanUp();
return 0;
}
/api.v4/optimization_problem.php?api_key=...&optimization_problem_id=...&reoptimize=...
See the sample JSON response of this method.
Routes
A Route refers to a collection of addresses usually sorted in the most optimal sequence. A route can have many addresses. Each address can have attributes, constraints, and metadata which influence the way the route is sequenced.
For usage details, see the cURL examples in the Route folder.
See the Route JSON Schema in our GitHub repository.
Route Properties
Attribute | Type | Description |
---|---|---|
route_id | string | Route ID |
optimization_problem_id | string | Optimization ID |
vehicle_alias | string | Vehicle alias |
driver_alias | string | Driver alias |
trip_distance | double | Route length |
udu_distance_unit | string | Distance unit specified by a user in the offcial Route4Me web application |
udu_trip_distance | double | Route length in the user unit |
mpg | integer | Miles per gallon |
gas_price | double | The price of gas. |
route_duration_sec | integer | Estimated drive time of the route (in seconds). |
planned_total_route_duration | integer | Planned route duration. |
total_wait_time | integer | Total wait time during route trip. |
udu_actual_travel_distance | number | Actual travel distance in the user distance unit. |
parameters | Route Parameters | Route Parameters. See the Route Parameters JSON Schema as a guide. |
addresses | array | Route Addresses. See the Address JSON Schema as a guide. |
links | array | Links. See the Links JSON Schema as a guide. |
directions | array | Directions. See the Direction JSON Schema as a guide. |
path | path | Path. See the Path JSON Schema as a guide. |
tracking_history | TrackingHistory | Tracking history. See the Tracking History JSON Schema as a guide. |
Create a Route
Creates a new route with an optimization problem solution.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimization_problem_id | string | Optimization problem ID |
input data | POST data | A valid JSON object string. See the Optimization Create JSON Schema as a guide. |
<job id="CreateRoute">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of creating a new route.
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="new_route_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of creating a new route.
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d "@new_route_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of creating a new route.
curl -o file1.txt -g -X POST -H "Content-Type: application/json" -d "@new_route_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public DataObject MultipleDepotMultipleDriver()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Prepare the addresses
Address[] addresses = new Address[]
{
#region Addresses
new Address() { AddressString = "3634 W Market St, Fairlawn, OH 44333",
// All possible originating locations are depots and should be marked as true.
// Stylistically, we recommend all depots should be at the top of the destinations list.
IsDepot = true,
Latitude = 41.135762259364,
Longitude = -81.629313826561,
// The number of seconds at the destination.
Time = 300,
// Together these two specify the time window of a destination.
// Seconds offset relative to the route start time for the open availability of a destination.
TimeWindowStart = 28800,
// Seconds offset relative to the route end time for the open availability of a destination.
TimeWindowEnd = 29465},
new Address() { AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
Latitude = 41.135762259364,
Longitude = -81.629313826561,
Time = 300,
TimeWindowStart = 29465,
TimeWindowEnd = 30529},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 300,
TimeWindowStart = 30529,
TimeWindowEnd = 33779},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 100,
TimeWindowStart = 33779,
TimeWindowEnd = 33944},
new Address() { AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221",
Latitude = 41.162971496582,
Longitude = -81.479049682617,
Time = 300,
TimeWindowStart = 33944,
TimeWindowEnd = 34801},
new Address() { AddressString = "1659 Hibbard Dr, Stow, OH 44224",
Latitude = 41.194505989552,
Longitude = -81.443351581693,
Time = 300,
TimeWindowStart = 34801,
TimeWindowEnd = 36366},
new Address() { AddressString = "2705 N River Rd, Stow, OH 44224",
Latitude = 41.145240783691,
Longitude = -81.410247802734,
Time = 300,
TimeWindowStart = 36366,
TimeWindowEnd = 39173},
new Address() { AddressString = "10159 Bissell Dr, Twinsburg, OH 44087",
Latitude = 41.340042114258,
Longitude = -81.421226501465,
Time = 300,
TimeWindowStart = 39173,
TimeWindowEnd = 41617},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
Time = 300,
TimeWindowStart = 41617,
TimeWindowEnd = 43660},
new Address() { AddressString = "367 Cathy Dr, Munroe Falls, OH 44262",
Latitude = 41.148578643799,
Longitude = -81.429229736328,
Time = 300,
TimeWindowStart = 43660,
TimeWindowEnd = 46392},
new Address() { AddressString = "512 Florida Pl, Barberton, OH 44203",
Latitude = 41.003671512008,
Longitude = -81.598461046815,
Time = 300,
TimeWindowStart = 46392,
TimeWindowEnd = 48389},
new Address() { AddressString = "559 W Aurora Rd, Northfield, OH 44067",
Latitude = 41.315116882324,
Longitude = -81.558746337891,
Time = 50,
TimeWindowStart = 48389,
TimeWindowEnd = 48449},
new Address() { AddressString = "3933 Klein Ave, Stow, OH 44224",
Latitude = 41.169467926025,
Longitude = -81.429420471191,
Time = 300,
TimeWindowStart = 48449,
TimeWindowEnd = 50152},
new Address() { AddressString = "2148 8th St, Cuyahoga Falls, OH 44221",
Latitude = 41.136692047119,
Longitude = -81.493492126465,
Time = 300,
TimeWindowStart = 50152,
TimeWindowEnd = 51982},
new Address() { AddressString = "3731 Osage St, Stow, OH 44224",
Latitude = 41.161357879639,
Longitude = -81.42293548584,
Time = 100,
TimeWindowStart = 51982,
TimeWindowEnd = 52180},
new Address() { AddressString = "3731 Osage St, Stow, OH 44224",
Latitude = 41.161357879639,
Longitude = -81.42293548584,
Time = 300,
TimeWindowStart = 52180,
TimeWindowEnd = 54379}
#endregion
};
// Set parameters
RouteParameters parameters = new RouteParameters()
{
// Specify capacitated vehicle routing with time windows and multiple depots, with multiple drivers
AlgorithmType = AlgorithmType.CVRP_TW_MD,
// Set an arbitrary route name
// This value shows up on the website and all connected mobile devices.
RouteName = "Multiple Depot, Multiple Driver",
// The route start date in UTC, Unix timestamp seconds (Tomorrow)
RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.Date.AddDays(1)),
// The time in UTC when a route is starting (7 AM)
RouteTime = 60 * 60 * 7,
// The maximum duration of a route
RouteMaxDuration = 86400,
VehicleCapacity = "1",
VehicleMaxDistanceMI = "10000",
Optimize = Optimize.Distance.Description(),
DistanceUnit = DistanceUnit.MI.Description(),
DeviceType = DeviceType.Web.Description(),
TravelMode = TravelMode.Driving.Description(),
Metric = Metric.Geodesic
};
OptimizationParameters optimizationParameters = new OptimizationParameters()
{
Addresses = addresses,
Parameters = parameters
};
// Run the query
string errorString;
DataObject dataObject = route4Me.RunOptimization(optimizationParameters, out errorString);
// Output the result
PrintExampleOptimizationResult("MultipleDepotMultipleDriver", dataObject, errorString);
return dataObject;
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Function MultipleDepotMultipleDriver() As DataObject
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Prepare the addresses
Dim addresses As Address() = New Address() {New Address() With { _
.AddressString = "3634 W Market St, Fairlawn, OH 44333", _
.IsDepot = True, _
.Latitude = 41.135762259364, _
.Longitude = -81.629313826561, _
.Time = 300, _
.TimeWindowStart = 28800, _
.TimeWindowEnd = 29465 _
}, New Address() With { _
.AddressString = "1218 Ruth Ave, Cuyahoga Falls, OH 44221", _
.Latitude = 41.135762259364, _
.Longitude = -81.629313826561, _
.Time = 300, _
.TimeWindowStart = 29465, _
.TimeWindowEnd = 30529 _
}, New Address() With { _
.AddressString = "512 Florida Pl, Barberton, OH 44203", _
.Latitude = 41.003671512008, _
.Longitude = -81.598461046815, _
.Time = 300, _
.TimeWindowStart = 30529, _
.TimeWindowEnd = 33779 _
}, New Address() With { _
.AddressString = "512 Florida Pl, Barberton, OH 44203", _
.Latitude = 41.003671512008, _
.Longitude = -81.598461046815, _
.Time = 100, _
.TimeWindowStart = 33779, _
.TimeWindowEnd = 33944 _
}, New Address() With { _
.AddressString = "3495 Purdue St, Cuyahoga Falls, OH 44221", _
.Latitude = 41.162971496582, _
.Longitude = -81.479049682617, _
.Time = 300, _
.TimeWindowStart = 33944, _
.TimeWindowEnd = 34801 _
}, New Address() With { _
.AddressString = "1659 Hibbard Dr, Stow, OH 44224", _
.Latitude = 41.194505989552, _
.Longitude = -81.443351581693, _
.Time = 300, _
.TimeWindowStart = 34801, _
.TimeWindowEnd = 36366 _
}, _
New Address() With { _
.AddressString = "2705 N River Rd, Stow, OH 44224", _
.Latitude = 41.145240783691, _
.Longitude = -81.410247802734, _
.Time = 300, _
.TimeWindowStart = 36366, _
.TimeWindowEnd = 39173 _
}, New Address() With { _
.AddressString = "10159 Bissell Dr, Twinsburg, OH 44087", _
.Latitude = 41.340042114258, _
.Longitude = -81.421226501465, _
.Time = 300, _
.TimeWindowStart = 39173, _
.TimeWindowEnd = 41617 _
}, New Address() With { _
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262", _
.Latitude = 41.148578643799, _
.Longitude = -81.429229736328, _
.Time = 300, _
.TimeWindowStart = 41617, _
.TimeWindowEnd = 43660 _
}, New Address() With { _
.AddressString = "367 Cathy Dr, Munroe Falls, OH 44262", _
.Latitude = 41.148578643799, _
.Longitude = -81.429229736328, _
.Time = 300, _
.TimeWindowStart = 43660, _
.TimeWindowEnd = 46392 _
}, New Address() With { _
.AddressString = "512 Florida Pl, Barberton, OH 44203", _
.Latitude = 41.003671512008, _
.Longitude = -81.598461046815, _
.Time = 300, _
.TimeWindowStart = 46392, _
.TimeWindowEnd = 48389 _
}, New Address() With { _
.AddressString = "559 W Aurora Rd, Northfield, OH 44067", _
.Latitude = 41.315116882324, _
.Longitude = -81.558746337891, _
.Time = 50, _
.TimeWindowStart = 48389, _
.TimeWindowEnd = 48449 _
}, _
New Address() With { _
.AddressString = "3933 Klein Ave, Stow, OH 44224", _
.Latitude = 41.169467926025, _
.Longitude = -81.429420471191, _
.Time = 300, _
.TimeWindowStart = 48449, _
.TimeWindowEnd = 50152 _
}, New Address() With { _
.AddressString = "2148 8th St, Cuyahoga Falls, OH 44221", _
.Latitude = 41.136692047119, _
.Longitude = -81.493492126465, _
.Time = 300, _
.TimeWindowStart = 50152, _
.TimeWindowEnd = 51982 _
}, New Address() With { _
.AddressString = "3731 Osage St, Stow, OH 44224", _
.Latitude = 41.161357879639, _
.Longitude = -81.42293548584, _
.Time = 100, _
.TimeWindowStart = 51982, _
.TimeWindowEnd = 52180 _
}, New Address() With { _
.AddressString = "3731 Osage St, Stow, OH 44224", _
.Latitude = 41.161357879639, _
.Longitude = -81.42293548584, _
.Time = 300, _
.TimeWindowStart = 52180, _
.TimeWindowEnd = 54379 _
}}
' Set parameters
' Specify capacitated vehicle routing with time windows and multiple depots, with multiple drivers.
' Set an arbitrary route name.
' This value shows up on the website and all connected mobile devices.
' The route start date in UTC, Unix timestamp seconds (Tomorrow).
' The time in UTC when a route is starting (7 AM).
' The maximum duration of a route.
Dim parameters As New RouteParameters() With { _
.AlgorithmType = AlgorithmType.CVRP_TW_MD, _
.RouteName = "Multiple Depot, Multiple Driver", _
.RouteDate = R4MeUtils.ConvertToUnixTimestamp(DateTime.UtcNow.[Date].AddDays(1)), _
.RouteTime = 60 * 60 * 7, _
.RouteMaxDuration = 86400, _
.VehicleCapacity = "1", _
.VehicleMaxDistanceMI = "10000", _
.Optimize = EnumHelper.GetEnumDescription(Optimize.Distance), _
.DistanceUnit = EnumHelper.GetEnumDescription(DistanceUnit.MI), _
.DeviceType = EnumHelper.GetEnumDescription(DeviceType.Web), _
.TravelMode = EnumHelper.GetEnumDescription(TravelMode.Driving), _
.Metric = Metric.Geodesic _
}
Dim optimizationParameters As New OptimizationParameters() With { _
.Addresses = addresses, _
.Parameters = parameters _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.RunOptimization(optimizationParameters, errorString)
' Output the result
PrintExampleOptimizationResult("MultipleDepotMultipleDriver", dataObject, errorString)
Return dataObject
End Function
End Class
End Namespace
#!/usr/bin/python
import json
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
optimization = route4me.optimization
address = route4me.address
optimization.algorithm_type(ALGORITHM_TYPE.CVRP_TW_MD)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.parts(20)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Multiple Depot, Multiple Driver')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
optimization.metric(METRIC.ROUTE4ME_METRIC_GEODESIC)
address.add_address(
address="455 S 4th St, Louisville, KY 40202",
lat=38.251698,
lng=-85.757308,
is_depot=1,
time=300,
time_window_start=28800,
time_window_end=29400
)
address.add_address(
address="1604 PARKRIDGE PKWY, Louisville, KY, 40214",
lat=38.141598,
lng=-85.793846,
is_depot=1,
time=300,
time_window_start=29400,
time_window_end=30000
)
address.add_address(
address="1407 MCCOY, Louisville, KY, 40215",
lat=38.202496,
lng=-85.786514,
is_depot=0,
time=300,
time_window_start=30000,
time_window_end=30600
)
address.add_address(
address="4805 BELLEVUE AVE, Louisville, KY, 40215",
lat=38.178844,
lng=-85.774864,
is_depot=0,
time=300,
time_window_start=30600,
time_window_end=31200
)
address.add_address(
address="730 CECIL AVENUE, Louisville, KY, 40211",
lat=38.248684,
lng=-85.821121,
is_depot=0,
time=300,
time_window_start=31200,
time_window_end=31800
)
address.add_address(
address="650 SOUTH 29TH ST UNIT 315, Louisville, KY, 40211",
lat=38.251923,
lng=-85.800034,
is_depot=0,
time=300,
time_window_start=31800,
time_window_end=32400
)
address.add_address(
address="4629 HILLSIDE DRIVE, Louisville, KY, 40216",
lat=38.176067,
lng=-85.824638,
is_depot=0,
time=300,
time_window_start=32400,
time_window_end=33000
)
address.add_address(
address="4738 BELLEVUE AVE, Louisville, KY, 40215",
lat=38.179806,
lng=-85.775558,
is_depot=0,
time=300,
time_window_start=33000,
time_window_end=33600
)
address.add_address(
address="318 SO. 39TH STREET, Louisville, KY, 40212",
lat=38.259335,
lng=-85.815094,
is_depot=0,
time=300,
time_window_start=33600,
time_window_end=34200
)
address.add_address(
address="1324 BLUEGRASS AVE, Louisville, KY, 40215",
lat=38.179253,
lng=-85.785118,
is_depot=0,
time=300,
time_window_start=34200,
time_window_end=34800
)
address.add_address(
address="7305 ROYAL WOODS DR, Louisville, KY, 40214",
lat=38.162472,
lng=-85.792854,
is_depot=0,
time=300,
time_window_start=34800,
time_window_end=35400
)
address.add_address(
address="1661 W HILL ST, Louisville, KY, 40210",
lat=38.229584,
lng=-85.783966,
is_depot=0,
time=300,
time_window_start=35400,
time_window_end=36000
)
address.add_address(
address="3222 KINGSWOOD WAY, Louisville, KY, 40216",
lat=38.210606,
lng=-85.822594,
is_depot=0,
time=300,
time_window_start=36000,
time_window_end=36600
)
address.add_address(
address="1922 PALATKA RD, Louisville, KY, 40214",
lat=38.153767,
lng=-85.796783,
is_depot=0,
time=300,
time_window_start=36600,
time_window_end=37200
)
print optimization.data
response = route4me.run_optimization()
print 'Optimization Link: %s' % response.links.view
for address in response.addresses:
print 'Route %s link: %sroute_id=%s' % (address.address,
route4me.route_url(),
address.route_id)
route4me.export_result_to_json('multiple_depot_multiple_driver.json')
if __name__ == '__main__':
main()
package com.route4me.sdk.examples;
import com.route4me.sdk.Route4Me;
import com.route4me.sdk.model.Address;
import com.route4me.sdk.model.DataObject;
import com.route4me.sdk.managers.OptimizationManager;
import com.route4me.sdk.model.Parameters;
import com.route4me.sdk.model.Response;
import com.route4me.sdk.model.enums.Constants.*;
import com.route4me.sdk.serdes.DataObjectDeserializer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultipleDepotMultipleDriver {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
Route4Me route4me = new Route4Me(apiKey);
OptimizationManager optimizationManager = route4me.getOptimizationManager();
Map<String, String> params = new HashMap<>();
optimizationManager.setParams(params);
DataObject data = new DataObject();
Parameters parameters = new Parameters();
List<Address> addresses = new ArrayList<>();
data.setParameters(parameters);
data.setAddresses(addresses);
parameters.setAlgorithm_type(AlgorithmType.CVRP_TW_MD.getValue());
parameters.setStore_route(Boolean.FALSE);
parameters.setShare_route(Boolean.FALSE);
parameters.setRoute_time(0);
parameters.setParts(20);
parameters.setRoute_max_duration(86400);
parameters.setVehicle_capacity("9999");
parameters.setVehicle_max_distance_mi("10000");
parameters.setRoute_name("Multiple Depot, Multiple Driver");
parameters.setOptimize(Optimize.DISTANCE.toString());
parameters.setDistance_unit(DistanceUnit.MI.toString());
parameters.setDevice_type(DeviceType.WEB.toString());
parameters.setTravel_mode(TravelMode.DRIVING.toString());
parameters.setMetric(Metric.ROUTE4ME_METRIC_GEODESIC.getValue());
addresses.add(new Address("455 S 4th St, Louisville, KY 40202",Boolean.TRUE, 38.251698, -85.757308, 300, 28800, 29400));
addresses.add(new Address("1604 PARKRIDGE PKWY, Louisville, KY, 40214",Boolean.TRUE, 38.141598, -85.793846, 300, 29400, 30000));
addresses.add(new Address("1407 MCCOY, Louisville, KY, 40215",38.202496,-85.786514,300,30000,30600));
addresses.add(new Address("4805 BELLEVUE AVE, Louisville, KY, 40215",38.178844,-85.774864,300,30600,31200));
addresses.add(new Address("730 CECIL AVENUE, Louisville, KY, 40211",38.248684,-85.821121,300,31200,31800));
addresses.add(new Address("650 SOUTH 29TH ST UNIT 315, Louisville, KY, 40211",38.251923,-85.800034,300,31800,32400));
addresses.add(new Address("4629 HILLSIDE DRIVE, Louisville, KY, 40216",38.176067,-85.824638,300,32400,33000));
addresses.add(new Address("4738 BELLEVUE AVE, Louisville, KY, 40215",38.179806,-85.775558,300,33000,33600));
addresses.add(new Address("318 SO. 39TH STREET, Louisville, KY, 40212",38.259335,-85.815094,300,33600,34200));
addresses.add(new Address("1324 BLUEGRASS AVE, Louisville, KY, 40215",38.179253,-85.785118,300,34200,34800));
addresses.add(new Address("7305 ROYAL WOODS DR, Louisville, KY, 40214",38.162472,-85.792854,300,34800,35400));
addresses.add(new Address("1661 W HILL ST, Louisville, KY, 40210",38.229584,-85.783966,300,35400,36000));
addresses.add(new Address("3222 KINGSWOOD WAY, Louisville, KY, 40216",38.210606,-85.822594,300,36000,36600));
addresses.add(new Address("1922 PALATKA RD, Louisville, KY, 40214",38.153767,-85.796783,300,36600,37200));
addresses.add(new Address("1314 SOUTH 26TH STREET, Louisville, KY, 40210",38.235847,-85.796852,300,37200,37800));
addresses.add(new Address("2135 MCCLOSKEY AVENUE, Louisville, KY, 40210",38.218662,-85.789032,300,37800,38400));
addresses.add(new Address("1409 PHYLLIS AVE, Louisville, KY, 40215",38.206154,-85.781387,300,38400,39000));
addresses.add(new Address("4504 SUNFLOWER AVE, Louisville, KY, 40216",38.187511,-85.839149,300,39000,39600));
addresses.add(new Address("2512 GREENWOOD AVE, Louisville, KY, 40210",38.241405,-85.795059,300,39600,40200));
addresses.add(new Address("5500 WILKE FARM AVE, Louisville, KY, 40216",38.166065,-85.863319,300,40200,40800));
addresses.add(new Address("3640 LENTZ AVE, Louisville, KY, 40215",38.193283,-85.786201,300,40800,41400));
addresses.add(new Address("1020 BLUEGRASS AVE, Louisville, KY, 40215",38.17952,-85.780037,300,41400,42000));
addresses.add(new Address("123 NORTH 40TH ST, Louisville, KY, 40212",38.26498,-85.814156,300,42000,42600));
addresses.add(new Address("7315 ST ANDREWS WOODS CIRCLE UNIT 104, Louisville, KY, 40214",38.151072,-85.802867,300,42600,43200));
addresses.add(new Address("3210 POPLAR VIEW DR, Louisville, KY, 40216",38.182594,-85.849937,300,43200,43800));
addresses.add(new Address("4519 LOUANE WAY, Louisville, KY, 40216",38.1754,-85.811447,300,43800,44400));
addresses.add(new Address("6812 MANSLICK RD, Louisville, KY, 40214",38.161839,-85.798279,300,44400,45000));
addresses.add(new Address("1524 HUNTOON AVENUE, Louisville, KY, 40215",38.172031,-85.788353,300,45000,45600));
addresses.add(new Address("1307 LARCHMONT AVE, Louisville, KY, 40215",38.209663,-85.779816,300,45600,46200));
addresses.add(new Address("434 N 26TH STREET #2, Louisville, KY, 40212",38.26844,-85.791962,300,46200,46800));
addresses.add(new Address("678 WESTLAWN ST, Louisville, KY, 40211",38.250397,-85.80629,300,46800,47400));
addresses.add(new Address("2308 W BROADWAY, Louisville, KY, 40211",38.248882,-85.790421,300,47400,48000));
addresses.add(new Address("2332 WOODLAND AVE, Louisville, KY, 40210",38.233579,-85.794257,300,48000,48600));
addresses.add(new Address("1706 WEST ST. CATHERINE, Louisville, KY, 40210",38.239697,-85.783928,300,48600,49200));
addresses.add(new Address("1699 WATHEN LN, Louisville, KY, 40216",38.216465,-85.792397,300,49200,49800));
addresses.add(new Address("2416 SUNSHINE WAY, Louisville, KY, 40216",38.186245,-85.831787,300,49800,50400));
addresses.add(new Address("6925 MANSLICK RD, Louisville, KY, 40214",38.158466,-85.798355,300,50400,51000));
addresses.add(new Address("2707 7TH ST, Louisville, KY, 40215",38.212438,-85.785082,300,51000,51600));
addresses.add(new Address("2014 KENDALL LN, Louisville, KY, 40216",38.179394,-85.826668,300,51600,52200));
addresses.add(new Address("612 N 39TH ST, Louisville, KY, 40212",38.273354,-85.812012,300,52200,52800));
addresses.add(new Address("2215 ROWAN ST, Louisville, KY, 40212",38.261703,-85.786781,300,52800,53400));
addresses.add(new Address("1826 W. KENTUCKY ST, Louisville, KY, 40210",38.241611,-85.78653,300,53400,54000));
addresses.add(new Address("1810 GREGG AVE, Louisville, KY, 40210",38.224716,-85.796211,300,54000,54600));
addresses.add(new Address("4103 BURRRELL DRIVE, Louisville, KY, 40216",38.191753,-85.825836,300,54600,55200));
addresses.add(new Address("359 SOUTHWESTERN PKWY, Louisville, KY, 40212",38.259903,-85.823463,300,55200,55800));
addresses.add(new Address("2407 W CHESTNUT ST, Louisville, KY, 40211",38.252781,-85.792109,300,55800,56400));
addresses.add(new Address("225 S 22ND ST, Louisville, KY, 40212",38.257616,-85.786658,300,56400,57000));
addresses.add(new Address("1404 MCCOY AVE, Louisville, KY, 40215",38.202122,-85.786072,300,57000,57600));
addresses.add(new Address("117 FOUNT LANDING CT, Louisville, KY, 40212",38.270061,-85.799438,300,57600,58200));
addresses.add(new Address("5504 SHOREWOOD DRIVE, Louisville, KY, 40214",38.145851,-85.7798,300,58200,58800));
optimizationManager.setData(data);
DataObject responseObject = optimizationManager.runOptimization();
System.out.println("Optimization Problem ID:" + responseObject.getOptimization_problem_id());
System.out.println("State:" + OptimizationState.get(responseObject.getState().intValue()));
if (responseObject.getAddresses() != null) {
for (Address address : responseObject.getAddresses()) {
System.out.println("Address:" + address.getAddress());
System.out.println("Route ID:" + address.getRoute_id());
}
}
}
}
package MultipleDepotMultipleDriver;
use strict;
use warnings FATAL => 'all';
sub MultipleDepotMultipleDriver {
# Create the manager with the API key
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $addresses = [
Address->new( address => "3634 W Market St, Fairlawn, OH 44333",
# All possible originating locations are depots and should be marked as true.
# Stylistically, we recommend all depots should be at the top of the destinations list.
is_depot => 1,
lat => 41.135762259364,
lng => -81.629313826561,
# The number of seconds at a destination.
time => 300,
# Together these two specify the time window of a destination.
# Seconds offset relative to the route start time for the open availability of a destination.
time_window_start => 28800,
# Seconds offset relative to the route end time for the open availability of a destination.
time_window_end => 29465
),
Address->new( address => "1218 Ruth Ave, Cuyahoga Falls, OH 44221",
lat => 41.135762259364,
lng => -81.629313826561,
time => 300,
time_window_start => 29465,
time_window_end => 30529 ),
Address->new( address => "512 Florida Pl, Barberton, OH 44203",
lat => 41.003671512008,
lng => -81.598461046815,
time => 300,
time_window_start => 30529,
time_window_end => 33779 ),
Address->new( address => "512 Florida Pl, Barberton, OH 44203",
lat => 41.003671512008,
lng => -81.598461046815,
time => 100,
time_window_start => 33779,
time_window_end => 33944 ),
Address->new( address => "3495 Purdue St, Cuyahoga Falls, OH 44221",
lat => 41.162971496582,
lng => -81.479049682617,
time => 300,
time_window_start => 33944,
time_window_end => 34801 ),
Address->new( address => "1659 Hibbard Dr, Stow, OH 44224",
lat => 41.194505989552,
lng => -81.443351581693,
time => 300,
time_window_start => 34801,
time_window_end => 36366 ),
Address->new( address => "2705 N River Rd, Stow, OH 44224",
lat => 41.145240783691,
lng => -81.410247802734,
time => 300,
time_window_start => 36366,
time_window_end => 39173 ),
Address->new( address => "10159 Bissell Dr, Twinsburg, OH 44087",
lat => 41.340042114258,
lng => -81.421226501465,
time => 300,
time_window_start => 39173,
time_window_end => 41617 ),
Address->new( address => "367 Cathy Dr, Munroe Falls, OH 44262",
lat => 41.148578643799,
lng => -81.429229736328,
time => 300,
time_window_start => 41617,
time_window_end => 43660 ),
Address->new( address => "367 Cathy Dr, Munroe Falls, OH 44262",
lat => 41.148578643799,
lng => -81.429229736328,
time => 300,
time_window_start => 43660,
time_window_end => 46392 ),
Address->new( address => "512 Florida Pl, Barberton, OH 44203",
lat => 41.003671512008,
lng => -81.598461046815,
time => 300,
time_window_start => 46392,
time_window_end => 48389 ),
Address->new( address => "559 W Aurora Rd, Northfield, OH 44067",
lat => 41.315116882324,
lng => -81.558746337891,
time => 50,
time_window_start => 48389,
time_window_end => 48449 ),
Address->new( address => "3933 Klein Ave, Stow, OH 44224",
lat => 41.169467926025,
lng => -81.429420471191,
time => 300,
time_window_start => 48449,
time_window_end => 50152 ),
Address->new( address => "2148 8th St, Cuyahoga Falls, OH 44221",
lat => 41.136692047119,
lng => -81.493492126465,
time => 300,
time_window_start => 50152,
time_window_end => 51982 ),
Address->new( address => "3731 Osage St, Stow, OH 44224",
lat => 41.161357879639,
lng => -81.42293548584,
time => 100,
time_window_start => 51982,
time_window_end => 52180 ),
Address->new( address => "3731 Osage St, Stow, OH 44224",
lat => 41.161357879639,
lng => -81.42293548584,
time => 300,
time_window_start => 52180,
time_window_end => 54379 )
];
my $parameters = RouteParameters->new(
# Specify capacitated vehicle routing with time windows and multiple depots, with multiple drivers.
algorithm_type => AlgorithmType->CVRP_TW_MD,
# Set an arbitrary route name.
# This value shows up on the website and all connected mobile devices.
route_name => "Multiple Depot, Multiple Driver",
# The route start date in UTC, Unix timestamp seconds (Tomorrow).
route_date => time + 3600,
# The time in UTC when a route is starting (7 AM).
route_time => 60 * 60 * 7,
# The maximum duration of a route.
route_max_duration => 86400,
vehicle_capacity => "1",
vehicle_max_distance_mi => "10000",
optimize => Optimize->Distance,
distance_unit => DistanceUnit->MI,
device_type => DeviceType->Web,
travel_mode => TravelMode->Driving,
metric => Metric->Geodesic
);
my $optimizationParameters = OptimizationParameters->new(
addresses => $addresses,
parameters => $parameters
);
my $errorString = "";
my $dataObject = $route4Me->runOptimization( $optimizationParameters, \$errorString );
ExamplesInfrastructure->PrintExampleOptimizationResult( "MultipleDepotMultipleDriver", $dataObject, $errorString );
return $dataObject;
}
1;
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
routeParams := &routing.RouteParameters{
AlgorithmType: routing.CVRP_TW_MD,
Name: "Multiple Depot, Multiple Driver",
RouteDate: time.Now().Unix(),
RouteTime: 60 * 60 * 7,
RouteMaxDuration: 86400,
VehicleCapacity: 1,
VehicleMaxDistanceMI: 1000,
Optimize: routing.Distance,
DistanceUnit: routing.Miles,
DeviceType: routing.Web,
TravelMode: routing.Driving,
}
optParams := &routing.OptimizationParameters{
Addresses: addresses,
Parameters: routeParams,
}
optimization, err := service.RunOptimization(optParams)
if err != nil {
// handle errors
return
}
// do something with optimization
}
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\OptimizationType;
use Route4Me\OptimizationProblem;
use Route4Me\OptimizationProblemParams;
use Route4Me\Enum\AlgorithmType;
use Route4Me\Enum\DistanceUnit;
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\TravelMode;
use Route4Me\Enum\Metric;
use Route4Me\RouteParameters;
use Route4Me\Address;
use Route4Me\Route;
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Huge list of addresses
$json = json_decode(file_get_contents('./addresses.json'), true);
$addresses = array();
foreach($json as $address) {
$addresses[] = Address::fromArray($address);
}
$parameters = RouteParameters::fromArray(array(
"algorithm_type" => AlgorithmType::CVRP_TW_SD,
"distance_unit" => DistanceUnit::MILES,
"device_type" => DeviceType::WEB,
"optimize" => OptimizationType::DISTANCE,
"metric" => Metric::GEODESIC,
"route_max_duration" => 86400 * 2,
"travel_mode" => TravelMode::DRIVING,
"vehicle_capacity" => 50,
"vehicle_max_distance_mi" => 10000,
"parts" => 50
));
$optimizationParams = new OptimizationProblemParams;
$optimizationParams->setAddresses($addresses);
$optimizationParams->setParameters($parameters);
$problem = OptimizationProblem::optimize($optimizationParams);
Route4Me::simplePrint((array)$problem, true);
unit MultipleDepotMultipleDriverUnit;
interface
uses SysUtils, DataObjectUnit, BaseOptimizationExampleUnit;
type
TMultipleDepotMultipleDriver = class(TBaseOptimizationExample)
public
function Execute: TDataObject;
end;
implementation
uses
IOptimizationParametersProviderUnit, OptimizationParametersUnit,
MultipleDepotMultipleDriverTestDataProviderUnit;
function TMultipleDepotMultipleDriver.Execute: TDataObject;
var
DataProvider: IOptimizationParametersProvider;
ErrorString: String;
Parameters: TOptimizationParameters;
begin
DataProvider := TMultipleDepotMultipleDriverTestDataProvider.Create;
Parameters := DataProvider.OptimizationParameters;
try
Result := Route4MeManager.Optimization.Run(Parameters, ErrorString);
finally
FreeAndNil(Parameters);
end;
PrintExampleOptimizationResult('MultipleDepotMultipleDriver', Result, ErrorString);
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Multiple Depot, Multiple Driver
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("addr.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
Json::Value params(Json::objectValue);
params["route_name"] = "Multiple Depot, Multiple Driver";
params["algorithm_type"] = CRoute4Me::CVRP_TW_MD;
params["route_time"] = 0;
params["route_max_duration"] = 2*86400;
params["optimize"] = "Time";
params["distance_unit"] = CRoute4Me::MI;
params["travel_mode"] = CRoute4Me::Driving;
params["store_route"] = 1;
params["device_type"] = CRoute4Me::Web;
params["vehicle_capacity"] = 99;
params["vehicle_max_distance_mi"] = 99999;
params["share_route"] = 0;
params["metric"] = CRoute4Me::ROUTE4ME_METRIC_GEODESIC;
params["parts"] = 10;
params["rt"] = 1;
int ret = 0;
Json::Value addr;
inf >> addr;
if(route.run_optimization(addr, params) == 0)
{
// use Json::StyledWriter instead of Json::FastWriter for a human friendly output
cout << "Multiple Depot, Multiple Driver:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include <json.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
#define ADD_ADDRESS(x) json_object_array_add(addrs, point##x)
int main(int argc, char* argv[])
{
int i;
init(key, 1);
json_object* point1 = json_object_new_object();
json_object_object_add(point1, "address", json_object_new_string("455 S 4th St, Louisville, KY 40202"));
json_object_object_add(point1, "lng", json_object_new_double(-85.757308));
json_object_object_add(point1, "lat", json_object_new_double(38.251698));
json_object_object_add(point1, "is_depot", json_object_new_boolean(TRUE));
json_object_object_add(point1, "time", json_object_new_int(300));
json_object_object_add(point1, "time_window_start", json_object_new_int(28800));
json_object_object_add(point1, "time_window_end", json_object_new_int(30477));
json_object* point2 = json_object_new_object();
json_object_object_add(point2, "address", json_object_new_string("1604 PARKRIDGE PKWY, Louisville, KY, 40214"));
json_object_object_add(point2, "lng", json_object_new_double(-85.793846));
json_object_object_add(point2, "lat", json_object_new_double(38.141598));
json_object_object_add(point2, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point2, "time", json_object_new_int(300));
json_object_object_add(point2, "time_window_start", json_object_new_int(30477));
json_object_object_add(point2, "time_window_end", json_object_new_int(33406));
json_object* point3 = json_object_new_object();
json_object_object_add(point3, "address", json_object_new_string("1407 א53MCCOY, Louisville, KY, 40215"));
json_object_object_add(point3, "lng", json_object_new_double(-85.786514));
json_object_object_add(point3, "lat", json_object_new_double(38.202496));
json_object_object_add(point3, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point3, "time", json_object_new_int(300));
json_object_object_add(point3, "time_window_start", json_object_new_int(33406));
json_object_object_add(point3, "time_window_end", json_object_new_int(36228));
json_object* point4 = json_object_new_object();
json_object_object_add(point4, "address", json_object_new_string("4805 BELLEVUE AVE, Louisville, KY, 40215"));
json_object_object_add(point4, "lng", json_object_new_double(-85.774864));
json_object_object_add(point4, "lat", json_object_new_double(38.178844));
json_object_object_add(point4, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point4, "time", json_object_new_int(300));
json_object_object_add(point4, "time_window_start", json_object_new_int(36228));
json_object_object_add(point4, "time_window_end", json_object_new_int(37518));
json_object* point5 = json_object_new_object();
json_object_object_add(point5, "address", json_object_new_string("730 CECIL AVENUE, Louisville, KY, 40211"));
json_object_object_add(point5, "lng", json_object_new_double(-85.821121));
json_object_object_add(point5, "lat", json_object_new_double(38.248684));
json_object_object_add(point5, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point5, "time", json_object_new_int(300));
json_object_object_add(point5, "time_window_start", json_object_new_int(37518));
json_object_object_add(point5, "time_window_end", json_object_new_int(39550));
json_object* point6 = json_object_new_object();
json_object_object_add(point6, "address", json_object_new_string("650 SOUTH 29TH ST UNIT 315, Louisville, KY, 40211"));
json_object_object_add(point6, "lng", json_object_new_double(-85.800034));
json_object_object_add(point6, "lat", json_object_new_double(38.251923));
json_object_object_add(point6, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point6, "time", json_object_new_int(300));
json_object_object_add(point6, "time_window_start", json_object_new_int(39550));
json_object_object_add(point6, "time_window_end", json_object_new_int(41348));
json_object* point7 = json_object_new_object();
json_object_object_add(point7, "address", json_object_new_string("4629 HILLSIDE DRIVE, Louisville, KY, 40216"));
json_object_object_add(point7, "lng", json_object_new_double(-85.824638));
json_object_object_add(point7, "lat", json_object_new_double(38.176067));
json_object_object_add(point7, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point7, "time", json_object_new_int(300));
json_object_object_add(point7, "time_window_start", json_object_new_int(41348));
json_object_object_add(point7, "time_window_end", json_object_new_int(42261));
json_object* point8 = json_object_new_object();
json_object_object_add(point8, "address", json_object_new_string("4738 BELLEVUE AVE, Louisville, KY, 40215"));
json_object_object_add(point8, "lng", json_object_new_double(-85.775558));
json_object_object_add(point8, "lat", json_object_new_double(38.179806));
json_object_object_add(point8, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point8, "time", json_object_new_int(300));
json_object_object_add(point8, "time_window_start", json_object_new_int(42261));
json_object_object_add(point8, "time_window_end", json_object_new_int(45195));
json_object* point9 = json_object_new_object();
json_object_object_add(point9, "address", json_object_new_string("318 SO. 39TH STREET, Louisville, KY, 40212"));
json_object_object_add(point9, "lng", json_object_new_double(-85.815094));
json_object_object_add(point9, "lat", json_object_new_double(38.259335));
json_object_object_add(point9, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point9, "time", json_object_new_int(300));
json_object_object_add(point9, "time_window_start", json_object_new_int(45195));
json_object_object_add(point9, "time_window_end", json_object_new_int(46549));
json_object* point10 = json_object_new_object();
json_object_object_add(point10, "address", json_object_new_string("1324 BLUEGRASS AVE, Louisville, KY, 40215"));
json_object_object_add(point10, "lng", json_object_new_double(-85.785118));
json_object_object_add(point10, "lat", json_object_new_double(38.179253));
json_object_object_add(point10, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point10, "time", json_object_new_int(300));
json_object_object_add(point10, "time_window_start", json_object_new_int(46549));
json_object_object_add(point10, "time_window_end", json_object_new_int(47353));
json_object* point11 = json_object_new_object();
json_object_object_add(point11, "address", json_object_new_string("7305 ROYAL WOODS DR, Louisville, KY, 40214"));
json_object_object_add(point11, "lng", json_object_new_double(-85.792854));
json_object_object_add(point11, "lat", json_object_new_double(38.162472));
json_object_object_add(point11, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point11, "time", json_object_new_int(300));
json_object_object_add(point11, "time_window_start", json_object_new_int(47353));
json_object_object_add(point11, "time_window_end", json_object_new_int(50924));
json_object* point12 = json_object_new_object();
json_object_object_add(point12, "address", json_object_new_string("1661 W HILL ST, Louisville, KY, 40210"));
json_object_object_add(point12, "lng", json_object_new_double(-85.783966));
json_object_object_add(point12, "lat", json_object_new_double(38.229584));
json_object_object_add(point12, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point12, "time", json_object_new_int(300));
json_object_object_add(point12, "time_window_start", json_object_new_int(50924));
json_object_object_add(point12, "time_window_end", json_object_new_int(51392));
json_object* point13 = json_object_new_object();
json_object_object_add(point13, "address", json_object_new_string("3222 KINGSWOOD WAY, Louisville, KY, 40216"));
json_object_object_add(point13, "lng", json_object_new_double(-85.822594));
json_object_object_add(point13, "lat", json_object_new_double(38.210606));
json_object_object_add(point13, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point13, "time", json_object_new_int(300));
json_object_object_add(point13, "time_window_start", json_object_new_int(51392));
json_object_object_add(point13, "time_window_end", json_object_new_int(52451));
json_object* point14 = json_object_new_object();
json_object_object_add(point14, "address", json_object_new_string("1922 PALATKA RD, Louisville, KY, 40214"));
json_object_object_add(point14, "lng", json_object_new_double(-85.796783));
json_object_object_add(point14, "lat", json_object_new_double(38.153767));
json_object_object_add(point14, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point14, "time", json_object_new_int(300));
json_object_object_add(point14, "time_window_start", json_object_new_int(52451));
json_object_object_add(point14, "time_window_end", json_object_new_int(55631));
json_object* point15 = json_object_new_object();
json_object_object_add(point15, "address", json_object_new_string("1314 SOUTH 26TH STREET, Louisville, KY, 40210"));
json_object_object_add(point15, "lng", json_object_new_double(-85.796852));
json_object_object_add(point15, "lat", json_object_new_double(38.235847));
json_object_object_add(point15, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point15, "time", json_object_new_int(300));
json_object_object_add(point15, "time_window_start", json_object_new_int(55631));
json_object_object_add(point15, "time_window_end", json_object_new_int(58516));
json_object* point16 = json_object_new_object();
json_object_object_add(point16, "address", json_object_new_string("2135 MCCLOSKEY AVENUE, Louisville, KY, 40210"));
json_object_object_add(point16, "lng", json_object_new_double(-85.789032));
json_object_object_add(point16, "lat", json_object_new_double(38.218662));
json_object_object_add(point16, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point16, "time", json_object_new_int(300));
json_object_object_add(point16, "time_window_start", json_object_new_int(58516));
json_object_object_add(point16, "time_window_end", json_object_new_int(61080));
json_object* point17 = json_object_new_object();
json_object_object_add(point17, "address", json_object_new_string("1409 PHYLLIS AVE, Louisville, KY, 40215"));
json_object_object_add(point17, "lng", json_object_new_double(-85.781387));
json_object_object_add(point17, "lat", json_object_new_double(38.206154));
json_object_object_add(point17, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point17, "time", json_object_new_int(100));
json_object_object_add(point17, "time_window_start", json_object_new_int(61080));
json_object_object_add(point17, "time_window_end", json_object_new_int(61504));
json_object* point18 = json_object_new_object();
json_object_object_add(point18, "address", json_object_new_string("4504 SUNFLOWER AVE, Louisville, KY, 40216"));
json_object_object_add(point18, "lng", json_object_new_double(-85.839149));
json_object_object_add(point18, "lat", json_object_new_double(38.187511));
json_object_object_add(point18, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point18, "time", json_object_new_int(300));
json_object_object_add(point18, "time_window_start", json_object_new_int(61504));
json_object_object_add(point18, "time_window_end", json_object_new_int(62061));
json_object* point19 = json_object_new_object();
json_object_object_add(point19, "address", json_object_new_string("2512 GREENWOOD AVE, Louisville, KY, 40210"));
json_object_object_add(point19, "lng", json_object_new_double(-85.795059));
json_object_object_add(point19, "lat", json_object_new_double(38.241405));
json_object_object_add(point19, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point19, "time", json_object_new_int(300));
json_object_object_add(point19, "time_window_start", json_object_new_int(62061));
json_object_object_add(point19, "time_window_end", json_object_new_int(65012));
json_object* point20 = json_object_new_object();
json_object_object_add(point20, "address", json_object_new_string("5500 WILKE FARM AVE, Louisville, KY, 40216"));
json_object_object_add(point20, "lng", json_object_new_double(-85.863319));
json_object_object_add(point20, "lat", json_object_new_double(38.166065));
json_object_object_add(point20, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point20, "time", json_object_new_int(300));
json_object_object_add(point20, "time_window_start", json_object_new_int(65012));
json_object_object_add(point20, "time_window_end", json_object_new_int(67541));
json_object* point21 = json_object_new_object();
json_object_object_add(point21, "address", json_object_new_string("3640 LENTZ AVE, Louisville, KY, 40215"));
json_object_object_add(point21, "lng", json_object_new_double(-85.786201));
json_object_object_add(point21, "lat", json_object_new_double(38.193283));
json_object_object_add(point21, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point21, "time", json_object_new_int(300));
json_object_object_add(point21, "time_window_start", json_object_new_int(67541));
json_object_object_add(point21, "time_window_end", json_object_new_int(69120));
json_object* point22 = json_object_new_object();
json_object_object_add(point22, "address", json_object_new_string("1020 BLUEGRASS AVE, Louisville, KY, 40215"));
json_object_object_add(point22, "lng", json_object_new_double(-85.780037));
json_object_object_add(point22, "lat", json_object_new_double(38.17952));
json_object_object_add(point22, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point22, "time", json_object_new_int(300));
json_object_object_add(point22, "time_window_start", json_object_new_int(69120));
json_object_object_add(point22, "time_window_end", json_object_new_int(70572));
json_object* point23 = json_object_new_object();
json_object_object_add(point23, "address", json_object_new_string("123 NORTH 40TH ST, Louisville, KY, 40212"));
json_object_object_add(point23, "lng", json_object_new_double(-85.814156));
json_object_object_add(point23, "lat", json_object_new_double(38.26498));
json_object_object_add(point23, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point23, "time", json_object_new_int(300));
json_object_object_add(point23, "time_window_start", json_object_new_int(70572));
json_object_object_add(point23, "time_window_end", json_object_new_int(73177));
json_object* point24 = json_object_new_object();
json_object_object_add(point24, "address", json_object_new_string("7315 ST ANDREWS WOODS CIRCLE UNIT 104, Louisville, KY, 40214"));
json_object_object_add(point24, "lng", json_object_new_double(-85.802867));
json_object_object_add(point24, "lat", json_object_new_double(38.151072));
json_object_object_add(point24, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point24, "time", json_object_new_int(300));
json_object_object_add(point24, "time_window_start", json_object_new_int(73177));
json_object_object_add(point24, "time_window_end", json_object_new_int(75231));
json_object* point25 = json_object_new_object();
json_object_object_add(point25, "address", json_object_new_string("3210 POPLAR VIEW DR, Louisville, KY, 40216"));
json_object_object_add(point25, "lng", json_object_new_double(-85.849937));
json_object_object_add(point25, "lat", json_object_new_double(38.182594));
json_object_object_add(point25, "is_depot", json_object_new_boolean(FALSE));
json_object_object_add(point25, "time", json_object_new_int(300));
json_object_object_add(point25, "time_window_start", json_object_new_int(75231));
json_object_object_add(point25, "time_window_end", json_object_new_int(77663 ));
json_object* addrs = json_object_new_array();
ADD_ADDRESS(1);
ADD_ADDRESS(2);
ADD_ADDRESS(3);
ADD_ADDRESS(4);
ADD_ADDRESS(5);
ADD_ADDRESS(6);
ADD_ADDRESS(7);
ADD_ADDRESS(8);
ADD_ADDRESS(9);
ADD_ADDRESS(10);
ADD_ADDRESS(11);
ADD_ADDRESS(12);
ADD_ADDRESS(13);
ADD_ADDRESS(14);
ADD_ADDRESS(15);
ADD_ADDRESS(16);
ADD_ADDRESS(17);
ADD_ADDRESS(18);
ADD_ADDRESS(19);
ADD_ADDRESS(20);
ADD_ADDRESS(21);
ADD_ADDRESS(22);
ADD_ADDRESS(23);
ADD_ADDRESS(24);
ADD_ADDRESS(25);
json_object* params = json_object_new_object();
json_object_object_add(params, "route_name", json_object_new_string("Multiple Depots Multiple Drivers Trip"));
json_object_object_add(params, "algorithm_type", json_object_new_int(TSP));
json_object_object_add(params, "remote_ip", json_object_new_int(0));
json_object_object_add(params, "member_id", json_object_new_int(1));
json_object_object_add(params, "route_time", json_object_new_int(0));
json_object_object_add(params, "route_max_duration", json_object_new_int(86400));
json_object_object_add(params, "optimize", json_object_new_string("Distance"));
json_object_object_add(params, "distance_unit", json_object_new_string("mi"));
json_object_object_add(params, "travel_mode", json_object_new_string("Driving"));
json_object_object_add(params, "store_route", json_object_new_int(1));
json_object_object_add(params, "device_type", json_object_new_string("web"));
json_object_object_add(params, "vehicle_capacity", json_object_new_int(1));
json_object_object_add(params, "vehicle_max_distance_mi", json_object_new_int(10000));
json_object_object_add(params, "directions", json_object_new_int(1));
if (!run_optimization(addrs, params))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimization_problem_id=...
See the sample JSON response of this method.
Add Addresses to Routes
a) Add an address to the specified position
Inserts an address into a route with a specific sequence number.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
addresses | array | A valid JSON array of Address objects. See the Address JSON Schema as a guide. | POST |
optimal_position | boolean | If true, an address will be inserted at the optimal position of a route. | POST |
<job id="Insert Address Into Route Specific Destination">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of inserting an address to a specified position in the route.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
jFile="insert_address_into_route_specific_destination_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
public void AddRouteDestinationInSpecificPositionTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string route_id = tdr.SDRT_route_id;
Assert.IsNotNull(route_id, "route_id is null...");
// Prepare the addresses
#region Addresses
Address[] addresses = new Address[]
{
new Address() { AddressString = "146 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.143526,
Longitude = -83.240354,
SequenceNo = 3,
Time = 0 }
};
#endregion
// Run the query
bool optimalPosition = false;
string errorString;
int[] destinationIds = route4Me.AddRouteDestinations(route_id, addresses, optimalPosition, out errorString);
Assert.IsInstanceOfType(destinationIds, typeof(System.Int32[]), "AddRouteDestinationsTest failed...");
}
Public Sub AddRouteDestinationInSpecificPositionTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim route_id As String = tdr.SDRT_route_id
Assert.IsNotNull(route_id, "route_id is null...")
' Prepare the addresses
Dim addresses As Address() = New Address() {New Address() With { _
.AddressString = "146 Bill Johnson Rd NE Milledgeville GA 31061", _
.Latitude = 33.143526, _
.Longitude = -83.240354, _
.SequenceNo = 3, _
.Time = 0 _
}}
' Run the query
Dim optimalPosition As Boolean = False
Dim errorString As String = ""
Dim destinationIds As Integer() = route4Me.AddRouteDestinations(route_id, addresses, errorString)
Assert.IsInstanceOfType(destinationIds, GetType(System.Int32()), "AddRouteDestinationsTest failed...")
End Sub
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
optimization = r4m.optimization
address = r4m.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Single Driver Round Trip')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
response = r4m.run_optimization()
print 'Current Addresses'
for i, address in enumerate(response.addresses):
print 'Number {}:'.format(i)
print '\taddress: {}'.format(address.address)
print '\t'
addresses = {'addresses': [{'address': '555 W 57th St New York, NY 10019',
'lat': 40.7718005,
'lng': -73.9897716,
'alias': 'BMW of Manhattan',
'time': 0
},
{'address': '57 W 57th St New York, NY 10019',
'lat': 40.7558695,
'lng': -73.9862019,
'alias': 'Verizon Wireless',
'time': 0
}]
}
route_id = response.addresses[1].route_id
print 'Inserting addresses in Route: {}'.format(route_id)
response = r4m.address.insert_address_into_route(addresses, route_id)
print 'Addresses after insert'
for i, address in enumerate(response.addresses):
print 'Number {}:'.format(i)
print '\taddress: {}'.format(address.address)
print '\t'
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addresses;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class AddAddressToRoute {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<Route> routes = manager.getRoutes(new RoutesRequest().setLimit(10));
Route route = manager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
DataObject obj = manager.addAddressesToRoute(routes.get(1).getId(), route.getAddresses());
System.out.println(obj);
} catch (APIException e) {
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of inserting an address to a specified position in the route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Insert the address into the route's optimal position
$addresses = array();
$params = array(
"route_id" => $routeId,
"addresses" => array(
"0" => array(
"address" => "Cabo Rojo, Cabo Rojo 00623, Puerto Rico",
"alias" => "",
"lat" => 18.086627,
"lng" => -67.145735,
"curbside_lat" => 18.086627,
"curbside_lng" => -67.145735,
"is_departed" => false,
"is_visited" => false,
"sequence_no" => 3
)
),
"optimal_position" => false
);
$route1 = new Route();
$result = $route1->insertAddressOptimalPosition($params);
assert(!is_null($result), "Can't insert a destination into the route");
echo " Route ID -> $routeId <br><br>";
assert(isset($result->addresses), "Can't insert a destination into the route");
foreach ($result->addresses as $address) {
echo "Address -> ".$address->address, ", Sequence number -> ".$address->sequence_no."<br>";
}
package AddRouteDestinations;
use strict;
use warnings FATAL => 'all';
use Data::Dumper;
sub AddRouteDestinations {
my ( $self, $routeId) = @_;
my $route4Me = Route4MeManager->new(ExamplesInfrastructure->ApiKey);
my $addresses = [
Address->new(address => "146 Bill Johnson Rd NE Milledgeville GA 31061", lat => 33.143526, lng => -83.240354, time => 0, curbside_lat => undef, curbside_lng => undef),
Address->new(address => "222 Blake Cir Milledgeville GA 31061", lat => 33.177852, lng => -83.263535, time => 0, curbside_lat => undef, curbside_lng => undef)
];
my $errors;
my @destinationIds = $route4Me->addRouteDestinations($routeId, $addresses, \$errors);
if (@destinationIds) {
print "AddRouteDestinations executed successfully";
print "\n";
printf ( "Destination IDs: %s", join( ", ", @destinationIds ) );
print "\n";
print "\n";
} else {
printf ( "AddRouteDestinations error: %s", $errors);
print "\n";
print "\n";
}
return @destinationIds;
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
:: The example demonstrates the process of inserting an address to a specified position in the route.
ECHO ON
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@insert_address_into_route_specific_destination_data.json" "%url%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
# The example demonstrates the process of inserting an address to a specified position in the route.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@insert_address_into_route_specific_destination_data.json" "$url?route_id=$routeid&api_key=$apikey"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
addresses := []routing.Address{
// address to be added
routing.Address{
AddressString: "717 5th Ave New York, NY 10021",
Alias: "Giorgio Armani",
Latitude: 40.7669692,
Longitude: -73.9693864,
Time: 0,
},
}
do, err = service.AddRouteDestinations("route-id", addresses)
if err != nil {
// handle errors
return
}
// do is DataObject
}
unit AddRouteDestinationsUnit;
interface
uses SysUtils, BaseOptimizationExampleUnit;
type
TAddRouteDestinations = class(TBaseOptimizationExample)
public
function Execute(RouteId: String): TArray<integer>;
end;
implementation
uses
AddressUnit, CommonTypesUnit;
function TAddRouteDestinations.Execute(RouteId: String): TArray<integer>;
var
Addresses: TAddressesArray;
OptimalPosition: boolean;
ErrorString: String;
AddressIds: TStringArray;
i: integer;
begin
SetLength(Addresses, 1);
try
Addresses[0] := TAddress.Create(
'146 Bill Johnson Rd NE Milledgeville GA 31061',
33.143526, -83.240354, 0);
Addresses[0].SequenceNo := 4;
OptimalPosition := False;
Result := Route4MeManager.Route.AddAddresses(
RouteId, Addresses, OptimalPosition, ErrorString);
WriteLn('');
if (Length(Result) > 0) then
begin
WriteLn('AddRouteDestinations executed successfully');
SetLength(AddressIds, Length(Result));
for i := 0 to Length(Result) - 1 do
AddressIds[i] := IntToStr(Result[i]);
WriteLn(Format('Destination IDs: %s', [String.Join(' ', AddressIds)]));
end
else
WriteLn(Format('AddRouteDestinations error: "%s"', [errorString]));
finally
for i := Length(Addresses) - 1 downto 0 do
FreeAndNil(Addresses[i]);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
b) add addresses into optimal positions
Adds an address to a route’s optimal position.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
addresses | array | A valid JSON array of Address objects. See the Address JSON Schema as a guide. | POST |
optimal_position | boolean | If true, an address will be inserted at the optimal position of a route. | POST |
<job id="Insert Address Into Optimal Position">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of inserting an address into a route's optimal position.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
jFile="insert_address_into_route_optimal_position_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
:: The example demonstrates the process of inserting an address into a route's optimal position.
ECHO ON
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@insert_address_into_route_optimal_position_data.json" "%url%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
# The example demonstrates the process of inserting an address into a route's optimal position.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@insert_address_into_route_optimal_position_data.json" "$url?route_id=$routeid&api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public int[] AddRouteDestinations(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Prepare the addresses
Address[] addresses = new Address[]
{
#region Addresses
new Address() { AddressString = "146 Bill Johnson Rd NE Milledgeville GA 31061",
Latitude = 33.143526,
Longitude = -83.240354,
Time = 0 },
new Address() { AddressString = "222 Blake Cir Milledgeville GA 31061",
Latitude = 33.177852,
Longitude = -83.263535,
Time = 0 }
#endregion
};
// Run the query
bool optimalPosition = true;
string errorString;
int[] destinationIds = route4Me.AddRouteDestinations(routeId, addresses, optimalPosition, out errorString);
Console.WriteLine("");
if (destinationIds != null)
{
Console.WriteLine("AddRouteDestinations executed successfully");
Console.WriteLine("Destination IDs: {0}", string.Join(" ", destinationIds));
}
else
{
Console.WriteLine("AddRouteDestinations error: {0}", errorString);
}
return destinationIds;
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Function InsertAddressIntoRouteOptimalPosition(routeId As String) As Integer()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Prepare the addresses
Dim addresses As Address() = New Address() {New Address() With { _
.AddressString = "Cabo Rojo, Cabo Rojo 00623, Puerto Rico", _
.Alias = "", _
.Latitude = 18.086627, _
.Longitude = -67.145735, _
.CurbsideLatitude = 18.086627, _
.CurbsideLongitude = -67.145735, _
.ContactId = Nothing, _
.IsDeparted = False, _
.IsVisited = False
}}
Dim OptimalPosition As Boolean = True
' Run the query
Dim errorString As String = ""
Dim destinationIds As Integer() = route4Me.InsertAddressIntoRouteOptimalPosition(routeId, addresses, OptimalPosition, errorString)
Console.WriteLine("")
If destinationIds IsNot Nothing Then
Console.WriteLine("AddRouteDestinations executed successfully")
Console.WriteLine("Destination IDs: {0}", String.Join(" ", destinationIds))
Else
Console.WriteLine("AddRouteDestinations error: {0}", errorString)
End If
Return destinationIds
End Function
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
data = {"addresses": [{"address": "Cabo Rojo, Cabo Rojo 00623, Puerto Rico",
"alias": "",
"lat": 18.086627,
"lng": -67.145735,
"curbside_lat": 18.086627,
"curbside_lng": -67.145735,
"contact_id": False,
"is_departed": False,
"is_visited": False
}],
"optimal_position": True,
"route_id": response.route_id}
response = route.insert_address_into_route_optimal_position(**data)
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
updated, err := service.UpdateRoute(&routing.Route{
ID: "route-id",
Addresses: []Address{
// addresses to add
},
OptimalPosition: true,
})
if err != nil {
// handle errors
return
}
// do something with the updated route
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of inserting an address into a route's optimal position.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Insert the address into the route's optimal position
$addresses = array();
$params = array(
"route_id" => $routeId,
"addresses" => array(
"0" => array(
"address" => "Cabo Rojo, Cabo Rojo 00623, Puerto Rico",
"alias" => "",
"lat" => 18.086627,
"lng" => -67.145735,
"curbside_lat" => 18.086627,
"curbside_lng" => -67.145735,
"is_departed" => false,
"is_visited" => false
)
),
"optimal_position" => true
);
$route1 = new Route();
$result = $route1->insertAddressOptimalPosition($params);
assert(!is_null($result), "Can't insert a destination into the route");
echo " Route ID -> $routeId <br><br>";
assert(isset($result->addresses), "Can't insert a destination into the route");
foreach ($result->addresses as $address) {
echo "Address -> ".$address->address , ", Sequence number -> ".$address->sequence_no."<br>";
}
unit AddRouteDestinationsOptimallyUnit;
interface
uses SysUtils, BaseOptimizationExampleUnit;
type
TAddRouteDestinationsOptimally = class(TBaseOptimizationExample)
public
function Execute(RouteId: String): TArray<integer>;
end;
implementation
uses
AddressUnit, CommonTypesUnit;
function TAddRouteDestinationsOptimally.Execute(RouteId: String): TArray<integer>;
var
Addresses: TAddressesArray;
OptimalPosition: boolean;
ErrorString: String;
AddressIds: TStringArray;
i: integer;
begin
SetLength(Addresses, 2);
try
Addresses[0] := TAddress.Create(
'146 Bill Johnson Rd NE Milledgeville GA 31061',
33.143526, -83.240354, 0);
Addresses[1] := TAddress.Create(
'222 Blake Cir Milledgeville GA 31061',
33.177852, -83.263535, 0);
OptimalPosition := True;
Result := Route4MeManager.Route.AddAddresses(
RouteId, Addresses, OptimalPosition, ErrorString);
WriteLn('');
if (Length(Result) > 0) then
begin
WriteLn('AddRouteDestinations executed successfully');
SetLength(AddressIds, Length(Result));
for i := 0 to Length(Result) - 1 do
AddressIds[i] := IntToStr(Result[i]);
WriteLn(Format('Destination IDs: %s', [String.Join(' ', AddressIds)]));
end
else
WriteLn(Format('AddRouteDestinations error: "%s"', [errorString]));
finally
for i := Length(Addresses) - 1 downto 0 do
FreeAndNil(Addresses[i]);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_address_to_route.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
Json::Value addr;
inf >> addr;
int ret = route.add_route_destinations(route_id, addr);
if (ret == 0)
cout << "Address added" << endl;
else
cout << "Error adding address" << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
Remove Addresses from Routes
Removes an address from a route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
route_destination_id | integer | Route destination ID |
<job id="RemoveDestinationFromRoute">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
ri="5C15E83A4BE005BCD1537955D28D51D7"
rdi="154456307"
url=url&"?api_key="&apikey
url=url&"&route_id="&ri
url=url&"&route_destination_id="&rdi
jFile=""
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET routedestinationid=160955262
ECHO ON
curl -o file1.txt -g -X DELETE -k "%url%/api.v4/address.php?api_key=%apikey%&route_id=%torouteid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
routedestinationid=160955262
curl -o file1.txt -g -X DELETE -k "$url?api_key=$apikey&route_id=$torouteid&route_destination_id=$routedestinationid"
echo "Finished.."
sleep 15
package com.route4me.sdk.examples.addresses;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Address;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class DeleteAddress {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
Address addr = null;
List<Route> routes = manager.getRoutes(new RoutesRequest().setLimit(64));
for (Route r : routes) {
Route full = manager.getRoute(new RoutesRequest().setId(r.getId()));
if (full.getAddresses().isEmpty()) {
continue;
}
for (Address add : full.getAddresses()) {
if (!add.getDepot()) {
addr = add;
break;
}
}
if (addr == null) {
throw new RuntimeException("Can't find an address for delete operation");
}
}
manager.deleteAddress(addr.getOptimizationProblemId(), addr.getRouteDestinationId());
} catch (APIException e) {
// handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\OptimizationProblem;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route from test routes
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve random route_id");
// Get random destination from selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
echo "route_destination_id = $route_destination_id <br>";
// Remove the destination from the route
$address = new Address();
$address->route_id = $route_id;
$address->route_destination_id = $route_destination_id;
$result = $address->deleteAddress();
var_dump($result);
package RemoveRouteDestination;
use strict;
use warnings FATAL => 'all';
use Data::Dumper;
sub RemoveRouteDestination {
my ( $self, $routeId, $destinationId, $errors ) = @_;
my $route4Me = Route4MeManager->new(ExamplesInfrastructure->ApiKey);
my $errorString = "";
my $deleted = $route4Me->removeRouteDestination($routeId, $destinationId, $errorString);
if ($deleted) {
print "RemoveRouteDestination executed successfully";
print "\n";
printf "Destination ID: %s", $destinationId;
print "\n";
} else {
printf "RemoveRouteDestination error: %s", $errorString;
print "\n";
}
print "\n";
}
1;
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void RemoveRouteDestination(string routeId, int destinationId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool deleted = route4Me.RemoveRouteDestination(routeId, destinationId, out errorString);
Console.WriteLine("");
if (deleted)
{
Console.WriteLine("RemoveRouteDestination executed successfully");
Console.WriteLine("Destination ID: {0}", destinationId);
}
else
{
Console.WriteLine("RemoveRouteDestination error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub RemoveRouteDestination(routeId As String, destinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim deleted As Boolean = route4Me.RemoveRouteDestination(routeId, destinationId, errorString)
Console.WriteLine("")
If deleted Then
Console.WriteLine("RemoveRouteDestination executed successfully")
Console.WriteLine("Destination ID: {0}", destinationId)
Else
Console.WriteLine("RemoveRouteDestination error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
optimization = r4m.optimization
address = r4m.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Single Driver Round Trip')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
response = r4m.run_optimization()
print 'Current Addresses'
for i, address in enumerate(response.addresses):
print 'Number {}:'.format(i)
print '\taddress: {}'.format(address.address)
print '\t'
route_id = response.addresses[1].route_id
route_destination_id = response.addresses[1].route_destination_id
print 'Deleting address {0} from Route: {1}'.format(route_destination_id, route_id)
response = r4m.address.delete_address_from_route(route_id, route_destination_id)
print 'Address ID: {1} deleted: {0}'.format(response.deleted, response.route_destination_id)
if __name__ == '__main__':
main()
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
boolean, err := service.RemoveRouteDestination("route-id", "route-destination-id")
if err != nil {
// handle error
return
}
}
unit RemoveRouteDestinationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TRemoveRouteDestination = class(TBaseExample)
public
procedure Execute(RouteId: String; DestinationId: integer);
end;
implementation
procedure TRemoveRouteDestination.Execute(RouteId: String; DestinationId: integer);
var
ErrorString: String;
Deleted: boolean;
begin
Deleted := Route4MeManager.Route.Remove(RouteId, DestinationId, ErrorString);
WriteLn('');
if (Deleted) then
begin
WriteLn('RemoveRouteDestination executed successfully');
WriteLn(Format('Destination ID: %d', [DestinationId]));
end
else
WriteLn(Format('RemoveRouteDestination error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_address_to_route.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
Json::Value addr;
inf >> addr;
ret = route.remove_address_from_route(route_id, route_destination_id);
if (ret == 0)
cout << "Address removed" << endl;
else
cout << "Error removing address :" << Json::FastWriter().write(route.get_json_resp()) << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"deleted": true,
"route_destination_id": 160955262
}
Get a Route
Get a single route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
notes | integer | If 1, show the route notes |
device_tracking_history | integer | If 1, show the route tracking history |
directions | integer | If 1, show the route directions |
original | integer | If 1, show original route |
order_inventory | integer | If 1, show order inventory |
route_path_output | integer | If 1, show route path |
compress_path_points | boolean | If true, the path points in the response will be compressed. |
<job id="Get Single Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a route.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="3A2DD89E6E1A044B2098AD1313E3138C"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetRoute(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
RouteId = routeId
};
// Run the query
string errorString;
DataObjectRoute dataObject = route4Me.GetRoute(routeParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetRoute executed successfully");
Console.WriteLine("Route ID: {0}", dataObject.RouteID);
Console.WriteLine("State: {0}", dataObject.State);
}
else
{
Console.WriteLine("GetRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetRoute(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObjectRoute = route4Me.GetRoute(routeParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("GetRoute executed successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteID)
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("GetRoute error: {0}", errorString)
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.routes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Address;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
/**
* @author juan
*/
public class GetRoute {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
//fetches complete data
Route r = routeManager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
System.out.println(r);
for (Address address : r.getAddresses()) {
System.out.println("Address: " + address.getAddress() + " Running Distance: " + address.getManifest().get("running_distance"));
}
} catch (APIException e) {
//handle exceptions
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// get a route by ID
$routeResults = (array)$route->getRoutes(array('route_id' => $route_id));
Route4Me::simplePrint($routeResults, true);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
route, err = service.GetRoute(&routing.RouteQuery{ID: route-id})
if err != nil {
// handle errors
return
}
}
package GetRoute;
use strict;
use warnings FATAL => 'all';
sub GetRoute {
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $routeParameters = RouteParametersQuery->new( {
route_id => $routeId
} );
my $errorString = "";
my $dataObject = $route4Me->getRoute( $routeParameters, \$errorString );
print "\n";
if ($dataObject) {
print "GetRoute executed successfully\n";
printf "Route ID: %s\n", $dataObject->route_id;
printf "State: %s\n", OptimizationState->get_optimization_state( $dataObject->state );
} else {
printf "GetRoute error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=C896D0DB99C57B483D9F51B97260DCB5
:: The example demonstrates the process of getting a route.
ECHO ON
curl -o file1.txt -g -k -X GET "%url%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=3A2DD89E6E1A044B2098AD1313E3138C
# The example demonstrates the process of getting a route.
curl -o file1.txt -g -X GET "$url?route_id=$routeid&api_key=$apikey"
echo "Finished..."
sleep 15
unit GetRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRoute = class(TBaseExample)
public
procedure Execute(RouteId: String; GetRouteDirections, GetRoutePathPoints: boolean);
end;
implementation
uses RouteParametersQueryUnit, DataObjectUnit, EnumsUnit;
procedure TGetRoute.Execute(RouteId: String; GetRouteDirections,
GetRoutePathPoints: boolean);
var
ErrorString: String;
Route: TDataObjectRoute;
begin
Route := Route4MeManager.Route.Get(
RouteId, GetRouteDirections, GetRoutePathPoints, ErrorString);
WriteLn('');
try
if (Route <> nil) then
begin
WriteLn('GetRoute executed successfully');
WriteLn(Format('Route ID: %s', [Route.RouteId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(Route.State)]]));
if (Length(Route.Directions) > 0) then
WriteLn(Format('Directions: length = %d', [Length(Route.Directions)]));
if (Length(Route.Path) > 0) then
WriteLn(Format('Path: length = %d', [Length(Route.Path)]));
end
else
WriteLn(Format('GetRoute error: "%s"', [ErrorString]));
finally
FreeAndNil(Route);
end;
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Gets a Route info by ID
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "AC16E7D338B551013FF34266FE81A5EE";
int ret = 0;
if(route.get_route_by_id(route_id) == 0)
{
// use Json::StyledWriter instead of Json::FastWriter for a human friendly output
cout << "Route " << route_id << " info by ID:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const routeId = "C896D0DB99C57B483D9F51B97260DCB5"
route4me.Routes.get(routeId, (err, route) => {
debug("error ", err)
debug("result ", route)
// Expectations about result
expect(err).is.null
expect(route).has.property("route_id", "C896D0DB99C57B483D9F51B97260DCB5")
// TODO: remove `done` call from examples
done()
})
})
})
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "AC16E7D338B551013FF34266FE81A5EE";
init(key, 1);
if (!get_route_by_id(route_id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
Get Multiple Routes
a) Get a limited number of routes belonging to a user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
<job id="Get Routes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a limited number of routes from a user's account.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
limit="20"
offset="100"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&limit"&limit
url=url&"&offset"&offset
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetRoutes()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
Limit = 10,
Offset = 5
};
// Run the query
string errorString;
DataObjectRoute[] dataObjects = route4Me.GetRoutes(routeParameters, out errorString);
Console.WriteLine("");
if (dataObjects != null)
{
Console.WriteLine("GetRoutes executed successfully, {0} routes returned", dataObjects.Length);
Console.WriteLine("");
dataObjects.ForEach(dataObject =>
{
Console.WriteLine("RouteID: {0}", dataObject.RouteID);
Console.WriteLine("");
});
}
else
{
Console.WriteLine("GetRoutes error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetRoutes()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.Limit = 10, _
.Offset = 5 _
}
' Run the query
Dim errorString As String = ""
Dim dataObjects As DataObjectRoute() = route4Me.GetRoutes(routeParameters, errorString)
Console.WriteLine("")
If dataObjects IsNot Nothing Then
Console.WriteLine("GetRoutes executed successfully, {0} routes returned", dataObjects.Length)
Console.WriteLine("")
For Each dataobject As DataObjectRoute In dataObjects
Console.WriteLine("RouteID: {0}", dataobject.RouteID)
Console.WriteLine("")
Next
Else
Console.WriteLine("GetRoutes error {0}", errorString)
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
for i, route in enumerate(response):
print 'Route #{}'.format(i+1)
print '\tOptimization Problem ID: {}'.format(route.optimization_problem_id)
print '\tRoute ID: {}'.format(route.route_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.routes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetRoutes {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
for (Route r : routes) {
System.out.println(r);
}
} catch (APIException e) {
// handle exceptions
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$RouteParameters = array(
"limit" => 30,
"offset" => 0
);
$route = new Route();
$routeResults = $route->getRoutes($RouteParameters);
foreach ($routeResults as $routeResult)
{
$results = (array)$routeResult;
Route4Me::simplePrint($results);
echo "<br>";
}
package routing
import (
"math/rand"
"reflect"
"strconv"
"testing"
"time"
"github.com/route4me/route4me-go-sdk"
)
var client = route4me.NewClient("11111111111111111111111111111111")
var service = &Service{Client: client}
func TestIntegrationGetTeamRoutes(t *testing.T) {
if testing.Short() {
t.Skip("Skipping integration tests in short mode.")
}
_, err := service.GetTeamRoutes(&RouteQuery{Limit: 10, Offset: 5})
if err != nil {
t.Error(err)
return
}
// Lets try and get an array as a single route (shouldn't work)
_, err = service.GetRoute(&RouteQuery{Limit: 10, Offset: 5})
if err == nil {
t.Error("Array unmarshalled into a non-array type. This shouldn't happen.")
}
}
package GetRoutes;
use strict;
use warnings FATAL => 'all';
sub GetRoutes {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $routeParameters = RouteParametersQuery->new( {
limit => 10,
offset => 5
} );
my $errorString = "";
my @dataObject = $route4Me->getRoutes( $routeParameters, \$errorString );
print "\n";
if (@dataObject) {
printf "GetRoutes executed successfully, %s routes returned\n\n", scalar @dataObject;
foreach my $route (@dataObject) {
printf "Route ID: %s\n", $route->route_id;
}
} else {
printf "GetRoutes error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates the process of getting a limited number of routes from a user's account.
ECHO ON
curl -o file1.txt -g -k -X GET "%url%?api_key=%apikey%&limit=20&offset=100"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
limit=20
offset=100
# The example demonstrates the process of getting a limited number of routes from a user's account.
curl -o file1.txt -g -X GET "$url?api_key=$apikey&limit=$limit&offset=$offset"
echo "Finished..."
sleep 15
unit GetRoutesUnit;
interface
uses SysUtils, BaseExampleUnit, DataObjectUnit;
type
TGetRoutes = class(TBaseExample)
public
function Execute: TDataObjectRouteArray;
end;
implementation
uses RouteParametersQueryUnit;
function TGetRoutes.Execute: TDataObjectRouteArray;
var
Parameters: TRouteParametersQuery;
ErrorString: String;
Route: TDataObjectRoute;
i: integer;
begin
Parameters := TRouteParametersQuery.Create();
try
Parameters.Limit := 10;
Parameters.Offset := 5;
Result := Route4MeManager.Route.GetList(Parameters, ErrorString);
WriteLn('');
if (Length(Result) > 0) then
begin
WriteLn(Format('GetRoutes executed successfully, %d routes returned',
[Length(Result)]));
WriteLn('');
for Route in Result do
WriteLn(Format('RouteId: %s', [Route.RouteId]));
end
else
WriteLn(Format('GetRoutes error "%s"', [ErrorString]));
finally
FreeAndNil(Parameters);
end;
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Gets a Route info by ID
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
if(route.get_multiple_routes() == 0)
{
cout << "All routes:" << endl << Json::StyledWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Error: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
if (!get_multiple_routes())
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&offset=...&limit=...
See the sample JSON response of this method.
b) Get the routes scheduled for the specified date range.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
start_date | string | Start date (e.g. 2019-09-18) |
end_date | string | Start date (e.g. 2019-09-18) |
<job id="View Routes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of getting the routes scheduled for the specified date range.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
start_date="2019-08-01"
end_date="2019-08-05"
url=url&"?api_key="&apikey
url=url&"&strat_date="&start_date
url=url&"&limit"&end_date
Set r4m=New Route4Me
r4m.OutputFile="get_routes_from_date_range_RESPONSE.json"
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET "start_date=2019-08-01"
SET "end_date=2019-08-05"
:: The example refers to the process of getting the routes scheduled for the specified date range.
ECHO ON
curl -o get_routes_from_date_range_RESPONSE.json -g -k -X GET "%url%?api_key=%apikey%&start_date=%start_date%&end_date=%end_date%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
start_date="2019-08-01"
end_date="2019-08-05"
# The example refers to the process of getting the routes scheduled for the specified date range.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&start_date=$start_date&end_date=$end_date"
echo "Finished..."
sleep 15
public void GetRoutesFromDateRangeTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
StartDate = "2019-08-01",
EndDate = "2019-08-05"
};
// Run the query
string errorString;
DataObjectRoute[] dataObjects = route4Me.GetRoutes(routeParameters, out errorString);
Assert.IsInstanceOfType(dataObjects, typeof(DataObjectRoute[]), "GetRoutesFromDateRangeTest failed... " + errorString);
}
Public Sub GetRoutesFromDateRangeTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With {
.StartDate = "2019-08-01",
.EndtDate = "2019-08-05"
}
' Run the query
Dim errorString As String = ""
Dim dataObjects As DataObjectRoute() = route4Me.GetRoutes(routeParameters, errorString)
Assert.IsInstanceOfType(dataObjects, GetType(DataObjectRoute()), Convert.ToString("GetRoutesFromDateRangeTest failed... ") & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$RouteParameters = [
'start_date' => '2019-08-01',
'end_date' => '2019-08-05'
];
$route = new Route();
$routeResults = $route->getRoutes($RouteParameters);
foreach ($routeResults as $routeResult) {
$results = (array) $routeResult;
Route4Me::simplePrint($results);
echo '<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&start_date=...&end_date=...
See the sample JSON response of this method.
Search Routes
a) Get path points of a route
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
route_path_output | string | Route path output type |
<job id="Get Route Path Points">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
rpo="Points"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&route_path_output="&rpo
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=4728372005DE97EF9E4205852D690E34
SET rpo=Points
:: The example demonstrates the process of getting a route with path points.
ECHO ON
curl -o file1.txt -g -X GET "%url%?route_id=%routeid%&api_key=%apikey%&route_path_output=%rpo%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=4728372005DE97EF9E4205852D690E34
rpo=Points
# The example demonstrates the process of getting a route with path points.
curl -o file1.txt -g -X POST -H "Content-Type: application/json" -d "@new_route_data.json" "$url?api_key=$apikey&route_id=$routeid&route_path_output=$rpo"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetRoute(string routeId, bool getRouteDirections, bool getRoutePathPoints)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
RouteId = routeId
};
if (getRouteDirections)
{
routeParameters.Directions = true;
}
if (getRoutePathPoints)
{
routeParameters.RoutePathOutput = RoutePathOutput.Points.ToString();
}
// Run the query
string errorString;
DataObjectRoute dataObject = route4Me.GetRoute(routeParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetRoute executed successfully");
Console.WriteLine("Route ID: {0}", dataObject.RouteID);
Console.WriteLine("State: {0}", dataObject.State);
/*foreach (Address a in dataObject.Addresses)
{
Console.WriteLine("addr: {0}, {1}, {2}, {3}, {4}", a.RouteDestinationId, a.Latitude, a.Longitude, a.Alias, a.AddressString);
}*/
if (dataObject.Directions != null)
{
Console.WriteLine("Directions: length = {0}", dataObject.Directions.Length);
}
if (dataObject.Path != null)
{
Console.WriteLine("Path: length = {0}", dataObject.Path.Length);
}
}
else
{
Console.WriteLine("GetRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetRoutePathPoints(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.RoutePathOutput = "Points"
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObjectRoute = route4Me.GetRoute(routeParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("GetRoutePathPoints executed successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteID)
'foreach (Address a in dataObject.Addresses)
' {
' Console.WriteLine("addr: {0}, {1}, {2}, {3}, {4}", a.RouteDestinationId, a.Latitude, a.Longitude, a.Alias, a.AddressString);
' }
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("GetRoutePathPoints error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
data = {"route_path_output": 'Points',
"route_id": response.route_id}
response = route.get_route_path_points(**data)
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
for i, path in enumerate(address.path_to_next):
print '\t{0} - \tlat: {1} \tlng: {2}'.format(i + 1, path.lat, path.lng)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
routes, err := service.GetRoute(&routing.RouteQuery{ID: "routeID", PathOutput: routing.Points})
if err != nil {
// handle errors
return
}
// do something with routes
}
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// Note: not every optimization includes information about path points, only this, which was generated with the parameter route_path_output = "Points"
// Get a route with path points
$params = array(
"route_path_output" => "Points",
"route_id" => $route_id
);
$routeResults = (array)$route->getRoutePoints($params);
if (isset($routeResults['addresses'])) {
foreach ($routeResults['addresses'] as $key => $address) {
$araddress = (array)$address;
if (isset($araddress['route_destination_id'])) echo "route_destination_id=".$araddress['route_destination_id']."<br>";
if (isset($araddress['path_to_next'])) {
echo "path_to_next:<br>";
Route4Me::simplePrint($araddress['path_to_next']);
}
echo "<br>";
}
}
unit GetRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRoute = class(TBaseExample)
public
procedure Execute(RouteId: String; GetRouteDirections, GetRoutePathPoints: boolean);
end;
implementation
uses RouteParametersQueryUnit, DataObjectUnit, EnumsUnit;
procedure TGetRoute.Execute(RouteId: String; GetRouteDirections,
GetRoutePathPoints: boolean);
var
ErrorString: String;
Route: TDataObjectRoute;
begin
Route := Route4MeManager.Route.Get(
RouteId, GetRouteDirections, GetRoutePathPoints, ErrorString);
WriteLn('');
try
if (Route <> nil) then
begin
WriteLn('GetRoute executed successfully');
WriteLn(Format('Route ID: %s', [Route.RouteId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(Route.State)]]));
if (Length(Route.Directions) > 0) then
WriteLn(Format('Directions: length = %d', [Length(Route.Directions)]));
if (Length(Route.Path) > 0) then
WriteLn(Format('Path: length = %d', [Length(Route.Path)]));
end
else
WriteLn(Format('GetRoute error: "%s"', [ErrorString]));
finally
FreeAndNil(Route);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
if (route.get_route_path_points(route_id, "Points")) {
cout << "Route :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Route not found :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "AC16E7D338B551013FF34266FE81A5EE";
init(key, 1);
if (!get_route_path_points(route_id, "Points"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&route_id=...&route_path_output=...
See the sample JSON response of this method.
b) Get the compressed path points of a route
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
route_path_output | string | Route path output type |
compress_path_points | boolean | If true, the path points in the response will be compressed. |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=4728372005DE97EF9E4205852D690E34
SET rpo=Points
SET compress_path_points=true
:: The example demonstrates the process of getting a route with encoded and compressed path points.
:: The path compression used is called the Encoded Polyline Algorithm Format (see link: https://developers.google.com/maps/documentation/utilities/polylinealgorithm).
:: There are interactive decoder polyline utilities on the Internet (see link: https://developers.google.com/maps/documentation/utilities/polylineutility).
ECHO ON
curl -o file1.txt -g -X GET "%url%?route_id=%routeid%&api_key=%apikey%&route_path_output=%rpo%&compress_path_points=%compress_path_points%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=4728372005DE97EF9E4205852D690E34
rpo=Points
compress_path_points=true
# The example demonstrates the process of getting a route with encoded and compressed path points.
# The path compression used is called the Encoded Polyline Algorithm Format (see link: https://developers.google.com/maps/documentation/utilities/polylinealgorithm).
# There are interactive decoder polyline utilities on the Internet (see link: https://developers.google.com/maps/documentation/utilities/polylineutility).
curl -o file1.txt -g -X POST -H "Content-Type: application/json" -d "@new_route_data.json" "$url?api_key=$apikey&route_id=$routeid&route_path_output=$rpo&compress_path_points=$compress_path_points"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// The example demonstrates the process of getting a route with encoded and compressed path points.
// Get a route with the path points
$params = array(
"route_path_output" => "Points",
"compress_path_points" => TRUE,
"route_id" => $route_id
);
$routeResults = (array)$route->getRoutePoints($params);
if (isset($routeResults['addresses'])) {
foreach ($routeResults['addresses'] as $key => $address) {
$araddress = (array)$address;
if (isset($araddress['route_destination_id'])) echo "route_destination_id=".$araddress['route_destination_id']."<br>";
if (isset($araddress['path_to_next'])) {
echo "path_to_next:<br>";
Route4Me::simplePrint((array)$araddress['path_to_next']);
}
echo "<br>";
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...&&compress_path_points=...
See the sample JSON response of this method.
c) Get route directions
Edge by edge turn-by-turn directions. Note: For round-trip routes (parameters.rt = true), the return to the start address is returned as well.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
directions | integer | If equal to 1, returns directions. |
<job id="Get Route Directions">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a route with directions.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
directions="1"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&directions="&directions
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET directions=1
:: The example demonstrates the process of getting a route with directions.
ECHO ON
curl -o file1.txt -g -k -X GET "%url%?route_id=%routeid%&api_key=%apikey%&directions=%directions%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
directions=1
# The example demonstrates the process of getting a route with directions.
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d "@new_route_data.json" "$url?api_key=$apikey&route_id=$routeid&directions=$directions"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetRoute(string routeId, bool getRouteDirections, bool getRoutePathPoints)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
RouteId = routeId
};
if (getRouteDirections)
{
routeParameters.Directions = true;
}
if (getRoutePathPoints)
{
routeParameters.RoutePathOutput = RoutePathOutput.Points.ToString();
}
// Run the query
string errorString;
DataObjectRoute dataObject = route4Me.GetRoute(routeParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetRoute executed successfully");
Console.WriteLine("Route ID: {0}", dataObject.RouteID);
Console.WriteLine("State: {0}", dataObject.State);
/*foreach (Address a in dataObject.Addresses)
{
Console.WriteLine("addr: {0}, {1}, {2}, {3}, {4}", a.RouteDestinationId, a.Latitude, a.Longitude, a.Alias, a.AddressString);
}*/
if (dataObject.Directions != null)
{
Console.WriteLine("Directions: length = {0}", dataObject.Directions.Length);
}
if (dataObject.Path != null)
{
Console.WriteLine("Path: length = {0}", dataObject.Path.Length);
}
}
else
{
Console.WriteLine("GetRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetRouteDirections(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.Directions = True
}
' Run the query
Dim errorString As String = ""
Dim routeResponse As RouteResponse = route4Me.GetRouteDirections(routeParameters, errorString)
Console.WriteLine("")
If routeResponse IsNot Nothing Then
Console.WriteLine("GetRouteDirections executed successfully")
Console.WriteLine("Route ID: {0}", routeResponse.RouteID)
Console.WriteLine("Total directions: {0}", routeResponse.Directions.Count())
Else
Console.WriteLine("GetRouteDirections error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
data = {"directions": 1,
"route_id": response.route_id}
response = route.get_route_directions(**data)
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, direction in enumerate(response.directions):
print 'Direction #{}'.format(i)
print '\tLocation'
print '\t\tTime: {}'.format(direction.location.time)
print '\t\tName: {}'.format(direction.location.name)
print '\t\tStart Location: {}'.format(direction.location.start_location)
print '\t\tEnd Location: {}'.format(direction.location.end_location)
print '\tSteps'
for step in direction.steps:
print '\t\tDirections: {}'.format(step.directions)
print '\t\tDirection: {}'.format(step.direction)
print '\t\tDistance: {}'.format(step.distance)
print '\t\tDistance unit: {}'.format(step.distance_unit)
print '\t\tManeuver Type: {}'.format(step.maneuverType)
print '\t\tCompass Direction: {}'.format(step.compass_direction)
print '\t\tDuration sec: {}'.format(step.duration_sec)
print '\t\tManeuver Point'
print '\t\t\tLat: {}'.format(step.maneuverPoint.lat)
print '\t\t\tLng: {}'.format(step.maneuverPoint.lng)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
}
routes, err := service.GetRoute(&routing.RouteQuery{ID: "routeID", Directions: true})
if err != nil {
// handle errors
return
}
// do something with routes
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// Note: not every optimization includes information about directions, only this, which was generated with the parameter directions = 1
// Get a route with the directions
$params = array(
"directions" => 1,
"route_id" => $route_id
);
$routeResults = (array)$route->getRoutePoints($params);
Route4Me::simplePrint($routeResults, true);
unit GetRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRoute = class(TBaseExample)
public
procedure Execute(RouteId: String; GetRouteDirections, GetRoutePathPoints: boolean);
end;
implementation
uses RouteParametersQueryUnit, DataObjectUnit, EnumsUnit;
procedure TGetRoute.Execute(RouteId: String; GetRouteDirections,
GetRoutePathPoints: boolean);
var
ErrorString: String;
Route: TDataObjectRoute;
begin
Route := Route4MeManager.Route.Get(
RouteId, GetRouteDirections, GetRoutePathPoints, ErrorString);
WriteLn('');
try
if (Route <> nil) then
begin
WriteLn('GetRoute executed successfully');
WriteLn(Format('Route ID: %s', [Route.RouteId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(Route.State)]]));
if (Length(Route.Directions) > 0) then
WriteLn(Format('Directions: length = %d', [Length(Route.Directions)]));
if (Length(Route.Path) > 0) then
WriteLn(Format('Path: length = %d', [Length(Route.Path)]));
end
else
WriteLn(Format('GetRoute error: "%s"', [ErrorString]));
finally
FreeAndNil(Route);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
if (route.get_route_directions(route_id, 1)) {
cout << "Route :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Route not found :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "CA902292134DBC134EAF8363426BD247";
init(key, 1);
if (!get_route_directions(route_id, 1))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&route_id=...&directions=...
See the sample JSON response of this method.
d) Search the routes for a specified text
Search for the specified text throughout all routes belonging to the user’s account.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
query | string | The text to search for. |
<job id="Search Routes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of searching for the specified text throughout all routes belonging to the user's account.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
query="Tbilisi"
url=url&"?api_key="&apikey
url=url&"&query="&query
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET query=Tbilisi
:: The example demonstrates the process of searching for the specified text throughout all routes belonging to the user's account.
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?query=%query%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
query=Tbilisi
# The example demonstrates the process of searching for the specified text throughout all routes belonging to the user's account.
curl -o file1.txt -g -k -X GET "$url?query=$query&api_key=$apikey"
echo "Finished.."
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void SearchRoutesForText(string query)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// The example demonstrates the process of searching for the specified text throughout all routes belonging to the user's account.
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
Query = query
};
// Run the query
string errorString;
DataObjectRoute[] dataObjects = route4Me.GetRoutes(routeParameters, out errorString);
Console.WriteLine("");
if (dataObjects != null)
{
Console.WriteLine("SearchRoutesForText executed successfully, {0} routes returned", dataObjects.Length);
Console.WriteLine("");
dataObjects.ForEach(dataObject =>
{
Console.WriteLine("RouteID: {0}", dataObject.RouteID);
Console.WriteLine("");
});
}
else
{
Console.WriteLine("SearchRoutesForText error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchRoutesForText(query As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.Query = query _
}
' Run the query
Dim errorString As String = ""
Dim dataObjects As DataObjectRoute() = route4Me.GetRoutes(routeParameters, errorString)
Console.WriteLine("")
If dataObjects IsNot Nothing Then
Console.WriteLine("SearchRoutesForText executed successfully, {0} routes returned", dataObjects.Length)
Console.WriteLine("")
For Each dataobject As DataObjectRoute In dataObjects
Console.WriteLine("RouteID: {0}", dataobject.RouteID)
Console.WriteLine("")
Next
Else
Console.WriteLine("SearchRoutesForText error {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
routes, err := service.GetTeamRoutes(&RouteQuery{Query: "Tbilisi"})
if err != nil {
// handle errors
return
}
// do something with routes
}
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example demonstrates the process of searching for the specified text throughout all routes belonging to the user's account.
$RouteParameters = array(
"query" => 'Automated'
);
$route = new Route();
$routeResults = $route->getRoutes($RouteParameters);
foreach ($routeResults as $routeResult)
{
$results = (array)$routeResult;
if (isset($results['route_id'])) echo "Route ID - > " . $results['route_id'] . "<br>";
if (isset($results['parameters']->route_name)) echo "Route name - > ".$results['parameters']->route_name."<br>";
echo "<br>";
}
unit SearchRoutesForSpecifiedTextUnit;
interface
uses SysUtils, BaseExampleUnit, DataObjectUnit;
type
TSearchRoutesForSpecifiedText = class(TBaseExample)
public
function Execute(Text: String): TDataObjectRouteList;
end;
implementation
function TSearchRoutesForSpecifiedText.Execute(Text: String): TDataObjectRouteList;
var
ErrorString: String;
Route: TDataObjectRoute;
begin
Result := Route4MeManager.Route.GetList(Text, ErrorString);
WriteLn('');
if (Result <> nil) and (Result.Count > 0) then
begin
WriteLn(Format('SearchRoutesForSpecifiedText executed successfully, %d routes returned',
[Result.Count]));
WriteLn('');
for Route in Result do
WriteLn(Format('RouteId: %s', [Route.RouteId]));
end
else
WriteLn(Format('SearchRoutesForSpecifiedText error "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
if (route.get_route_query(route_id, "prog")) {
cout << "Route :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Route not found :" << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "CA902292134DBC134EAF8363426BD247";
init(key, 1);
if (!get_route_query(route_id, "prog"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&query=...
See the sample JSON response of this method.
Get an Address from a Route
Get an address with specified route_destination_id
from a route with specified route_id
.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
route_destination_id | integer | Route destination ID |
<job id="MarkAddressAsVisited">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
route_id="5C15E83A4BE005BCD1537955D28D51D7"
rdi="160940135"
url=url&"?api_key="&apikey
url=url&"&route_id="&route_id
url=url&"&route_destination_id="&rdi
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetAddress(string routeId, int routeDestinationId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressParameters addressParameters = new AddressParameters()
{
RouteId = routeId,
RouteDestinationId = routeDestinationId,
Notes = true
};
// Run the query
string errorString;
Address dataObject = route4Me.GetAddress(addressParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetAddress executed successfully");
Console.WriteLine("RouteId: {0}; RouteDestinationId: {1}", dataObject.RouteId, dataObject.RouteDestinationId);
Console.WriteLine("");
}
else
{
Console.WriteLine("GetAddress error: {0}", errorString);
Console.WriteLine("");
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetAddress(routeId As String, routeDestinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressParameters As New AddressParameters() With { _
.RouteId = routeId, _
.RouteDestinationId = routeDestinationId, _
.Notes = True _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As Address = route4Me.GetAddress(addressParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("GetAddress executed successfully")
Console.WriteLine("RouteId: {0}; RouteDestinationId: {1}", dataObject.RouteId, dataObject.RouteDestinationId)
Console.WriteLine("")
Else
Console.WriteLine("GetAddress error: {0}", errorString)
Console.WriteLine("")
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
route_id = response.route_id
route_destination_id = response.addresses[0].route_destination_id
response = route4me.address.get_address(route_id=route_id, route_destination_id=route_destination_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Address: {}'.format(response.address)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addresses;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Address;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetAddress {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<Route> routes = manager.getRoutes(new RoutesRequest().setLimit(10));
Route route = manager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
Address addr = manager.getAddress(route.getId(), route.getAddresses().get(0).getRouteDestinationId());
System.out.println(addr);
} catch (APIException e) {
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get random address ID from selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Get the address by route_destination_id
$address = new Address();
$addressRetrieved = $address->getAddress($routeId, $route_destination_id);
Route4Me::simplePrint((array)$addressRetrieved);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
address, err = service.GetAddress(&routing.AddressQuery{RouteID: "route-id",
RouteDestinationID: "route-destination-id",
Notes: true, // If this is set to true, all notes associated with this address will be returned.
})
if err != nil {
// handle errors
return
}
}
package GetAddress;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::AddressParameters;
sub GetAddress {
my ($self, $routeId, $routeDestinationId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $addressParameters = AddressParameters->new(
route_id => $routeId,
route_destination_id => $routeDestinationId,
notes => 1
);
my $errorString;
my $dataObject = $route4Me->getAddress($addressParameters, $errorString);
print "\n";
if ($dataObject) {
print "GetAddress executed successfully\n";
printf "RouteId: %s; RouteDestinationId: %s\n\n", $dataObject->route_id, $dataObject->route_destination_id;
} else {
printf "GetAddress error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET routedestinationid=160940135
ECHO ON
curl -o file1.txt -k -g -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
routedestinationid=160940135
curl -o file1.txt -k -g -X GET "$url?api_key=$apikey&route_id=$routeid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
unit GetAddressUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAddress = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteDestinationId: integer);
end;
implementation
uses AddressParametersUnit, AddressUnit;
procedure TGetAddress.Execute(RouteId: String; RouteDestinationId: integer);
var
ErrorString: String;
Parameters: TAddressParameters;
Address: TAddress;
begin
Parameters := TAddressParameters.Create();
try
Parameters.RouteId := RouteId;
Parameters.RouteDestinationId := RouteDestinationId;
Parameters.Notes := True;
Address := Route4MeManager.Address.Get(Parameters, ErrorString);
try
WriteLn('');
if (Address <> nil) then
begin
WriteLn('GetAddress executed successfully');
WriteLn(Format('RouteId: %s; RouteDestinationId: %d',
[Address.RouteId.Value, Address.RouteDestinationId.Value]));
end
else
WriteLn(Format('GetAddress error: "%s"', [ErrorString]));
finally
FreeAndNil(Address);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
int ret = route.get_address(route_id, route_destination_id);
if (ret == 0) {
cout << "Route address by ID:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Error reading address: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "CA902292134DBC134EAF8363426BD247";
char route_destination_id[] = "174405709A";
init(key, 1);
if (!get_address(route_id, route_destination_id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
See the sample JSON response of this method.
Manually Resequence a Route
Route resequence
Resequence a single destination of a route.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
route_destination_id | integer | Route destination ID | GET |
addresses | array | A valid JSON array of Address objects. See the Address JSON Schema as a guide. | POST |
<job id="Resequence Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
rdi="160955261"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&route_destination_id="&rdi
jFile="resequence_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=F0C842829D8799067F9BF7A495076335
SET routedestid=174389214
:: The example demonstrates the process of resequencing a specified address inside a route.
ECHO ON
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@resequence_data.json" "%url%?route_id=%routeid%&route_destination_id=%routedestid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
routedestid=160955261
# The example demonstrates the process of resequencing a specified address inside a route.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@resequence_data.json" "$url?route_id=$routeid&route_destination_id=$routedestid&api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void ResequenceRouteDestinations(DataObjectRoute route)
{
if (route.Addresses == null && route.Addresses.Length < 3)
{
Console.WriteLine("ResequenceRouteDestinations error {0}", "route.Addresses == null && route.Addresses.Length < 3. Number of addresses should be >= 3");
return;
}
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Switch 2 addresses after departure address:
AddressesOrderInfo addressesOrderInfo = new AddressesOrderInfo();
addressesOrderInfo.RouteId = route.RouteID;
addressesOrderInfo.Addresses = new AddressInfo[0];
for (int i = 0; i < route.Addresses.Length; i++)
{
Address address = route.Addresses[i];
AddressInfo addressInfo = new AddressInfo();
addressInfo.DestinationId = address.RouteDestinationId.Value;
addressInfo.SequenceNo = i;
if (i == 1)
addressInfo.SequenceNo = 2;
else if (i == 2)
addressInfo.SequenceNo = 1;
addressInfo.IsDepot = (addressInfo.SequenceNo == 0);
List<AddressInfo> addressesList = new List<AddressInfo>(addressesOrderInfo.Addresses);
addressesList.Add(addressInfo);
addressesOrderInfo.Addresses = addressesList.ToArray();
}
// Run the query
string errorString1 = "";
DataObjectRoute route1 = route4Me.GetJsonObjectFromAPI<DataObjectRoute>(addressesOrderInfo,
R4MEInfrastructureSettings.RouteHost,
HttpMethodType.Put,
out errorString1);
// Output the result
PrintExampleOptimizationResult("ResequenceRouteDestinations, switch 2 addresses.", route1, errorString1);
Console.WriteLine("");
}
[DataContract]
private class AddressInfo : GenericParameters
{
[DataMember(Name = "route_destination_id")]
public int DestinationId { get; set; }
[DataMember(Name = "sequence_no")]
public int SequenceNo { get; set; }
[DataMember(Name = "is_depot")]
public bool IsDepot { get; set; }
}
[DataContract]
private class AddressesOrderInfo : GenericParameters
{
[HttpQueryMemberAttribute(Name = "route_id", EmitDefaultValue = false)]
public string RouteId { get; set; }
[DataMember(Name = "addresses")]
public AddressInfo[] Addresses { get; set; }
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Resequence Route Destination
''' </summary>
Public Sub ResequenceRouteDestination(routeId As String, routeDestinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim rParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.RouteDestinationId = routeDestinationId
}
Dim addresses As Address() = New Address() {New Address() With { _
.RouteId = routeId, _
.Latitude = 40.285026, _
.Longitude = -74.333839, _
.SequenceNo = 2
}}
' Run the query
Dim errorString As String = ""
Dim dataObject As RouteResponse = route4Me.ResequenceRouteDestination(rParameters, addresses, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("Route was resequenced successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteID)
' Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("Route resequence error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
route_destination_id = response.addresses[1].route_destination_id
route_destination_id2 = response.addresses[2].route_destination_id
data = {"route_destination_id": route_destination_id,
"route_id": response.route_id,
"addresses": [{"route_destination_id": route_destination_id2,
"sequence_no": 2,
}]
}
response = route.resequence_route(**data)
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
updated, err := service.UpdateRoute(&routing.Route{
ID: "route-id",
Addresses: []Address{
RouteDestinationID: json.Number{`route-destination-id`),
SequenceNo: 2,
},
})
if err != nil {
// handle errors
return
}
// do something with the updated route
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Address;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Select a route with more than 4 addresses.
$routesParams = array(
"offset" => 0,
"limit" => 20
);
$routes = $route->getRoutes($routesParams);
$selectedRoute = null;
foreach ($routes as $route1) {
if (isset($route1->destination_count)) {
if ($route1->destination_count>4) {
$selectedRoute = $route->getRoutes(array('route_id' => $route1->route_id));
break;
}
}
}
assert(!is_null($selectedRoute), "Can't select a route with more than 4 addresses");
// Resequence a route destination
$routeID = $selectedRoute->route_id;
$routeDestinationID = $selectedRoute->addresses[2]->route_destination_id;
echo "Route ID-> $routeID, Route destination ID -> $routeDestinationID <br>";
$params = array(
"route_id" => $routeID,
"route_destination_id" => $routeDestinationID,
"addresses" => array(
"0" => array(
"route_destination_id" => $routeDestinationID,
"sequence_no" => 3
)
)
);
$response = $route->resequenceRoute($params);
foreach ($response['addresses'] as $address) {
Route4Me::simplePrint($address);
echo "<br>";
}
unit ResequenceRouteDestinationsUnit;
interface
uses SysUtils, BaseOptimizationExampleUnit, DataObjectUnit;
type
TResequenceRouteDestinations = class(TBaseOptimizationExample)
public
procedure Execute(Route: TDataObjectRoute);
end;
implementation
uses
AddressUnit, AddressesOrderInfoUnit;
procedure TResequenceRouteDestinations.Execute(Route: TDataObjectRoute);
var
AddressesOrderInfo: TAddressesOrderInfo;
Address: TAddress;
AddressInfo: TAddressInfo;
i: integer;
SequenceNo: integer;
ErrorString: String;
NewRoute: TDataObjectRoute;
begin
if (Length(Route.Addresses) < 3) then
begin
WriteLn(Format('ResequenceRouteDestinations error: "%s"',
['Route.Addresses.Length < 3. Number of addresses should be >= 3']));
Exit;
end;
// Switch 2 addresses after departure address:
AddressesOrderInfo := TAddressesOrderInfo.Create(Route.RouteID);
try
for i := 0 to Length(Route.Addresses) - 1 do
begin
Address := Route.Addresses[i];
SequenceNo := i;
if (i = 1) then
SequenceNo := 2
else
if (i = 2) then
SequenceNo := 1;
AddressInfo := TAddressInfo.Create;
AddressInfo.DestinationId := Address.RouteDestinationId.Value;
AddressInfo.SequenceNo := SequenceNo;
AddressInfo.IsDepot := (AddressInfo.SequenceNo = 0);
AddressesOrderInfo.AddAddress(AddressInfo);
end;
NewRoute := Route4MeManager.Route.Resequence(AddressesOrderInfo, ErrorString);
try
PrintExampleOptimizationResult(
'ResequenceRouteDestinations, switch 2 addresses.', NewRoute, ErrorString);
WriteLn('');
finally
FreeAndNil(NewRoute);
end;
finally
FreeAndNil(AddressesOrderInfo);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...&route_destination_id=...
See the sample JSON response of this method.
Move a Destination into a Route
Move a destination to another route. This API endpoint will respond with a Boolean status code. This API method allows you to remove one specific address ID from one specific route ID.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
to_route_id | string | Destination route ID | POST |
route_destination_id | integer | A destination ID to be moved. | POST |
after_destination_id | integer | A destination ID in a destination route after which the moved destination will be inserted. | POST |
<job id="Move Destination to Other Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of moving an address into a route after a specified address.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/route/move_route_destination.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="move_destination_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void MoveDestinationToRoute(string toRouteId, int routeDestinationId, int afterDestinationId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool success = route4Me.MoveDestinationToRoute(toRouteId, routeDestinationId, afterDestinationId, out errorString);
Console.WriteLine("");
if (success)
{
Console.WriteLine("MoveDestinationToRoute executed successfully");
Console.WriteLine("Destination {0} moved to Route {1} after Destination {2}", routeDestinationId, toRouteId, afterDestinationId);
}
else
{
Console.WriteLine("MoveDestinationToRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub MoveDestinationToRoute(toRouteId As String, routeDestinationId As Integer, afterDestinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim success As Boolean = route4Me.MoveDestinationToRoute(toRouteId, routeDestinationId, afterDestinationId, errorString)
Console.WriteLine("")
If success Then
Console.WriteLine("MoveDestinationToRoute executed successfully")
Console.WriteLine("Destination {0} moved to Route {1} after Destination {2}", routeDestinationId, toRouteId, afterDestinationId)
Else
Console.WriteLine("MoveDestinationToRoute error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
optimization = r4m.optimization
address = r4m.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Single Driver Round Trip')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
address.add_address(
address='555 W 57th St New York, NY 10019',
lat=40.7718005,
lng=-73.9897716,
alias='BMW of Manhattan',
time=0
)
address.add_address(
address='57 W 57th St New York, NY 10019',
lat=40.7558695,
lng=-73.9862019,
alias='Verizon Wireless',
time=0
)
new_sequence = [8, 5, 1, 7, 2, 6, 0, 3, 4]
addresses = {'addresses': []}
response = r4m.run_optimization()
print 'Current Addresses'
for i, address in enumerate(response.addresses):
print 'Number {}:'.format(i)
if address.is_depot:
print '\t This is a Depot'
print '\taddress: {}'.format(address.address)
print '\t'
if new_sequence[i] == 0:
addresses['addresses'].append(
{
"route_destination_id": address.route_destination_id,
"is_depot": True
})
else:
addresses['addresses'].append({
"route_destination_id": address.route_destination_id,
"sequence_no": new_sequence[i],
"is_depot": False
})
print 'Moving addresses'
route_id = response.addresses[1].route_id
response = r4m.route.move_addresses_from_route(addresses, route_id)
print 'Addresses after move'
for i, address in enumerate(response.addresses):
print 'Number {}:'.format(i)
if address.is_depot:
print '\t This is a Depot'
print '\taddress: {}'.format(address.address)
print '\t'
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addresses;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class MoveAddresses {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<DataObject> data = manager.getOptimizations(10, 5);
DataObject obj = data.get(0);
List<Route> routes = manager.getRoutes(new RoutesRequest().setLimit(10));
DataObject newObj = manager.moveAddresses(obj, routes.get(2).getId());
System.out.println(newObj);
} catch (APIException e) {
// handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
$grParams = array(
'offset' => 0,
'limit' => 10
);
$routes = $route->getRoutes($grParams);
assert(!is_null($routes), "There are no routes in the account for this example. Please create at least 2 routes first.");
assert(sizeof($routes)>1, "This example requires at least 2 routes. Please, create them first.");
// Get random source route from test routes
$route = new Route();
$route_id0 = $routes[rand(0, sizeof($routes)-1)]->route_id;
echo "<br> From the route -> ".$route_id0 ."<br>";
if (is_null($route_id0)) {
echo "Can't retrieve random route_id! Try again.";
return;
}
// Get random source destination from selected source route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id0);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address.");
echo "Moved destination ID = $route_destination_id <br>";
// Get random destination route from test routes
$to_route_id = $route_id0;
while ($to_route_id==$route_id0) {
$to_route_id = $routes[rand(0, sizeof($routes) - 1)]->route_id;
}
echo "<br> to the route -> ".$to_route_id ."<br>";
if (is_null($to_route_id)) {
echo "Can't retrieve random route_id! Try again.";
return;
}
// Get random destination destination from selected source route above
$addressRand2 = (array)$route->GetRandomAddressFromRoute($to_route_id);
$after_destination_id = $addressRand2['route_destination_id'];
if (is_null($after_destination_id)) {
echo "Can't retrieve random address! Try again.";
return;
}
echo "after_destination_id = $after_destination_id <br>";
// Move the destination to the route
$routeparams = array(
'to_route_id' => $to_route_id,
'route_destination_id' => strval($route_destination_id),
'after_destination_id' => strval($after_destination_id)
);
$address = new Address();
$result = $address->moveDestinationToRoute($routeparams);
var_dump($result);
package MoveDestinationToRoute;
use strict;
use warnings FATAL => 'all';
sub MoveDestinationToRoute {
my ( $self, $toRouteId, $routeDestinationId, $afterDestinationId ) = @_;
my $route4Me = Route4MeManager->new(ExamplesInfrastructure->ApiKey);
my $errorString = "";
my $success = $route4Me->moveDestinationToRoute($toRouteId, $routeDestinationId, $afterDestinationId, $errorString);
if ($success) {
print "MoveDestinationToRoute executed successfully";
print "\n";
printf "Destination %s moved to Route %s after Destination %s", , $routeDestinationId, $toRouteId, $afterDestinationId;
print "\n";
} else {
printf "MoveDestinationToRoute error: %s", $errorString;
print "\n";
}
print "\n";
}
1;
@ECHO OFF
SET url=https://api.route4me.com/actions/route/move_route_destination.php
SET apikey=11111111111111111111111111111111
:: Recipient route ID
SET trid=BAD35EEE32BFF8E20C2077AC53761BC7
:: The destination to be moved
SET rdi=184611093
:: The destination ID in a recipient route, after which will be inserted moving destination.
SET adi=184611074
ECHO ON
:: The example demonstrates the process of moving an address into a route after a specified address.
curl -o file1.txt -g -X POST -k -H "Content-Type: multipart/form-data;" -F "to_route_id=%trid%" -F "route_destination_id=%rdi%" -F "after_destination_id=%adi%" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/route/move_route_destination.php
apikey=11111111111111111111111111111111
# Recipient route ID
trid=BAD35EEE32BFF8E20C2077AC53761BC7
# The destination to be moved
rdi=184611093
# The destination ID in a recipient route, after which will be inserted moving destination.
adi=184611074
# The example demonstrates the process of moving an address into a route after a specified address.
curl -o file1.txt -g -X POST -k -H "Content-Type: multipart/form-data;" -F "to_route_id=$trid" -F "route_destination_id=$rdi" -F "after_destination_id=$adi" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
query := routing.DestinationMoveRequest {
ToRouteID: "route-id",
RouteDestinationID: "route-destination-id",
AfterDestinationID: "after-destination-id",
}
success, err := service.MoveDestinationToRoute(query)
if err != nil {
// handle error
return
}
if !success {
// handle failed attempt
return
}
}
unit MoveDestinationToRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TMoveDestinationToRoute = class(TBaseExample)
public
procedure Execute(ToRouteId: String;
RouteDestinationId, AfterDestinationId: integer);
end;
implementation
procedure TMoveDestinationToRoute.Execute(ToRouteId: String;
RouteDestinationId, AfterDestinationId: integer);
var
ErrorString: String;
Success: boolean;
begin
Success := Route4MeManager.Route.MoveDestinationToRoute(ToRouteId,
RouteDestinationId, AfterDestinationId, ErrorString);
WriteLn('');
if (Success) then
begin
WriteLn('MoveDestinationToRoute executed successfully');
WriteLn(Format(
'Destination %d moved to Route %s after Destination %d',
[RouteDestinationId, ToRouteId, AfterDestinationId]));
end
else
WriteLn(Format('MoveDestinationToRoute error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/actions/route/move_route_destination.php?api_key=...
You can expect this API response:
{
"success":true
}
Remove Routes
Given multiple route IDs, remove all routes at the same time. Limited to a maximum of N routes, where N is 40 characters multiplied by the maximum length of the hosting server’s maximum GET request query string length. The user must be authenticated because deleted routes are bound to the authenticated member ID.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | A comma-separated list of route IDs. |
<job id="Delete Routes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of removing the specified routes.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="270CB108F227AD6E11827FC08EE4E2D7,C340E3F6AF28E20EFAE0FBE51759C338"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
jFile=""
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void DeleteRoutes(string[] routeIds)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
//routeIds = new string[] { "1" };
// Run the query
string errorString;
string[] deletedRouteIds = route4Me.DeleteRoutes(routeIds, out errorString);
Console.WriteLine("");
if (deletedRouteIds != null)
{
Console.WriteLine("DeleteRoutes executed successfully, {0} routes deleted", deletedRouteIds.Length);
Console.WriteLine("");
}
else
{
Console.WriteLine("DeleteRoutes error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub DeleteRoutes(routeIds As String())
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
'routeIds = new string[] { "1" }
' Run the query
Dim errorString As String = ""
Dim deletedRouteIds As String() = route4Me.DeleteRoutes(routeIds, errorString)
Console.WriteLine("")
If deletedRouteIds IsNot Nothing Then
Console.WriteLine("DeleteRoutes executed successfully, {0} routes deleted", deletedRouteIds.Length)
Console.WriteLine("")
Else
Console.WriteLine("DeleteRoutes error {0}", errorString)
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.delete_routes(route_id=[response[0].route_id, ])
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Routes Deleted:'
for i, route in enumerate(response.route_ids):
print '\t{0} - {1}'.format(i+1, route)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.routes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RouteDeletedResponse;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
/**
* @author juan
*/
public class DeleteRoutes {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(3).setOffset(0));
if (routes.size() < 2) {
throw new RuntimeException("Not enough routes");
}
RouteDeletedResponse deleted = routeManager.deleteRoutes(routes.get(0).getId(), routes.get(1).getId());
System.out.println(deleted);
} catch (APIException e) {
//handle exceptions
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get 2 random route IDs
$randomRouteID1 = $route->getRandomRouteId(0, 25);
assert(!is_null($randomRouteID1), "Can't retrieve the first random route ID");
$randomRouteID2 = $route->getRandomRouteId(0, 25);
assert(!is_null($randomRouteID2), "Can't retrieve the second random route ID");
echo "Random route ID 1 -> $randomRouteID1 <br> Random route ID 2 -> $randomRouteID2 <br>";
// Remove selected routes
$route_ids = join(',', array($randomRouteID1, $randomRouteID2));
$result = $route->deleteRoutes($route_ids);
Route4Me::simplePrint($result);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
routes, err = service.DeleteRoutes([]string{"route-id"})
if err != nil {
// handle errors
return
}
}
package DeleteRoutes;
use strict;
use warnings FATAL => 'all';
sub DeleteRoutes {
my ($self, @routeIds) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $errorString = "";
my @deletedRouteIds = $route4Me->deleteRoutes( @routeIds, \$errorString );
print "\n";
if (@deletedRouteIds) {
printf "DeleteRoutes executed successfully, routes deleted: %s\n", scalar @deletedRouteIds;
} else {
printf "DeleteRoutes error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET "routeid=270CB108F227AD6E11827FC08EE4E2D7,C340E3F6AF28E20EFAE0FBE51759C338"
ECHO ON
:: The example demonstrates the process of removing the specified routes.
curl -o file1.txt -g -k -X DELETE "%url%?api_key=%apikey%&route_id=%routeid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid="270CB108F227AD6E11827FC08EE4E2D7,C340E3F6AF28E20EFAE0FBE51759C338"
# The example demonstrates the process of removing the specified routes.
curl -o file1.txt -g -k -X DELETE "$url?api_key=$apikey&route_id=$routeid"
echo "Finished..."
sleep 15
unit DeleteRoutesUnit;
interface
uses SysUtils, BaseExampleUnit, CommonTypesUnit;
type
TDeleteRoutes = class(TBaseExample)
public
procedure Execute(RouteIds: TStringArray);
end;
implementation
procedure TDeleteRoutes.Execute(RouteIds: TStringArray);
var
ErrorString: String;
DeletedRouteIds: TStringArray;
begin
DeletedRouteIds := Route4MeManager.Route.Delete(RouteIds, ErrorString);
WriteLn('');
if (Length(DeletedRouteIds) > 0) then
begin
WriteLn(Format('DeleteRoutes executed successfully, %d routes deleted',
[Length(DeletedRouteIds)]));
WriteLn('');
end
else
WriteLn(Format('DeleteRoutes error "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "AC16E7D338B551013FF34266FE81A5EEXXX";
int ret = 0;
if(route.delete_route(route_id) == 0)
{
// use Json::StyledWriter instead of Json::FastWriter for a human friendly output
cout << "Response of deleted route " << route_id << " is:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Error when deleting route: code = " << route.get_err_code() << ", msg:" << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char route_id[] = "AC16E7D338B551013FF34266FE81A5EEXXX";
if (!delete_route(route_id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
You can expect this API response:
{
"deleted": true,
"route_id": "270CB108F227AD6E11827FC08EE4E2D7,C340E3F6AF28E20EFAE0FBE51759C338",
"route_ids": [
"270CB108F227AD6E11827FC08EE4E2D7",
"C340E3F6AF28E20EFAE0FBE51759C338"
]
}
Merge Routes
The endpoint /actions/merge_routes.php
accepts an array of valid route IDs which exist in the Route4Me database and merges all the route destinations into a single new route. A new route ID is generated, and it is a union of all the routes in the provided list of route IDs. The new route’s destinations are all in the sequence of the route IDs that are being merged. The merged route has all the same metadata and account ownership information as the original routes, however, route notes and visited status flags are not copied into the new route.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_ids | array | An array of Route IDs to be merged. | POST |
<job id="Merge Routes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim FormData
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of merging two routes into one.
url="https://api.route4me.com/actions/merge_routes.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
route_ids="807D38F914B27A7E9B05EDF0E1BE4014,F9165689AEB9818ED61AF3CC1C759AE4"
depot_address="10180 Dyer St, El Paso, TX 79924, USA"
remove_origin="false"
depot_lat="31.9061405"
depot_lng="-106.4033899"
FormData="route_ids=" & route_ids
FormData=FormData & "|depot_address=" & depot_address
FormData=FormData & "|remove_origin=" & remove_origin
FormData=FormData & "|depot_lat=" & depot_lat
FormData=FormData & "|depot_lng=" & depot_lng
Set r4m=New Route4Me
r4m.HttpPostFormRequest url,FormData
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
setlocal enableDelayedExpansion
SET url=https://api.route4me.com/actions/merge_routes.php
SET apikey=11111111111111111111111111111111
SET route_ids=807D38F914B27A7E9B05EDF0E1BE4014,F9165689AEB9818ED61AF3CC1C759AE4
SET "depot_address=10180 Dyer St, El Paso, TX 79924, USA"
SET "remove_origin=false"
SET depot_lat=31.9061405
SET depot_lng=-106.4033899
ECHO ON
:: The example demonstrates the process of merging two routes into one.
curl -o merge_routes_RESPONSE.json -g -k -H "multipart/form-data" -X POST ^
-F "route_ids=%route_ids%" ^
-F "depot_address=%depot_address%" ^
-F "remove_origin=%remove_origin%" ^
-F "depot_lat=%depot_lat%" ^
-F "depot_lng=%depot_lng%" ^
"%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/merge_routes.php
apikey=11111111111111111111111111111111
route_ids="807D38F914B27A7E9B05EDF0E1BE4014,F9165689AEB9818ED61AF3CC1C759AE4"
depot_address="10180 Dyer St, El Paso, TX 79924, USA"
remove_origin=false
depot_lat=31.9061405
depot_lng=-106.4033899
# The example demonstrates the process of merging two routes into one.
curl -o merge_routes_RESPONSE.json -g -k -H "multipart/form-data" -X POST \
-F "route_ids=$route_ids" \
-F "depot_address=$depot_address" \
-F "remove_origin=$remove_origin" \
-F "depot_lat=$depot_lat" \
-F "depot_lng=$depot_lng" \
"$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void MergeRoutes(MergeRoutesQuery mergeRoutesParameters)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool result = route4Me.MergeRoutes(mergeRoutesParameters, out errorString);
Console.WriteLine("");
if (result)
{
Console.WriteLine("MergeRoutes executed successfully, {0} routes merged", mergeRoutesParameters.RouteIds);
Console.WriteLine("");
}
else
{
Console.WriteLine("MergeRoutes error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub MergeRoutes(params As MergeRoutesQuery)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim result As Boolean = route4Me.MergeRoutes(params, errorString)
Console.WriteLine("")
If result Then
Console.WriteLine("MergeRoutes executed successfully")
Else
Console.WriteLine("MergeRoutes error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
route_id1 = response[0].route_id
route_id2 = response[1].route_id
data = {'route_ids': [route_id1, route_id2]}
response = route.merge_routes(**data)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
err := service.MergeRoutes("route-id","route2-id")
if err != nil {
// handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get 2 different random route IDs
$route_id1 = $route->getRandomRouteId(0, 20);
assert(!is_null($route_id1), "Can't retrieve a random route ID");
$route_id2 = $route_id1;
$count = 0;
while ($route_id1==$route_id2) {
$route_id2 = $route->getRandomRouteId(0, 20);
$count++;
if ($count>5) break; // Avoid running into an infinite loop, if there are less than 2 routes.
}
echo "Route ID 1 -> $route_id1 <br> Route ID 2 -> $route_id2 <br>";
// Get the depot address from first route
$addresses = $route->GetAddressesFromRoute($route_id1);
assert(!is_null($addresses), "Can't retrieve the addresses from the route");
$depot = null;
foreach ($addresses as $address) {
if (isset($address->is_depot)) {
if ($address->is_depot==true) {
$depot = $address;
break;
}
}
}
// Merge the selected routes
$params = array(
"route_ids" => $route_id1.",".$route_id2,
"depot_address" => $depot->address,
"remove_origin" => false,
"depot_lat" => $depot->lat,
"depot_lat" => $depot->lng
);
$result = $route->mergeRoutes($params);
var_dump($result);
unit MergeRoutesUnit;
interface
uses SysUtils, BaseExampleUnit, CommonTypesUnit;
type
TMergeRoutes = class(TBaseExample)
public
procedure Execute(RouteIds: TListString);
end;
implementation
procedure TMergeRoutes.Execute(RouteIds: TListString);
var
ErrorString: String;
begin
Route4MeManager.Route.Merge(RouteIds.ToArray, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('MergeRoutes executed successfully');
WriteLn('');
end
else
WriteLn(Format('MergeRoutes error "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
const char* route_ids="075594D31563C05ACCEBCAA77D026B2D,6AF79B603C1B6C5AAC714CDD76687CC6";
const char* depot_address="11921 N Dickinson Dr, Fredericksburg, VA 22407, USA";
MapPoint point;
point.lat = 38.285804;
point.lng=-77.555054;
if(route.merge_routes(route_ids, depot_address, point) == 0)
{
cout << "Routes merged:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to merge routes: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/actions/merge_routes.php?api_key=...
You can expect this API response:
{"status":true}
Duplicate a Route
The duplicated route has all the same metadata and account ownership information as the original route. However, route notes and visited status flags are not copied into the new route. The name of the new route is automatically appended with the string “(Duplicate)” to indicate that the route is a duplicate route. There is currently no special designation inside the database to indicate that a route originated from another route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
duplicate_routes_id | array | An array of the Route IDs |
<job id="Duplicate Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="253FB124F4A53031EBC344B2F1BA466D"
url=url&"?api_key="&apikey
jFile="duplicate_route_data.json"
Set r4m=New Route4Me
r4m.OutputFile="duplicate_route_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Duplicate a route
/// </summary>
/// <param name="routeId">Route ID</param>
public void DuplicateRoute(string routeId = null)
{
// Create the manager with the api key
var route4Me = new Route4MeManager(ActualApiKey);
bool isInnerEample = routeId == null ? true : false;
if (isInnerEample)
{
RunOptimizationSingleDriverRoute10Stops();
OptimizationsToRemove = new List<string>()
{
SD10Stops_optimization_problem_id
};
routeId = SD10Stops_route_id;
}
var routeParameters = new RouteParametersQuery()
{
DuplicateRoutesId = new string[] { routeId }
};
// Run the query
var result = route4Me.DuplicateRoute(routeParameters, out string errorString);
if (((result?.Status ?? false) && (result?.RouteIDs?.Length ?? 0)>0))
{
RoutesToRemove = new List<string>() { result.RouteIDs[0] };
}
Console.WriteLine(
(result?.Status ?? false) && (result?.RouteIDs?.Length ?? 0) > 0
? String.Format(
"DuplicateRoute executed successfully, duplicated route ID: {0}",
result.RouteIDs[0]
)
: String.Format(
"DuplicateRoute error {0}",
errorString
)
);
if (isInnerEample)
{
RemoveTestRoutes();
RemoveTestOptimizations();
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Duplicate a route
''' </summary>
''' <param name="routeId">Route ID</param>
Public Sub DuplicateRoute(ByVal Optional routeId As String = Nothing)
' Create the manager with the api key
Dim route4Me = New Route4MeManager(ActualApiKey)
Dim isInnerEample As Boolean = If(routeId Is Nothing, True, False)
If isInnerEample Then
RunOptimizationSingleDriverRoute10Stops()
OptimizationsToRemove = New List(Of String)() From {
SD10Stops_optimization_problem_id
}
routeId = SD10Stops_route_id
End If
Dim routeParameters = New RouteParametersQuery() With {
.DuplicateRoutesId = New String() {routeId}
}
' Run the query
Dim errorString As String = Nothing
Dim result = route4Me.DuplicateRoute(routeParameters, errorString)
If ((If(result?.Status, False)) AndAlso (If(result?.RouteIDs?.Length, 0)) > 0) Then
RoutesToRemove = New List(Of String)() From {
result.RouteIDs(0)
}
End If
Console.WriteLine(
If(
(If(result?.Status, False)) AndAlso (If(result?.RouteIDs?.Length, 0)) > 0,
String.Format("DuplicateRoute executed successfully, duplicated route ID: {0}", result.RouteIDs(0)),
String.Format("DuplicateRoute error {0}", errorString))
)
If isInnerEample Then
RemoveTestRoutes()
RemoveTestOptimizations()
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
API_KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(API_KEY)
route = route4me.route
response = route.get_routes(limit=1, offset=0)
if isinstance(response, dict) and 'errors' in response.keys():
print('. '.join(response['errors']))
else:
route_id = response[0]['route_id']
print('Route ID: {}'.format(route_id))
response = route.duplicate_route(route_id=route_id)
if isinstance(response, dict) and 'errors' in response.keys():
print('. '.join(response['errors']))
else:
print('Optimization Problem ID: {}'.format(
response['optimization_problem_id']
))
print('Route ID: {}'.format(response['route_id']))
for address in response['addresses']:
print('\t\t\tAddress: {0}'.format(address['address']))
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.routes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
/**
* @author juan
*/
public class DuplicateRoute {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
RoutingManager.DuplicateRouteResponse resp = routeManager.duplicateRoute(routes.get(0).getId());
System.out.println(resp);
} catch (APIException e) {
//handle exceptions
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4Me class
Route4Me::setApiKey(Constants::API_KEY);
$route = new Route();
// Get random route ID
$randomRouteID = $route->getRandomRouteId(0, 25);
assert(!is_null($randomRouteID), "Cannot retrieve a random route ID");
$routeIDs = [$randomRouteID];
// Duplicate the selected route
$routeDuplicate = $route->duplicateRoute($routeIDs);
Route4Me::simplePrint($routeDuplicate);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
duplicated, err := service.DuplicateRoute(`route-id`)
if err != nil {
// handle errors
return
}
}
package DuplicateRoute;
use strict;
use warnings FATAL => 'all';
sub DuplicateRoute {
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $routeParameters = RouteParametersQuery->new({
route_id => $routeId
});
my $errorString = "";
my $duplicatedRouteId = $route4Me->duplicateRoute( $routeParameters, \$errorString );
print "\n";
if ($duplicatedRouteId) {
printf "DuplicateRoute executed successfully, duplicated route ID: %s\n", $duplicatedRouteId;
} else {
printf "DuplicateRoute error: %s\n", $errorString;
}
return $duplicatedRouteId;
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of making duplicate of a route.
ECHO ON
curl -o duplicate_route_RESPONSE.json -g -k -XPOST -d "{\"duplicate_routes_id\": [\"253FB124F4A53031EBC344B2F1BA466D\"]}" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
# The example refers to the process of making duplicate of a route.
curl -o duplicate_route_RESPONSE.json -g -k XPOST -d "{\"duplicate_routes_id\": [\"253FB124F4A53031EBC344B2F1BA466D\"]}" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
unit DuplicateRouteUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TDuplicateRoute = class(TBaseExample)
public
function Execute(RouteId: String): NullableString;
end;
implementation
uses RouteParametersQueryUnit;
function TDuplicateRoute.Execute(RouteId: String): NullableString;
var
ErrorString: String;
Parameters: TRouteParametersQuery;
begin
Parameters := TRouteParametersQuery.Create;
try
Parameters.RouteId := RouteId;
Result := Route4MeManager.Route.Duplicate(Parameters, ErrorString);
WriteLn('');
if (Result.IsNotNull) then
begin
WriteLn(Format('DuplicateRoute executed successfully, duplicated route ID: %s',
[Result.Value]));
WriteLn('');
end
else
WriteLn(Format('DuplicateRoute error "%s"', [ErrorString]));
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
int ret = route.get_address(route_id, route_destination_id);
if (ret == 0) {
cout << "Route address by ID:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
if (route.duplicate_route(route_id, "none") == 0) {
cout << "Duplicated route " << endl;
}
else {
cout << "Duplicating problem for route " << route_id << endl;
}
}
else {
cout << "Error reading address: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
if (!duplicate_route("CA902292134DBC134EAF8363426BD247", "none"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/route.php?api_key=...
You can expect this API response:
{
"status":true,
"route_ids":[ "E5229D257DC3BC84CB6696E98AAEAAE8" ]
}
Share Routes
Share a route via email.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
response_format | string | Response format | GET |
recipient_email | string | Recipient email | POST |
<job id="Share Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' needs an email provider
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/route/share_route.php"
apikey="11111111111111111111111111111111"
routeid="3A2DD89E6E1A044B2098AD1313E3138C"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&response_format=json"
jFile="email_for_route_sharing.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/actions/route/share_route.php
SET apikey=11111111111111111111111111111111
SET routeid=3A2DD89E6E1A044B2098AD1313E3138C
ECHO ON
:: The example demonstrates the process of sharing a route via email.
curl -o file1.txt -g -X POST -k -H "Content-Type: multipart/form-data;" -F "[email protected]" "%url%?api_key=%apikey%&route_id=%routeid%&response_format=json"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/route/share_route.php
apikey=11111111111111111111111111111111
routeid=3A2DD89E6E1A044B2098AD1313E3138C
frmt=json
# The example demonstrates the process of sharing a route via email.
curl -o file1.txt -g -X POST -k -H "Content-Type: multipart/form-data;" -F "[email protected]" "$url?api_key=$apikey&route_id=$routeid&response_format=$frmt"
echo "Finished.."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void RouteSharing(string routeId, string Email)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// The example demonstrates the process of sharing a route via email.
// Run the query
RouteParametersQuery parameters = new RouteParametersQuery()
{
RouteId = routeId,
ResponseFormat = "json"
};
string errorString;
bool result = route4Me.RouteSharing(parameters, Email, out errorString);
Console.WriteLine("");
if (result)
{
Console.WriteLine("RouteSharing executed successfully");
}
else
{
Console.WriteLine("RouteSharing error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Sharing a Route with someone by email
''' </summary>
Public Sub RouteSharing(routeId As String, Email As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim rParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.ResponseFormat = "jon"
}
' Run the query
Dim errorString As String = ""
Dim result As Boolean = route4Me.RouteSharing(rParameters, Email, errorString)
Console.WriteLine("")
If result Then
Console.WriteLine("Route Sharing executed successfully")
Else
Console.WriteLine("RouteSharing error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
data = {"recipient_email": "[email protected]",
"route_id": response.route_id,
"response_format": "json"}
response = route.share_route(**data)
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
err := service.ShareRoute("route-id","[email protected]")
if err != nil {
// handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// Share a route with an email
$params = array(
"route_id" => $route_id,
"response_format" => "json",
"recipient_email" => "[email protected]"
);
$result = $route->shareRoute($params);
var_dump($result);
unit ShareRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TShareRoute = class(TBaseExample)
public
procedure Execute(RouteId: String; RecipientEmail: String);
end;
implementation
procedure TShareRoute.Execute(RouteId: String; RecipientEmail: String);
var
ErrorString: String;
begin
Route4MeManager.Route.Share(RouteId, RecipientEmail, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('ShareRoute executed successfully')
else
WriteLn(Format('ShareRoute error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
const char* route_id = "CA902292134DBC134EAF8363426BD247";
const char* email = "[email protected]";
if(route.share_routes(route_id, email) == 0)
{
cout << "Delivered:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const routeId = "3A2DD89E6E1A044B2098AD1313E3138C"
const email = "[email protected]"
route4me.Routes.share(routeId, email, (err, nothing) => {
debug("error ", err)
debug("result ", nothing)
// Expectations about result
expect(err).is.null
expect(nothing).true
// TODO: remove `done` call from examples
done()
})
})
})
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
char route_id[] = "CA902292134DBC134EAF8363426BD247";
char email[] = "[email protected]";
if (!share_routes(route_id, email, "json"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/actions/route/share_route.php?api_key=...&route_id=...&response_format=...
You can expect this API response:
{"status":true}
Update a Route
a) Update a route destination.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
route_destination_id | string | Route destination ID | GET |
alias | string | Address alias | POST |
first_name | string | The first name of the receiving address. | POST |
last_name | string | The last name of the receiving address. | POST |
address | string | Destination address | POST |
address_stop_type | string | The type of stop: “PICKUP”, “DELIVERY”, “BREAK”, “MEETUP” | POST |
is_depot | boolean | If true, the address is a depot. | POST |
lat | number | Latitude | POST |
lng | number | Longitude | POST |
sequence_no | integer | The sequence number for the address. | POST |
is_visited | boolean | If true, the driver pressed the ‘Visited’ button. | POST |
is_departed | boolean | If true, the driver pressed the ‘Departed’ button. | POST |
timestamp_last_visited | integer | The timestamp when the address was last visited. | POST |
timestamp_last_departed | integer | The timestamp when the address was last departed | POST |
customer_po | string | The customer purchase order for the address. | POST |
invoice_no | string | The invoice number for the address. | POST |
reference_no | string | The reference number for the address. | POST |
order_no | string | The order number for the address. | POST |
order_id | integer | Parent order ID. | POST |
weight | number | Weight | POST |
cost | number | The cost of the order for the address. | POST |
revenue | number | The total revenue for the address. | POST |
cube | number | The cubic volume of cargo. | POST |
pieces | integer | Pieces | POST |
string | A valid e-mail address assigned to this stop. | POST | |
phone | string | Customer Phone | POST |
time_window_start | integer | The time window start value, in seconds. | POST |
time_window_end | integer | The time window end value, in seconds. | POST |
time | integer | The service time, in seconds. | POST |
priority | integer | 0 is the highest priority; n has higher priority than n + 1 | POST |
curbside_lat | number | Curbside latitude | POST |
curbside_lng | number | Curbside Longitude | POST |
time_window_start_2 | integer | See time_window_start property |
POST |
time_window_end_2 | integer | See time_window_end property |
POST |
custom_fields | array | Any string array | POST |
<job id="Update Route Destination">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of updating a route destination.
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
routeid="CA902292134DBC134EAF8363426BD247"
routedestinationid="174405640"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&route_destination_id="&routedestinationid
jFile="update_route_destination_data.json"
Set r4m=New Route4Me
r4m.OutputFile="update_route_destination_RESPONSE.json"
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=CA902292134DBC134EAF8363426BD247
SET routedestinationid=174405640
:: The example demonstrates the process of updating a route destination.
ECHO ON
curl -o update_route_destination_RESPONSE.json -g -k -X PUT -H "Content-Type: application/json" -d "@update_route_destination_data.json" "%url%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=CA902292134DBC134EAF8363426BD247
routedestinationid=174405640
# The example demonstrates the process of updating a route destination.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_route_destination_data.json" "$url?api_key=$apikey&route_id=$routeid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void UpdateRouteDestination()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager("11111111111111111111111111111111");
// The example demonstrates the process of updating a route destination.
string routeId = "824CA521E3A8DE9F1C684C8BAE90CF07";
int routeDestionationId = 217393034;
Dictionary<string, string> CustomData = new Dictionary<string, string>();
CustomData.Add("BatchId", "e7c672b1-a356-4a97-803e-97db88fdcf99");
CustomData.Add("CustomerNumber", "2788500");
CustomData.Add("DeliveryId", "2c71f6d9-c1aa-4672-a682-3e9f12badac9");
CustomData.Add("DeliveryInvoices", "<?xml version=\"1.0\" encoding=\"utf-16\"?>\u000d\u000a<!DOCTYPE EXAMPLEDelivery SYSTEM \"EXAMPLEDelivery.dtd\">\u000d\u000a<ArrayOfRouteDeliveryInvoice>\u000d\u000a <RouteDeliveryInvoice>\u000d\u000a <InvoiceNumber>999999</InvoiceNumber>\u000d\u000a <InventoryIds>\u000d\u000a <string>1790908</string>\u000d\u000a </InventoryIds>\u000d\u000a <IsRA>false</IsRA>\u000d\u000a <IsDT>false</IsDT>\u000d\u000a <IsINC>true</IsINC>\u000d\u000a <IsPO>false</IsPO>\u000d\u000a <IsPOPickup>false</IsPOPickup>\u000d\u000a </RouteDeliveryInvoice>\u000d\u000a</ArrayOfRouteDeliveryInvoice>");
CustomData.Add("DeliveryNotes", "");
CustomData.Add("RouteId", "20191");
// Run the query
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
RouteId = routeId
};
string errorString;
DataObjectRoute dataObject = route4Me.GetRoute(routeParameters, out errorString);
foreach (Address oAddress in dataObject.Addresses)
{
if (oAddress.RouteDestinationId == routeDestionationId)
{
RouteParametersQuery routeParams = new RouteParametersQuery()
{
RouteId = routeId,
RouteDestinationId = oAddress.ContactId
};
oAddress.Alias = "Steele's - MONTICELLO";
oAddress.Cost = 5;
oAddress.InvoiceNo = 945825;
// etc fill the necessary address parameters
oAddress.CustomFields = CustomData;
errorString = "";
Address address = route4Me.UpdateRouteDestination(oAddress, out errorString);
Console.WriteLine("");
if (address != null)
{
Console.WriteLine("UpdateRouteDestination executed successfully");
Console.WriteLine("Alias {0}", address.Alias);
Console.WriteLine("Cost {0}", address.Cost);
Console.WriteLine("InvoiceNo {0}", address.InvoiceNo);
foreach (KeyValuePair<string, string> kvpair in address.CustomFields)
{
Console.WriteLine(kvpair.Key + ": " + kvpair.Value);
}
}
else
{
Console.WriteLine("UpdateRouteDestination error {0}", errorString);
}
}
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Imports System.Collections.Generic
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub UpdateRouteDestination()
' Create the manager with the API key
Dim route4Me As New Route4MeManager("11111111111111111111111111111111")
' The example demonstrates the process of updating a route destination.
Dim routeId As String = "824CA521E3A8DE9F1C684C8BAE90CF07"
Dim routeDestionationId As Integer = 217393034
Dim CustomData As New Dictionary(Of String, String)()
CustomData.Add("BatchId", "e7c672b1-a356-4a97-803e-97db88fdcf99")
CustomData.Add("CustomerNumber", "2718500")
CustomData.Add("DeliveryId", "2c71f6d9-c1aa-4672-a682-3e9f12badac9")
CustomData.Add("DeliveryInvoices", "<?xml version=""1.0"" encoding=""utf-16""?>" & vbCr & vbLf & "<!DOCTYPE EXAMPLEDelivery SYSTEM ""EXAMPLEDelivery.dtd"">" & vbCr & vbLf & "<ArrayOfRouteDeliveryInvoice>" & vbCr & vbLf & " <RouteDeliveryInvoice>" & vbCr & vbLf & " <InvoiceNumber>999999</InvoiceNumber>" & vbCr & vbLf & " <InventoryIds>" & vbCr & vbLf & " <string>1790908</string>" & vbCr & vbLf & " </InventoryIds>" & vbCr & vbLf & " <IsRA>false</IsRA>" & vbCr & vbLf & " <IsDT>false</IsDT>" & vbCr & vbLf & " <IsINC>true</IsINC>" & vbCr & vbLf & " <IsPO>false</IsPO>" & vbCr & vbLf & " <IsPOPickup>false</IsPOPickup>" & vbCr & vbLf & " </RouteDeliveryInvoice>" & vbCr & vbLf & "</ArrayOfRouteDeliveryInvoice>")
CustomData.Add("DeliveryNotes", "")
CustomData.Add("RouteId", "20191")
' Run the query
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId _
}
Dim errorString As String = ""
Dim dataObject As DataObjectRoute = route4Me.GetRoute(routeParameters, errorString)
For Each oAddress As Address In dataObject.Addresses
If oAddress.RouteDestinationId = routeDestionationId Then
Dim routeParams As New RouteParametersQuery() With { _
.RouteId = routeId, _
.RouteDestinationId = oAddress.ContactId _
}
oAddress.[Alias] = "Steele's - MONTICELLO"
oAddress.Cost = 5
oAddress.InvoiceNo = 945825
' etc fill the necessary address parameters
oAddress.CustomFields = CustomData
errorString = ""
Dim address As Address = route4Me.UpdateRouteDestination(oAddress, errorString)
Console.WriteLine("")
If address IsNot Nothing Then
Console.WriteLine("UpdateRouteDestination executed successfully")
Console.WriteLine("Alias {0}", address.[Alias])
Console.WriteLine("Cost {0}", address.Cost)
Console.WriteLine("InvoiceNo {0}", address.InvoiceNo)
For Each kvpair As KeyValuePair(Of String, String) In address.CustomFields
Console.WriteLine(kvpair.Key & ": " & kvpair.Value)
Next
Else
Console.WriteLine("UpdateRouteDestination error {0}", errorString)
End If
End If
Next
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.addresses;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Address;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class UpdateAddressAttribute {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager manager = new RoutingManager(apiKey);
try {
List<Route> routes = manager.getRoutes(new RoutesRequest().setLimit(10));
Route route = manager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
Address addr = manager.getAddress(route.getId(), route.getAddresses().get(1).getRouteDestinationId());
addr.setAlias("New Alias");
addr.addCustomField("NOTE 1", "Adding Custom Fields");
Address address = manager.updateAddressAttribute(route.getId(), route.getAddresses().get(0).getRouteDestinationId(), addr);
System.out.println(address);
} catch (APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example demonstrates the process of updating a route destination.
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// Get a random address ID from selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route->route_id = $route_id;
$route->route_destination_id = $addressRand['route_destination_id'];
// Update the route destination
$route->parameters = new \stdClass();
$route->addresses = array(Address::fromArray(array(
"alias" => "new address alias",
"first_name" => "Edi",
"last_name" => "Jacobson",
"address" => "230 Arbor Way Milledgeville GA 31061",
"is_depot" => false,
"lat" => 33.129695892334,
"lng" => -83.24577331543,
"sequence_no" => 9,
"is_visited" => true,
"is_departed" => false,
"timestamp_last_visited" => 36000,
"timestamp_last_departed" => null,
"customer_po" => "po_131324566",
"invoice_no" => "in549874",
"reference_no" => "7988544",
"order_no" => "on654754",
"order_id" => 4564,
"weight" => 45,
"cost" => 55.60,
"revenue" => 75.80,
"cube" => 3,
"pieces" => 30,
"email" => "[email protected]",
"phone" => "111-222-333",
"time_window_start" => 36600,
"time_window_end" => 37200,
"time" => 600,
"priority" => 1,
"curbside_lat" => 33.129695892334,
"curbside_lng" => -83.24577331543,
"time_window_start_2" => 39400,
"time_window_end_2" => 40000
)));
$route->httpheaders = 'Content-type: application/json';
$result = $route->updateAddress();
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"route_destination_id": 174405640,
"alias": "new address alias",
"member_id": 1,
"address": "230 Arbor Way Milledgeville GA 31061",
"is_depot": false,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 33.129695892334,
"lng": -83.24577331543,
"curbside_lat": 33.129695892334,
"curbside_lng": -83.24577331543,
"priority": 1,
"route_id": "CA902292134DBC134EAF8363426BD247",
"original_route_id": null,
"optimization_problem_id": "622D999019C839BD9102D6459D125E23",
"sequence_no": 9,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"order_id": 4564,
"address_stop_type": "DELIVERY",
"is_visited": true,
"timestamp_last_visited": 36000,
"visited_lat": null,
"visited_lng": null,
"is_departed": false,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": null,
"group": null,
"customer_po": "po_131324566",
"invoice_no": "in549874",
"reference_no": "7988544",
"order_no": "on654754",
"weight": 45,
"cost": 55.6,
"revenue": 75.8,
"cube": 3,
"pieces": 30,
"first_name": "Edi",
"last_name": "Jacobson",
"email": "[email protected]",
"phone": "111-222-333",
"destination_note_count": 0,
"drive_time_to_next_destination": 0,
"abnormal_traffic_time_to_next_destination": null,
"uncongested_time_to_next_destination": null,
"traffic_time_to_next_destination": null,
"distance_to_next_destination": 0,
"channel_name": "f8dc104f30ec453b946f08b32a38c931",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": 36600,
"time_window_end": 37200,
"time_window_start_2": 39400,
"time_window_end_2": 40000,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 600,
"tracking_number": "Y31Q1E6X",
"custom_fields": {
"animal": "lion",
"bird": "canary"
},
"custom_fields_str_json": "{\"animal\":\"lion\",\"bird\":\"canary\"}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": []
}
b) Update the custom data of the route destinations.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
route_destination_id | string | Route destination ID | GET |
custom_fields | array | Any string array | POST |
<job id="Update Route Destination Custom Data">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of updating the custom data of a route destination.
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
routedestinationid="160940135"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&route_destination_id="&routedestinationid
jFile="update_route_destination_custom_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=CA902292134DBC134EAF8363426BD247
SET routedestinationid=174405640
:: The example demonstrates the process of updating the custom data of a route destination.
ECHO ON
curl -o file1.txt -g -k -X PUT -H "Content-Type: application/json" -d "@update_route_destination_custom_data.json" "%url%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
routedestinationid=160940135
# The example demonstrates the process of updating the custom data of a route destination.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_route_destination_custom_data.json" "$url?api_key=$apikey&route_id=$routeid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void UpdateRouteCustomData(string routeId, int routeDestionationId, Dictionary<string, string> CustomData)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// The example demonstrates the process of updating the custom data of a route destination.
// Run the query
RouteParametersQuery parameters = new RouteParametersQuery()
{
RouteId = routeId,
RouteDestinationId = routeDestionationId
};
string errorString;
Address result = route4Me.UpdateRouteCustomData(parameters, CustomData, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UpdateRouteCustomData executed successfully");
Console.WriteLine("Route ID: {0}", result.RouteId);
Console.WriteLine("Route Destination ID: {0}", result.RouteDestinationId);
}
else
{
Console.WriteLine("UpdateRouteCustomData error {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
''' <summary>
''' Update Route Custom Data
''' </summary>
Partial Public NotInheritable Class Route4MeExamples
Public Sub UpdateRouteCustomData(routeId As String, routeDestionationId As Integer, CustomData As Dictionary(Of String, String))
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.RouteDestinationId = routeDestionationId
}
' Run the query
Dim errorString As String = ""
Dim dataObject As Address = route4Me.UpdateRouteCustomData(routeParameters, CustomData, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("UpdateRouteCustomData executed successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteId)
Console.WriteLine("Route Destination ID: {0}", dataObject.RouteDestinationId)
Else
Console.WriteLine("UpdateRouteCustomData error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Route ID: {}'.format(response.route_id)
route_destination_id = response.addresses[1].route_destination_id
print 'Route Destination ID: {}'.format(route_destination_id)
data = {"route_destination_id": route_destination_id,
"route_id": response.route_id,
"custom_fields": {"SDK": "Python"}
}
response = route.update_route_destination_custom_data(**data)
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
print '\tAddress: {0}'.format(response.address)
print '\tRoute Destination ID: {0}'.format(response.route_destination_id)
print '\tCustom Fields: {0}'.format(response.custom_fields)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
updated, err := service.UpdateAddress(address)
if err != nil {
// handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example demonstrates the process of updating the custom data of a route destination.
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
// Get a random address ID from selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route->route_id = $route_id;
$route->route_destination_id = $addressRand['route_destination_id'];
// Update destination custom data
$route->parameters = new \stdClass();
$route->parameters->custom_fields = array(
"animal" => "tiger",
"bird" => "canary"
);
$route->httpheaders = 'Content-type: application/json';
$result = $route->updateAddress();
Route4Me::simplePrint($result);
unit UpdateRoutesCustomFieldsUnit;
interface
uses SysUtils, BaseExampleUnit, CommonTypesUnit;
type
TUpdateRoutesCustomFields = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteDestinationId: integer);
end;
implementation
procedure TUpdateRoutesCustomFields.Execute(RouteId: String;
RouteDestinationId: integer);
var
ErrorString: String;
CustomFields: TListStringPair;
begin
CustomFields := TListStringPair.Create;
try
CustomFields.Add(TStringPair.Create('animal', 'lion'));
CustomFields.Add(TStringPair.Create('form', 'rectangle'));
Route4MeManager.Route.UpdateCustomFields(RouteId, RouteDestinationId,
CustomFields, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('UpdateCustomFields executed successfully');
WriteLn(Format('Route ID: %s', [RouteId]));
end
else
WriteLn(Format('UpdateCustomFields error: %s', [ErrorString]));
finally
FreeAndNil(CustomFields);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
ifstream inf("update_route_destination_custom_data.json");
if(!inf.is_open()) {
cout << "Can't find a file with route data" << endl;
return -1;
}
Json::Value input_data;
inf >> input_data;
if (route.update_route(route_id, route_destination_id, input_data) == 0) {
cout << "Route updated:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Error updating route: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
char* data = NULL;
char route_id[] = "CA902292134DBC134EAF8363426BD247";
char dest_id[] = "174405709A";
char file_name[] = "update_route_destination_custom_data.json";
deserialize(file_name, &data);
printf("Data: %s\n", data);
if (!update_route(route_id, dest_id, data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
if (data)
{
free(data);
}
cleanUp();
return 0;
}
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"route_destination_id": 160940135,
"alias": "",
"member_id": 177496,
"address": "Dronning Olgas Vej 26, 2000 Frederiksberg, Denmark",
"is_depot": true,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 55.6884868,
"lng": 12.5366426,
"curbside_lat": 55.6884868,
"curbside_lng": 12.5366426,
"priority": null,
"route_id": "5C15E83ABBBBBBCD1537955D28D51D7",
"original_route_id": "",
"route_name": null,
"optimization_problem_id": null,
"sequence_no": 0,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"address_stop_type": "DELIVERY",
"is_visited": false,
"timestamp_last_visited": null,
"visited_lat": null,
"visited_lng": null,
"is_departed": false,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": null,
"group": null,
"customer_po": null,
"invoice_no": null,
"reference_no": null,
"order_no": null,
"weight": 0,
"cost": 0,
"revenue": 0,
"cube": 0,
"pieces": 0,
"first_name": null,
"last_name": null,
"email": null,
"phone": null,
"destination_note_count": 0,
"drive_time_to_next_destination": 0,
"abnormal_traffic_time_to_next_destination": null,
"uncongested_time_to_next_destination": null,
"traffic_time_to_next_destination": null,
"distance_to_next_destination": 0,
"channel_name": "3f9506ab1bf7607d4f8edbdb53676a1b",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": null,
"time_window_end": null,
"time_window_start_2": null,
"time_window_end_2": null,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 0,
"custom_fields": {
"animal": "lion"
},
"custom_fields_str_json": "{\"animal\":\"lion\"}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": []
}
c) Update a route’s specified parameters.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
input data | Route parameters | A valid JSON object string. See the Route Parameters JSON Schema as a guide. | POST |
<job id="Update Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of updating the parameters of a route.
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
jFile="update_route_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
/// <summary>
/// Update Route Parameters
/// </summary>
public sealed partial class Route4MeExamples
{
public void UpdateRoute(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParameters parametersNew = new RouteParameters()
{
RouteName = "New name of the route"
};
RouteParametersQuery routeParameters = new RouteParametersQuery()
{
RouteId = routeId,
Parameters = parametersNew
};
// Run the query
string errorString;
DataObjectRoute dataObject = route4Me.UpdateRoute(routeParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("UpdateRoute executed successfully");
Console.WriteLine("Route ID: {0}", dataObject.RouteID);
Console.WriteLine("State: {0}", dataObject.State);
}
else
{
Console.WriteLine("UpdateRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
''' <summary>
''' Update Route Parameters
''' </summary>
Partial Public NotInheritable Class Route4MeExamples
Public Sub UpdateRoute(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim parametersNew As New RouteParameters() With { _
.RouteName = "New name of the route" _
}
Dim routeParameters As New RouteParametersQuery() With { _
.RouteId = routeId, _
.Parameters = parametersNew _
}
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObjectRoute = route4Me.UpdateRoute(routeParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("UpdateRoute executed successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteID)
Console.WriteLine("State: {0}", dataObject.State)
Else
Console.WriteLine("UpdateRoute error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
optimization = r4m.optimization
address = r4m.address
optimization.algorithm_type(ALGORITHM_TYPE.TSP)
optimization.share_route(0)
optimization.store_route(0)
optimization.route_time(0)
optimization.route_max_duration(86400)
optimization.vehicle_capacity(1)
optimization.vehicle_max_distance_mi(10000)
optimization.route_name('Single Driver Round Trip')
optimization.optimize(OPTIMIZE.DISTANCE)
optimization.distance_unit(DISTANCE_UNIT.MI)
optimization.device_type(DEVICE_TYPE.WEB)
optimization.travel_mode(TRAVEL_MODE.DRIVING)
address.add_address(
address='754 5th Ave New York, NY 10019',
lat=40.7636197,
lng=-73.9744388,
alias='Bergdorf Goodman',
is_depot=1,
time=0
)
address.add_address(
address='717 5th Ave New York, NY 10022',
lat=40.7669692,
lng=-73.9693864,
alias='Giorgio Armani',
time=0
)
address.add_address(
address='888 Madison Ave New York, NY 10014',
lat=40.7715154,
lng=-73.9669241,
alias='Ralph Lauren Women\'s and Home',
time=0
)
address.add_address(
address='1011 Madison Ave New York, NY 10075',
lat=40.7772129,
lng=-73.9669,
alias='Yigal Azrou\u00ebl',
time=0
)
address.add_address(
address='440 Columbus Ave New York, NY 10024',
lat=40.7808364,
lng=-73.9732729,
alias='Frank Stella Clothier',
time=0
)
address.add_address(
address='324 Columbus Ave #1 New York, NY 10023',
lat=40.7803123,
lng=-73.9793079,
alias='Liana',
time=0
)
address.add_address(
address='110 W End Ave New York, NY 10023',
lat=40.7753077,
lng=-73.9861529,
alias='Toga Bike Shop',
time=0
)
response = r4m.run_optimization()
parameters = {"parameters": {"member_id": 1,
"route_name": "Route name updated"
}
}
route_id = response.addresses[1].route_id
response = r4m.update_route_parameters(parameters, route_id)
print 'Route Name: {}'.format(response.parameters.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.routes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Parameters;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class UpdateRouteParameters {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
// fetches complete data
Route r = routeManager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
Parameters params = r.getParameters();
params.setIp("192168100100");
Route newRoute = routeManager.updateRoute(r);
System.out.println(newRoute);
} catch (APIException e) {
// handle exceptions
e.printStackTrace();
}
}
}
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
route.Field = "updated value"
updated, err := service.UpdateRoute(route)
if err != nil {
// handle errors
return
}
// do something with the updated route
}
package UpdateRoute;
use strict;
use warnings FATAL => 'all';
sub UpdateRoute {
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $parametersNew = RouteParameters->new ({
route_name => "New name of the route"
});
my $routeParameters = RouteParametersQuery->new({
route_id => $routeId,
parameters => $parametersNew
});
my $errorString = "";
my $dataObject = $route4Me->updateRoute( $routeParameters, \$errorString );
print "\n";
if ($dataObject) {
print "UpdateRoute executed successfully\n";
printf "Route ID: %s\n", $dataObject->route_id;
printf "State: %s\n", OptimizationState->get_optimization_state($dataObject->state);
} else {
printf "UpdateRoute error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
ECHO ON
:: The example demonstrates the process of updating the parameters of a route.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_route_data.json" "%url%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
# The example demonstrates the process of updating the parameters of a route.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_route_data.json" "$url?route_id=$routeid&api_key=$apikey"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example demonstrates the process of updating the parameters of a route.
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
$randomRoute = $route->getRoutes(array('route_id' => $route_id));
assert(!is_null($randomRoute), "Can't retrieve a random route ID");
// Update the route parameters
$route->route_id = $route_id;
$route->parameters = new \stdClass();
$route->parameters = array(
"member_id" => $randomRoute->member_id,
"optimize" => "Distance",
"route_max_duration" => "82400",
"route_name" => "updated " . date('m-d-Y')
);
$route->httpheaders = 'Content-type: application/json';
$result = $route->update();
Route4Me::simplePrint((array)$result->parameters);
unit UpdateRouteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TUpdateRoute = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses RouteParametersUnit, RouteParametersQueryUnit, DataObjectUnit, EnumsUnit;
procedure TUpdateRoute.Execute(RouteId: String);
var
RouteParameters: TRouteParametersQuery;
ErrorString: String;
Route: TDataObjectRoute;
begin
RouteParameters := TRouteParametersQuery.Create;
try
RouteParameters.RouteId := RouteId;
RouteParameters.Parameters := TRouteParameters.Create;
TRouteParameters(RouteParameters.Parameters.Value).RouteName := 'New name of the route';
Route := Route4MeManager.Route.Update(RouteParameters, ErrorString);
WriteLn('');
try
if (Route <> nil) then
begin
WriteLn('UpdateRoute executed successfully');
WriteLn(Format('Route ID: %s', [Route.RouteId]));
end
else
WriteLn(Format('UpdateRoute error: %s', [ErrorString]));
finally
FreeAndNil(Route);
end;
finally
FreeAndNil(RouteParameters);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
d) Recompute the route directions
By sending recompute_directions=1
, we request that the route directions be recomputed (note that this does happen automatically if specific properties of the route are updated, such as stop sequence_no changes).
<job id="Recompute Route Directions">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of recomputing route directions.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="79F570D5523C8156955786789DACDEC8"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&recompute_directions=1"
jFile="update_route_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=79F570D5523C8156955786789DACDEC8
ECHO ON
:: The example demonstrates the process of recomputing route directions.
curl -o file1.txt -g -k -X PUT -H "Content-Type: application/json" -d "@recompute_directions_data.json" "%url%?route_id=%routeid%&api_key=%apikey%&recompute_directions=1"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=79F570D5523C8156955786789DACDEC8
# The example demonstrates the process of recomputing route directions.
curl -o file1.txt -g -k -X PUT -H "Content-Type: application/json" -d "@recompute_directions_data.json" "$url?route_id=$routeid&api_key=$apikey&recompute_directions=1"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example demonstrates the process of recomputing route directions.
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve a random route ID");
$randomRoute = $route->getRoutes(array('route_id' => $route_id));
assert(!is_null($randomRoute), "Can't retrieve a random route ID");
// Recompute the route directions
$route->route_id = $route_id;
$route->parameters = new \stdClass();
$route->parameters = array(
"recompute_directions" => 1
);
$route->httpheaders = 'Content-type: application/json';
$result = $route->update();
Route4Me::simplePrint((array)$result->parameters);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...recompute_directions=...
See the sample JSON response of this method.
e) Unlink a route from master optimization
PARAMETERS
Parameter | Type | Description | |
---|---|---|---|
api_key | string | API key of the user | |
route_id | string | Route ID | GET |
unlink_from_master_optimization | boolean | If true, a route is unlinked from master optimization. |
<job id="Unlink Route From Optimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of unlinking a route from master optimization.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="34171F062292E3CBEB163FFE281464A9"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
jFile="unlink_route_data.json"
Set r4m=New Route4Me
r4m.OutputFile="unlink_route_RESPONSE.json"
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=34171F062292E3CBEB163FFE281464A9
ECHO ON
:: The example refers to the process of unlinking a route from master optimization.
curl -o unlink_route_RESPONSE.json -g -k -X PUT -H "Content-Type: application/json" -d "@unlink_route_data.json" "%url%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=34171F062292E3CBEB163FFE281464A9
# The example refers to the process of unlinking a route from master optimization.
curl -o unlink_route_RESPONSE.json -g -k -X PUT -H "Content-Type: application/json" -d "@unlink_route_data.json" "$url?route_id=$routeid&api_key=$apikey"
echo "Finished..."
sleep 15
public void UnlinkRouteFromOptimizationTest()
{
var route4Me = new Route4MeManager(c_ApiKey);
string routeId = tdr.SD10Stops_route_id;
Assert.IsNotNull(routeId, "routeId_SingleDriverRoute10Stops is null.");
var routeDuplicateParameters = new RouteParametersQuery()
{
RouteId = routeId
};
// Run the query
var duplicatedRouteId = route4Me.DuplicateRoute(routeDuplicateParameters, out string errorString);
Assert.IsNotNull(duplicatedRouteId, "Cannot duplicate a route. "+ errorString);
Assert.IsTrue(duplicatedRouteId.Length==32, "Cannot duplicate a route.");
var duplicatedRoute = route4Me.GetRoute(
new RouteParametersQuery() { RouteId = duplicatedRouteId },
out errorString);
Assert.IsNotNull(duplicatedRoute, "Cannot retrieve the duplicated route.");
Assert.IsInstanceOfType(
duplicatedRoute,
typeof(DataObjectRoute),
"Cannot retrieve the duplicated route.");
Assert.IsNotNull(duplicatedRoute.OptimizationProblemId, "Optimization problem ID of the duplicated route is null.");
var routeParameters = new RouteParametersQuery()
{
RouteId = duplicatedRouteId,
UnlinkFromMasterOptimization = true
};
lsOptimizationIDs.Add(duplicatedRoute.OptimizationProblemId);
// Run the query
var unlinkedRoute = route4Me.UpdateRoute(routeParameters, out errorString);
Assert.IsNotNull(unlinkedRoute, "UnlinkRouteFromOptimizationTest failed. " + errorString);
Assert.IsNull(unlinkedRoute.OptimizationProblemId, "Optimization problem ID of the unlinked route is not null.");
}
Public Sub UnlinkRouteFromOptimizationTest()
Dim route4Me = New Route4MeManager(c_ApiKey)
Dim routeId As String = tdr.SD10Stops_route_id
Assert.IsNotNull(routeId, "routeId_SingleDriverRoute10Stops is null.")
Dim routeDuplicateParameters = New RouteParametersQuery() With {
.RouteId = routeId
}
Dim errorString As String = Nothing
Dim duplicatedRouteId = route4Me.DuplicateRoute(routeDuplicateParameters, errorString)
Thread.Sleep(3000)
Assert.IsNotNull(duplicatedRouteId, "Cannot duplicate a route. " & errorString)
Assert.IsTrue(duplicatedRouteId.Length = 32, "Cannot duplicate a route.")
Dim duplicatedRoute = route4Me.GetRoute(New RouteParametersQuery() With {
.RouteId = duplicatedRouteId
}, errorString)
Assert.IsNotNull(duplicatedRoute, "Cannot retrieve the duplicated route.")
Assert.IsInstanceOfType(duplicatedRoute, GetType(DataObjectRoute), "Cannot retrieve the duplicated route.")
Assert.IsNotNull(duplicatedRoute.OptimizationProblemId, "Optimization problem ID of the duplicated route is null.")
Dim routeParameters = New RouteParametersQuery() With {
.RouteId = duplicatedRouteId,
.UnlinkFromMasterOptimization = True
}
lsOptimizationIDs.Add(duplicatedRoute.OptimizationProblemId)
Dim unlinkedRoute = route4Me.UpdateRoute(routeParameters, errorString)
Assert.IsNotNull(unlinkedRoute, "UnlinkRouteFromOptimizationTest failed. " & errorString)
Assert.IsNull(unlinkedRoute.OptimizationProblemId, "Optimization problem ID of the unlinked route is not null.")
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to the process of unlinking a route from master optimization.
$route = new Route();
// Get a random route ID
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Cannot retrieve a random route ID");
// Unlink a route from master destination.
$route->route_id = $route_id;
$route->parameters = new \stdClass();
$route->parameters = [
'unlink_from_master_optimization' => true,
];
$route->httpheaders = 'Content-type: application/json';
$result = $route->update();
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
Get Schedule Calendar
Get the scheduled events from a user’s account.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
date_from_string | string | Start date |
date_to_string | string | End date |
timezone_offset_minutes | integer | Time zone offset in minutes |
orders | boolean | If true, show orders count in the response |
ab | boolean | If true, show address book contacts count in the response |
routes_count | boolean | If true, show routes count in the response |
<job id="Get Schedule Calendar">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting the schedule calendar.
' The example requires an API key with the enterprise subscription.
url="https://api.route4me.com/api/schedule_calendar_data.php"
apikey="11111111111111111111111111111111"
date_from_string="2020-10-20"
date_to_string="2020-11-20"
timezone_offset_minutes=-240
orders=1
ab=1
routes_count=1
url=url&"?api_key="&apikey
url=url&"&date_from_string="&date_from_string
url=url&"&date_to_string="&date_to_string
url=url&"&timezone_offset_minutes="&timezone_offset_minutes
url=url&"&orders="&orders
url=url&"&ab="&ab
url=url&"&routes_count="&routes_count
Set r4m=New Route4Me
r4m.OutputFile="get_schedule_calendar_RESPONSE.json"
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api/schedule_calendar_data.php
SET apikey=11111111111111111111111111111111
SET date_from_string="2020-10-20"
SET date_to_string="2020-11-20"
SET timezone_offset_minutes=-240
SET orders=true
SET ab=true
SET routes_count=true
:: The example refers to the process of getting the schedule calendar.
:: The example requires an API key with the enterprise subscription.
ECHO ON
curl -o get_schedule_calendar_RESPONSE.json -g -k -X GET "%url%?route_id=%routeid%&api_key=%apikey%&date_from_string=%date_from_string%&date_to_string=%date_to_string%&timezone_offset_minutes=%timezone_offset_minutes%&orders=%orders%&ab=%ab%&routes_count=%routes_count%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/schedule_calendar_data.php
apikey=11111111111111111111111111111111
date_from_string="2020-10-20"
date_to_string="2020-11-20"
timezone_offset_minutes=-240
orders=true
ab=true
routes_count=true
# The example refers to the process of getting the schedule calendar.
# The example requires an API key with the enterprise subscription.
curl -o get_schedule_calendar_RESPONSE.json -g -k -X GET "$url?api_key=$apikey&date_from_string=$date_from_string&date_to_string=$date_to_string&timezone_offset_minutes=$timezone_offset_minutes&orders=$orders&ab=$ab&routes_count=$routes_count"
echo "Finished..."
sleep 15
public void GetScheduleCalendarTest()
{
var route4Me = new Route4MeManager(c_ApiKey);
if (!route4Me.MemberHasCommercialCapability(c_ApiKey, ApiKeys.demoApiKey, out string errorString0)) return;
TimeSpan days5 = new TimeSpan(5, 0, 0, 0);
var calendarQuery = new ScheduleCalendarQuery()
{
DateFromString = (DateTime.Now - days5).ToString("yyyy-MM-dd"),
DateToString = (DateTime.Now + days5).ToString("yyyy-MM-dd"),
TimezoneOffsetMinutes = 4*60,
ShowOrders = true,
ShowContacts = true,
RoutesCount = true
};
var scheduleCalendar = route4Me.GetScheduleCalendar(calendarQuery, out string errorString);
Assert.IsNotNull(scheduleCalendar, "The test GetScheduleCalendarTest failed");
Assert.IsNotNull(scheduleCalendar.AddressBook, "The test GetScheduleCalendarTest failed");
Assert.IsNotNull(scheduleCalendar.Orders, "The test GetScheduleCalendarTest failed");
Assert.IsNotNull(scheduleCalendar.RoutesCount, "The test GetScheduleCalendarTest failed");
}
Public Sub GetScheduleCalendarTest()
Dim route4Me = New Route4MeManager(c_ApiKey)
Dim errorString0 As String = Nothing
If Not route4Me.MemberHasCommercialCapability(c_ApiKey, ApiKeys.demoApiKey, errorString0) Then Return
Dim days5 As TimeSpan = New TimeSpan(5, 0, 0, 0)
Dim calendarQuery = New ScheduleCalendarQuery() With {
.DateFromString = (DateTime.Now - days5).ToString("yyyy-MM-dd"),
.DateToString = (DateTime.Now + days5).ToString("yyyy-MM-dd"),
.TimezoneOffsetMinutes = 4 * 60,
.ShowOrders = True,
.ShowContacts = True,
.RoutesCount = True
}
Dim errorString As String = Nothing
Dim scheduleCalendar = route4Me.GetScheduleCalendar(calendarQuery, errorString)
Assert.IsNotNull(scheduleCalendar, "The test GetScheduleCalendarTest failed")
Assert.IsNotNull(scheduleCalendar.AddressBook, "The test GetScheduleCalendarTest failed")
Assert.IsNotNull(scheduleCalendar.Orders, "The test GetScheduleCalendarTest failed")
Assert.IsNotNull(scheduleCalendar.RoutesCount, "The test GetScheduleCalendarTest failed")
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// The example requires an API key with the enterprise subscription.
// Set the api key in the Route4Me class
Route4Me::setApiKey('E60AA4276C4A321FE4AF62D0705D346E');
$now = new \DateTime();
$schedCalendarParams = new ScheduleCalendarParameters();
$schedCalendarParams->date_from_string = $now->add(\DateInterval::createFromDateString('-5 days'))->format('Y-m-d');
$schedCalendarParams->date_to_string = $now->add(\DateInterval::createFromDateString('5 days'))->format('Y-m-d');
$schedCalendarParams->orders = true;
$schedCalendarParams->ab = true;
$schedCalendarParams->routes_count = true;
$scheduleCalendar = $schedCalendarParams->getScheduleCalendar($schedCalendarParams);
Route4Me::simplePrint($scheduleCalendar);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/optimization_problem.php?api_key=...
See the sample JSON response of this method.
Orders
An order is a document to deliver freight to another party, either coming from a consignee, shipper, freight owner, terminal operator, carrier, or warehouseman.
See the Order JSON Schema in our GitHub repository.
Order Properties
Attribute | Type | Description |
---|---|---|
api_key | string | API key of the user |
address_1 | string | Address #1 field |
address_2 | string | Address #2 field |
cached_lat | double | Cached latitude |
cached_lng | double | Cached longitude |
curbside_lat | double | Curbside latitude |
curbside_lng | double | Curbside longitude |
color | string | The order icon’s color on the map. |
address_alias | string | Address alias |
address_city | string | The city the address is located in. |
day_scheduled_for_YYMMDD | string | The date the order was scheduled for. |
local_time_window_start | integer | The start of a time window to service the order. The value must be in Epoch time. |
local_time_window_end | integer | The end of a time window to service the order. The value must be in Epoch time. |
local_time_window_start_2 | integer | The start of another time window to service the order. The value must be in Epoch time. |
local_time_window_end_2 | integer | The end of another time window to service the order. The value must be in Epoch time. |
service_time | integer | The amount of time, in Epoch format, required to service the order. The value can’t be longer or higher than the duration of a given time window’s start and end time. See the local_time_window_start and local_time_window_end attributes for reference. |
EXT_FIELD_first_name | string | The first name of the receiving address. |
EXT_FIELD_last_name | string | The last name of the receiving address. |
EXT_FIELD_email | string | Address email |
EXT_FIELD_phone | string | The phone number for the address. |
EXT_FIELD_custom_data | array | The custom data of the order. |
order_icon | string | The URL to an order icon file. |
Create an Order
Add an order to the user’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of adding an order to the user's account using HTTP POST data.
curl -o file1.txt -k -g -X POST -H "Content-Type: application/json" -d "@add_order_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of adding an order to the user's account using HTTP POST data.
curl -o file1.txt -k -g -X POST -H "Content-Type: application/json" -d "@add_order_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Order
/// </summary>
/// <returns> Added Order </returns>
public Order AddOrder()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
Order order = new Order()
{
Address1 = "Test Address1 " + (new Random()).Next().ToString(),
AddressAlias = "Test AddressAlias " + (new Random()).Next().ToString(),
CachedLatitude = 37.773972,
CachedLongitude = -122.431297
};
// Run the query
string errorString;
Order resultOrder = route4Me.AddOrder(order, out errorString);
Console.WriteLine("");
if (resultOrder != null)
{
Console.WriteLine("AddOrder executed successfully");
Console.WriteLine("Order ID: {0}", resultOrder.OrderId);
return resultOrder;
}
else
{
Console.WriteLine("AddOrder error: {0}", errorString);
return null;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Order
''' </summary>
''' <returns> Added Order </returns>
Public Function AddOrder() As Order
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim order As New Order() With { _
.Address1 = "Test Address1 " + (New Random()).[Next]().ToString(), _
.AddressAlias = "Test AddressAlias " + (New Random()).[Next]().ToString(), _
.CachedLatitude = 37.773972, _
.CachedLongitude = -122.431297 _
}
' Run the query
Dim errorString As String = ""
Dim resultOrder As Order = route4Me.AddOrder(order, errorString)
Console.WriteLine("")
If resultOrder IsNot Nothing Then
Console.WriteLine("AddOrder executed successfully")
Console.WriteLine("Order ID: {0}", resultOrder.OrderId)
Return resultOrder
Else
Console.WriteLine("AddOrder error: {0}", errorString)
Return Nothing
End If
End Function
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
order = route4me.order
url = "http://www.bk.com/restaurants/ny/new-york/106-fulton-st-17871.html"
data = {'address_1': '106 Fulton St, Farmingdale, NY 11735, USA',
'cached_lat': 40.730730,
'cached_lng': -73.459283,
'address_alias': 'BK Restaurant #: 17871',
'EXT_FIELD_phone': '(212) 566-5132',
'day_scheduled_for_YYMMDD': '2016-07-01',
'EXT_FIELD_custom_data': {'url': url
}
}
response = order.create_order(**data)
print 'Member ID:\t{0}'.format(response.get('member_id'))
print 'Order ID:\t{0}'.format(response.get('order_id'))
print 'Order Status ID:\t{0}'.format(response.get('order_status_id'))
print 'In Route Count:\t{0}'.format(response.get('in_route_count'))
print 'Day Added:\t{0}'.format(response.get('day_added_YYMMDD'))
print 'Is Pending:\t{0}'.format(response.get('is_pending'))
print 'Is Accepted:\t{0}'.format(response.get('is_accepted'))
print 'Is Started:\t{0}'.format(response.get('is_started'))
print 'Is Validated:\t{0}'.format(response.get('is_validated'))
print 'Is Completed:\t{0}'.format(response.get('is_completed'))
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrdersManager;
public class AddOrder {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
Order order = new Order();
order.setAddress1("Some address");
order.setCachedLatitude(48.335991);
order.setCachedLongitude(31.18287);
manager.addOrder(order);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
order := &orders.Order{
Address1: "Some address",
CachedLatitude: 48.335991,
CachedLongitude: 31.18287,
}
newOrder, err := service.Add(order)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the creation of a new Order.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"address_1" => "1358 E Luzerne St, Philadelphia, PA 19124, US",
"cached_lat" => 48.335991,
"cached_lng" => 31.18287,
"address_alias" => "Auto test address",
"address_city" => "Philadelphia",
"day_scheduled_for_YYMMDD" => date("Y-m-d"),
"EXT_FIELD_first_name" => "Igor",
"EXT_FIELD_last_name" => "Progman",
"EXT_FIELD_email" => "[email protected]",
"EXT_FIELD_phone" => "380380380380",
"EXT_FIELD_custom_data" => array(
0 => array(
'order_id' => '10',
'name' => 'Bill Soul'
)
)
));
$order = new Order();
$response = $order->addOrder($orderParameters);
Route4Me::simplePrint($response);
<job id="Create New Order">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of creating an order by sending HTTP POST data.
' Note: This method is only allowed for Route4Me Business and higher account types, so you should use a valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="add_order_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit AddOrderUnit;
interface
uses SysUtils, BaseExampleUnit, OrderUnit;
type
TAddOrder = class(TBaseExample)
public
function Execute: TOrder;
end;
implementation
function TAddOrder.Execute: TOrder;
var
ErrorString: String;
Order: TOrder;
begin
Order := TOrder.Create();
try
Order.Address1 := 'Test Address1';
Order.AddressAlias := 'Test AddressAlias';
Order.CachedLatitude := 37.773972;
Order.CachedLongitude := -122.431297;
Result := Route4MeManager.Order.Add(Order, ErrorString);
WriteLn('');
if (Result <> nil) then
begin
WriteLn('AddOrder executed successfully');
WriteLn(Format('Order ID: %s', [Result.OrderId.Value]));
end
else
WriteLn(Format('AddOrder error: "%s"', [ErrorString]));
finally
FreeAndNil(Order);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
ifstream inf("add_order_data.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
Json::Value body;
inf >> body;
int ret = route.add_order(body);
if (ret == 0)
cout << "Order added: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Error adding order: " << Json::FastWriter().write(route.get_json_resp()) << endl;
Json::Value orders;
orders.append("1247");
orders.append("1248");
ret = route.remove_order(1, orders);
if (ret == 0)
cout << "Order removed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Error removing order: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{
"created_timestamp": 1521184759,
"order_id": 27992,
"order_status_id": 0,
"day_added_YYMMDD": "2018-03-16",
"day_scheduled_for_YYMMDD": "2018-05-16",
"address_alias": "Auto test address",
"address_1": "1358 E Luzerne St, Philadelphia, PA 19124, US",
"address_2": "",
"member_id": 1,
"EXT_FIELD_first_name": "Igor",
"EXT_FIELD_last_name": "Progman",
"EXT_FIELD_email": "[email protected]",
"EXT_FIELD_phone": "380380380380",
"address_city": "Philadelphia",
"address_state_id": null,
"address_country_id": "0",
"address_zip": "",
"cached_lat": 48.335991,
"cached_lng": 31.18287,
"curbside_lat": 48.335991,
"curbside_lng": 31.18287,
"EXT_FIELD_custom_data": [{
"order_id": "10",
"name": "Bill Soul"
}],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": null,
"local_timezone_string": null,
"color": null,
"order_icon": null,
"is_validated": false,
"is_pending": true,
"is_accepted": false,
"is_started": false,
"is_completed": false,
"custom_user_fields": []
}
Create an Order With Custom Field
Add an order with a custom user field to the user’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
<job id="Create Order With Custom User Field">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates process of creating an order with a custom user field by sending HTPP POST data.
' Note: this method allowed only for business and higher account types, you should use valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_order_with_custom_field_data.json"
Set r4m=New Route4Me
r4m.outputFile="create_order_with_custom_field_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of creating an order with a custom user field by sending HTPP POST data.
curl -o create_order_with_custom_field_RESPONSE.json -g -k -X POST -H "Content-Type: application/json" -d "@create_order_with_custom_field_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates process of creating an order with a custom user field by sending HTPP POST data.
curl -o create_order_with_custom_field_RESPONSE.json -k -g -X POST -H "Content-Type: application/json" -d "@create_order_with_custom_field_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void CreateOrderWithCustomFieldTest()
{
if (skip == "yes") return;
var route4Me = new Route4MeManager(c_ApiKey);
var orderParams = new Order()
{
address_1 = "1358 E Luzerne St, Philadelphia, PA 19124, US",
cached_lat = 48.335991,
cached_lng = 31.18287,
day_scheduled_for_YYMMDD = "2019-10-11",
address_alias = "Auto test address",
CustomUserFields = new OrderCustomField[]
{
new OrderCustomField()
{
OrderCustomFieldId = 93,
OrderCustomFieldValue = "false"
}
}
};
var result = route4Me.AddOrder(orderParams, out string errorString);
Assert.IsNotNull(result, "AddOrdersToRouteTest failed... " + errorString);
lsOrderIds.Add(result.order_id.ToString());
lsOrders.Add(result);
}
Public Sub CreateOrderWithCustomFieldTest()
If skip = "yes" Then Return
Dim route4Me = New Route4MeManager(c_ApiKey)
Dim orderParams = New Order() With {
.address_1 = "1358 E Luzerne St, Philadelphia, PA 19124, US",
.cached_lat = 48.335991,
.cached_lng = 31.18287,
.day_scheduled_for_YYMMDD = "2019-10-11",
.address_alias = "Auto test address",
.custom_user_fields = New OrderCustomField() {New OrderCustomField() With {
.OrderCustomFieldId = 93,
.OrderCustomFieldValue = "false"
}}
}
Dim errorString As String = Nothing
Dim result = route4Me.AddOrder(orderParams, errorString)
Assert.IsNotNull(result, "AddOrdersToRouteTest failed... " & errorString)
lsOrderiDs.Add(result.order_id.ToString())
lsOrders.Add(result)
End Sub
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates process of creating an order with a custom user field by sending HTPP POST data.
// Set the api key in the Route4me class
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray([
'address_1' => '1358 E Luzerne St, Philadelphia, PA 19124, US',
'cached_lat' => 48.335991,
'cached_lng' => 31.18287,
'day_scheduled_for_YYMMDD' => '2019-10-11',
'address_alias' => 'Auto test address',
'custom_user_fields' => [
OrderCustomField::fromArray([
'order_custom_field_id' => 93,
'order_custom_field_value' => 'false'
])
]
]);
$order = new Order();
$response = $order->addOrder($orderParameters);
Route4Me::simplePrint($response, true);
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"created_timestamp": 1570026062,
"order_id": 65898,
"order_status_id": 0,
"day_added_YYMMDD": "2019-10-02",
"day_scheduled_for_YYMMDD": "2019-10-11",
"address_alias": "Auto test address",
"address_1": "1358 E Luzerne St, Philadelphia, PA 19124, US",
"address_2": "",
"member_id": 1,
"EXT_FIELD_first_name": "",
"EXT_FIELD_last_name": "",
"EXT_FIELD_email": "",
"EXT_FIELD_phone": "",
"address_city": "",
"address_state_id": null,
"address_country_id": "0",
"address_zip": "",
"cached_lat": 48.335991,
"cached_lng": 31.18287,
"curbside_lat": 48.335991,
"curbside_lng": 31.18287,
"EXT_FIELD_custom_data": [],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": null,
"local_timezone_string": null,
"color": null,
"order_icon": null,
"is_validated": false,
"is_pending": true,
"is_accepted": false,
"is_started": false,
"is_completed": false,
"custom_user_fields": [
{
"order_custom_field_id": 93,
"order_custom_field_type": "checkbox",
"order_custom_field_name": "customField_1",
"order_custom_field_label": "customField_1",
"order_custom_field_type_info": {
"short_label": "Val"
},
"order_custom_field_value": "false"
}
]
}
Create a Scheduled Order
Creates an order that is scheduled for a specific date. Assign a correct date value to the day_scheduled_for_YYMMDD
attribute of your Order
object.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of creating scheduled orders with time windows
curl -o add_scheduled_order_RESPONSE_1.json -k -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_order_data_1.json" "%url%?api_key=%apikey%"
START /WAIT curl -o add_scheduled_order_RESPONSE_2.json -k -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_order_data_2.json" "%url%?api_key=%apikey%"
START /WAIT curl -o add_scheduled_order_RESPONSE_3.json -k -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_order_data_3.json" "%url%?api_key=%apikey%"
timeout /t 30
An example for this language will be added in the future. For now, please see the other languages available for reference.
public void AddScheduledOrderTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
Order orderParams = new Order()
{
address_1 = "318 S 39th St, Louisville, KY 40212, USA",
cached_lat = 38.259326,
cached_lng = -85.814979,
curbside_lat = 38.259326,
curbside_lng = -85.814979,
address_alias = "318 S 39th St 40212",
address_city = "Louisville",
EXT_FIELD_first_name = "Lui",
EXT_FIELD_last_name = "Carol",
EXT_FIELD_email = "[email protected]",
EXT_FIELD_phone = "897946541",
EXT_FIELD_custom_data = new Dictionary<string, string>() {{"order_type","scheduled order"}},
day_scheduled_for_YYMMDD = "2017-12-20",
local_time_window_end = 39000,
local_time_window_end_2 = 46200,
local_time_window_start = 37800,
local_time_window_start_2 = 45000,
local_timezone_string = "America/New_York",
order_icon = "emoji/emoji-bank"
};
string errorString = "";
var newOrder = route4Me.AddOrder(orderParams, out errorString);
Assert.IsNotNull(newOrder, "AddScheduledOrdersTest failed... " + errorString);
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"address_1" => "318 S 39th St, Louisville, KY 40212, USA",
"cached_lat" => 38.259326,
"cached_lng" => -85.814979,
"curbside_lat" => 38.259326,
"curbside_lng" => -85.814979,
"address_alias" => "318 S 39th St 40212",
"address_city" => "Louisville",
"EXT_FIELD_first_name" => "Lui",
"EXT_FIELD_last_name" => "Carol",
"EXT_FIELD_email" => "[email protected]",
"EXT_FIELD_phone" => "897946541",
"EXT_FIELD_custom_data" => array("order_type" => "scheduled order"),
"day_scheduled_for_YYMMDD" => date("Y-m-d"),
"local_time_window_end" => 39000,
"local_time_window_end_2" => 46200,
"local_time_window_start" => 37800,
"local_time_window_start_2" => 45000,
"local_timezone_string" => "America/New_York",
"order_icon" => "emoji/emoji-bank"
));
$order = new Order();
$response = $order->addOrder($orderParameters);
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{
"created_timestamp": 1509890857,
"order_id": 24669,
"order_status_id": 0,
"day_added_YYMMDD": "2017-11-05",
"day_scheduled_for_YYMMDD": "2017-12-20",
"address_alias": "318 S 39th St 40212",
"address_1": "318 S 39th St, Louisville, KY 40212, USA",
"address_2": "",
"member_id": 1,
"EXT_FIELD_first_name": "Lui",
"EXT_FIELD_last_name": "Carol",
"EXT_FIELD_email": "[email protected]",
"EXT_FIELD_phone": "897946541",
"address_city": "Louisville",
"address_state_id": null,
"address_country_id": "0",
"address_zip": "",
"cached_lat": 38.259326,
"cached_lng": -85.814979,
"curbside_lat": 38.259326,
"curbside_lng": -85.814979,
"EXT_FIELD_custom_data": [{
"order_type": "scheduled order"
}],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": 37800,
"local_time_window_end": 39000,
"local_time_window_start_2": 45000,
"local_time_window_end_2": 46200,
"service_time": null,
"local_timezone_string": "America\/New_York",
"color": null,
"order_icon": "emoji\/emoji-bank",
"is_validated": false,
"is_pending": true,
"is_accepted": false,
"is_started": false,
"is_completed": false
}
Add an Order to a Route
Insert an existing order into an existing route.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. |
route_id | string | Route ID |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET rdirect=0
SET routeid=CEAA81617489EC7F8972372F6248946D
ECHO ON
:: The example demonstrates the process of adding an order to a route by sending HTTP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@add_order_to_route_data.json" "%url%?api_key=%apikey%&redirect=%rdirect%&route_id=%routeid"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
rdirect=0
optid=E0883C1A2C7B3AAA9397BDDF90C9CFF8
# The example demonstrates the process of adding an order to a route by sending HTTP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@add_order_to_route_data.json" "$url?api_key=$apikey&redirect=$rdirect&route_id=$routeid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Orders to a Route
/// </summary>
/// <returns> Route object </returns>
public void AddOrdersToRoute()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
RouteParametersQuery rQueryParams = new RouteParametersQuery()
{
RouteId = "F0C842829D8799067F9BF7A495076335",
Redirect = false
};
Address[] addresses = new Address[] {
new Address {
AddressString = "273 Canal St, New York, NY 10013, USA",
Latitude = 40.7191558,
Longitude = -74.0011966,
Alias = "",
CurbsideLatitude = 40.7191558,
CurbsideLongitude = -74.0011966
},
new Address {
AddressString = "106 Liberty St, New York, NY 10006, USA",
Alias = "BK Restaurant #: 2446",
Latitude = 40.709637,
Longitude = -74.011912,
CurbsideLatitude = 40.709637,
CurbsideLongitude = -74.011912,
Email = "",
Phone = "(917) 338-1887",
FirstName = "",
LastName = "",
CustomFields = new Dictionary<string, string> { {
"icon",
null
} },
Time = 0,
OrderId = 7205705
},
new Address {
AddressString = "106 Fulton St, Farmingdale, NY 11735, USA",
Alias = "BK Restaurant #: 17871",
Latitude = 40.73073,
Longitude = -73.459283,
CurbsideLatitude = 40.73073,
CurbsideLongitude = -73.459283,
Email = "",
Phone = "(212) 566-5132",
FirstName = "",
LastName = "",
CustomFields = new Dictionary<string, string> { {
"icon",
null
} },
Time = 0,
OrderId = 7205703
}
};
RouteParameters rParams = new RouteParameters()
{
RouteName = "Wednesday 15th of June 2016 07:01 PM (+03:00)",
RouteDate = 1465948800,
RouteTime = 14400,
Optimize = "Time",
RouteType = "single",
AlgorithmType = AlgorithmType.TSP,
RT = false,
LockLast = false,
MemberId = "1",
VehicleId = "",
DisableOptimization = false
};
string errorString;
RouteResponse result = route4Me.AddOrdersToRoute(rQueryParams, addresses, rParams, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("AddOrdersToRoute executed successfully");
Console.WriteLine("Route ID: {0}", result.RouteID);
}
else
{
Console.WriteLine("AddOrdersToRoute error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
''' <summary>
''' Add Orders to a Route
''' </summary>
Partial Public NotInheritable Class Route4MeExamples
Public Sub AddOrdersToRoute(rQueryParams As RouteParametersQuery, addresses As Address(), rParams As RouteParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim dataObject As RouteResponse = route4Me.AddOrdersToRoute(rQueryParams, addresses, rParams, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("UpdateRouteCustomData executed successfully")
Console.WriteLine("Route ID: {0}", dataObject.RouteID)
Else
Console.WriteLine("UpdateRouteCustomData error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
package test
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
order := &orders.Order{
Address1: "Some address",
CachedLatitude: 48.335991,
CachedLongitude: 31.18287,
RouteID: "CEAA81617489EC7F8972372F6248946D",
}
newOrder, err := service.Add(order)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Order;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the adding of an order to a route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeID = $route->getRandomRouteId(0, 10);
assert(!is_null($routeID), "Can't retrieve a random route ID");
// Add an order to a route
$jfile = file_get_contents("add_order_to_route_data.json");
$body = json_decode($jfile);
$orderParameters = Order::fromArray(array(
"route_id" => $routeID,
"redirect" => 0,
"addresses" => $body->addresses
));
$order = new Order();
$response = $order->addOrder2Route($orderParameters);
Route4Me::simplePrint($response, true);
<job id="Add Order To Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of adding an order to a route by sending HTTP PUT data.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
redirect="0"
routeid="CEAA81617489EC7F8972372F6248946D"
url=url&"?api_key="&apikey
url=url&"&redirect="&redirect
url=url&"&route_id="&routeid
jFile="add_order_to_route_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit AddOrderToRouteUnit;
interface
uses SysUtils, BaseExampleUnit, RouteParametersUnit, AddressUnit;
type
TAddOrderToRoute = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteParameters: TRouteParameters;
OrderedAddresses: TOrderedAddressArray);
end;
implementation
uses
AddOrderToRouteRequestUnit;
procedure TAddOrderToRoute.Execute(RouteId: String;
RouteParameters: TRouteParameters; OrderedAddresses: TOrderedAddressArray);
var
ErrorString: String;
begin
Route4MeManager.Route.AddOrder(RouteId, RouteParameters, OrderedAddresses, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('AddOrderToRoute executed successfully')
else
WriteLn(Format('AddOrderToRoute error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_order_to_route_data.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
if(route.get_route_by_id(route_id) == 0)
{
cout << "Route " << route_id << " info by ID:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
Json::Value order;
inf >> order;
int ret = route.add_order_to_route(route_id, order);
if (ret == 0)
cout << "Order added to route" << route_id << endl;
else
cout << "Error adding order" << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...
See the sample JSON response of this method.
Add an Order to an Optimization
Insert an existing order into an existing optimization.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
optimization_problem_id | string | Optimization Problem ID |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/optimization_problem.php
SET apikey=11111111111111111111111111111111
SET rdirect=0
SET optid=E0883C1A2C7B3AAA9397BDDF90C9CFF8
ECHO ON
:: The example demonstrates the process of adding an order to an optimization by sending HTTP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@add_order_to_route_data.json" "%url%?api_key=%apikey%&redirect=%rdirect%&optimization_problem_id=%optid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/optimization_problem.php
apikey=11111111111111111111111111111111
rdirect=0
optid=E0883C1A2C7B3AAA9397BDDF90C9CFF8
# The example demonstrates the process of adding an order to an optimization by sending HTTP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@add_order_to_route_data.json" "$url?api_key=$apikey&redirect=$rdirect&optimization_problem_id=$optid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Orders to an Optimization Problem object
/// </summary>
/// <returns> Optimization Problem object </returns>
public void AddOrdersToOptimization()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OptimizationParameters rQueryParams = new OptimizationParameters()
{
OptimizationProblemID = "7988378F70C533283BAD5024E6E37201",
Redirect = false
};
Address[] addresses = new Address[] {
new Address {
AddressString = "273 Canal St, New York, NY 10013, USA",
Latitude = 40.7191558,
Longitude = -74.0011966,
Alias = "",
CurbsideLatitude = 40.7191558,
CurbsideLongitude = -74.0011966,
IsDepot = true
},
new Address {
AddressString = "106 Liberty St, New York, NY 10006, USA",
Alias = "BK Restaurant #: 2446",
Latitude = 40.709637,
Longitude = -74.011912,
CurbsideLatitude = 40.709637,
CurbsideLongitude = -74.011912,
Email = "",
Phone = "(917) 338-1887",
FirstName = "",
LastName = "",
CustomFields = new Dictionary<string, string> { {"icon", null} },
Time = 0,
TimeWindowStart = 1472544000,
TimeWindowEnd = 1472544300,
OrderId = 7205705
},
new Address {
AddressString = "325 Broadway, New York, NY 10007, USA",
Alias = "BK Restaurant #: 20333",
Latitude = 40.71615,
Longitude = -74.00505,
CurbsideLatitude = 40.71615,
CurbsideLongitude = -74.00505,
Email = "",
Phone = "(212) 227-7535",
FirstName = "",
LastName = "",
CustomFields = new Dictionary<string, string> { {"icon", null} },
Time = 0,
TimeWindowStart = 1472545000,
TimeWindowEnd = 1472545300,
OrderId = 7205704
},
new Address {
AddressString = "106 Fulton St, Farmingdale, NY 11735, USA",
Alias = "BK Restaurant #: 17871",
Latitude = 40.73073,
Longitude = -73.459283,
CurbsideLatitude = 40.73073,
CurbsideLongitude = -73.459283,
Email = "",
Phone = "(212) 566-5132",
FirstName = "",
LastName = "",
CustomFields = new Dictionary<string, string> { {"icon", null} },
Time = 0,
TimeWindowStart = 1472546000,
TimeWindowEnd = 1472546300,
OrderId = 7205703
}
};
RouteParameters rParams = new RouteParameters()
{
RouteName = "Wednesday 15th of June 2016 07:01 PM (+03:00)",
RouteDate = 1465948800,
RouteTime = 14400,
Optimize = "Time",
RouteType = "single",
AlgorithmType = AlgorithmType.TSP,
RT = false,
LockLast = false,
MemberId = "1",
VehicleId = "",
DisableOptimization = false
};
// Run the query
string errorString = "";
DataObject dataObject = route4Me.AddOrdersToOptimization(rQueryParams, addresses, rParams, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("AddOrdersToOptimization executed successfully");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
}
else
{
Console.WriteLine("AddOrdersToOptimization error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
''' <summary>
''' Add Orders to an Optimization
''' </summary>
Partial Public NotInheritable Class Route4MeExamples
Public Sub AddOrdersToOptimization(rQueryParams As OptimizationParameters, addresses As Address(), rParams As RouteParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim dataObject As DataObject = route4Me.AddOrdersToOptimization(rQueryParams, addresses, rParams, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("UpdateRouteCustomData executed successfully")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Else
Console.WriteLine("UpdateRouteCustomData error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
addresses := []routing.Address{
//address to be added
routing.Address{
AddressString: "717 5th Ave New York, NY 10021",
Alias: "Giorgio Armani",
Latitude: 40.7669692,
Longitude: -73.9693864,
Time: 0,
},
}
updated, err := service.UpdateOptimization(&OptimizationParameters{ProblemID: "problem_id", Addresses: addresses, Reoptimize: true})
if err != nil {
//handle errors
return
}
// do something with updated optimization
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\OptimizationProblem;
use Route4Me\Order;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the adding of an order to an optimization.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random optimization problem ID
$optimization = new OptimizationProblem();
$optimizationProblemId = $optimization->getRandomOptimizationId(0, 10);
assert(!is_null($optimizationProblemId), "Can't retrieve a random optimization problem ID");
// Add an order to an optimization
$jfile = file_get_contents("add_order_to_optimization_data.json");
$body = json_decode($jfile);
$orderParameters = array(
"optimization_problem_id" => $optimizationProblemId,
"redirect" => 0,
"device_type" => "web",
"addresses" => $body->addresses
);
$order = new Order();
$response = $order->addOrder2Optimization($orderParameters);
Route4Me::simplePrint($response, true);
<job id="Add Order To Optimization">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of adding an order to an optimization by sending HTTP PUT data.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/optimization_problem.php"
apikey="11111111111111111111111111111111"
rdirect=0
optid=E0883C1A2C7B3AAA9397BDDF90C9CFF8
url=url&"?api_key="&apikey
url=url&"&redirect="&redirect
url=url&"&optimization_problem_id="&optid
jFile="add_order_to_optimization_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit AddOrderToOptimizationUnit;
interface
uses SysUtils, BaseExampleUnit, RouteParametersUnit,
AddressUnit;
type
TAddOrderToOptimization = class(TBaseExample)
public
procedure Execute(OptimizationId: String; RouteParameters: TRouteParameters;
OrderedAddresses: TOrderedAddressArray);
end;
implementation
uses AddOrderToOptimizationRequestUnit;
procedure TAddOrderToOptimization.Execute(OptimizationId: String;
RouteParameters: TRouteParameters; OrderedAddresses: TOrderedAddressArray);
var
ErrorString: String;
Parameters: TAddOrderToOptimizationRequest;
Address: TOrderedAddress;
begin
Parameters := TAddOrderToOptimizationRequest.Create;
try
Parameters.OptimizationProblemId := OptimizationId;
Parameters.Redirect := False;
Parameters.Parameters := RouteParameters;
for Address in OrderedAddresses do
Parameters.AddAddress(Address);
Route4MeManager.Optimization.AddOrder(Parameters, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('AddOrderToOptimization executed successfully')
else
WriteLn(Format('AddOrderToOptimization error: "%s"', [ErrorString]));
finally
FreeAndNil(Parameters);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/optimization_problem.php?api_key=...&optimization_problem_id=...
See the sample JSON response of this method.
Get Single or Multiple Orders
Get a single order or multiple ones using the order_id
parameter.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
order_id | string | The Order ID or a comma-separated list of Order IDs. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
SET orderid=7205711
ECHO ON
:: The example demonstrates the process of getting a single order using the order_id query parameter and the HTTP GET method to make the request.
curl -o file1.txt -g -X GET "%URL%?api_key=%apikey%&order_id=%orderid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
orderid=7205711
# The example demonstrates the process of getting a single order using the order_id query parameter and the HTTP GET method to make the request.
curl -o file1.txt -g -X GET "$url?api_key=$apikey&order_id=$orderid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Order details by order_id
/// </summary>
public void GetOrderByID(string orderIds)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters orderParameters = new OrderParameters()
{
OrderId = orderIds
};
string errorString;
Order[] orders = route4Me.GetOrderByID(orderParameters, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrderByID executed successfully, orders total = {0}", orders.Length);
}
else
{
Console.WriteLine("GetOrderByID error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get single Order by order_id
''' </summary>
Public Sub GetOrderByID(OrderId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim orderParameters As New OrderParameters() With { _
.OrderId = OrderId _
}
Dim errorString As String = ""
Dim order As Order = route4Me.GetOrderByID(orderParameters, errorString)
Console.WriteLine("")
If order IsNot Nothing Then
Console.WriteLine("GetOrderByID executed successfully, order_id = {0}", order.OrderId)
Else
Console.WriteLine("GetOrderByID error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
order = route4me.order
url = "http://www.bk.com/restaurants/ny/new-york/106-fulton-st-17871.html"
data = {'address_1': '106 Fulton St, Farmingdale, NY 11735, USA',
'cached_lat': 40.730730,
'cached_lng': -73.459283,
'address_alias': 'BK Restaurant #: 17871',
'EXT_FIELD_phone': '(212) 566-5132',
'day_scheduled_for_YYMMDD': '2016-07-01',
'EXT_FIELD_custom_data': {'url': url,
}
}
response = order.create_order(**data)
order_id = response.get('order_id')
if order_id:
response = order.get_order(order_id=order_id)
print 'Member ID:\t{0}'.format(response.get('member_id'))
print 'Order ID:\t{0}'.format(response.get('order_id'))
print 'Order Status ID:\t{0}'.format(response.get('order_status_id'))
print 'In Route Count:\t{0}'.format(response.get('in_route_count'))
print 'Day Added:\t{0}'.format(response.get('day_added_YYMMDD'))
print 'Is Pending:\t{0}'.format(response.get('is_pending'))
print 'Is Accepted:\t{0}'.format(response.get('is_accepted'))
print 'Is Started:\t{0}'.format(response.get('is_started'))
print 'Is Validated:\t{0}'.format(response.get('is_validated'))
print 'Is Completed:\t{0}'.format(response.get('is_completed'))
else:
print 'Error Getting Order'
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrdersManager;
public class GetOrderById {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
Order order = manager.getOrder(1317);
System.out.println(order);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
order, err := service.Get(&Query{ID: orderid})
if err != nil {
//handle error
return
}
//do something with the order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of getting an order's details.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
// Get a random order ID
$order = new Order();
$orderID = $order->getRandomOrderId(0, 10);
assert(!is_null($orderID), "Can't retrieve a random order ID");
// Get an order
$orderParameters = Order::fromArray(array(
"order_id" => $orderID
));
$response = $order->getOrder($orderParameters);
Route4Me::simplePrint($response);
<job id="Get Orders By ID">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example demonstrates the process of getting a single order using the order_id query parameter and the HTTP GET method to make the request.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
orderid="96"
url=url&"?api_key="&apikey
url=url&"&order_id="&orderid
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit GetOrderUnit;
interface
uses SysUtils, BaseExampleUnit, OrderUnit;
type
TGetOrder = class(TBaseExample)
public
procedure Execute(OrderId: String);
end;
implementation
procedure TGetOrder.Execute(OrderId: String);
var
ErrorString: String;
Order: TOrder;
begin
Order := Route4MeManager.Order.Get(OrderId, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('GetOrder executed successfully')
else
WriteLn(Format('GetOrder error: "%s"', [ErrorString]));
finally
FreeAndNil(Order);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...&order_id=...
You can expect this API response:
{
"created_timestamp": 0,
"order_id": 7205711,
"order_status_id": 0,
"day_added_YYMMDD": "2016-06-08",
"day_scheduled_for_YYMMDD": null,
"address_alias": "Auto test order",
"address_1": "1358 E Luzerne St, Philadelphia, PA 19124, US",
"address_2": "",
"member_id": 1,
"EXT_FIELD_first_name": "Igor",
"EXT_FIELD_last_name": "Progman",
"EXT_FIELD_email": "[email protected]",
"EXT_FIELD_phone": "",
"address_city": "Philadelphia",
"address_state_id": "",
"address_country_id": "",
"address_zip": "",
"cached_lat": 41.592753,
"cached_lng": -73.830487,
"curbside_lat": 41.592753,
"curbside_lng": -73.830487,
"EXT_FIELD_custom_data": null,
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": 0,
"local_time_window_end": 0,
"local_time_window_start_2": 0,
"local_time_window_end_2": 0,
"service_time": 0,
"local_timezone_string": null,
"color": null,
"order_icon": "NULL",
"is_validated": false,
"is_pending": false,
"is_accepted": false,
"is_started": false,
"is_completed": false
}
Get Orders
a) Get all the orders created under the specific Route4Me account
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of getting all orders.
curl -o file1.txt -X GET "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of getting all orders.
curl -o file1.txt -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Orders
/// </summary>
public void GetOrders()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters orderParameters = new OrderParameters()
{
Limit = 10
};
uint total;
string errorString;
Order[] orders = route4Me.GetOrders(orderParameters, out total, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrders executed successfully, {0} orders returned, total = {1}", orders.Length, total);
}
else
{
Console.WriteLine("GetOrders error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Orders
''' </summary>
Public Sub GetOrders()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim orderParameters As New OrderParameters() With { _
.Limit = 10 _
}
Dim total As UInteger
Dim errorString As String = ""
Dim orders As Order() = route4Me.GetOrders(orderParameters, total, errorString)
Console.WriteLine("")
If orders IsNot Nothing Then
Console.WriteLine("GetOrders executed successfully, {0} orders returned, total = {1}", orders.Length, total)
Else
Console.WriteLine("GetOrders error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class GetOrders {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest());
System.out.println(orders);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
orders, err := service.GetAll(&Query{})
if err != nil {
//Handle error
return
}
//do something with orders, it's a []Order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the process of getting all orders.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$order = new Order();
$orderParameters = Order::fromArray(array(
"offset" => 0,
'limit' => 5,
));
$response = $order->getOrders($orderParameters);
foreach ($response['results'] as $key => $order) {
Route4Me::simplePrint($order);
echo "<br>";
}
<job id="Get All Orders">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example refers to the process of getting all orders.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit GetOrdersUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetOrders = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses OrderParametersUnit, OrderUnit;
procedure TGetOrders.Execute;
var
ErrorString: String;
Parameters: TOrderParameters;
Total: integer;
Orders: TOrderArray;
i: integer;
begin
Parameters := TOrderParameters.Create();
try
Parameters.Limit := 10;
Orders := Route4MeManager.Order.Get(Parameters, Total, ErrorString);
try
WriteLn('');
if (Length(Orders) > 0) then
WriteLn(Format(
'GetOrders executed successfully, %d orders returned, total = %d',
[Length(Orders), Total]))
else
WriteLn(Format('GetOrders error: "%s"', [ErrorString]));
finally
for i := Length(Orders) - 1 downto 0 do
FreeAndNil(Orders[i]);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
See the sample JSON response of this method.
b) Get the orders inserted on a specific date
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. |
day_added_YYMMDD | string | The date the order was inserted. Use the format “YYYY-MM-DD”. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
SET "sdate=2016-06-15"
ECHO ON
:: The example demonstrates the process of retrieving orders inserted on a specific date.
curl -o file1.txt -g -X GET "%URL%?api_key=%apikey%&day_added_YYMMDD=%sdate%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey="11111111111111111111111111111111"
sdate="2016-06-15"
# The example demonstrates the process of retrieving orders inserted on a specific date.
curl -o file1.txt -g -X GET "$url?api_key=$apikey&day_added_YYMMDD=$sdate"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Orders by Inserted Date
/// </summary>
public void GetOrderByInsertedDate(string InsertedDate)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters oParams = new OrderParameters { DayAddedYYMMDD = InsertedDate };
string errorString = "";
Order[] orders = route4Me.SearchOrders(oParams, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrderByInsertedDate executed successfully, orders searched total = {0}", orders.Length);
}
else
{
Console.WriteLine("GetOrderByInsertedDate error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get single Order by order_id
''' </summary>
Public Sub GetOrderByInsertedDate(InsertedDate As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim oParams As New OrderParameters() With { _
.DayAddedYYMMDD = InsertedDate _
}
Dim errorString As String = ""
Dim orders As Order() = route4Me.SearchOrders(oParams, errorString)
Console.WriteLine("")
If orders IsNot Nothing Then
Console.WriteLine("GetOrderByInsertedDate executed successfully, orders searched total = {0}", orders.Count)
Else
Console.WriteLine("GetOrderByInsertedDate error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class GetOrdersByDateCreated {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setDateInserted("sdate=2016-06-10"));
System.out.println(orders);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
orders, err := service.GetAll(&Query{DateInserted:"sdate=2016-06-10"}) //DD-MM-YYYY
if err != nil {
//handle error
return
}
//do something with the orders it's []Order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the process of retrieving orders inserted on a specific date.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"day_added_YYMMDD" => date("Y-m-d", strtotime( '-1 days' )),
"offset" => 0,
"limit" => 5
));
$order = new Order();
$response = $order->getOrder($orderParameters);
foreach ($response['results'] as $key => $order) {
Route4Me::simplePrint($order);
echo "<br>";
}
<job id="Get Orders By Inserted Date">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example demonstrates the process of retrieving orders inserted on a specific date.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
sdate="2016-06-15"
url=url&"?api_key="&apikey
url=url&"&day_added_YYMMDD="&sdate
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit GetOrdersByDateUnit;
interface
uses SysUtils, BaseExampleUnit, OrderUnit;
type
TGetOrdersByDate = class(TBaseExample)
public
procedure Execute(Date: TDate);
end;
implementation
procedure TGetOrdersByDate.Execute(Date: TDate);
var
ErrorString: String;
Orders: TOrderArray;
i: integer;
begin
Orders := Route4MeManager.Order.Get(Date, ErrorString);
try
WriteLn('');
if (Length(Orders) > 0) then
WriteLn(Format(
'GetOrderByDate executed successfully, %d orders returned', [Length(Orders)]))
else
WriteLn(Format('GetOrderByDate error: "%s"', [ErrorString]));
finally
for i := Length(Orders) - 1 downto 0 do
FreeAndNil(Orders[i]);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main(int argc, char* argv[])
{
if (argc < 2) {
cerr << "Pass date in format YYMMDD" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = route.get_orders(0, argv[1]);
if (ret == 0)
cout << "Orders on 27 Dec 2016: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No order inserted on this date: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...&day_added_YYMMDD=...
See the sample JSON response of this method.
c) Get the orders scheduled for a specific date
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. |
scheduled_for_YYMMDD | string | The date the order is scheduled for. Use the format “YYYY-MM-DD”. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
SET "sdate=2016-06-16"
ECHO ON
:: The example demonstrates the process of retrieving orders scheduled for a specific date.
curl -o file1.txt -g -X GET "%URL%?api_key=%apikey%&scheduled_for_YYMMDD=%sdate%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey="11111111111111111111111111111111"
sdate="2016-06-16"
# The example demonstrates the process of retrieving orders scheduled for a specific date.
curl -o file1.txt -g -X GET "$url?api_key=$apikey&scheduled_for_YYMMDD=$sdate"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Orders by Scheduled Date
/// </summary>
public void GetOrderByScheduledDate(string ScheduleddDate)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters oParams = new OrderParameters { ScheduledForYYMMDD = ScheduleddDate };
string errorString = "";
Order[] orders = route4Me.SearchOrders(oParams, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrderByScheduledDate executed successfully, orders searched total = {0}", orders.Length);
}
else
{
Console.WriteLine("GetOrderByScheduledDate error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get single Order by order_id
''' </summary>
Public Sub GetOrderByScheduledDate(ScheduleddDate As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim oParams As New OrderParameters() With { _
.ScheduledForYYMMDD = ScheduleddDate _
}
Dim errorString As String = ""
Dim orders As Order() = route4Me.SearchOrders(oParams, errorString)
Console.WriteLine("")
If orders IsNot Nothing Then
Console.WriteLine("GetOrderByInsertedDate executed successfully, orders searched total = {0}", orders.Count)
Else
Console.WriteLine("GetOrderByInsertedDate error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class GetOrdersByDateScheduled {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setDateScheduled("sdate=2016-06-10"));
System.out.println(orders);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
orders, err := service.GetAll(&Query{DateScheduled:"sdate=2016-06-10"}) //DD-MM-YYYY
if err != nil {
//handle error
return
}
//do something with the orders it's []Order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the process of retrieving orders scheduled for a specific date.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"scheduled_for_YYMMDD" => date("Y-m-d", strtotime('-1 days')),
"offset" => 0,
"limit" => 5
));
$order = new Order();
$response = $order->getOrder($orderParameters);
foreach ($response['results'] as $key => $order) {
Route4Me::simplePrint($order);
echo "<br>";
}
<job id="Get Orders By Scheduled Date">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example demonstrates the process of retrieving orders scheduled for a specific date.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
sdate="2016-06-16"
url=url&"?api_key="&apikey
url=url&"&scheduled_for_YYMMDD="&sdate
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit GetOrdersScheduledForUnit;
interface
uses SysUtils, BaseExampleUnit, OrderUnit;
type
TGetOrdersScheduledFor = class(TBaseExample)
public
procedure Execute(Date: TDate);
end;
implementation
procedure TGetOrdersScheduledFor.Execute(Date: TDate);
var
ErrorString: String;
Orders: TOrderArray;
i: integer;
begin
Orders := Route4MeManager.Order.GetOrdersScheduledFor(Date, ErrorString);
try
WriteLn('');
if (Length(Orders) > 0) then
WriteLn(Format(
'GetOrdersScheduledFor executed successfully, %d orders returned', [Length(Orders)]))
else
WriteLn(Format('GetOrdersScheduledFor error: "%s"', [ErrorString]));
finally
for i := Length(Orders) - 1 downto 0 do
FreeAndNil(Orders[i]);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main(int argc, char* argv[])
{
if (argc < 2) {
cerr << "Pass date in format YYMMDD" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
ret = route.get_scheduled_orders(0, argv[1]);
if (ret == 0)
cout << "Orders on 11 Nov 2016: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No order scheduled for this date: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...&scheduled_for_YYMMDD=...
See the sample JSON response of this method.
d) Get the orders showing only specific fields
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
fields | string | A comma-separated list of field names to show. For example, a value of “order_id, member_id” will display the values of these columns in the response. The fields that aren’t included won’t have their values shown. |
offset | integer | The number of records to skip before searching. |
limit | integer | The number of records to return. |
ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates the process of retrieving orders and showing the values of specific fields.
SET "fields=order_id,member_id"
ECHO ON
curl -o file1.txt -X GET "%url%?api_key=%apikey%&fields=%fields%&offset=0&limit=20"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of retrieving orders and showing the values of specific fields.
fields="order_id,member_id"
curl -o file1.txt -X GET "$url?api_key=$apikey&fields=$fields&offset=0&limit=20"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Show Orders using chosen fields' values
/// </summary>
public void GetOrdersByCustomFields(string CustomFields)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters oParams = new OrderParameters()
{
Fields = CustomFields,
Offset = 0,
Limit = 20
};
string errorString = "";
Order[] orders = route4Me.SearchOrders(oParams, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrdersByCustomFields executed successfully, orders searched total = {0}", orders.Length);
}
else
{
Console.WriteLine("GetOrdersByCustomFields error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Orders by Custom Fields
''' </summary>
Public Sub GetOrdersByCustomFields(CustomFields As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim oParams As New OrderParameters() With { _
.Fields = CustomFields, _
.Offset = 0, _
.Limit = 20 _
}
Dim errorString As String = ""
Dim results As List(Of Integer()) = route4Me.SearchOrdersByCustomFields(oParams, errorString)
Console.WriteLine("")
If results IsNot Nothing Then
Console.WriteLine("GetOrderByCustomFields executed successfully, orders searched total = {0}", results.Count)
Else
Console.WriteLine("GetOrderByInsertedDate error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class GetOrdersByCustomFields {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setFields("member_id,order_id"));
System.out.println(orders);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
orders, err := service.GetAll(&Query{Fields:"order_id,member_id"})
if err != nil {
//handle error
return
}
//do something with the orders it's []Order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the process of retrieving orders and showing the values of specific fields.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"fields" => "order_id,member_id",
"offset" => 0,
"limit" => 5
));
$order = new Order();
$response = $order->getOrder($orderParameters);
foreach ($response as $key => $order) {
Route4Me::simplePrint($order);
}
<job id="Get Orders By Custom Fields">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example demonstrates the process of retrieving orders and showing the values of specific fields.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
fields="order_id,member_id"
offset="0"
limit="20"
url=url&"?api_key="&apikey
url=url&"&fields="&fields
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit GetOrdersWithCustomFieldsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetOrdersWithCustomFields = class(TBaseExample)
public
procedure Execute(Fields: TArray<String>);
end;
implementation
uses CommonTypesUnit, OrderActionsUnit;
procedure TGetOrdersWithCustomFields.Execute(Fields: TArray<String>);
var
ErrorString: String;
Orders: TOrdersCustomFields;
Offset, Limit: integer;
Total: integer;
begin
Limit := 10;
Offset := 0;
Orders := Route4MeManager.Order.GetOrdersWithCustomFields(
Fields, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Orders.Count > 0) then
WriteLn(Format(
'GetOrdersWithCustomFields executed successfully, %d orders returned, %d total',
[Orders.Count, Total]))
else
WriteLn(Format('GetOrdersWithCustomFields error: "%s"', [ErrorString]));
finally
FreeAndNil(Orders);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main(int argc, char* argv[])
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = route.get_custom_orders("order_id,member_id", 0, 100);
if (ret == 0)
cout << "Orders with custom fields: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No order with custom fields: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...&fields=...&offset=...&limit=...
You can expect this API response:
{
"results": [
[7205711, 1],
[7205710, 1],
[7205709, 1],
[7205708, 1],
[7205707, 1],
[7205706, 1],
[7205705, 1],
[7205704, 1],
[7205703, 1],
[7205702, 1],
[7205701, 1],
[7205700, 1],
[7205699, 1],
[7205698, 1],
[7205697, 1],
[7205696, 1],
[7205695, 1],
[7205694, 1],
[7205693, 1],
[7205692, 1]
],
"total": 148,
"fields": ["order_id",
"member_id"]
}
e) Get the orders that contain the specified text in any of its fields
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
query | string | The text to search. All fields will be searched containing this text. |
offset | integer | The number of records to skip before searching. |
limit | integer | The number of records to return. |
ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates the process of retrieving orders that contain the specified text in any of its fields.
SET query="David"
ECHO ON
curl -o file1.txt -X GET "%url%?api_key=%apikey%&query=%query%&offset=0&limit=20"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of retrieving orders that contain the specified text in any of its fields.
query="David"
curl -o file1.txt -X GET "$url?api_key=$apikey&query=$query&offset=0&limit=20"
echo "Finished.."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Orders be containing specified text in any text field
/// </summary>
public void GetOrdersBySpecifiedText(string query)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
OrderParameters oParams = new OrderParameters()
{
Query = query,
Offset = 0,
Limit = 20
};
string errorString = "";
Order[] orders = route4Me.SearchOrders(oParams, out errorString);
Console.WriteLine("");
if (orders != null)
{
Console.WriteLine("GetOrdersByCustomFields executed successfully, orders searched total = {0}", orders.Length);
}
else
{
Console.WriteLine("GetOrdersByCustomFields error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Orders By Specified Text
''' </summary>
Public Sub GetOrdersBySpecifiedText(query As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim oParams As New OrderParameters() With { _
.Query = query, _
.Offset = 0, _
.Limit = 20 _
}
Dim errorString As String = ""
Dim orders As Order() = route4Me.SearchOrders(oParams, errorString)
Console.WriteLine("")
If orders IsNot Nothing Then
Console.WriteLine("GetOrderByInsertedDate executed successfully, orders searched total = {0}", orders.Count)
Else
Console.WriteLine("GetOrderByInsertedDate error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class GetOrdersByQuery {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setQuery("Arthur Kill Rd & Clay Pit Rd"));
System.out.println(orders);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
orders, err := service.GetAll(&Query{Query:"Address here"})
//handle error
return
}
//do something with the orders it's []Order
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
// The example demonstrates the process of retrieving orders that contain the specified text in any of its fields.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$orderParameters = Order::fromArray(array(
"query" => "Automated Order",
"offset" => 0,
"limit" => 5
));
$order = new Order();
$response = $order->getOrder($orderParameters);
foreach ($response['results'] as $key => $order) {
Route4Me::simplePrint($order);
echo "<br>";
}
<job id="Get Orders By Text">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example demonstrates the process of retrieving orders that contain the specified text in any of its fields.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
query="David"
offset="0"
limit="20"
url=url&"?api_key="&apikey
url=url&"&query="&query
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main(int argc, char* argv[])
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = route.get_orders_query("progman", 0, 100);
if (ret == 0)
cout << "Orders with text 'progman': " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No order with text 'progman': " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...&query=...&offset=...&limit=...
See the sample JSON response of this method.
Update an Order
Updates an order based on the values of the parameters passed.
See the sample input JSON data for this method.
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. |
input data | PUT data | A valid JSON object string. See the Order JSON Schema as a guide. |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of updating an order using data from a file and using the HTTP PUT method.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_order_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of updating an order using data from a file and using the HTTP PUT method.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_order_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Update Order
/// </summary>
/// <param name="order"> Order with updated attributes </param>
public void UpdateOrder(Order order)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
Order updatedOrder = route4Me.UpdateOrder(order, out errorString);
Console.WriteLine("");
if (updatedOrder != null)
{
Console.WriteLine("UpdateOrder executed successfully");
}
else
{
Console.WriteLine("UpdateOrder error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Update Order
''' </summary>
''' <param name="order"> Order with updated attributes </param>
Public Sub UpdateOrder(order As Order)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim updatedOrder As Order = route4Me.UpdateOrder(order, errorString)
Console.WriteLine("")
If updatedOrder IsNot Nothing Then
Console.WriteLine("UpdateOrder executed successfully")
Else
Console.WriteLine("UpdateOrder error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
order = route4me.order
url = "http://www.bk.com/restaurants/ny/new-york/106-fulton-st-17871.html"
data = {
'address_1': '106 Fulton St, Farmingdale, NY 11735, USA',
'cached_lat': 40.730730,
'cached_lng': -73.459283,
'address_alias': 'BK Restaurant #: 17871',
'EXT_FIELD_phone': '(212) 566-5132',
'day_scheduled_for_YYMMDD': '2016-07-01',
'EXT_FIELD_custom_data': {
'url': url,
}
}
response = order.create_order(**data)
print 'Member ID:\t{0}'.format(response.get('member_id'))
print 'Order ID:\t{0}'.format(response.get('order_id'))
print 'Order Status ID:\t{0}'.format(response.get('order_status_id'))
print 'In Route Count:\t{0}'.format(response.get('in_route_count'))
print 'Day Added:\t{0}'.format(response.get('day_added_YYMMDD'))
print 'Is Pending:\t{0}'.format(response.get('is_pending'))
print 'Is Accepted:\t{0}'.format(response.get('is_accepted'))
print 'Is Started:\t{0}'.format(response.get('is_started'))
print 'Is Validated:\t{0}'.format(response.get('is_validated'))
print 'Is Completed:\t{0}'.format(response.get('is_completed'))
print '********************************************************'
print 'Updating'
print '********************************************************'
response.update({'is_pending': False,
'is_accepted': True,
'is_started': True,
})
response = order.update_order(**response)
print 'Member ID:\t{0}'.format(response.get('member_id'))
print 'Order ID:\t{0}'.format(response.get('order_id'))
print 'Order Status ID:\t{0}'.format(response.get('order_status_id'))
print 'In Route Count:\t{0}'.format(response.get('in_route_count'))
print 'Day Added:\t{0}'.format(response.get('day_added_YYMMDD'))
print 'Is Pending:\t{0}'.format(response.get('is_pending'))
print 'Is Accepted:\t{0}'.format(response.get('is_accepted'))
print 'Is Started:\t{0}'.format(response.get('is_started'))
print 'Is Validated:\t{0}'.format(response.get('is_validated'))
print 'Is Completed:\t{0}'.format(response.get('is_completed'))
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class UpdateOrder {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setQuery("Arthur Kill Rd & Clay Pit Rd"));
Order old =orders.get(0);
old.setColor("#333333");
Order updated = manager.updateOrder(old);
System.out.println(updated);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
order := //get order using Get, GetAll or constructing yourself.
order.Field = "updated value"
contact, err := service.Update(order)
if err != nil {
t.Error(err)
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of updating an order.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random order
$order = new Order();
$randomOrder = $order->getRandomOrder(0, 30);
assert(!is_null($randomOrder), "Can't retrieve a random order");
// Update the order
$randomOrder['address_2'] = "Lviv";
$randomOrder['EXT_FIELD_phone'] = "032268593";
$randomOrder['EXT_FIELD_custom_data'] = array(
0 => array(
"customer_no" => "11"
)
);
$response = $order->updateOrder($randomOrder);
Route4Me::simplePrint($response, true);
<job id="Update Order">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of updating an order using data from a file and using the HTTP PUT method.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
redirect="0"
routeid="CEAA81617489EC7F8972372F6248946D"
url=url&"?api_key="&apikey
jFile="update_order_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit UpdateOrderUnit;
interface
uses SysUtils, BaseExampleUnit, OrderUnit;
type
TUpdateOrder = class(TBaseExample)
public
procedure Execute(Order: TOrder);
end;
implementation
procedure TUpdateOrder.Execute(Order: TOrder);
var
ErrorString: String;
UpdatedOrder: TOrder;
begin
UpdatedOrder := Route4MeManager.Order.Update(Order, ErrorString);
try
WriteLn('');
if (UpdatedOrder <> nil) then
WriteLn('UpdateOrder executed successfully')
else
WriteLn(Format('UpdateOrder error: "%s"', [ErrorString]));
finally
FreeAndNil(UpdatedOrder);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{
"created_timestamp": 0,
"order_id": 7205711,
"order_status_id": 0,
"day_added_YYMMDD": "2016-06-08",
"day_scheduled_for_YYMMDD": null,
"address_alias": "Auto test order",
"address_1": "1358 E Luzerne St, Philadelphia, PA 19124, US",
"address_2": "Lviv",
"member_id": 1,
"EXT_FIELD_first_name": "David",
"EXT_FIELD_last_name": "Progman",
"EXT_FIELD_email": "[email protected]",
"EXT_FIELD_phone": "032268593",
"address_city": "Philadelphia",
"address_state_id": "",
"address_country_id": "",
"address_zip": "",
"cached_lat": 41.592753,
"cached_lng": -73.830487,
"curbside_lat": 41.592753,
"curbside_lng": -73.830487,
"EXT_FIELD_custom_data": [{
"customer_no": 11
}],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": 0,
"local_time_window_end": 0,
"local_time_window_start_2": 0,
"local_time_window_end_2": 0,
"service_time": 0,
"local_timezone_string": null,
"color": null,
"order_icon": "NULL",
"is_validated": false,
"is_pending": false,
"is_accepted": false,
"is_started": false,
"is_completed": false
}
Update an Order With Custom Data
Update an order with a custom user data to the user’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Order JSON Schema as a guide. |
<job id="Update Order With Custom User Field">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates process of updating an order with a custom user data by sending HTPP PUT data.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="update_order_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of updating an order with a custom user data by sending HTPP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_order_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates process of updating an order with a custom user data by sending HTPP PUT data.
curl -o file1.txt -g -X PUT -H "Content-Type: application/json" -d "@update_order_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void UpdateCustomOrderData()
{
var route4Me = new Route4MeManager(c_ApiKey);
//Order order = null;
string orderId = lsOrderIds.Count > 0 ? lsOrderIds[0] : "";
var orderParameters = new OrderParameters()
{
order_id = orderId
};
Order order = route4Me.GetOrderByID(orderParameters, out string errorString);
order.EXT_FIELD_last_name = "Updated " + (new Random()).Next().ToString();
order.EXT_FIELD_custom_data = new Dictionary<string, string>() { { "city", "London" } };
// Run the query
var updatedOrder = route4Me.UpdateOrder(order, out errorString);
Assert.IsNotNull(updatedOrder, "UpdateOrderTest failed. " + errorString);
}
Public Sub UpdateCustomOrderData()
Dim route4Me = New Route4MeManager(c_ApiKey)
Dim order = lsOrders(lsOrders.Count - 1)
order.EXT_FIELD_custom_data = New Dictionary(Of String, String)() From {{"order_type", "scheduled order"}},
Dim errorString As String = Nothing
Dim result = route4Me.UpdateOrder(order, errorString)
Assert.IsNotNull(result, "AddOrdersToRouteTest failed... " & errorString)
End Sub
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// This example not available for demo API key
Route4Me::setApiKey(Constants::API_KEY);
// Get random order
$order = new Order();
$randomOrder = $order->getRandomOrder(0, 30);
assert(!is_null($randomOrder), "Cannot retrieve a random order");
// Update the order
$randomOrder['address_2'] = 'Lviv';
$randomOrder['EXT_FIELD_phone'] = '032268593';
$randomOrder['EXT_FIELD_custom_data'] = [
0 => [
'customer_no' => '11',
],
];
$response = $order->updateOrder($randomOrder);
Route4Me::simplePrint($response, true);
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{
"created_timestamp": 0,
"order_id": 7205711,
"order_status_id": 0,
"day_added_YYMMDD": "2016-06-08",
"day_scheduled_for_YYMMDD": null,
"address_alias": "Auto test order",
"address_1": "1358 E Luzerne St, Philadelphia, PA 19124, US",
"address_2": "Lviv",
"member_id": 1,
"EXT_FIELD_first_name": "David",
"EXT_FIELD_last_name": "Progman",
"EXT_FIELD_email": "[email protected]",
"EXT_FIELD_phone": "032268593",
"address_city": "Philadelphia",
"address_state_id": "",
"address_country_id": "",
"address_zip": "",
"cached_lat": 41.592753,
"cached_lng": -73.830487,
"curbside_lat": 41.592753,
"curbside_lng": -73.830487,
"EXT_FIELD_custom_data": [{
"customer_no": 11
}],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": 0,
"local_time_window_end": 0,
"local_time_window_start_2": 0,
"local_time_window_end_2": 0,
"service_time": 0,
"local_timezone_string": null,
"color": null,
"order_icon": "NULL",
"is_validated": false,
"is_pending": false,
"is_accepted": false,
"is_started": false,
"is_completed": false
}
Remove an Order
Removes one or more orders from a Route4Me account.
See the sample input JSON data for this method.
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
redirect | integer | If equal to 1, it will be redirected. Use 0 for no redirection. | GET |
order_ids | array | An array of Order IDs. Use square brackets for both single or multiple Order IDs. | POST |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of deleting an order using data from a file and using the HTTP DELETE method.
curl -o file1.txt -g -X DELETE -H "Content-Type: application/json" -d "@delete_order_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of deleting an order using data from a file and using the HTTP DELETE method.
curl -o file1.txt -g -X DELETE -H "Content-Type: application/json" -d "@delete_order_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Remove Orders
/// </summary>
/// <param name="orderIds"> Order Ids </param>
public void RemoveOrders(string[] orderIds)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool removed = route4Me.RemoveOrders(orderIds, out errorString);
Console.WriteLine("");
if (removed)
{
Console.WriteLine("RemoveOrders executed successfully, {0} orders removed", orderIds.Length);
}
else
{
Console.WriteLine("RemoveOrders error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Remove Orders
''' </summary>
''' <param name="orderIds"> Order Ids </param>
Public Sub RemoveOrders(orderIds As String())
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim removed As Boolean = route4Me.RemoveOrders(orderIds, errorString)
Console.WriteLine("")
If removed Then
Console.WriteLine("RemoveOrders executed successfully, {0} orders removed", orderIds.Length)
Else
Console.WriteLine("RemoveOrders error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
order = route4me.order
url = "http://www.bk.com/restaurants/ny/new-york/106-fulton-st-17871.html"
data = {'address_1': '106 Fulton St, Farmingdale, NY 11735, USA',
'cached_lat': 40.730730,
'cached_lng': -73.459283,
'address_alias': 'BK Restaurant #: 17871',
'EXT_FIELD_phone': '(212) 566-5132',
'day_scheduled_for_YYMMDD': '2016-07-01',
'EXT_FIELD_custom_data': {'url': url
}
}
response = order.create_order(**data)
print 'Member ID:\t{0}'.format(response.get('member_id'))
print 'Order ID:\t{0}'.format(response.get('order_id'))
print 'Order Status ID:\t{0}'.format(response.get('order_status_id'))
print 'In Route Count:\t{0}'.format(response.get('in_route_count'))
print 'Day Added:\t{0}'.format(response.get('day_added_YYMMDD'))
print 'Is Pending:\t{0}'.format(response.get('is_pending'))
print 'Is Accepted:\t{0}'.format(response.get('is_accepted'))
print 'Is Started:\t{0}'.format(response.get('is_started'))
print 'Is Validated:\t{0}'.format(response.get('is_validated'))
print 'Is Completed:\t{0}'.format(response.get('is_completed'))
print '********************************************************'
print 'Deleting'
print '********************************************************'
order_id = response.get('order_id')
if order_id:
data = {'order_ids': [order_id]}
response = order.delete_order(**data)
print response
else:
print 'Error Getting Order'
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.orders;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.responses.StatusResponse;
import com.route4me.sdk.services.orders.Order;
import com.route4me.sdk.services.orders.OrderRequest;
import com.route4me.sdk.services.orders.OrdersManager;
import java.util.List;
public class DeleteOrder {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
OrdersManager manager = new OrdersManager(apiKey);
try {
List<Order> orders = manager.getOrders(new OrderRequest().setQuery("Arthur Kill Rd & Clay Pit Rd"));
StatusResponse resp = manager.deleteOrders(orders.get(0).getId());
System.out.println(resp);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/orders"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &orders.Service{Client: client}
success, err := service.Delete([]uint64{orderid})
if err != nil || !success {
//handle issues
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Order;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
// Get 2 random Order IDs
$order = new Order();
$randomOrderID1 = $order->getRandomOrderId(0, 30);
assert(!is_null($randomOrderID1), "Can't retrieve the first random order ID");
$randomOrderID2 = $order->getRandomOrderId(0, 30);
assert(!is_null($randomOrderID2), "Can't retrieve the second random order ID");
echo "Random order ID 1 -> $randomOrderID1 <br> Random order ID 2 -> $randomOrderID2 <br>";
// Remove 2 random orders
$orderParameters = Order::fromArray(array(
'order_ids' => array (
0 => $randomOrderID1,
1 => $randomOrderID2,
)
));
$response = $order->removeOrder($orderParameters);
Route4Me::simplePrint($response);
<job id="Remove Order">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of deleting an order using data from a file and using the HTTP DELETE method.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="delete_order_data.json"
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
unit RemoveOrdersUnit;
interface
uses SysUtils, BaseExampleUnit, CommonTypesUnit, OrderUnit;
type
TRemoveOrders = class(TBaseExample)
public
procedure Execute(OrderIds: TStringArray);
end;
implementation
uses OrderParametersUnit;
procedure TRemoveOrders.Execute(OrderIds: TStringArray);
var
ErrorString: String;
Removed: boolean;
begin
Removed := Route4MeManager.Order.Remove(OrderIds, ErrorString);
WriteLn('');
if (Removed) then
WriteLn(Format('RemoveOrders executed successfully, %d orders removed',
[Length(OrderIds)]))
else
WriteLn(Format('RemoveOrders error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
ifstream inf("add_order_data.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
Json::Value body;
inf >> body;
int ret = route.add_order(body);
if (ret == 0)
cout << "Order added: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Error adding order: " << Json::FastWriter().write(route.get_json_resp()) << endl;
Json::Value orders;
orders.append("1247");
orders.append("1248");
ret = route.remove_order(1, orders);
if (ret == 0)
cout << "Order removed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Error removing order: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{"status":true}
Custom User Fields
Route4Me is compatible with some e-commerce platforms and other resources that are widely used for supporting their e-commerce sites. To make your routing operations and logistics transactions as easy and fast as possible, Route4Me enables you to import all your orders from various e-commerce platforms and use them for planning efficient and optimized routes. In addition to planning entirely new routes with imported orders and inserting your orders into the best routes, you can also create bespoke order statuses to accommodate the particular needs of your business or unique business model.
Get User Custom Fields
You can retrieve all the user custom fields of the order entity.
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
<job id="Get Custom Order User Fields">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of getting a custom order user field by sending HTPP query request.
' Note: this method allowed only for business and higher account types, you should use valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order_custom_user_fields.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.outputFile="get_custom_order_fields_RESPONSE.json"
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order_custom_user_fields.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of retrieving the custom order fields by sending HTPP GET data.
curl -o get_custom_order_fields_RESPONSE.json -g -k -X GET "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order_custom_user_fields.php
apikey=11111111111111111111111111111111
# The example demonstrates process of geting all the custom order user fields by sending HTPP query request.
curl -o get_custom_order_fields_RESPONSE.json -k -g -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void GetOrderCustomUserFieldsTest()
{
if (skip == "yes") return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string errorString;
var orderCustomUserFields = route4Me.GetOrderCustomUserFields(out errorString);
Assert.IsInstanceOfType(orderCustomUserFields, typeof(OrderCustomField[]), "GetOrderCustomUserFieldsTest failed. " + errorString);
}
Public Sub GetOrderCustomUserFieldsTest()
If skip = "yes" Then Return
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim errorString As String
Dim orderCustomUserFields = route4Me.GetOrderCustomUserFields(errorString)
Assert.IsInstanceOfType(orderCustomUserFields, GetType(OrderCustomField()), "GetOrderCustomUserFieldsTest failed. " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Example refers to getting of all the order custom user fields list with details.
// Set the api key in the Route4me class
// This example not available for demo API key
Route4Me::setApiKey('11111111111111111111111111111111');
$orderCustomField = new OrderCustomField();
$orderCustomFieldParameters = OrderCustomField::fromArray([]);
$response = $orderCustomField->getOrderCustomUserFields($orderCustomFieldParameters);
foreach ($response as $key => $orderCustomField) {
Route4Me::simplePrint($orderCustomField);
echo '<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order_custom_user_fields.php?api_key=...
You can expect this API response:
[
{
"order_custom_field_id": 174,
"order_custom_field_name": "CustomField3",
"order_custom_field_label": "Custom Field 3",
"order_custom_field_type": "checkbox",
"root_owner_member_id": 1,
"order_custom_field_type_info": {
"short_label": "cFl3"
}
},
{
"order_custom_field_id": 175,
"order_custom_field_name": "CustomField4",
"order_custom_field_label": "Custom Field 44",
"order_custom_field_type": "checkbox",
"root_owner_member_id": 1,
"order_custom_field_type_info": {
"short_label": "Fld4"
}
}
]
Add User Custom Field
You can create a custom user field of the order entity.
See the sample input JSON data for this method.
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
order_custom_field_name | string | Custom user field’s name. | POST |
order_custom_field_label | string | Custom user field’s label. | POST |
order_custom_field_type | string | Custom user field’s type (default: ‘checkbox’). | POST |
order_custom_field_type_info | JSON object | Information about custom field. You can create any property but the property ‘short_label’ is reserved | POST |
<job id="Create Custom Order User Field">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of creating a custom order user field by sending HTPP POST data.
' Note: this method allowed only for business and higher account types, you should use valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order_custom_user_fields.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="add_custom_order_field_data.json"
Set r4m=New Route4Me
r4m.outputFile="add_custom_order_field_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order_custom_user_fields.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of adding a custom order field by sending HTPP POST data.
curl -o add_custom_order_field_RESPONSE.json -g -k -X POST -H "Content-Type: application/json" -d "@add_custom_order_field_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order_custom_user_fields.php
apikey=11111111111111111111111111111111
# The example demonstrates process of creating a custom order user field by sending HTPP POST data.
curl -o add_custom_order_field_RESPONSE.json -k -g -X POST -H "Content-Type: application/json" -d "@add_custom_order_field_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void CreateOrderCustomUserFieldTest()
{
if (skip == "yes") return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
var orderCustomFieldParams = new OrderCustomFieldParameters()
{
OrderCustomFieldName = "CustomField44",
OrderCustomFieldLabel = "Custom Field 44",
OrderCustomFieldType = "checkbox",
OrderCustomFieldTypeInfo = new Dictionary<string, object>()
{
{"short_label", "cFl44" },
{"description", "This is test order custom field" },
{"custom field no", 11 }
}
};
var orderCustomUserField = route4Me.CreateOrderCustomUserField(orderCustomFieldParams, out string errorString);
Assert.IsInstanceOfType(orderCustomUserField, typeof(OrderCustomFieldCreateResponse), "CreateOrderCustomUserFieldTest failed. " + errorString);
lsOrderCustomUserFieldIDs.Add(orderCustomUserField.Data.OrderCustomFieldId);
}
Public Sub CreateOrderCustomUserFieldTest()
If skip = "yes" Then Return
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim orderCustomFieldParams = New OrderCustomFieldParameters() With {
.OrderCustomFieldName = "CustomField44",
.OrderCustomFieldLabel = "Custom Field 44",
.OrderCustomFieldType = "checkbox",
.OrderCustomFieldTypeInfo = New Dictionary(Of String, Object)() From {
{"short_label", "cFl44"},
{"description", "This is test order custom field"},
{"custom field no", 11}
}
}
Dim errorString As String = Nothing
Dim orderCustomUserField = route4Me.CreateOrderCustomUserField(orderCustomFieldParams, errorString)
Assert.IsInstanceOfType(orderCustomUserField, GetType(OrderCustomFieldCreateResponse), "CreateOrderCustomUserFieldTest failed. " & errorString)
lsOrderCustomUserFieldIDs.Add(orderCustomUserField.Data.OrderCustomFieldId)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Example refers to the process of creating an order custom user field.
// Set the api key in the Route4me class
// This example not available for demo API key
Route4Me::setApiKey('11111111111111111111111111111111');
$orderCustomField = new OrderCustomField();
$orderCustomFieldParameters = OrderCustomField::fromArray([
'order_custom_field_name' => 'CustomField4',
'order_custom_field_label' => 'Custom Field 4',
'order_custom_field_type' => 'checkbox',
'order_custom_field_type_info' => ['short_label' => 'cFl4']
]);
$response = $orderCustomField->addOrderCustomUserField($orderCustomFieldParameters);
foreach ($response as $key => $orderCustomField) {
Route4Me::simplePrint($orderCustomField);
echo '<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order_custom_user_fields.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 1,
"data": {
"order_custom_field_id": 175,
"order_custom_field_name": "CustomField4",
"order_custom_field_type": "checkbox",
"order_custom_field_label": "Custom Field 4",
"order_custom_field_type_info": {
"short_label": "cFl4"
},
"root_owner_member_id": 1
}
}
Update User Custom Field
You can update a custom user field of the order entity.
See the sample input JSON data for this method.
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
order_custom_field_id | integer | Unique ID of the order custom field. | POST |
order_custom_field_label | string | Custom user field’s label. | POST |
order_custom_field_type | string | Custom user field’s type (default: ‘checkbox’). | POST |
order_custom_field_type_info | JSON object | Information about custom field. You can create any property but the property ‘short_label’ is reserved | POST |
<job id="Update Custom Order User Field">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of updating a custom order user field by sending HTPP PUT data.
' Note: this method allowed only for business and higher account types, you should use valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order_custom_user_fields.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="update_custom_order_field_data.json"
Set r4m=New Route4Me
r4m.outputFile="update_custom_order_field_RESPONSE.json"
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order_custom_user_fields.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of updating a custom order field by sending HTPP PUT data.
curl -o update_custom_order_field_RESPONSE.json -g -k -X PUT -H "Content-Type: application/json" -d "@update_custom_order_field_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order_custom_user_fields.php
apikey=11111111111111111111111111111111
# The example demonstrates process of updating a custom order user field by sending HTPP PUT data.
curl -o update_custom_order_field_RESPONSE.json -k -g -X PUT -H "Content-Type: application/json" -d "@update_custom_order_field_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void UpdateOrderCustomUserFieldTest()
{
if (skip == "yes") return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
var orderCustomFieldParams = new OrderCustomFieldParameters()
{
OrderCustomFieldId = lsOrderCustomUserFieldIDs[lsOrderCustomUserFieldIDs.Count - 1],
OrderCustomFieldLabel = "Custom Field 55",
OrderCustomFieldType = "checkbox",
OrderCustomFieldTypeInfo = new Dictionary<string, object>()
{
{"short_label", "cFl55" },
{"description", "This is updated test order custom field" },
{"custom field no", 12 }
}
};
var orderCustomUserField = route4Me.UpdateOrderCustomUserField(orderCustomFieldParams, out string errorString);
Assert.IsInstanceOfType(orderCustomUserField, typeof(OrderCustomFieldCreateResponse), "UpdateOrderCustomUserFieldTest failed. " + errorString);
Assert.AreEqual("Custom Field 55", orderCustomUserField.Data.OrderCustomFieldLabel, "UpdateOrderCustomUserFieldTest failed. " + errorString);
}
Public Sub UpdateOrderCustomUserFieldTest()
If skip = "yes" Then Return
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim orderCustomFieldParams = New OrderCustomFieldParameters() With {
.OrderCustomFieldId = lsOrderCustomUserFieldIDs(lsOrderCustomUserFieldIDs.Count - 1),
.OrderCustomFieldLabel = "Custom Field 55",
.OrderCustomFieldType = "checkbox",
.OrderCustomFieldTypeInfo = New Dictionary(Of String, Object)() From {
{"short_label", "cFl55"},
{"description", "This is updated test order custom field"},
{"custom field no", 12}
}
}
Dim errorString As String = Nothing
Dim orderCustomUserField = route4Me.UpdateOrderCustomUserField(orderCustomFieldParams, errorString)
Assert.IsInstanceOfType(orderCustomUserField, GetType(OrderCustomFieldCreateResponse), "UpdateOrderCustomUserFieldTest failed. " & errorString)
Assert.AreEqual("Custom Field 55", orderCustomUserField.Data.OrderCustomFieldLabel, "UpdateOrderCustomUserFieldTest failed. " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Example refers to the process of updating an order custom user field.
// Set the api key in the Route4me class
// This example not available for demo API key
Route4Me::setApiKey('11111111111111111111111111111111');
$orderCustomField = new OrderCustomField();
$orderCustomFieldParameters = OrderCustomField::fromArray([
'order_custom_field_id' => 182,
'order_custom_field_label' => 'ustom Field 44',
'order_custom_field_type' => 'checkbox',
'order_custom_field_type_info' => ['short_label' => 'cFl44']
]);
$response = $orderCustomField->updateOrderCustomUserField($orderCustomFieldParameters);
foreach ($response as $key => $orderCustomField) {
Route4Me::simplePrint($orderCustomField);
echo '<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order_custom_user_fields.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 1,
"data": {
"order_custom_field_id": "175",
"root_owner_member_id": "1",
"order_custom_field_name": "CustomField4",
"order_custom_field_label": "Custom Field 44",
"order_custom_field_type": "checkbox",
"order_custom_field_type_info": {
"short_label": "Fld4"
}
}
}
Remove User Custom Field
You can remove a custom user field of the order entity.
See the sample input JSON data for this method.
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
order_custom_field_id | integer | Unique ID of the order custom field. | DELETE |
<job id="Delete Custom Order User Field">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of deleting a custom order user field by sending HTPP DELETE data.
' Note: this method allowed only for business and higher account types, you should use valid API key.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/order_custom_user_fields.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="remove_custom_order_field_data.json"
Set r4m=New Route4Me
r4m.outputFile="remove_custom_order_field_RESPONSE.json"
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/order_custom_user_fields.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates process of removing a custom order field by sending HTPP DELETE data.
curl -o remove_custom_order_field_RESPONSE.json -g -k -X DELETE -H "Content-Type: application/json" -d "@remove_custom_order_field_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/order_custom_user_fields.php
apikey=11111111111111111111111111111111
# The example demonstrates process of removing a custom order user field by sending HTPP DELETE data.
curl -o remove_custom_order_field_RESPONSE.json -k -g -X DELETE -H "Content-Type: application/json" -d "@remove_custom_order_field_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void RemoveOrderCustomUserFieldTest()
{
if (skip == "yes") return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
int orderCustomFieldId = lsOrderCustomUserFieldIDs[lsOrderCustomUserFieldIDs.Count - 1];
var orderCustomFieldParams = new OrderCustomFieldParameters()
{
OrderCustomFieldId = orderCustomFieldId
};
var response = route4Me.RemoveOrderCustomUserField(orderCustomFieldParams, out string errorString);
Assert.IsTrue(response.Affected == 1, "RemoveOrderCustomUserFieldTest failed. " + errorString);
lsOrderCustomUserFieldIDs.Remove(orderCustomFieldId);
}
Public Sub RemoveOrderCustomUserFieldTest()
If skip = "yes" Then Return
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim orderCustomFieldId As Integer = lsOrderCustomUserFieldIDs(lsOrderCustomUserFieldIDs.Count - 1)
Dim orderCustomFieldParams = New OrderCustomFieldParameters() With {
.OrderCustomFieldId = orderCustomFieldId
}
Dim errorString As String = Nothing
Dim response = route4Me.RemoveOrderCustomUserField(orderCustomFieldParams, errorString)
Assert.IsTrue(response.Affected = 1, "RemoveOrderCustomUserFieldTest failed. " & errorString)
lsOrderCustomUserFieldIDs.Remove(orderCustomFieldId)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Example refers to the process of removing an order custom user field.
// Set the api key in the Route4me class
// This example not available for demo API key
Route4Me::setApiKey('11111111111111111111111111111111');
$orderCustomField = new OrderCustomField();
$orderCustomFieldParameters = OrderCustomField::fromArray([
'order_custom_field_id' => 183
]);
$response = $orderCustomField->removeOrderCustomUserField($orderCustomFieldParameters);
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{
"result":"OK",
"affected":1
}
Addresses
An address refers to the information used for describing the location of a stop or destination. It should contain the following identifiers: street name and number, city, state, country, and ZIP Code.
An address is also referred to as a “Stop” or “Destination”.
Address Properties
Attribute | Type | Description |
---|---|---|
route_destination_id | string | Route destination ID |
alias | string | Address alias |
member_id | integer | Member ID |
address | string | Address name |
is_depot | boolean | If true, the address is a depot. |
timeframe_violation_state | integer | The state of the timeframe violation. |
timeframe_violation_time | integer | The moment of the timeframe violation. |
timeframe_violation_rate | number | The rate of the timeframe violation. |
priority | integer | 0 is the highest priority, 1 for a lesser one, and so on. |
address_stop_type | string | The type of stop: “PICKUP”, “DELIVERY”, “BREAK”, “MEETUP” |
geofence_detected_visited_timestamp | integer | The timestamp of a geofence detected visited. |
geofence_detected_departed_timestamp | integer | The timestamp of a geofence detected departed. |
geofence_detected_service_time | integer | The service time of a detected geofence. |
geofence_detected_visited_lat | number | The latitude of a visited detected geofence. |
geofence_detected_visited_lng | number | The longitude of a visited detected geofence. |
geofence_detected_departed_lat | number | The latitude of a departed detected geofence. |
geofence_detected_departed_lng | number | The longitude of a departed detected geofence. |
lat | number | Latitude |
lng | number | Longitude |
curbside_lat | number | Curbside latitude |
curbside_lng | number | Curbside longitude |
route_id | string | Route ID |
original_route_id | string | Original route ID |
optimization_problem_id | string | Optimization problem ID |
sequence_no | integer | A sequence number for an address. |
geocoded | boolean | A value of true means the address field was successfully geocoded, false otherwise. |
preferred_geocoding | integer | The index of the geocodings array that the user has chosen. |
failed_geocoding | boolean | A value of true means there was a geocoding attempt that failed. |
geocodings | array | Geocodings. See the Geocoding JSON Schema as a guide. |
contact_id | integer | Address book contact ID |
is_visited | boolean | If true, the driver pressed the ‘Visited’ button. |
is_departed | boolean | If true, the driver pressed the ‘Departed’ button. |
visited_lat | number | Latitude of the last known visited address. |
visited_lng | number | Longitude of the last known visited address. |
departed_lat | number | Latitude of the last known departed address. |
departed_lng | number | Longitude of the last known departed address. |
timestamp_last_visited | integer | The timestamp when the driver pressed ‘Visited’. |
timestamp_last_departed | integer | The timestamp when the driver marked the stop as ‘Departed’. |
customer_po | string | A customer purchase order for the address. |
invoice_no | string | An invoice number for an address. |
reference_no | string | A reference number for an address. |
order_no | string | An order number for an address. |
weight | number | Weight |
cost | number | The cost of the order for an address. |
revenue | number | The total revenue for an address. |
cube | number | The cubic volume of cargo. |
pieces | integer | Pieces |
time | integer | The service time, in seconds. |
string | A valid e-mail address assigned to this stop. | |
phone | string | Customer phone |
udu_distance_to_next_destination | number | Distance to a next destination in the user distance unit |
custom_data | object | Unclassified data goes here |
destination_note_count | integer | The number of notes that have been added to this destination. |
drive_time_to_next_destination | integer | The time to the next destination, in seconds. |
abnormal_traffic_time_to_next_destination | integer | The abnormal traffic time to the next destination. |
uncongested_time_to_next_destination | integer | The uncongested time to the next destination. |
distance_to_next_destination | number | The distance to the next destination. |
generated_time_window_start | integer | The generated time window start value, in seconds. |
generated_time_window_end | integer | The generated time window end value, in seconds. |
time_window_start | integer | The time window start value, in seconds. |
time_window_end | integer | The time window end value, in seconds. |
time_window_start_2 | integer | See time_window_start property |
time_window_end_2 | integer | See time_window_end property |
notes | array | Notes. See the Note JSON Schema as a guide. |
custom_fields | array | Custom fields. This is a String array. |
manifest | object | Manifest. See the Address JSON Schema as a guide. |
Mark as Detected as Visited
Mark an address as “Detected as Visited”.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
route_destination_id | integer | Route destination ID | GET |
is_visited | boolean | If true, the address will be marked as visited. | POST |
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Mark Address as Marked as Visited
/// </summary>
/// <returns> status </returns>
public void MarkAddressAsMarkedAsVisited(AddressParameters aParams)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString = "";
Address resultAddress = route4Me.MarkAddressAsMarkedAsVisited(aParams, out errorString);
Console.WriteLine("");
if (resultAddress != null)
{
Console.WriteLine("MarkAddressAsMarkedAsVisited executed successfully");
Console.WriteLine("Marked Address ID: {0}", resultAddress.RouteDestinationId);
}
else
{
Console.WriteLine("MarkAddressAsMarkedAsVisited error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Mark Address As Marked As Visited
''' </summary>
''' <returns> Address </returns>
Public Sub MarkAddressAsMarkedAsVisited(aParams As AddressParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim resultAddress As Address = route4Me.MarkAddressAsMarkedAsVisited(aParams, errorString)
Console.WriteLine("")
If resultAddress IsNot Nothing Then
Console.WriteLine("MarkAddressAsMarkedAsVisited executed successfully")
Console.WriteLine("Marked Address ID: {0}", resultAddress.RouteDestinationId)
Else
Console.WriteLine("MarkAddressAsMarkedAsVisited error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
var address *routing.Address // fetch address
address.IsVisited = true
updated, err := service.UpdateAddress(address)
if err != nil {
// handle errors
return
}
// do something with updated address
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Address;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
if (isset($addressRand['is_depot']))
{
if ($addressRand['is_depot']) {
echo "The randomly chosen address is a depot. It can't be marked! Try again.";
return;
}
}
$address_id = $addressRand['route_destination_id'];
assert(!is_null($address_id), "Can't retrieve random address");
// Mark the address as "detected as visited"
$addressParameters = (array)Address::fromArray(array(
"route_id" => $routeId,
"route_destination_id" => $address_id,
"is_visited" => TRUE
));
$address = new Address();
$result = $address->markAddress($addressParameters);
Route4Me::simplePrint($result);
<job id="Mark Address As Detected As Visited">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' Setting is_visited=true means the address was visited, while is_visited=false means it wasn't.
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
ri="241466F15515D67D3F951E2DA38DE76D"
rdi="167899269"
url=url&"?api_key="&apikey
url=url&"&route_id="&ri
url=url&"&route_destination_id="&rdi
jFile="mark_address_as_detected_as_visited_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=241466F15515D67D3F951E2DA38DE76D
SET routedestinationid=167899269
ECHO ON
:: Setting is_visited=true means the address was visited, while is_visited=false means it wasn't.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@mark_address_as_detected_as_visited_data.json" "%url%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=241466F15515D67D3F951E2DA38DE76D
routedestinationid=167899269
# Setting is_visited=true means the address was visited, while is_visited=false means it wasn't.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@mark_address_as_detected_as_visited_data.json" "$url?api_key=$apikey%&route_id=$routeid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
unit MarkAddressAsDetectedAsVisitedUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TMarkAddressAsDetectedAsVisited = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteDestinationId: integer;
IsVisited: boolean);
end;
implementation
procedure TMarkAddressAsDetectedAsVisited.Execute(RouteId: String;
RouteDestinationId: integer; IsVisited: boolean);
var
ErrorString: String;
begin
Route4MeManager.Address.MarkAsDetectedAsVisited(
RouteId, RouteDestinationId, IsVisited, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('MarkAddressAsDetectedAsVisited executed successfully')
else
WriteLn(Format('MarkAddressAsDetectedAsVisited error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"route_destination_id": 167899269,
"alias": "",
"member_id": 1,
"address": "559 W Aurora Rd, Northfield, OH 44067",
"is_depot": false,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 41.315116882324,
"lng": -81.558746337891,
"curbside_lat": 41.3151169,
"curbside_lng": -81.5587463,
"priority": null,
"route_id": "241466F15515D67D3F951E2DA38DE76D",
"original_route_id": null,
"optimization_problem_id": "9949C283BC5E062C307A5985DCEEF622",
"sequence_no": 1,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"address_stop_type": "DELIVERY",
"is_visited": true,
"timestamp_last_visited": 1467820568,
"visited_lat": null,
"visited_lng": null,
"is_departed": true,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": 1467820841,
"group": null,
"customer_po": null,
"invoice_no": null,
"reference_no": null,
"order_no": null,
"weight": 0,
"cost": 0,
"revenue": 0,
"cube": 0,
"pieces": 0,
"first_name": null,
"last_name": null,
"email": null,
"phone": null,
"destination_note_count": 0,
"drive_time_to_next_destination": 0,
"abnormal_traffic_time_to_next_destination": 0,
"uncongested_time_to_next_destination": 0,
"traffic_time_to_next_destination": 0,
"distance_to_next_destination": 0,
"channel_name": "aa3b11ccc1cda9e76175801421644645",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": 48089,
"time_window_end": 48449,
"time_window_start_2": null,
"time_window_end_2": null,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 300,
"custom_fields": {},
"custom_fields_str_json": "{}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": []
}
Mark as Detected as Departed
Mark an address as “Detected as Departed”.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
route_id | string | Route ID | GET |
route_destination_id | integer | Route destination ID | GET |
is_departed | boolean | If true, the address will be marked as departed. | POST |
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Mark Address as Marked as Departed
/// </summary>
/// <returns> status </returns>
public void MarkAddressAsMarkedAsDeparted(AddressParameters aParams)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString = "";
Address resultAddress = route4Me.MarkAddressAsMarkedAsDeparted(aParams, out errorString);
Console.WriteLine("");
if (resultAddress != null)
{
Console.WriteLine("MarkAddressAsMarkedAsDeparted executed successfully");
Console.WriteLine("Marked Address ID: {0}", resultAddress.RouteDestinationId);
}
else
{
Console.WriteLine("MarkAddressAsMarkedAsDeparted error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Mark Address As Marked As Departed
''' </summary>
''' <returns> Address </returns>
Public Sub MarkAddressAsMarkedAsDeparted(aParams As AddressParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim resultAddress As Address = route4Me.MarkAddressAsMarkedAsDeparted(aParams, errorString)
Console.WriteLine("")
If resultAddress IsNot Nothing Then
Console.WriteLine("MarkAddressAsMarkedAsDeparted executed successfully")
Console.WriteLine("Marked Address ID: {0}", resultAddress.RouteDestinationId)
Else
Console.WriteLine("MarkAddressAsMarkedAsDeparted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
var address *routing.Address // fetch address
address.IsDeparted = true
updated, err := service.UpdateAddress(address)
if err != nil {
// handle errors
return
}
// do something with updated address
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Address;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
if (isset($addressRand['is_depot']))
{
if ($addressRand['is_depot']) {
echo "The randomly chosen address is a depot. It can't be marked! Try again.";
return;
}
}
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Mark the address as "detected as departed"
$addressParameters = (array)Address::fromArray(array(
"route_id" => $routeId,
"route_destination_id" => $route_destination_id,
"is_departed" => TRUE
));
$address = new Address();
$result = $address->markAddress($addressParameters);
Route4Me::simplePrint($result);
<job id="Mark Address As Detected As Departed">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' Setting is_departed=true means the address was departed, while is_departed=false means it wasn't.
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
ri="241466F15515D67D3F951E2DA38DE76D"
rdi="167899269"
url=url&"?api_key="&apikey
url=url&"&route_id="&ri
url=url&"&route_destination_id="&rdi
jFile="mark_address_as_detected_as_departed_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=241466F15515D67D3F951E2DA38DE76D
SET routedestinationid=167899269
ECHO ON
:: Setting is_departed=true means the address was departed, while is_departed=false means it wasn't.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@mark_address_as_detected_as_departed_data.json" "%url%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=241466F15515D67D3F951E2DA38DE76D
routedestinationid=167899269
# Setting is_departed=true means the address was departed, while is_departed=false means it wasn't.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@mark_address_as_detected_as_departed_data.json" "$url?api_key=$apikey&route_id=$routeid&route_destination_id=$routedestinationid"
echo "Finished..."
sleep 15
unit MarkAddressAsDetectedAsDepartedUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TMarkAddressAsDetectedAsDeparted = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteDestinationId: integer;
IsDeparted: boolean);
end;
implementation
procedure TMarkAddressAsDetectedAsDeparted.Execute(RouteId: String;
RouteDestinationId: integer; IsDeparted: boolean);
var
ErrorString: String;
begin
Route4MeManager.Address.MarkAsDetectedAsDeparted(
RouteId, RouteDestinationId, IsDeparted, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('MarkAddressAsDetectedAsDeparted executed successfully')
else
WriteLn(Format('MarkAddressAsDetectedAsDeparted error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"route_destination_id": 167899269,
"alias": "",
"member_id": 1,
"address": "559 W Aurora Rd, Northfield, OH 44067",
"is_depot": false,
"timeframe_violation_state": null,
"timeframe_violation_time": 0,
"timeframe_violation_rate": 0,
"lat": 41.315116882324,
"lng": -81.558746337891,
"curbside_lat": 41.3151169,
"curbside_lng": -81.5587463,
"priority": null,
"route_id": "241466F15515D67D3F951E2DA38DE76D",
"original_route_id": null,
"optimization_problem_id": "9949C283BC5E062C307A5985DCEEF622",
"sequence_no": 1,
"geocoded": false,
"preferred_geocoding": null,
"failed_geocoding": false,
"geocodings": [],
"contact_id": 0,
"address_stop_type": "DELIVERY",
"is_visited": true,
"timestamp_last_visited": 1467820568,
"visited_lat": null,
"visited_lng": null,
"is_departed": true,
"departed_lat": null,
"departed_lng": null,
"timestamp_last_departed": 1467820841,
"group": null,
"customer_po": null,
"invoice_no": null,
"reference_no": null,
"order_no": null,
"weight": 0,
"cost": 0,
"revenue": 0,
"cube": 0,
"pieces": 0,
"first_name": null,
"last_name": null,
"email": null,
"phone": null,
"destination_note_count": 0,
"drive_time_to_next_destination": 0,
"abnormal_traffic_time_to_next_destination": 0,
"uncongested_time_to_next_destination": 0,
"traffic_time_to_next_destination": 0,
"distance_to_next_destination": 0,
"channel_name": "aa3b11ccc1cda9e76175801421644645",
"generated_time_window_start": null,
"generated_time_window_end": null,
"time_window_start": 48089,
"time_window_end": 48449,
"time_window_start_2": null,
"time_window_end_2": null,
"geofence_detected_visited_timestamp": null,
"geofence_detected_departed_timestamp": null,
"geofence_detected_service_time": null,
"geofence_detected_visited_lat": null,
"geofence_detected_visited_lng": null,
"geofence_detected_departed_lat": null,
"geofence_detected_departed_lng": null,
"time": 300,
"custom_fields": {},
"custom_fields_str_json": "{}",
"custom_fields_config": null,
"custom_fields_config_str_json": "null",
"notes": []
}
Mark as Visited
Mark an address as visited.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
address_id | integer | Address ID |
is_visited | integer | If equal to 1, the address was visited. |
member_id | integer | Member ID |
<job id="MarkAddressAsVisited">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/address/update_address_visited.php"
apikey="11111111111111111111111111111111"
route_id="5C15E83A4BE005BCD1537955D28D51D7"
address_id="160940135"
is_visited="1"
url=url&"?api_key="&apikey
url=url&"&route_id="&route_id
url=url&"&address_id="&address_id
url=url&"&is_visited="&is_visited
url=url&"&member_id=1"
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/actions/address/update_address_visited.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET addressid=160940135
SET isvisited=1
SET member=1
ECHO ON
:: Setting is_visited=1 means the address was visited, while is_visited=0 means it wasn't.
curl -o file1.txt -g -k -X PUT "%URL%?api_key=%apikey%&route_id=%routeid%&address_id=%addressid%&is_visited=%isvisited%&member=%member%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/address/update_address_visited.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
addressid=160940135
visited=1
member=1
# Setting is_visited=1 means the address was visited, while is_visited=0 means it wasn't.
curl -o file1.txt -g -k -X PUT "$url?api_key=$apikey&route_id=$routeid&address_id=$addressid&is_visited=$visited&member=$member"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Mark Address as Visited
/// </summary>
/// <returns> status </returns>
public void MarkAddressVisited(AddressParameters aParams)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
{
string errorString = "";
int result = route4Me.MarkAddressVisited(aParams, out errorString);
Console.WriteLine("");
if (result != null)
{
if (result==1)
{
Console.WriteLine("MarkAddressVisited executed successfully");
}
else
{
Console.WriteLine("MarkAddressVisited error: {0}", errorString);
}
}
else
{
Console.WriteLine("MarkAddressVisited error: {0}", errorString);
}
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Mark Address Visited
''' </summary>
''' <returns> status </returns>
Public Sub MarkAddressVisited(aParams As AddressParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim result As Integer = route4Me.MarkAddressVisited(aParams, errorString)
Console.WriteLine("")
If result = 1 Then
Console.WriteLine("MarkAddressVisited executed successfully")
Else
Console.WriteLine("MarkAddressVisited error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
var address *routing.Address // fetch address
address.IsVisited = true
updated, err := service.MarkAddressAsVisited(address)
if err != nil {
// handle errors
return
}
// do something with updated address
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Address;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
if (isset($addressRand['is_depot'])) {
if ($addressRand['is_depot']) {
echo "The randomly chosen address is a depot. It can't be marked! Try again.";
return;
}
}
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Mark the address as visited
$address = new Address();
$params = array(
"route_id" => $routeId,
"address_id" => $route_destination_id,
"is_visited" => 1,
"member_id" => 1
);
$result = $address->markAsVisited($params);
assert($result==1, "Can't mark the address as visited");
echo "<br> The address ".$route_destination_id." was marked as visited";
unit MarkAddressAsVisitedUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TMarkAddressAsVisited = class(TBaseExample)
public
procedure Execute(RouteId: String; AddressId, MemberId: integer;
IsVisited: boolean);
end;
implementation
procedure TMarkAddressAsVisited.Execute(RouteId: String;
AddressId, MemberId: integer; IsVisited: boolean);
var
ErrorString: String;
begin
Route4MeManager.Address.MarkAsVisited(
RouteId, AddressId, MemberId, IsVisited, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('MarkAddressAsVisited executed successfully')
else
WriteLn(Format('MarkAddressAsVisited error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
/actions/address/update_address_visited.php?api_key=...&route_id=...&address_id=...&is_visited=...
You can expect this API response:
{"status": "true"}
Mark as Departed
Mark a destination of a route as departed.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
address_id | integer | Address ID |
is_departed | integer | If equal to 1, the address was departed. |
member_id | integer | Member ID |
@ECHO OFF
SET url=https://api.route4me.com/api/route/mark_address_departed.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET addressid=160940135
SET isdeparted=1
SET member=1
ECHO ON
:: Setting is_departed=1 means the address was visited, while is_departed=0 means it wasn't.
curl -o file1.txt -g -k -X PUT "%url%?api_key=%apikey%&route_id=%routeid%&address_id=%addressid%&is_departed=%isdeparted%&member_id=%member%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/route/mark_address_departed.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
addressid=160940135
departed=1
member=1
# Setting is_departed=1 means the address was visited, while is_departed=0 means it wasn't.
curl -o file1.txt -g -k -X PUT "$url?api_key=$apikey&route_id=$routeid&address_id=$addressid&is_departed=$departed=$departed&member_id=$member"
echo "Finished..."
sleep 15
<job id="Mark Address As Departed">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/route/mark_address_departed.php"
apikey="11111111111111111111111111111111"
route_id="5C15E83A4BE005BCD1537955D28D51D7"
address_id="160940135"
is_departed="1"
url=url&"?api_key="&apikey
url=url&"&route_id="&route_id
url=url&"&address_id="&address_id
url=url&"&is_departed="&is_departed
url=url&"&member_id=1"
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Mark Address as Departed
/// </summary>
/// <returns> status </returns>
public void MarkAddressDeparted(AddressParameters aParams)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
{
string errorString = "";
int result = route4Me.MarkAddressDeparted(aParams, out errorString);
Console.WriteLine("");
if (result != null)
{
if (result == 1)
{
Console.WriteLine("MarkAddressDeparted executed successfully");
}
else
{
Console.WriteLine("MarkAddressDeparted error: {0}", errorString);
}
}
else
{
Console.WriteLine("MarkAddressDeparted error: {0}", errorString);
}
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Mark Addressas as Departed
''' </summary>
''' <returns> status </returns>
Public Sub MarkAddressDeparted(aParams As AddressParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim result As Integer = route4Me.MarkAddressDeparted(aParams, errorString)
Console.WriteLine("")
If result = 1 Then
Console.WriteLine("MarkAddressDeparted executed successfully")
Else
Console.WriteLine("MarkAddressDeparted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
var address *routing.Address // fetch address
address.IsDeparted = true
updated, err := service.MarkAddressAsDeparted(address)
if err != nil {
// handle errors
return
}
// do something with updated address
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Address;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get a random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Mark the address as departed
$address = new Address();
$params = array(
"route_id" => $routeId,
"address_id" => $route_destination_id,
"is_departed" => 1,
"member_id" => 1
);
$result = $address->markAsDeparted($params);
var_dump($result);
unit MarkAddressAsDepartedUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TMarkAddressAsDeparted = class(TBaseExample)
public
procedure Execute(RouteId: String; AddressId, MemberId: integer;
IsDeparted: boolean);
end;
implementation
procedure TMarkAddressAsDeparted.Execute(RouteId: String;
AddressId, MemberId: integer; IsDeparted: boolean);
var
ErrorString: String;
begin
Route4MeManager.Address.MarkAsDeparted(
RouteId, AddressId, MemberId, IsDeparted, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn('MarkAddressAsDeparted executed successfully')
else
WriteLn(Format('MarkAddressAsDeparted error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
/api/route/mark_address_departed.php?api_key=...&route_id=...&address_id=...&is_visited=...
You can expect this API response:
{"status": "true"}
Geocoding
Geocoding is the process of converting addresses (like “1600 Amphitheatre Parkway, Mountain View, CA”) into geographic coordinates (like latitude 37.423021 and longitude -122.083739), which you can then use to place markers on a map or position the map.
See the Geocoding JSON Schema in our GitHub repository.
Geocoding Properties
Attribute | Type | Description |
---|---|---|
key | string | A unique identifier for the geocoding. |
name | string | The specific description of the geocoding result. |
bbox | array | Boundary box. Datatype |
lat | number | Latitude |
lng | number | Longitude |
confidence | string | Confidence |
type | string | Is used for tooltip |
postalCode | string | Postal code |
countryRegion | string | Country region |
curbside_coordinates | array | Curbside coordinates. Datatype |
Forward Geocode Address
Forward geocoding is the process of converting place name information into latitude and longitude values.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
addresses | string | A comma-separated list of addresses. |
format | string | Response format |
<job id="Forward Geocoding">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of forward geocoding.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/geocoder.php"
apikey="11111111111111111111111111111111"
format="xml"
addrs="Los20%Angeles20%International20%Airport,20%CA"
url=url&"?api_key="&apikey
url=url&"&format="&format
url=url&"&addresses="&addrs
jFile=""
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
setlocal enableDelayedExpansion
SET url=https://api.route4me.com/api/geocoder.php
SET apikey=11111111111111111111111111111111
SET format=json
SET "address=Los Angeles International Airport, CA"
SET "address=!address: =%%20!"
ECHO ON
:: The example refers to the process of forward geocoding.
curl -o file1.txt -k -g -X POST "%URL%?api_key=%apikey%&format=%format%&addresses=%address%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/geocoder.php
apikey=11111111111111111111111111111111
format=xml
addrs="Los20%Angeles20%International20%Airport,20%CA"
# The example refers to the process of forward geocoding.
curl -o file1.txt -g -X POST "$url?api_key=$apikey&format=$format&addresses=$addrs"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$geocodingParameters = array(
'strExportFormat' => 'json',
'addresses' => 'Los20%Angeles20%International20%Airport,20%CA'
);
$fGeoCoding = new Geocoding();
$fgResult = $fGeoCoding->forwardGeocoding($geocodingParameters);
if ($geocodingParameters['strExportFormat']=='json') {
Route4Me::simplePrint($fgResult);
} else {
Route4Me::simplePrint($fgResult['destination']);
}
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Forward Geocoding
/// </summary>
/// <returns> XML object </returns>
public void GeocodingForward(GeocodingParameters geoParams)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString = "";
string result = route4Me.Geocoding(geoParams, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("GeocodingForward executed successfully");
}
else
{
Console.WriteLine("GeocodingForward error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Forward geocoding
''' </summary>
''' <returns> XML object </returns>
Public Sub GeocodingForward(geoParams As GeocodingParameters)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim result As String = route4Me.Geocoding(geoParams, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("GeocodingForward executed successfully")
Else
Console.WriteLine("GeocodingForward error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
response = route4me.address.geocode(addresses="Boston-Cambridge-Quincy, MA-NH, USA")
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/geocoding"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &geocoding.Service{Client: client}
geo, err := service.ForwardAddress("Los20%Angeles20%International20%Airport,20%CA")
if err != nil {
//handle error
}
//do something with geo
}
unit ForwardGeocodeAddressUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TForwardGeocodeAddress = class(TBaseExample)
public
procedure Execute(Address: String);
end;
implementation
uses GeocodingUnit;
procedure TForwardGeocodeAddress.Execute(Address: String);
var
ErrorString: String;
Geocoding: TGeocoding;
begin
Geocoding := Route4MeManager.Geocoding.ForwardGeocodeAddress(Address, ErrorString);
try
WriteLn('');
if (Geocoding <> nil) and
(Geocoding.Latitude.IsNotNull) and (Geocoding.Longitude.IsNotNull) then
begin
WriteLn('ForwardGeocodeAddress executed successfully');
WriteLn(Format('Latitude: %f, Longitude: %f',
[Geocoding.Latitude.Value, Geocoding.Longitude.Value]));
end
else
WriteLn(Format('ForwardGeocodeAddress error: "%s"', [ErrorString]));
finally
FreeAndNil(Geocoding);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
const char* addrs = "Los20%Angeles20%International20%Airport,20%CA";
const char* format = "json";
if(route.batch_geocoding(addrs, format) == 0)
{
cout << "Geocoding done:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Geocoding failed: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const address = "Los Angeles International Airport, CA"
route4me.Geocoding.forward(address, (err, coordinates) => {
debug("error ", err)
debug("result ", coordinates)
// Expectations about result
expect(err).is.null
expect(coordinates).is.not.empty
expect(coordinates).to.have.length.at.least(1)
const c = coordinates[0]
expect(c).has.property("lat", 33.9415889)
expect(c).has.property("lng", -118.40853)
expect(c).has.property("original", "Los Angeles International Airport, CA")
// TODO: remove `done` call from examples
done()
})
})
})
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char addrs[] = "Los20%25Angeles20%25International20%25Airport%2C20%25CA";
const char format[] = "json";
if (!batch_geocoding(addrs, format))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
/api/geocoder.php?api_key=...&addresses=...&format=...
You can expect this API response (in XML format):
<?xml version="1.0" encoding="UTF-8" ?>
<destinations>
<destination
destination="20 International Rd, Los Angeles, CA 90045, USA"
lat="33.9439897"
lng="-118.3815557"
type="street_address"
confidence="high"
original="Los20International20CA"
/>
</destinations>
Reverse Geocode Address
With reverse geocoding, you can retrieve an address name from a geographical location point (latitude, longitude). Using this method, you can get the nearest locations to a specific address name. You can also get larger scale objects (such as street addresses, places, neighborhoods, county, state or country) which include a specified address.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
addresses | string | Geographic location |
format | string | Response format |
<job id="Reverse Geocoding">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of reverse geocoding.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/geocoder.php"
apikey="11111111111111111111111111111111"
format="xml"
addrs="42.35863,-71.05670"
url=url&"?api_key="&apikey
url=url&"&format="&format
url=url&"&addresses="&addrs
jFile=""
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api/geocoder.php
SET apikey=11111111111111111111111111111111
SET format=xml
SET addrs="42.35863,-71.05670"
ECHO ON
:: The example refers to the process of reverse geocoding.
curl -o file1.txt -g -X POST "%url%?api_key=%apikey%&format=%format%&addresses=%addrs%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/geocoder.php
apikey=11111111111111111111111111111111
format=json
addrs="33.945705,-118.391105"
# The example refers to the process of reverse geocoding.
curl -o file1.txt -g -X POST "$url?api_key=$apikey&addresses=$addrs"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$geocodingParameters = array(
'format' => 'xml',
'addresses' => '42.35863,-71.05670'
);
$fGeoCoding = new Geocoding();
$fgResult = $fGeoCoding->reverseGeocoding($geocodingParameters);
if ($geocodingParameters['format']=='json') {
foreach ($fgResult as $dest) {
Route4Me::simplePrint($dest);
echo "<br>";
}
} else {
foreach ($fgResult['destination'] as $dest) {
Route4Me::simplePrint($dest);
echo "<br>";
}
}
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Reverse Geocoding
/// </summary>
/// <returns> XML object </returns>
public void ReverseGeocoding()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
GeocodingParameters geoParams = new GeocodingParameters { Addresses = "42.35863,-71.05670" };
// Run the query
string errorString = "";
string result = route4Me.Geocoding(geoParams, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("ReverseGeocoding executed successfully");
}
else
{
Console.WriteLine("ReverseGeocoding error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Reverse geocoding
''' </summary>
''' <returns> XML object </returns>
Public Sub ReverseGeocoding()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim geoParams As New GeocodingParameters With { _
.Addresses = "42.35863,-71.05670"
}
' Run the query
Dim errorString As String = ""
Dim result As String = route4Me.Geocoding(geoParams, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("ReverseGeocoding executed successfully")
Else
Console.WriteLine("ReverseGeocoding error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
response = route4me.address.geocode(addresses="42.35863,-71.05670")
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/geocoding"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &geocoding.Service{Client: client}
geo, err := service.ReverseAddress(33.945705, -118.391105)
if err != nil {
//handle error
}
//do something with geo
}
unit ReverseGeocodeAddressUnit;
interface
uses SysUtils, BaseExampleUnit, DirectionPathPointUnit;
type
TReverseGeocodeAddress = class(TBaseExample)
public
procedure Execute(Location: TDirectionPathPoint);
end;
implementation
uses GeocodingUnit;
procedure TReverseGeocodeAddress.Execute(Location: TDirectionPathPoint);
var
ErrorString: String;
Geocoding: TGeocodingList;
i: integer;
begin
Geocoding := Route4MeManager.Geocoding.ReverseGeocodeAddress(Location, ErrorString);
try
WriteLn('');
if (Geocoding.Count > 0) then
begin
WriteLn('ReverseGeocodeAddress executed successfully');
for i := 0 to Geocoding.Count - 1 do
if Geocoding[i].Destination.IsNotNull then
WriteLn(Format('Destination: %s', [Geocoding[i].Destination.Value]));
end
else
WriteLn(Format('ReverseGeocodeAddress error: "%s"', [ErrorString]));
finally
FreeAndNil(Geocoding);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
const char* addrs = "33.945705,-118.391105";
const char* format = "json";
if(route.batch_geocoding(addrs, format) == 0)
{
cout << "Geocoding done:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Geocoding failed: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char* addrs = "33.945705,-118.391105";
const char* format = "json";
if (!reverse_geocoding(addrs, format))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api/geocoder.php?api_key=...&addresses=...&format=...
See the sample XML response of this method.
Batch Geocode Addresses
Batch geocoding is the process of getting geographic addresses by sending many address objects simultaneously. In the case of a small number of addresses (n <= 10), you can use the string with the addresses delimited by a double pipe “||” character and send HTTP data as usual (in both cases: forward and reverse geocoding). For a large number of addresses (n > 10), you can delimit the addresses using the newline character “\n” and send HTTP data as form data.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
addresses | string | Geographic location |
strExportFormat | string | Response format |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
setlocal enableDelayedExpansion
SET url=https://api.route4me.com/api/geocoder.php
SET apikey=11111111111111111111111111111111
SET format=json
:: You can specify many addresses, delimited by /n, in one string.
SET addrs="Los Angeles International Airport, CA\nn512,Florida Pl,Barberton,OH,44203\n3495,Purdue St,Cuyahoga Falls,OH,44221"
SET "addrs=!addrs: =%%20!"
ECHO ON
:: The example refers to the process of forward geocoding.
curl -o file1.txt -k -g -X POST -F "strExportFormat=json" -F "addresses=%addrs%" "%url%?api_key=%apikey%"
timeout /t 30
An example for this language will be added in the future. For now, please see the other languages available for reference.
public void BatchGeocodingForward()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
GeocodingParameters geoParams = new GeocodingParameters
{
Addresses ="Los Angeles International Airport, CA\n3495 Purdue St, Cuyahoga Falls, OH 44221",
Format = "json"
};
// Run the query
string errorString = "";
string result = route4Me.BatchGeocoding(geoParams, out errorString);
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Example refers to the process of batch geocoding of the addresses
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$addressList = array(
"Los Angeles International Airport, CA",
"n512,Florida Pl,Barberton,OH,44203",
"3495,Purdue St,Cuyahoga Falls,OH,44221"
);
$addressesString = implode('\n', $addressList);
$geocodingParameters = array(
'strExportFormat' => 'json',
'addresses' => $addressesString
);
$fGeoCoding = new Geocoding();
$bgResults = $fGeoCoding->forwardGeocoding($geocodingParameters);
if ($geocodingParameters['strExportFormat']=='json') {
foreach ($bgResults as $bgResult) {
Route4Me::simplePrint($bgResult);
echo "<br>";
}
} else {
foreach ($bgResults['destination'] as $bgResult) {
Route4Me::simplePrint($bgResult);
echo "<br>";
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/geocoder.php?api_key=...
You can expect this API response:
{
[{
"address": "Los Angeles International Airport (LAX), 1 World Way, Los Angeles, CA 90045, USA",
"lat": 33.9415889,
"lng": -118.40853,
"type": "airport, establishment, point_of_interest",
"confidence": "medium",
"original": "Los%20Angeles%20International%20Airport,%20CA"
},
{
"address": "Florida Pl, Barberton, OH 44203, United States",
"lat": 41.00379,
"lng": -81.59904,
"type": "street",
"confidence": "medium",
"original": "n512,Florida%20Pl,Barberton,OH,44203"
},
{
"address": "3495 Purdue St, Cuyahoga Falls, OH 44221, United States",
"lat": 41.16297,
"lng": -81.47905,
"type": "houseNumber",
"confidence": "medium",
"original": "3495,Purdue%20St,Cuyahoga%20Falls,OH,44221"
}]
}
Tracking
GPS Tracking refers to the surveillance of location through the use of a Global Positioning System (GPS) to track the location of an entity or object remotely. This technology can pinpoint longitude, latitude, ground speed, and course direction of a target.
See the Tracking History JSON Schema in our GitHub repository.
Tracking Properties
Attribute | Type | Description |
---|---|---|
s | number | Speed |
lt | number | Latitude |
lg | number | Longitude |
d | string | Direction/Heading |
ts | string | Timestamp |
ts_friendly | string | Friendly timestamp |
Get Asset Tracking Data
A user has many assets (such as a package) that they must deliver. The user uploads a list of generated tracking numbers and the corresponding delivery addresses, and Route4Me creates one or more delivery routes. As packages are added to each batch, the routes are re-balanced until all the packages have been added to the system. Now that all the tracking numbers are in the system, the user needs to label and sequence each package. Doing it by hand is tedious because they don’t know which route each package goes on. By re-scanning each package manually, or on a conveyor, the client application will automatically output the route ID and the sequence number in the route that the package is found in, querying the system with the package’s unique ID.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
tracking | string | Tracking number |
<job id="Asset Tracking">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' You should insert real test data and your API key for accurate testing.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/status.php"
apikey="11111111111111111111111111111111"
tracking="Q7G9P1L9"
url=url&"?api_key="&apikey
url=url&"&tracking="&tracking
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
r4m = Route4Me(KEY)
route = r4m.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route_tracking(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Optimization Problem ID: {}'.format(response.optimization_problem_id)
print 'Route ID: {}'.format(response.route_id)
for i, address in enumerate(response.addresses):
print 'Address #{}'.format(i)
print '\tAddress: {0}'.format(address.address)
print '\tRoute Destination ID: {0}'.format(address.route_destination_id)
print 'Tracking History: {}'.format(','.join(response.tracking_history))
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\Format;
use Route4Me\TrackSetParams;
use Route4Me\Track;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example refers to the process of retrieving asset tracking data.
Route4Me::setApiKey('11111111111111111111111111111111');
$trackingNumber = null;
// Get a tracking number from a random route destination
$route = new Route();
$routeId = $route->getRandomRouteId(0, 20);
assert(!is_null($routeId), "Can't retrieve a random route ID");
$addresses = $route->GetAddressesFromRoute($routeId);
assert(!is_null($addresses), "Can't retrieve a random route ID");
foreach ($addresses as $addr1) {
if (!is_null($addr1->tracking_number)) {
$trackingNumber = $addr1->tracking_number;
break;
}
}
assert(!is_null($trackingNumber), "Can't select a tracking number");
$params = array(
'tracking' => $trackingNumber
);
$route = new Route();
$result = $route->GetAssetTracking($params);
foreach ($result as $key => $value)
{
if (is_array($value)) {
Route4Me::simplePrint($value, true);
} else {
echo "$key => $value <br>";
}
}
@ECHO OFF
SET url=https://api.route4me.com/api.v4/status.php
SET apikey=11111111111111111111111111111111
SET tracking="Q7G9P1L9"
:: The example refers to the process of retrieving asset tracking data.
ECHO ON
curl -o file1.txt -g -X GET -k "%url%?api_key=%apikey%&tracking=%tracking%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/status.php
apikey=11111111111111111111111111111111
tracking="Q7G9P1L9"
# The example refers to the process of retrieving asset tracking data.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&tracking=$tracking"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Find Asset (Asset tracking)
/// </summary>
public void FindAsset()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string tracking = "Q7G9P1L9";
// Run the query
string errorString = "";
FindAssetResponse result = route4Me.FindAsset(tracking, out errorString);
DateTime nDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("FindAsset executed successfully");
Console.WriteLine("tracking_number: " + result.TrackingNumber);
foreach (FindAssetResponseLocations loc1 in result.Locations)
{
Console.WriteLine("lat: " + loc1.Latitude);
Console.WriteLine("lng: " + loc1.Longitude);
Console.WriteLine("icon: " + loc1.Icon);
}
foreach (KeyValuePair<string, string> kvp in result.CustomData)
{
Console.WriteLine(kvp.Key + ": " + kvp.Value);
}
foreach (FindAssetResponseArrival arriv1 in result.Arrival)
{
Console.WriteLine("from_unix_timestamp: " + nDateTime.AddSeconds(arriv1.FromUnixTimestamp>=0 ? (double)arriv1.FromUnixTimestamp : 0));
Console.WriteLine("to_unix_timestamp: " + nDateTime.AddSeconds(arriv1.ToUnixTimestamp>=0 ? (double)arriv1.ToUnixTimestamp : 0));
}
Console.WriteLine("delivered: " + result.Delivered);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("FindAsset error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Find Asset (Asset tracking)
''' </summary>
Public Sub FindAsset()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim tracking As String = "Q7G9P1L9"
' Run the query
Dim errorString As String = ""
Dim result As FindAssetResponse = route4Me.FindAsset(tracking, errorString)
Dim nDateTime As DateTime = New DateTime(1970, 1, 1, 0, 0, 0, 0)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("FindAsset executed successfully")
Console.WriteLine("tracking_number: " & result.TrackingNumber)
For Each loc1 As FindAssetResponseLocations In result.Locations
Console.WriteLine("lat: " & loc1.Latitude)
Console.WriteLine("lng: " & loc1.Longitude)
Console.WriteLine("icon: " & loc1.Icon)
Next
For Each kvp As KeyValuePair(Of String, String) In result.CustomData
Console.WriteLine(kvp.Key & ": " & kvp.Value)
Next
For Each arriv1 As FindAssetResponseArrival In result.Arrival
Console.WriteLine("from_unix_timestamp: " & nDateTime.AddSeconds(arriv1.FromUnixTimestamp))
Console.WriteLine("to_unix_timestamp: " & nDateTime.AddSeconds(arriv1.ToUnixTimestamp))
Next
Console.WriteLine("delivered: " & result.Delivered)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("FindAsset error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/tracking"
"github.com/route4me/route4me-go-sdk/routing" //You might need routing for device type
)
func main() {
client := route4me.NewClient("your-api-key")
service := &tracking.Service{Client: client}
assetTracking, err := service.TrackAssets(`tracking-code`)
if err != nil {
//handle errors
}
//assetTracking contains all tracking data
}
unit GetAssetTrackingDataUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAssetTrackingData = class(TBaseExample)
public
procedure Execute(TrackingNumber: String);
end;
implementation
uses
TrackingHistoryUnit, TrackingHistoryResponseUnit, TrackingDataUnit;
procedure TGetAssetTrackingData.Execute(TrackingNumber: String);
var
ErrorString: String;
TrackingData: TTrackingData;
begin
TrackingData := Route4MeManager.Tracking.GetAssetTrackingData(
TrackingNumber, ErrorString);
try
WriteLn('');
if (TrackingData <> nil) then
begin
WriteLn('GetAssetTrackingData executed successfully');
WriteLn('');
if TrackingData.Delivered.IsNotNull then
if TrackingData.Delivered.Value then
WriteLn('Package was delivered')
else
WriteLn('Package was not delivered');
end
else
WriteLn(Format('GetAssetTrackingData error: "%s"', [ErrorString]));
finally
FreeAndNil(TrackingData);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *id = "Q7G9P1L9";
int ret = route.asset_tracking(id);
if (ret == 0)
cout << "Tracking: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Tracking error: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char id[] = "Q7G9P1L9";
if (!asset_tracking(id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/status.php?api_key=...&tracking=...
You can expect this API response:
{
"tracking_number": "Q7G9P1L9",
"status_history": [],
"locations": [{
"lat": 41.162971,
"lng": -81.47905,
"icon": "destination"
}],
"custom_data": {
"package": "Books"
},
"arrival": [{
"from_unix_timestamp": 1465965432,
"to_unix_timestamp": 1465969032
}],
"delivered": false
}
Get Route Tracking Data
a) Get the device’s last location history.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
<job id="Get Device Last Location History">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
'The example refers to the process of getting the last location history of a GPS device.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/route.php"
apikey="11111111111111111111111111111111"
routeid="fgfg4f56g4fd54gfdgdfgf4654"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void TrackDeviceLastLocationHistory(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Create the GPS parameters
GPSParameters gpsParameters = new GPSParameters()
{
Format = Format.Csv.Description(),
RouteId = routeId,
Latitude = 33.14384,
Longitude = -83.22466,
Course = 1,
Speed = 120,
DeviceType = DeviceType.IPhone.Description(),
MemberId = 1,
DeviceGuid = "TEST_GPS",
DeviceTimestamp = "2014-06-14 17:43:35"
};
string errorString;
string response = route4Me.SetGPS(gpsParameters, out errorString);
if (!string.IsNullOrEmpty(errorString))
{
Console.WriteLine("SetGps error: {0}", errorString);
return;
}
Console.WriteLine("SetGps response: {0}", response);
GenericParameters genericParameters = new GenericParameters();
genericParameters.ParametersCollection.Add("route_id", routeId);
genericParameters.ParametersCollection.Add("device_tracking_history", "1");
var dataObject = route4Me.GetLastLocation(genericParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("TrackDeviceLastLocationHistory executed successfully");
Console.WriteLine("");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
Console.WriteLine("State: {0}", dataObject.State);
Console.WriteLine("");
dataObject.TrackingHistory.ForEach(th =>
{
Console.WriteLine("Speed: {0}", th.Speed);
Console.WriteLine("Longitude: {0}", th.Longitude);
Console.WriteLine("Latitude: {0}", th.Latitude);
Console.WriteLine("Time Stamp: {0}", th.TimeStampFriendly);
Console.WriteLine("");
});
}
else
{
Console.WriteLine("TrackDeviceLastLocationHistory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub TrackDeviceLastLocationHistory(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Create the GPS parameters
Dim gpsParameters As New GPSParameters() With { _
.Format = EnumHelper.GetEnumDescription(Format.Csv), _
.RouteId = routeId, _
.Latitude = 33.14384, _
.Longitude = -83.22466, _
.Course = 1, _
.Speed = 120, _
.DeviceType = EnumHelper.GetEnumDescription(DeviceType.IPhone), _
.MemberId = 1, _
.DeviceGuid = "TEST_GPS", _
.DeviceTimestamp = "2014-06-14 17:43:35" _
}
Dim errorString As String = ""
Dim response As String = route4Me.SetGPS(gpsParameters, errorString)
If Not String.IsNullOrEmpty(errorString) Then
Console.WriteLine("SetGps error: {0}", errorString)
Return
End If
Console.WriteLine("SetGps response: {0}", response)
Dim genericParameters As New GenericParameters()
genericParameters.ParametersCollection.Add("route_id", routeId)
genericParameters.ParametersCollection.Add("device_tracking_history", "1")
Dim dataObject = route4Me.GetLastLocation(genericParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("TrackDeviceLastLocationHistory executed successfully")
Console.WriteLine("")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Console.WriteLine("State: {0}", dataObject.State)
Console.WriteLine("")
For Each th As TrackingHistory In dataObject.TrackingHistory
Console.WriteLine("Speed: {0}", th.Speed)
Console.WriteLine("Longitude: {0}", th.Longitude)
Console.WriteLine("Latitude: {0}", th.Latitude)
Console.WriteLine("Time Stamp: {0}", th.TimeStampFriendly)
Console.WriteLine("")
Next
Else
Console.WriteLine("TrackDeviceLastLocationHistory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
FORMAT,
DEVICE_TYPE
)
import datetime as dt
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
gps = route4me.setGPS
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
gps.add(params={'format': FORMAT.CSV,
'route_id': response[0].route_id,
'lng': -109.0803888,
'course': 1,
'device_type': DEVICE_TYPE.IPHONE,
'member_id': 1,
'device_guid': 'qweqweqwe',
})
# SET GPS
for i in xrange(4):
gps.add(params={
'speed': 120 + i,
'device_timestamp': dt.datetime.strftime(dt.datetime.now(),
"%Y-%m-%d %H:%M:%S"),
'lat': 41.8927521 + i,
})
print gps.params
print 'GPS Params SET %s' % gps.set_gps_track()
route.add(params={
'route_id': response[0].route_id,
'device_tracking_history': 1,
})
response = route.get_route()
for history in response.tracking_history:
print 'lng: %s lat: %s time: %s speed: %s ' % (history.lg,
history.lt,
history.ts_friendly,
history.s)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.tracking;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.tracking.TrackingManager;
public class TrackDeviceLastLocationHistory {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
TrackingManager manager = new TrackingManager(apiKey);
try {
DataObject obj = manager.getLastLocation("1402075EBA9A32939B2696DB1D7EE48E");
System.out.println(obj.getTrackingHistory());
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\Format;
use Route4Me\TrackSetParams;
use Route4Me\Track;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get a random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 20);
assert(!is_null($routeId), "Can't retrieve a random route ID");
echo "routeId -> $routeId <br><br>";
// Set GPS position to the selected route and use the correct member_id corresponding to the API key.
$params = TrackSetParams::fromArray(array(
'format' => Format::SERIALIZED,
'route_id' => $routeId,
'member_id' => 105323,
'course' => 3,
'speed' => 100,
'lat' => 41.8927521,
'lng' => -109.0803888,
'device_type' => DeviceType::IPHONE,
'device_guid' => 'qweqweqwe',
'device_timestamp' => date('Y-m-d H:i:s')
));
$status = Track::set($params);
assert(!is_null($status), "Can't send GPS position to the selected route");
assert(isset($status['status']), "Can't send GPS position to the selected route");
assert($status['status'], "Can't send GPS position to the selected route");
if (!$status) {
echo "Setting of GPS position failed";
return;
}
$params = array(
'route_id' => $routeId,
'device_tracking_history' => '1'
);
$result = $route->GetLastLocation($params);
if (isset($result->tracking_history))
foreach ($result->tracking_history as $history) {
echo "Speed --> ".$history['s']."<br>";
echo "course --> ".$history['d']."<br>";
echo "Timestamp --> ".$history['ts_friendly']."<br>";
echo "Latitude --> ".$history['lt']."<br>";
echo "Longitude --> ".$history['lg']."<br>";
echo "========================================<br><br>";
}
package TrackDeviceLastLocationHistory;
use strict;
use warnings FATAL => 'all';
use Data::Dumper;
use Route4MeSDK::DataTypes::OptimizationState;
sub TrackDeviceLastLocationHistory {
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $gpsParameters = GPSParameters->new(
format => Format->Csv,
route_id => $routeId,
lat => 33.14384,
lng => -83.22466,
course => 1,
speed => 120,
device_type => DeviceType->IPhone,
member_id => 1,
device_guid => "TEST_GPS",
device_timestamp => "2014-06-14 17:43:35"
);
my $errorString="";
my $response = $route4Me->setGPS($gpsParameters, $errorString);
print "\n";
if (!$response->{'status'}) {
print "SetGps not available for this account\n";
return;
} elsif (!$errorString) {
printf "SetGps response: %s\n\n", $response;
} else {
printf "SetGps error: %s\n\n", $errorString;
return;
}
my $dataObject = $route4Me->getLastLocation({route_id => $routeId, device_tracking_history => 1}, $errorString);
print "\n";
if ($dataObject)
{
printf "TrackDeviceLastLocationHistory executed successfully";
print "\n";
printf "Optimization Problem ID: %s\n", $dataObject->optimization_problem_id;
printf "State: %s\n", OptimizationState->get_optimization_state($dataObject->state);
print "\n";
foreach my $th (@{$dataObject->tracking_history}) {
printf "Speed: %s\n", $th->s;
printf "Longitude: %s\n", $th->lg;
printf "Latitude: %s\n", $th->lt;
printf "Time Stamp: %s\n", $th->ts_friendly;
print "\n";
};
}
else
{
printf "TrackDeviceLastLocationHistory error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/route.php
SET apikey=11111111111111111111111111111111
SET routeid=32F63FD03B08A5754CF2D516198FC8BA
:: The example refers to the process of getting the last location history of a GPS device.
ECHO ON
curl -o file1.txt -k -g -X GET "%url%?route_id=%routeid%&api_key=%apikey%&device_tracking_history=1"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/route.php
apikey=11111111111111111111111111111111
routeid=32F63FD03B08A5754CF2D516198FC8BA
# The example refers to the process of getting the last location history of a GPS device.
curl -o file1.txt -g -X GET "$url?route_id=$routeid&api_key=$apikey&device_tracking_history=1"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/tracking"
"github.com/route4me/route4me-go-sdk/routing" //You might need routing for device type
)
func main() {
client := route4me.NewClient("your-api-key")
service := &tracking.Service{Client: client}
dataObject, err := service.GetLastLocation("route-id")
if err != nil {
//handle errors
}
//dataObject.TrackingHistory contains all tracking history
}
unit TrackDeviceLastLocationHistoryUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TTrackDeviceLastLocationHistory = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses GPSParametersUnit, EnumsUnit, GenericParametersUnit, DataObjectUnit,
TrackingHistoryUnit;
procedure TTrackDeviceLastLocationHistory.Execute(RouteId: String);
var
ErrorString: String;
Parameters: TGPSParameters;
GenericParameters: TGenericParameters;
Response: String;
DataObject: TDataObject;
HistoryStep: TTrackingHistory;
begin
Parameters := TGPSParameters.Create();
try
Parameters.Format := TFormatDescription[TFormatEnum.Csv];
Parameters.RouteId := RouteId;
Parameters.Latitude := 33.14384;
Parameters.Longitude := -83.22466;
Parameters.Course := 1;
Parameters.Speed := 120;
Parameters.DeviceType := TDeviceTypeDescription[TDeviceType.IPhone];
Parameters.MemberId := 1;
Parameters.DeviceGuid := 'TEST_GPS';
Parameters.DeviceTimestamp := '2014-06-14 17:43:35';
Response := Route4MeManager.Tracking.SetGPS(Parameters, ErrorString);
if (ErrorString <> EmptyStr) then
begin
WriteLn(Format('SetGps error: "%s"', [ErrorString]));
Exit;
end;
WriteLn(Format('SetGps response: %s', [Response]));
GenericParameters := TGenericParameters.Create();
try
GenericParameters.AddParameter('route_id', RouteId);
GenericParameters.AddParameter('device_tracking_history', '1');
DataObject := Route4MeManager.Tracking.GetLastLocation(GenericParameters, ErrorString);
try
WriteLn('');
if (DataObject <> nil) then
begin
WriteLn('TrackDeviceLastLocationHistory executed successfully');
WriteLn('');
WriteLn(Format('Optimization Problem ID: %s', [DataObject.OptimizationProblemId]));
WriteLn(Format('State: %s',
[TOptimizationDescription[TOptimizationState(DataObject.State)]]));
WriteLn('');
for HistoryStep in DataObject.TrackingHistories do
begin
WriteLn(Format('Speed: %f', [HistoryStep.Speed.Value]));
WriteLn(Format('Longitude: %f', [HistoryStep.Longitude.Value]));
WriteLn(Format('Latitude: %f', [HistoryStep.Latitude.Value]));
WriteLn(Format('Time Stamp: %s', [HistoryStep.TimeStamp.Value]));
WriteLn('');
end;
end
else
WriteLn(Format('TrackDeviceLastLocationHistory error: "%s"', [ErrorString]));
finally
FreeAndNil(DataObject);
end;
finally
FreeAndNil(GenericParameters);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Track device location history
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const int POINTS = 3;
const char *t[POINTS] = {"2014-07-28 17:23:35", "2014-07-28 17:33:35", "2014-07-28 17:43:35"};
double speed0 = 120;
double lng0 = -83.22466;
const char *route_id = "AC16E7D338B551013FF34266FE81A5EE";
Json::Value params(Json::objectValue);
params["route_id"] = route_id;
params["format"] = CRoute4Me::Csv;
params["lat"] = 33.14384;
params["course"] = 1;
params["device_type"] = CRoute4Me::IPhone;
params["device_guid"] = "TEST_GPS";
params["member_id"] = 1;
int ret = 0;
for(int i = 0; i < POINTS; i++)
{
params["lng"] = lng0 - (double)i / 10;
params["speed"] = speed0 + i * 10;
params["device_timestamp"] = t[i];
if(route.set_gps(params) != 0)
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
break;
}
}
if(ret == 0)
{
Json::Value params2(Json::objectValue);
params2["route_id"] = route_id;
params2["device_tracking_history"] = 1;
if(route.get_route(params2) == 0)
{
cout << "Track device location history:" << endl << Json::StyledWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const routeId = "32F63FD03B08A5754CF2D516198FC8BA"
const options = { includeTracking: true }
route4me.Routes.get(routeId, options, (err, route) => {
debug("error ", err)
debug("result ", route)
// Expectations about result
expect(err).is.null
expect(route).is.not.empty
expect(route).has.property("route_id", "32F63FD03B08A5754CF2D516198FC8BA")
expect(route).has.property("tracking_history")
.that.is.an("array")
// TODO: remove `done` call from examples
done()
})
})
})
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/route.php?api_key=...&route_id=...&device_tracking_history=...
See the sample JSON response of this method.
b) Get the device’s location history from a time range.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
time_period | string | If equal to ‘custom’, you can get the device’s location history from a time range. |
start_date | integer | Start of the time range in Epoch format |
end_date | integer | End of the time range in Epoch format |
<job id="Get Device Location History From Time Range">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example refers to the process of getting the last location history of a device based on a specified time range.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/track/get_device_location.php"
apikey="11111111111111111111111111111111"
route_id="814FB49CEA8188D134E9D4D4B8B0DAF7"
format="json"
time_period="custom"
start=UDATE("20/10/2016 00:00:00")
tend=UDATE("26/10/2016 23:59:59")
url=url&"?api_key="&apikey
url=url&"&route_id="&route_id
url=url&"&format="&format
url=url&"&time_period="&time_period
url=url&"&start_date="&start
url=url&"&end_date="&tend
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
function UDate(oldDate)
UDate = DateDiff("s", "01/01/1970 00:00:00", oldDate)
end function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api/track/get_device_location.php
SET apikey=11111111111111111111111111111111
SET routeid=814FB49CEA8188D134E9D4D4B8B0DAF7
SET time_period=custom
call get_unix_time 2016-10-20_00:00:00 start
call get_unix_time 2016-10-26_23:59:59 end
:: The example refers to the process of getting the last location history of a device based on a specified time range.
:: See the other parameters at: https://github.com/route4me/route4me-json-schemas/blob/master/TrackingHistory_request.json
ECHO ON
curl -o file1.txt -k -g -X GET "%url%?route_id=%routeid%&api_key=%apikey%&format=json&time_period=%time_period%&start_date=%start%&end_date=%end%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/track/get_device_location.php
apikey=11111111111111111111111111111111
routeid=814FB49CEA8188D134E9D4D4B8B0DAF7
time_period=custom
start=$(date -d"2016-10-20T00:00" +%s)
end=$(date -d"2016-10-26T23:59" +%s)
# The example refers to the process of getting the last location history of a device based on a specified time range.
# See other parameters at: https://github.com/route4me/route4me-json-schemas/blob/master/TrackingHistory_request.json
curl -o file1.txt -k -g -X GET "$url?route_id=$routeid&api_key=$apikey&format=json&time_period=$time_period&start_date=$start&end_date=$end"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Device History from Time Range
/// </summary>
public void GetDeviceHistoryTimeRange(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
int uStartTime = 0;
int uEndTime = 0;
uStartTime = (int)(new DateTime(2016, 10, 20, 0, 0, 0) - (new DateTime(1970, 1, 1, 0, 0, 0))).TotalSeconds;
uEndTime = (int)(new DateTime(2016, 10, 26, 23, 59, 59) - (new DateTime(1970, 1, 1, 0, 0, 0))).TotalSeconds;
GPSParameters gpsParameters = new GPSParameters
{
Format = "csv",
RouteId = routeId,
time_period = "custom",
start_date = uStartTime,
end_date = uEndTime
};
string errorString = "";
string response = route4Me.SetGPS(gpsParameters, out errorString);
if (!string.IsNullOrEmpty(errorString))
{
Console.WriteLine("SetGps error: {0}", errorString);
return;
}
Console.WriteLine("SetGps response: {0}", response);
GenericParameters genericParameters = new GenericParameters();
genericParameters.ParametersCollection.Add("route_id", routeId);
genericParameters.ParametersCollection.Add("device_tracking_history", "1");
var dataObject = route4Me.GetLastLocation(genericParameters, out errorString);
Console.WriteLine("");
if (dataObject != null)
{
Console.WriteLine("GetDeviceHistoryTimeRange executed successfully");
Console.WriteLine("");
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId);
Console.WriteLine("State: {0}", dataObject.State);
Console.WriteLine("");
foreach (TrackingHistory th in dataObject.TrackingHistory)
{
Console.WriteLine("Speed: {0}", th.Speed);
Console.WriteLine("Longitude: {0}", th.Longitude);
Console.WriteLine("Latitude: {0}", th.Latitude);
Console.WriteLine("Time Stamp: {0}", th.TimeStampFriendly);
Console.WriteLine("");
}
}
else
{
Console.WriteLine("GetDeviceHistoryTimeRange error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetDeviceHistoryTimeRange(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Create the GPS parameters
Dim uStartTime As Integer
Dim uEndTime As Integer
uStartTime = ((New DateTime(2016, 10, 20, 0, 0, 0)) - (New DateTime(1970, 1, 1, 0, 0, 0))).TotalSeconds
uEndTime = ((New DateTime(2016, 10, 26, 23, 59, 59)) - (New DateTime(1970, 1, 1, 0, 0, 0))).TotalSeconds
Dim gpsParameters As New GPSParameters() With { _
.Format = EnumHelper.GetEnumDescription(Format.Csv), _
.RouteId = routeId, _
.time_period = "custom", _
.start_date = uStartTime, _
.end_date = uEndTime _
}
Dim errorString As String = ""
Dim response As String = route4Me.SetGPS(gpsParameters, errorString)
If Not String.IsNullOrEmpty(errorString) Then
Console.WriteLine("SetGps error: {0}", errorString)
Return
End If
Console.WriteLine("SetGps response: {0}", response)
Dim genericParameters As New GenericParameters()
genericParameters.ParametersCollection.Add("route_id", routeId)
genericParameters.ParametersCollection.Add("device_tracking_history", "1")
Dim dataObject = route4Me.GetLastLocation(genericParameters, errorString)
Console.WriteLine("")
If dataObject IsNot Nothing Then
Console.WriteLine("GetDeviceHistoryTimeRange executed successfully")
Console.WriteLine("")
Console.WriteLine("Optimization Problem ID: {0}", dataObject.OptimizationProblemId)
Console.WriteLine("State: {0}", dataObject.State)
Console.WriteLine("")
For Each th As TrackingHistory In dataObject.TrackingHistory
Console.WriteLine("Speed: {0}", th.Speed)
Console.WriteLine("Longitude: {0}", th.Longitude)
Console.WriteLine("Latitude: {0}", th.Latitude)
Console.WriteLine("Time Stamp: {0}", th.TimeStampFriendly)
Console.WriteLine("")
Next
Else
Console.WriteLine("GetDeviceHistoryTimeRange error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/tracking"
"github.com/route4me/route4me-go-sdk/routing" //You might need routing for device type
)
func main() {
client := route4me.NewClient("your-api-key")
service := &tracking.Service{Client: client}
trackingHistory, err := service.GetDeviceLocationHistory(&tracking.TrackingHistoryQuery{
TimePeriod: tracking.TimePeriodCustom,
StartDate: unix-time-start-date,
EndDate: unix-time-end-date,
RouteID: `route-id`,
})
if err != nil {
//handle errors
}
//trackingHistory contains all tracking history
}
<?php
namespace Route4Me;
$root=realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\Format;
use Route4Me\TrackSetParams;
use Route4Me\Track;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get a random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 20);
assert(!is_null($routeId), "Can't retrieve a random route ID");
echo "routeId -> $routeId <br><br>";
// Set GPS position to the selected route and use the correct member_id corresponding to the API key.
$params = TrackSetParams::fromArray(array(
'format' => Format::SERIALIZED,
'route_id' => $routeId,
'member_id' => 1,
'course' => 1,
'speed' => 120,
'lat' => 41.8927521,
'lng' => -109.0803888,
'device_type' => 'android_phone',
'device_guid' => 'qweqweqwe',
'device_timestamp' => date('Y-m-d H:i:s', strtotime('-2 day'))
));
$status = Track::set($params);
assert(!is_null($status), "Can't send GPS position to the selected route");
assert(isset($status['status']), "Can't send GPS position to the selected route");
assert($status['status'], "Can't send GPS position to the selected route");
// Get the device tracking history from a time range
$startDate = time() - 30*24*3600;
$endDate = time() + 1*24*3600;
$params = array(
'route_id' => $routeId,
'format' => Format::JSON,
'time_period' => 'custom',
'start_date' => $startDate,
'end_date' => $endDate
);
$result = $route->GetTrackingHistoryFromTimeRange($params);
foreach ($result as $key => $value)
{
if (is_array($value)) {
Route4Me::simplePrint($value);
} else {
echo "$key => $value <br>";
}
}
unit GetLocationHistoryFromTimeRangeUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetLocationHistoryFromTimeRange = class(TBaseExample)
public
procedure Execute(RouteId: String; StartDate, EndDate: TDateTime);
end;
implementation
uses
TrackingHistoryUnit, TrackingHistoryResponseUnit;
procedure TGetLocationHistoryFromTimeRange.Execute(
RouteId: String; StartDate, EndDate: TDateTime);
var
ErrorString: String;
Response: TTrackingHistoryResponse;
HistoryStep: TTrackingHistory;
LastPositionOnly: boolean;
begin
LastPositionOnly := False;
Response := Route4MeManager.Tracking.GetLocationHistory(
RouteId, StartDate, EndDate, LastPositionOnly, ErrorString);
try
WriteLn('');
if (Response <> nil) then
begin
WriteLn('GetLocationHistoryFromTimeRange executed successfully');
WriteLn('');
WriteLn(Format('Total location history steps: %d', [Length(Response.TrackingHistories)]));
WriteLn('');
for HistoryStep in Response.TrackingHistories do
begin
WriteLn(Format('Speed: %f', [HistoryStep.Speed.Value]));
WriteLn(Format('Longitude: %f', [HistoryStep.Longitude.Value]));
WriteLn(Format('Latitude: %f', [HistoryStep.Latitude.Value]));
WriteLn(Format('Time Stamp: %s', [HistoryStep.TimeStamp.Value]));
WriteLn('');
end;
end
else
WriteLn(Format('GetLocationHistoryFromTimeRange error: "%s"', [ErrorString]));
finally
FreeAndNil(Response);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main(int argc, char* argv[])
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
const char *route_id = "AC16E7D338B551013FF34266FE81A5EE";
// Dates are in Unix format
int start_date = 1476910800;
int end_date = 1477515540;
const char* period = "custom";
int ret = route.get_device_location(route_id, start_date, end_date, period);
if (ret == 0)
cout << "Device location history: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No history for device found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
.../get_device_location.php?api_key=...&route_id=...&time_period=...&$start_date=...&$end_date=...
You can expect this API response:
{
{
"data": [{
"s": "60",
"lt": "41.00478",
"m": 0,
"lg": "-81.59004",
"d": 70,
"ts": "1477488852",
"ts_friendly": "2016-10-26 09:34:12",
"src": "R4M",
"cd": null
},
{
"s": "60",
"lt": "41.00478",
"m": 0,
"lg": "-81.59004",
"d": 70,
"ts": "1477489979",
"ts_friendly": "2016-10-26 09:52:59",
"src": "R4M",
"cd": null
},
{
"s": "60",
"lt": "41.003672",
"m": 0,
"lg": "-81.598461",
"d": 70,
"ts": "1477490169",
"ts_friendly": "2016-10-26 09:56:09",
"src": "R4M",
"cd": null
}],
"mmd": {
"status": 0,
"matchings": [{
"trace_time": 4294966169,
"trace_distance": 0,
"matched_points": [[41.004784,-81.590042],
[41.004784,-81.590042]],
"indices": [1,2],
"matched_time": 0,
"instructions": [
["10", "Phlox Place", 0,0,6, "0m", "N", 0,1],
["15","",0,1,0, "0m","N", 0]],
"matched_distance": 0,
"geometry": "}mvemArpzrzC??"
}],
"summary": {
"total_distance": 717,
"matched_time": 0,
"matched_distance": 0,
"total_time": -190,
"trace_time": 4294965979,
"trace_distance": 718
}
}
}
}
Insert Route Tracking Data
Set the GPS position of a device.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
member_id | integer | Member ID |
course | integer | Movement course |
speed | integer | Movement speed |
lat | number | Latitude |
lng | number | Longitude |
device_type | string | Device type |
device_guid | string | Device GUID |
<job id="Set GPS Position">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
' The example refers to the process of setting the GPS position of a device by sending HTTP parameters.
' You can also use these optional parameters: tx_id, vehicle_id altitude, device_timestamp, and app_version.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/track/set.php"
apikey="11111111111111111111111111111111"
membid="1"
route_id="114B01238180A4227FD187E128C056F5"
course="70"
speed="60"
lat="55.6884868"
lng="12.5366426"
devtype="android_phone"
devguid="HK5454H0K454564WWER445"
url=url&"?api_key="&apikey
url=url&"&member_id="&membid
url=url&"&route_id="&route_id
url=url&"&course="&course
url=url&"&speed="&speed
url=url&"&lat="&lat
url=url&"&lng="&lng
url=url&"&device_type="&devtype
url=url&"&device_guid="&devguid
' There are also several optional parameters: tx_id, vehicle_id altitude, device_timestamp, app_version
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void SetGPSPosition(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Create the GPS parameters
GPSParameters gpsParameters = new GPSParameters()
{
Format = Format.Csv.Description(),
RouteId = routeId,
Latitude = 33.14384,
Longitude = -83.22466,
Course = 1,
Speed = 120,
DeviceType = DeviceType.IPhone.Description(),
MemberId = 1,
DeviceGuid = "TEST_GPS",
DeviceTimestamp = "2014-06-14 17:43:35"
};
string errorString;
string response = route4Me.SetGPS(gpsParameters, out errorString);
Console.WriteLine("");
if (string.IsNullOrEmpty(errorString))
{
Console.WriteLine("SetGps response: {0}", response);
}
else
{
Console.WriteLine("SetGps error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SetGPSPosition(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Create the GPS parameters
Dim gpsParameters As New GPSParameters() With { _
.Format = Format.Csv, _
.RouteId = routeId, _
.Latitude = 33.14384, _
.Longitude = -83.22466, _
.Course = 1, _
.Speed = 120, _
.DeviceType = EnumHelper.GetEnumDescription(DeviceType.IPhone), _
.MemberId = 1, _
.DeviceGuid = "TEST_GPS", _
.DeviceTimestamp = "2014-06-14 17:43:35" _
}
Dim errorString As String = ""
Dim response As String = route4Me.SetGPS(gpsParameters, errorString)
Console.WriteLine("")
If String.IsNullOrEmpty(errorString) Then
Console.WriteLine("SetGps response: {0}", response)
Else
Console.WriteLine("SetGps error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
FORMAT,
DEVICE_TYPE
)
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
setGPS = route4me.setGPS
setGPS.format(FORMAT.CSV)
setGPS.route_id(response[0].route_id)
setGPS.lat(33.14384),
setGPS.lng(-83.22466)
setGPS.course(1)
setGPS.speed(120)
setGPS.device_type(DEVICE_TYPE.IPHONE, 'param')
setGPS.member_id(1, 'param')
setGPS.device_guid('TEST_GPS')
setGPS.device_timestamp('2014-06-14 17:43:35')
print setGPS.params
print setGPS.set_gps_track()
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.tracking;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.tracking.GPSPosition;
import com.route4me.sdk.services.tracking.TrackingManager;
public class SetGPSPosition {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
TrackingManager manager = new TrackingManager(apiKey);
GPSPosition position = new GPSPosition().setLatitude(33.14384).setLongitude(-83.22466).setAltitude(10D);
position.setFormat(Constants.Format.CSV);
position.setRouteId("1402075EBA9A32939B2696DB1D7EE48E");
position.setCourse(1);
position.setSpeed(120F);
position.setDeviceType(Constants.DeviceType.IPAD)
.setDeviceGUID("TEST_GPS")
.setDeviceTimestamp("2014-06-14 17:43:35");
position.setMemberId("1");
try {
manager.setGPS(position);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Enum\DeviceType;
use Route4Me\Enum\Format;
use Route4Me\TrackSetParams;
use Route4Me\Track;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get a random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 20);
assert(!is_null($routeId), "Can't retrieve a random route ID");
echo "routeId -> $routeId <br><br>";
// Set GPS position to the selected route and use the correct member_id corresponding to the API key.
$params = TrackSetParams::fromArray(array(
'format' => Format::CSV,
'route_id' => $routeId,
'member_id' => 1,
'course' => 1,
'speed' => 120,
'lat' => 41.8927521,
'lng' => -109.0803888,
'device_type' => 'android_phone',
'device_guid' => 'qweqweqwe',
'device_timestamp' => date('Y-m-d H:i:s', strtotime('-1 day'))
));
$status = Track::set($params);
assert(!is_null($status), "Can't send GPS position to the selected route");
assert(isset($status['status']), "Can't send GPS position to the selected route");
assert($status['status'], "Can't send GPS position to the selected route");
Route4Me::simplePrint($status);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/tracking"
"github.com/route4me/route4me-go-sdk/routing" //You might need routing for device type
)
func main() {
client := route4me.NewClient("your-api-key")
service := &tracking.Service{Client: client}
query := &tracking.GPS{
RouteID: "route-id",
Latitude: 33.14384,
Longitude: -83.22466,
Course: 1,
Speed: 120,
DeviceType: routing.IPad,
MemberID: 1,
DeviceGUID: "TEST_GPS",
DeviceTimestamp: "2014-06-14 17:43:35",
}
_, err = service.SetGPS(query)
if err != nil {
//handle errors
return
}
}
package SetGPSPosition;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::Format;
use Route4MeSDK::QueryTypes::GPSParameters;
use Data::Dumper;
sub SetGPSPosition{
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $gpsParameters = GPSParameters->new(
format => Format->Csv,
route_id => $routeId,
lat => 33.14384,
lng => -83.22466,
course => 1,
speed => 120,
device_type => DeviceType->IPhone,
member_id => 1,
device_guid => "TEST_GPS",
device_timestamp => "2014-06-14 17:43:35"
);
my $errorString="";
my $response = $route4Me->setGPS($gpsParameters, $errorString);
print "\n";
print Dumper($response);
if (!$response->{'status'}) {
print "SetGps not available for this account\n";
} elsif (!$errorString) {
printf "SetGps response: %s\n", $response;
} else {
printf "SetGps error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/track/set.php
SET apikey=11111111111111111111111111111111
SET membid=1
SET route_id=114B01238180A4227FD187E128C056F5
SET course=70
SET speed=60
SET lat=55.6884868
SET lng=12.5366426
SET devtype=android_phone
SET devguid="HK5454H0K454564WWER445"
ECHO ON
:: The example refers to the process of setting the GPS position of a device by sending HTTP parameters.
:: You can also use these optional parameters: tx_id, vehicle_id altitude, device_timestamp, and app_version.
curl -o file1.txt -g -X GET -k "%url%?api_key=%apikey%&member_id=%membid%&route_id=%route_id%&course=%course%&speed=%speed%&lat=%lat%&lng=%lng%&device_type=%devtype%&device_guid=%devguid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/track/set.php
apikey=11111111111111111111111111111111
membid=1
route_id=114B01238180A4227FD187E128C056F5
course=70
speed=60
lat=55.6884868
lng=12.5366426
devtype=android_phone
devguid="HK5454H0K454564WWER445"
# The example refers to the process of setting the GPS position of a device by sending HTTP parameters.
# You can also use these optional parameters: tx_id, vehicle_id altitude, device_timestamp, and app_version.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&member_id=$membid&route_id=$route_id&course=$course&speed=$speed&lat=$lat&lng=$lng&device_type=$devtype&device_guid=$devguid"
echo "Finished..."
sleep 15
unit SetGPSPositionUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TSetGPSPosition = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses GPSParametersUnit, EnumsUnit;
procedure TSetGPSPosition.Execute(RouteId: String);
var
ErrorString: String;
Parameters: TGPSParameters;
Response: String;
begin
Parameters := TGPSParameters.Create();
try
Parameters.Format := TFormatDescription[TFormatEnum.Csv];
Parameters.RouteId := RouteId;
Parameters.Latitude := 33.14384;
Parameters.Longitude := -83.22466;
Parameters.Course := 1;
Parameters.Speed := 120;
Parameters.DeviceType := TDeviceTypeDescription[TDeviceType.IPhone];
Parameters.MemberId := 1;
Parameters.DeviceGuid := 'TEST_GPS';
Parameters.DeviceTimestamp := '2014-06-14 17:43:35';
Response := Route4MeManager.Tracking.SetGPS(Parameters, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
WriteLn(Format('SetGps response: %s', [Response]))
else
WriteLn(Format('SetGps error: "%s"', [ErrorString]));
finally
FreeAndNil(Parameters);
end;
end;
end.
////////////////////////////////////////////////////////////////////////////////
// Set GPS
////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
Json::Value params(Json::objectValue);
params["route_id"] = "AC16E7D338B551013FF34266FE81A5EE";
params["format"] = CRoute4Me::Csv;
params["lat"] = 33.14384;
params["lng"] = -83.22466;
params["course"] = 1;
params["speed"] = 120;
params["device_type"] = CRoute4Me::IPhone;
params["device_guid"] = "TEST_GPS";
params["device_timestamp"] = "2014-06-14 17:43:35";
params["member_id"] = 1;
int ret = 0;
if(route.set_gps(params) == 0)
{
// use Json::StyledWriter instead of Json::FastWriter for a human friendly output
cout << "GPS point is set:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Err: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
struct MapPoint point = {33.143840, -83.224660};
json_object* props = json_object_new_object();
json_object_object_add(props, "route_id", json_object_new_string("AC16E7D338B551013FF34266FE81A5EE"));
json_object_object_add(props, "lat", json_object_new_double(point.lat));
json_object_object_add(props, "lng", json_object_new_double(point.lng));
json_object_object_add(props, "course", json_object_new_int(1));
json_object_object_add(props, "speed", json_object_new_int(120));
json_object_object_add(props, "device_type", json_object_new_string("iphone"));
json_object_object_add(props, "device_guid", json_object_new_string("TEST_GPS"));
json_object_object_add(props, "device_timestamp", json_object_new_string("2014-06-14%2017%3A43%3A35"));
json_object_object_add(props, "member_id", json_object_new_int(1));
json_object_object_add(props, "format", json_object_new_string("csv"));
init(key, 1);
if (!set_gps(props))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/track/set.php?api_key=...&route_id=...&member_id=...&course=...&speed=...&lat=...&lng=...
You can expect this API response:
{"status":true}
Get All User Locations
You can retrieve all user locations.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
<job id="Get All User Locations">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
'You should insert real test data and your API key for accurate testing
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/track/view_user_locations.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.outputFile="user_locations_get_all_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api/track/view_user_locations.php
SET apikey=11111111111111111111111111111111
:: Example refers to the process of getting all user locations.
ECHO ON
curl -o user_locations_get_all_RESPONSE.json -k -g -X GET "%URL%?route_id=%routeid%&api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/track/view_user_locations.php
apikey=11111111111111111111111111111111
# Example refers to the process of getting all user locations.
curl -o user_locations_get_all_RESPONSE.json -g -k -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void GetAllUserLocationsTest()
{
var route4Me = new Route4MeManager(ApiKeys.actualApiKey);
var genericParameters = new GenericParameters();
var userLocations = route4Me.GetUserLocations(genericParameters, out string errorString);
Assert.IsNotNull(userLocations, "GetAllUserLocationsTest failed... " + errorString);
}
Public Sub GetAllUserLocationsTest()
Dim route4Me = New Route4MeManager(ApiKeys.actualApiKey)
Dim genericParameters = New GenericParameters()
Dim errorString As String = Nothing
Dim userLocations = route4Me.GetUserLocations(genericParameters, errorString)
Assert.IsNotNull(userLocations, "GetAllUserLocationsTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4me class
Route4Me::setApiKey('11111111111111111111111111111111');
$track = new Track();
$userLocations = $track->getUserLocations();
foreach ($userLocations As $memberId => $userLocation) {
echo $userLocation['member_data']['member_first_name'].' '.$userLocation['member_data']['member_last_name']." --> ";
if (isset($userLocation['tracking']['position_lng'])) {
echo "Longitude: ".$userLocation['tracking']['position_lng'].", Latitude: ".$userLocation['tracking']['position_lat'];
}
echo "<br>";
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/track/view_user_locations.php?api_key=...
You can expect this API response:
{
"1": {
"member_data": {
"member_id": 1,
"member_first_name": "David",
"member_last_name": "Progman",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "PRIMARY_ACCOUNT",
"phone_number": null,
"readonly_user": 0,
"show_superuser_addresses": 1
},
"tracking": {
"route_id": "26057d4c12aadc95399c5ef828abeeba",
"device_id": "a77096d71abbc18e08dc8581f7365dbbc736d230",
"activity_timestamp": 1570211723,
"device_timestamp": "2019-10-04 13:55:23",
"device_type": "iphone",
"member_id": 1,
"vehicle_id": 0,
"direction": 1,
"speed": 268.4328,
"day_id": 3564,
"position_lat": 40.7669692,
"position_lng": -73.9693864,
"altitude": 0,
"footsteps": null,
"data_source_name": "R4M",
"custom_data": "",
"device_timezone": "America/New_York",
"device_timezone_offset": 0,
"activity_timestamp_friendly": "10/04/2019 01:10:23",
"LAST_KNOWN": 1570211723
},
"from_cache": true
},
"2": {
"member_data": {
"member_id": 2,
"member_first_name": "Gill",
"member_last_name": "Shchredinger",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "PRIMARY_ACCOUNT",
"phone_number": null,
"readonly_user": 0,
"show_superuser_addresses": 1
},
"tracking": []
},
"3": {
"member_data": {
"member_id": 3,
"member_first_name": "Edil",
"member_last_name": "Corone",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "PRIMARY_ACCOUNT",
"phone_number": null,
"readonly_user": 0,
"show_superuser_addresses": null
},
"tracking": []
},
"4": {
"member_data": {
"member_id": 4,
"member_first_name": "Nat",
"member_last_name": "Coll",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "SUB_ACCOUNT_DRIVER",
"phone_number": null,
"readonly_user": 1,
"show_superuser_addresses": 1
},
"tracking": []
},
"5": {
"member_data": {
"member_id": 5,
"member_first_name": "Driver",
"member_last_name": "Driverson",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "SUB_ACCOUNT_DRIVER",
"phone_number": null,
"readonly_user": 0,
"show_superuser_addresses": 0
},
"tracking": []
}
}
Search User Locations
You can search the locations by query text (email, name, memebr ID etc).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
query | string | Query text |
<job id="Search User Locations">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
'You should insert real test data and your API key for accurate testing
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/track/view_user_locations.php"
apikey="11111111111111111111111111111111"
[email protected]
url=url&"?api_key="&apikey
url=url&"&query="&query
Set r4m=New Route4Me
r4m.outputFile="user_locations_query_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api/track/view_user_locations.php
SET apikey=11111111111111111111111111111111
SET [email protected]
:: Example refers to the process of getting user locations by query.
:: Note: you can query by member_id, user email, member_type etc.
ECHO ON
curl -o user_locations_query_RESPONSE.json -k -g -X GET "%url%?api_key=%apikey%&query=%query%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api/track/view_user_locations.php
apikey=11111111111111111111111111111111
[email protected]
# Example refers to the process of getting user locations by query.
# Note: you can query by member_id, user email, member_type etc.
curl -o user_locations_query_RESPONSE.json -g -k -X GET "$url?api_key=$apikey&query=$query"
echo "Finished..."
sleep 15
public void QueryUserLocationsTest()
{
var route4Me = new Route4MeManager(ApiKeys.actualApiKey);
var genericParameters = new GenericParameters();
var userLocations = route4Me.GetUserLocations(genericParameters, out string errorString);
Assert.IsNotNull(userLocations, "GetAllUserLocationsTest failed... " + errorString);
var userLocation = userLocations.Where(x => x.Value.UserTracking != null).FirstOrDefault().Value;
if (userLocation==null) userLocation = userLocations[userLocations.Keys.First()];
string email = userLocation.MemberData.MemberEmail;
genericParameters.ParametersCollection.Add("query", email);
var queriedUserLocations = route4Me.GetUserLocations(genericParameters, out errorString);
Assert.IsNotNull(queriedUserLocations, "QueryUserLocationsTest failed... " + errorString);
Assert.IsTrue(queriedUserLocations.Count()==1, "QueryUserLocationsTest failed... " + errorString);
}
Public Sub QueryUserLocationsTest()
Dim route4Me = New Route4MeManager(ApiKeys.actualApiKey)
Dim genericParameters = New GenericParameters()
Dim errorString As String = Nothing
Dim userLocations = route4Me.GetUserLocations(genericParameters, errorString)
Assert.IsNotNull(userLocations, "GetAllUserLocationsTest failed... " & errorString)
Dim userLocation = userLocations.Where(Function(x) x.Value.UserTracking IsNot Nothing).FirstOrDefault().Value
If userLocation Is Nothing Then userLocation = userLocations(userLocations.Keys.First())
Dim email As String = userLocation.MemberData.MemberEmail
genericParameters.ParametersCollection.Add("query", email)
Dim queriedUserLocations = route4Me.GetUserLocations(genericParameters, errorString)
Assert.IsNotNull(queriedUserLocations, "QueryUserLocationsTest failed... " & errorString)
Assert.IsTrue(queriedUserLocations.Count() = 1, "QueryUserLocationsTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4me class
Route4Me::setApiKey('11111111111111111111111111111111');
$track = new Track();
$userLocation = reset($track->getUserLocations());
$email = $userLocation['member_data']['member_email'];
$queriedUserLocations = $track->getUserLocations($email);
foreach ($queriedUserLocations As $memberId => $userLocation) {
echo $userLocation['member_data']['member_first_name'].' '.$userLocation['member_data']['member_last_name']." --> ";
if (isset($userLocation['tracking']['position_lng'])) {
echo "Longitude: ".$userLocation['tracking']['position_lng'].", Latitude: ".$userLocation['tracking']['position_lat'];
}
echo "<br>";
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/track/view_user_locations.php?api_key=...&query=...
You can expect this API response:
[
{
"member_data": {
"member_id": 1,
"member_first_name": "David",
"member_last_name": "Progman",
"member_email": "[email protected]",
"account_type_id": 126,
"member_type": "PRIMARY_ACCOUNT",
"phone_number": null,
"readonly_user": 0,
"show_superuser_addresses": 1
},
"tracking": {
"route_id": "26057d4c12aadc95399c5ef828abeeba",
"device_id": "a77096d71abbc18e08dc8581f7365dbbc736d230",
"activity_timestamp": 1570211723,
"device_timestamp": "2019-10-04 13:55:23",
"device_type": "iphone",
"member_id": 1,
"vehicle_id": 0,
"direction": 1,
"speed": 268.4328,
"day_id": 3564,
"position_lat": 40.7669692,
"position_lng": -73.9693864,
"altitude": 0,
"footsteps": null,
"data_source_name": "R4M",
"custom_data": "",
"device_timezone": "America/New_York",
"device_timezone_offset": 0,
"activity_timestamp_friendly": "10/04/2019 01:10:23",
"LAST_KNOWN": 1570211723
},
"from_cache": true
}
]
Members
A member refers to an authorized user of the Route4Me API.
See the Member (User) JSON Schema in our GitHub repository.
Member Properties
Attribute | Type | Description |
---|---|---|
member_id | string | Unique ID of the member |
member_first_name | string | First name of the member |
member_last_name | string | Last name of the member |
member_email | string | Member’s email address |
account_type_id | string | Account type ID of the member |
member_type | string | Type of member |
phone_number | string | Member’s phone number |
readonly_user | string | True, if the value is ‘1’. |
show_superuser_addresses | boolean | Show superuser addresses |
api_key | string | API key of the user |
hashed_member_id | string | Hashed member ID string |
Authentication
Authenticates a user through email and password.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
strEmail | string | Email of the user | POST |
strPassword | string | Password | POST |
format | string | Response format | POST |
<job id="MemberAutheticate">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/authenticate.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="member_authenticate_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/actions/authenticate.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example refers to the authentication process into Route4Me's official web application.
curl -o file1.txt -k -g -X POST -H "Content-Type: multipart/form-data;" -F "[email protected]" -F "strPassword=111111" -F "format=json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/authenticate.php
apikey=11111111111111111111111111111111
# The example refers to the authentication process into Route4Me's official web application.
curl -o file1.txt -k -g -X POST -H "Content-Type: multipart/form-data;" -F "[email protected]" -F "strPassword=1111111" -F "format=json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// User Authentication
/// </summary>
public void UserAuthentication()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParameters @params = new MemberParameters
{
StrEmail = "[email protected]",
StrPassword = "1111111",
Format = "json"
};
// Run the query
string errorString = "";
MemberResponse result = route4Me.UserAuthentication(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UserAuthentication executed successfully");
Console.WriteLine("status: " + result.Status);
Console.WriteLine("api_key: " + result.ApiKey);
Console.WriteLine("member_id: " + result.MemberId);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UserAuthentication error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' User Authentication
''' </summary>
Public Sub UserAuthentication()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParameters = New MemberParameters() With { _
.StrEmail = "[email protected]", _
.StrPassword = "1111111", _
.Format = "json" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponse = route4Me.UserAuthentication(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("UserAuthentication executed successfully")
Console.WriteLine("status: " & result.Status)
Console.WriteLine("api_key: " & result.ApiKey)
Console.WriteLine("member_id: " & result.MemberId)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UserAuthentication error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
members = route4me.members
data = {"email": "[email protected]",
"password": "ultrasecretword",
"format": "json"}
response = members.member_authenticate(**data)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
session, err := service.Authenticate("email","password")
if err != nil {
// auth unsuccessful
return
}
if !session.Status {
// session invalid
return
}
//session valid
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// Example refers to member authentication.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$Parameters = Member::fromArray(array(
'strEmail' => '[email protected]',
'strPassword' => 'dddddddd',
'format' => 'json',
));
$member = new Member();
$response = $member->memberAuthentication($Parameters);
Route4Me::simplePrint($response);
unit AuthenticationUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit, UserParametersUnit;
type
TAuthentication = class(TBaseExample)
public
function Execute(EMail, Password: String): NullableString;
end;
implementation
function TAuthentication.Execute(EMail, Password: String): NullableString;
var
ErrorString: String;
SessionId: NullableInteger;
begin
Route4MeManager.User.Authentication(EMail, Password, ErrorString, SessionId, Result);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('Authentication executed successfully, SessionId = %d', [Result.Value]));
WriteLn('');
end
else
WriteLn(Format('Authentication error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
int ret = 0;
Member member;
member.email = "[email protected]";
member.password1 = "123456";
member.format = "json";
if(route.authenticate_user(&member) == 0)
{
cout << "Login attempted:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to login: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
struct Member member = {0};
strcpy(member.email, "[email protected]");
strcpy(member.format, "json");
strcpy(member.first_name, "Alex");
strcpy(member.last_name, "Hardworker");
strcpy(member.password1, "crypto1");
if (!authenticate_user(&member))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/actions/authenticate.php?api_key=...
You can expect this API response:
{
"status": true,
"geocoding_service": "http:\/\/validator.route4me.com",
"session_id": 3436431,
"session_guid": "ad9001f33ed6875b5f0e75bce52cbc34",
"member_id": "11111",
"api_key": "11111111111111111111111111111111",
"tracking_ttl": 10,
"geofence_polygon_shape": "rect",
"geofence_polygon_size": 30,
"geofence_time_onsite_trigger_secs": 21,
"geofence_minimum_trigger_speed": 3,
"is_subscription_past_due": null,
"visited_departed_enabled": "true",
"long_press_enabled": "true",
"account_type_id": "126",
"account_type_alias": "Enterprise",
"member_type": "PRIMARY_ACCOUNT",
"max_stops_per_route": "1000",
"max_routes": "1000",
"routes_planned": "13",
"preferred_units": "MI",
"preferred_language": "en",
"HIDE_ROUTED_ADDRESSES": "FALSE",
"HIDE_VISITED_ADDRESSES": "FALSE",
"HIDE_NONFUTURE_ROUTES": "FALSE",
"READONLY_USER": "FALSE",
"auto_logout_ts": 7200
}
Member’s Sub-users
View existing sub-users in a member’s account.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
<job id="Members - Get Sub-users">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting the existing sub-users.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetUsers()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
GenericParameters parameters = new GenericParameters()
{
};
// Run the query
string errorString;
User[] dataObjects = route4Me.GetUsers(parameters, out errorString);
Console.WriteLine("");
if (dataObjects != null)
{
Console.WriteLine("GetUsers executed successfully, {0} users returned", dataObjects.Length);
Console.WriteLine("");
//dataObjects.ForEach(user =>
//{
// Console.WriteLine("User ID: {0}", user.MemberId);
//});
}
else
{
Console.WriteLine("GetUsers error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetUsers()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim parameters As New GenericParameters()
' Run the query
Dim errorString As String = ""
Dim dataObjects As User() = route4Me.GetUsers(parameters, errorString)
Console.WriteLine("")
If dataObjects IsNot Nothing Then
Console.WriteLine("GetUsers executed successfully, {0} users returned", dataObjects.Length)
Console.WriteLine("")
Else
Console.WriteLine("GetUsers error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
members = route4me.members
response = members.get_users(limit=5, offset=0)
if 'errors' in list(response.keys()):
print '. '.join(response.get('errors'))
else:
for i, member in enumerate(response):
print('Member #{}'.format(i + 1))
print('\tName: {0}, {1}'.format(member.get('member_first_name'), member.get('member_last_name')))
print('\tEmail: {}'.format(member.get('member_email')))
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.users;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.users.User;
import com.route4me.sdk.services.users.UsersManager;
import java.util.List;
public class GetUsers {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
UsersManager manager = new UsersManager(apiKey);
try {
List<User> users = manager.getUsers(10, 10);
for (User user : users) {
System.out.println(user);
}
} catch (APIException e) {
e.printStackTrace();
}
}
}
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
users, err := service.GetSubusers()
if err != nil {
// could not fetch users
return
}
//do something with users, it's []*Member
}
package GetUsers;
use strict;
use warnings FATAL => 'all';
sub GetUsers {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $errorString = "";
my @dataObject = $route4Me->getUsers( \$errorString );
print "\n";
if (@dataObject) {
printf "GetUsers executed successfully, %s users returned\n\n", scalar @dataObject;
} else {
printf "GetRoutes error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting the existing sub-users.
ECHO ON
curl -o file1.txt -g -X GET -k "%URL%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
# The example refers to the process of getting the existing sub-users.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example refers to the process of getting the existing sub-users.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
$response = $member->getUsers();
foreach ($response['results'] as $key => $member) {
Route4Me::simplePrint($member);
echo "<br>";
}
unit GetUsersUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetUsers = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses UserUnit;
procedure TGetUsers.Execute;
var
ErrorString: String;
Users: TArray<TUser>;
i: integer;
begin
Users := Route4MeManager.User.Get(ErrorString);
try
WriteLn('');
if (Length(Users) > 0) then
begin
WriteLn(Format('GetUsers executed successfully, %d users returned',
[Length(Users)]));
WriteLn('');
end
else
WriteLn(Format('GetUsers error: "%s"', [ErrorString]));
finally
for i := Length(Users) - 1 downto 0 do
FreeAndNil(Users[i]);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY, true);
if(route.get_subusers() == 0)
{
cout << "Sub-users:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
if (!get_all_users())
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api/member/view_users.php?api_key=...
You can expect this API response:
{
"results": [{
"member_id": "45837",
"OWNER_MEMBER_ID": "44194",
"member_type": "SUB_ACCOUNT_DRIVER",
"member_first_name": "Tony",
"member_last_name": "Stark",
"member_email": "[email protected]",
"preferred_units": "MI",
"preferred_language": "en",
"HIDE_ROUTED_ADDRESSES": "TRUE",
"HIDE_VISITED_ADDRESSES": "TRUE",
"HIDE_NONFUTURE_ROUTES": "FALSE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "0",
"READONLY_USER": "TRUE",
"member_phone": "",
"member_zipcode": null,
"timezone": "America\/New_York",
"date_of_birth": "1980-01-01",
"user_reg_state_id": "4",
"user_reg_country_id": "223",
"member_picture": null,
"level": 4
},
{
"member_id": "45839",
"OWNER_MEMBER_ID": "44194",
"member_type": "SUB_ACCOUNT_DRIVER",
"member_first_name": "Steve",
"member_last_name": "Rogers",
"member_email": "[email protected]",
"preferred_units": "MI",
"preferred_language": "en",
"HIDE_ROUTED_ADDRESSES": "TRUE",
"HIDE_VISITED_ADDRESSES": "TRUE",
"HIDE_NONFUTURE_ROUTES": "TRUE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "0",
"READONLY_USER": "TRUE",
"member_phone": "",
"member_zipcode": null,
"timezone": "America\/New_York",
"date_of_birth": "1980-01-01",
"user_reg_state_id": "4",
"user_reg_country_id": "223",
"member_picture": null,
"level": 4
}
]}
Validate a Session
Check if a session is valid.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
session_guid | string | Session ID |
member_id | integer | Member ID |
format | string | Response format |
<job id="MemberValidateSession">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of validating a user's working session in the Route4Me application.
url="https://api.route4me.com/datafeed/session/validate_session.php"
apikey="11111111111111111111111111111111"
sesid="4552222222"
memid="787544566"
format="json"
url=url&"?api_key="&apikey
url=url&"&session_guid="&sesid
url=url&"&member_id="&memid
url=url&"&format="&format
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com
SET apikey=11111111111111111111111111111111
SET sesid=4552222222
SET memid=787544566
:: The example refers to the process of validating a user's working session in the Route4Me application.
ECHO ON
curl -o file1.txt -g -X GET -k "%URL%/datafeed/session/validate_session.php?api_key=%apikey%&session_guid=%sesid%&member_id=%memid%&format=json"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/datafeed/session/validate_session.php
apikey=11111111111111111111111111111111
sesid=4552222222
memid=787544566
frmt=json
# The example refers to the process of validating a user's working session in the Route4Me application.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&session_guid=$sesid&member_id=$memid&$frmt=json"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Validate Session
/// </summary>
public void ValidateSession()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParameters @params = new MemberParameters
{
SessionGuid = "ad9001f33ed6875b5f0e75bce52cbc34",
MemberId = 1,
Format = "json"
};
// Run the query
string errorString = "";
MemberResponse result = route4Me.ValidateSession(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("ValidateSession executed successfully");
Console.WriteLine("status: " + result.Status);
Console.WriteLine("api_key: " + result.ApiKey);
Console.WriteLine("member_id: " + result.MemberId);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("ValidateSession error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Validate Session
''' </summary>
Public Sub ValidateSession()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParameters = New MemberParameters() With { _
.SessionGuid = "ad9001f33ed6875b5f0e75bce52cbc34", _
.MemberId = 1, _
.Format = "json" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponse = route4Me.ValidateSession(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("ValidateSession executed successfully")
Console.WriteLine("status: " & result.Status)
Console.WriteLine("api_key: " & result.ApiKey)
Console.WriteLine("member_id: " & result.MemberId)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("ValidateSession error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
members = route4me.members
data = {"session_guid": "4552222222",
"member_id": "787544566",
"format": "json"}
response = members.validate_session(**data)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
success, err := service.ValidateSession("GUID",memberID)
if err != nil {
// session invalid, error making request
return
}
if !success {
// session invalid
return
}
// session valid
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example refers to validating a user's session.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Authenticate a user and get session GUID
$recordParameters = Member::fromArray(array(
'strEmail' => '[email protected]',
'strPassword' => 'ddddddddddd',
'format' => 'json',
));
$response = $member->memberAuthentication($recordParameters);
assert(!is_null($response), "Can't authenticate a user");
assert(isset($response['session_guid']), "Can't authenticate a user");
assert(isset($response['member_id']), "Can't authenticate a user");
$sessionGuid = $response['session_guid'];
$memberID = $response['member_id'];
echo "Member ID -> $memberID <br> Session GUID -> $sessionGuid <br>";
// Validate the session
$params = Member::fromArray(array(
'session_guid' => $sessionGuid,
'member_id' => $memberID,
'format' => 'json',
));
$response = $member->validateSession($params);
var_dump($response);
unit ValidateSessionUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TValidateSession = class(TBaseExample)
public
procedure Execute(SessionGuid: String; MemberId: integer);
end;
implementation
uses UserUnit;
procedure TValidateSession.Execute(SessionGuid: String; MemberId: integer);
var
ErrorString: String;
IsSessionValid: boolean;
IsSessionValidStr: String;
begin
IsSessionValid := Route4MeManager.User.IsSessionValid(
SessionGuid, MemberId, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
if IsSessionValid then
IsSessionValidStr := 'is valid'
else
IsSessionValidStr := 'is not valid';
WriteLn(Format('ValidateSession executed successfully, session %s',
[IsSessionValidStr]));
WriteLn('');
end
else
WriteLn(Format('ValidateSession error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char* session_id="4552222222";
const char* member_id="787544566";
int ret = route.validate_session(session_id, member_id);
if (ret == 0)
cout << "Session validated:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Validation failed:" << route.get_err_code() << ": " << route.get_err_msg() << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
const char session_id[] = "4552222222";
const char member_id[] = "787544566";
const char format[] = "json";
init(key, 1);
if (!validate_session(session_id, member_id, format))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/datafeed/session/validate_session.php?api_key=...&session_guid=...&member_id=...&$frmt=...
You can expect this API response:
{"authenticated":true,"member_id":1}
Register an Account
Registers a new Route4Me account.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
plan | string | Account plan | GET |
strIndustry | string | The industry where the user is currently associated. | POST |
strFirstName | string | First name | POST |
strLastName | string | Last name | POST |
strEmail | string | User’s email | POST |
format | string | Response format | POST |
chkTerms | integer | If equal to 1, the user agrees on the registration terms. | POST |
device_type | string | Device type | POST |
strPassword_1 | string | User’s password | POST |
strPassword_2 | string | Password confirmation | POST |
<job id="NewAccountRegistration">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/register_action.php"
apikey="11111111111111111111111111111111"
' Note: example requires additional testing
url=url&"?api_key="&apikey
jFile="new_account_registration_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/actions/register_action.php
SET apikey=11111111111111111111111111111111
SET plan=enterprise_plan
:: The example demonstrates the registration of a new Route4Me account.
ECHO ON
curl -o file1.txt -k -X POST -H "Content-Type: multipart/form-data;" -F "strIndustry=Gifting" -F "strFirstName=Olman" -F "strLastName=Oland" -F "[email protected]" -F "format=json" -F "chkTerms=1" -F "device_type=web" -F "strPassword_1=111111" -F "strPassword_2=111111" "%url%?plan=%plan%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/register_action.php
apikey=11111111111111111111111111111111
plan=enterprise_plan
# The example demonstrates the registration of a new Route4Me account.
curl -o file1.txt -k -X POST -H "Content-Type: multipart/form-data;" -F "strIndustry=Gifting" -F "strFirstName=Olman" -F "strLastName=Oland" -F "[email protected]" -F "format=json" -F "chkTerms=1" -F "device_type=web" -F "strPassword_1=111111" -F "strPassword_2=111111" "$url?plan=$plan"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// User Registration
/// </summary>
public void UserRegistration()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParameters @params = new MemberParameters
{
StrEmail = "[email protected]",
StrPassword_1 = "11111111",
StrPassword_2 = "11111111",
StrFirstName = "Olman",
StrLastName = "Progman",
StrIndustry = "Transportation",
Format = "json",
ChkTerms = 1,
DeviceType = "web",
Plan = "free",
MemberType = 5
};
// Run the query
string errorString = "";
MemberResponse result = route4Me.UserRegistration(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UserRegistration executed successfully");
Console.WriteLine("status: " + result.Status);
Console.WriteLine("api_key: " + result.ApiKey);
Console.WriteLine("member_id: " + result.MemberId);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UserRegistration error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' User Registration
''' </summary>
Public Sub UserRegistration()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParameters = New MemberParameters() With { _
.StrEmail = "[email protected]", _
.StrPassword_1 = "11111111", _
.StrPassword_2 = "11111111", _
.StrFirstName = "Olman", _
.StrLastName = "Progman", _
.StrIndustry = "Transportation", _
.Format = "json", _
.ChkTerms = 1, _
.Plan = "free" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponse = route4Me.UserRegistration(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("UserRegistration executed successfully")
Console.WriteLine("status: " & result.Status)
Console.WriteLine("api_key: " & result.ApiKey)
Console.WriteLine("member_id: " & result.MemberId)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UserRegistration error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
members = route4me.members
data = {"email_address": "[email protected]",
"first_name": "Jhon",
"last_name": "Route4Me",
"check_terms": "1",
"industry": "Python SDK",
"device_type": "web",
"plan": "enterprise_plan",
"password_1": "ultrasecret",
"password_2": "ultrasecret",
"format": "json", }
response = members.register(**data)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print response
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
account, err := service.Register(&users.MemberBase{
FirstName: "John",
LastName: "Example",
Email: "[email protected]",
Type: users.SubAccountDispatcher,
Password: "123",
HideRouteAddresses: true,
HideVisitedAddresses: true,
})
if err != nil {
// error making request
return
}
// do something with the account
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example demonstrates the registration of a new Route4Me account.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$registrParameters = Member::fromArray(array(
'strEmail' => '[email protected]',
'strPassword_1' => 'ooo111111',
'strPassword_2' => 'ooo111111',
'strFirstName' => 'Driver',
'strLastName' => 'Driverson',
'format' => 'json',
'strIndustry' => 'Gifting',
'chkTerms' => 1,
'device_type' => 'web',
'plan' => 'free'
));
$member = new Member();
$response = $member->newAccountRegistration($registrParameters);
Route4Me::simplePrint($response);
unit RegisterAccountUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TRegisterAccount = class(TBaseExample)
public
procedure Execute(Plan, Industry, FirstName, LastName, Email: String;
Terms: boolean; DeviceType: TDeviceType;
Password, PasswordConfirmation: String);
end;
implementation
uses NullableBasicTypesUnit;
procedure TRegisterAccount.Execute(
Plan, Industry, FirstName, LastName, Email: String;
Terms: boolean; DeviceType: TDeviceType;
Password, PasswordConfirmation: String);
var
ErrorString: String;
MemberId: NullableInteger;
begin
MemberId := Route4MeManager.User.RegisterAccount(Plan, Industry, FirstName, LastName,
Email, Terms, DeviceType, Password, PasswordConfirmation, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('Account registered successfully, MemberId = %d', [MemberId.Value]));
WriteLn('');
end
else
WriteLn(Format('RegisterAccount error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("member_create_v4_data.json");
if(!inf.is_open())
{
cout << "Can't find data file" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
Json::Value member;
inf >> member;
if(route.modify_member(member, CRoute4Me::REQ_POST) == 0)
{
cout << "User registered:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to register " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/actions/register_action.php?api_key=...
You can expect this API response:
{
"status": true,
"session_id": "75888c43f8525bab7f8bbf6f4f85b0ec",
"session_guid": "75888c43f8525bab7f8bbf6f4f85b0ec",
"member_id": 315948,
"api_key": "0216bfd6245454545f2756a9556d98a8",
"account_type_id": 24,
"account_type_alias": 0,
"max_stops_per_route": 10000,
"max_routes": 10,
"routes_planned": 0
}
Get User’s Details
Get a user using the member_id
parameter.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
member_id | integer | Member ID | GET |
<job id="Member Get Single Subuser">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' View an existing single sub-user in a Member's account.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
member_id=45844
url=url&"?api_key="&apikey
url=url&"&member_id="&member_id
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
SET member_id=45844
:: View an existing single sub-user in a Member's account.
ECHO ON
curl -o file1.txt -g -X GET -k "%url%?api_key=%apikey%&member_id=%member_id%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
member_id=45844
# View an existing single sub-user in a Member's account.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&member_id=$member_id"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get User By ID
/// </summary>
public void GetUserById()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParametersV4 @params = new MemberParametersV4 { member_id = 45844 };
// Run the query
string errorString = "";
MemberResponseV4 result = route4Me.GetUserById(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("GetUserById executed successfully");
Console.WriteLine("User: " + result.member_first_name + " " + result.member_last_name);
Console.WriteLine("member_id: " + result.member_id);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("GetUserById error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get User By ID
''' </summary>
Public Sub GetUserById()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParametersV4 = New MemberParametersV4() With { _
.member_id = 45844 _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponseV4 = route4Me.GetUserById(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("GetUserById executed successfully")
Console.WriteLine("User: " & result.member_first_name & " " & result.member_last_name)
Console.WriteLine("member_id: " & result.member_id)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("GetUserById error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
users, err := service.GetUserByID(id)
if err != nil {
// could not fetch a user
return
}
// do something with the user, it's *Member
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates getting a user with its details.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get users list
$users = $member->getUsers();
assert(!is_null($users), "Can't retrieve the list of users");
assert(sizeof($users)==2, "Can't retrieve the list of users");
assert(isset($users['results']), "Can't retrieve the list of users");
assert(isset($users['total']), "Can't retrieve the list of users");
$randIndex = rand(0, $users["total"] - 1);
$randomUserID = $users['results'][$randIndex]["member_id"];
echo "Random user ID -> $randomUserID <br><br>";
unit GetUserDetailsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetUserDetails = class(TBaseExample)
public
procedure Execute(MemberId: integer);
end;
implementation
uses UserUnit;
procedure TGetUserDetails.Execute(MemberId: integer);
var
ErrorString: String;
User: TUser;
begin
User := Route4MeManager.User.Get(MemberId, ErrorString);
try
WriteLn('');
if (User <> nil) then
begin
WriteLn('GetUserDetails executed successfully');
WriteLn('');
end
else
WriteLn(Format('GetUserDetails error: "%s"', [ErrorString]));
finally
FreeAndNil(User);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/user.php?api_key=...&member_id=...
You can expect this API response:
{
"member_first_name": "Clint",
"member_id": "45844",
"member_last_name": "Bbbbbbbb",
"member_email": "[email protected]",
"preferred_units": "MI",
"preferred_language": "en",
"timezone": "America\/New_York",
"member_zipcode": null,
"OWNER_MEMBER_ID": "1",
"member_type": "SUB_ACCOUNT_DRIVER",
"member_phone": "",
"user_reg_state_id": "4",
"user_reg_country_id": "223",
"date_of_birth": "1980-01-01",
"HIDE_ROUTED_ADDRESSES": "TRUE",
"HIDE_VISITED_ADDRESSES": "TRUE",
"HIDE_NONFUTURE_ROUTES": "TRUE",
"READONLY_USER": "TRUE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "FALSE",
"member_picture": null
}
Create a User
Creates a new user.
See the Member JSON Schema in our GitHub repository.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
HIDE_ROUTED_ADDRESSES | boolean | If true, hide the routed addresses. | POST |
member_phone | string | User’s phone number | POST |
member_zipcode | string | The 5-7 digit ZIP Code | POST |
route_count | integer | Route count | POST |
member_email | string | Member’s email address | POST |
HIDE_VISITED_ADDRESSES | boolean | If true, hide the visited addresses. | POST |
READONLY_USER | boolean | If true, the user is read-only. | POST |
member_type | string | Type of member | POST |
date_of_birth | string | Date of birth | POST |
member_first_name | string | First name | POST |
member_password | string | Member’s password | POST |
HIDE_NONFUTURE_ROUTES | boolean | If true, hide non-future routes. | POST |
member_last_name | string | Last name | POST |
SHOW_ALL_VEHICLES | boolean | If true, show all vehicles. | POST |
SHOW_ALL_DRIVERS | boolean | If true, show all drivers. | POST |
<job id="Create a Member V4">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of creating a sub-user in a member's account.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
jFile="member_create_v4_data.json"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
SET [email protected]
:: The example refers to the process of creating a sub-user in a member's account.
ECHO ON
curl -o file1.txt -g -H "Content-Type: application/json" -X POST -k -d "@member_create_v4_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
# The example refers to the process of creating a sub-user in a member's account.
curl -o file1.txt -g -H "Content-Type: application/json" -X POST -d "@member_create_v4_data.json" -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// User Registration (v4)
/// </summary>
public void CreateUser()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParametersV4 @params = new MemberParametersV4
{
HIDE_ROUTED_ADDRESSES = false,
member_phone = "571-259-5939",
member_zipcode = "22102",
member_email = "[email protected]",
HIDE_VISITED_ADDRESSES = false,
READONLY_USER = false,
member_type = "SUB_ACCOUNT_DISPATCHER",
date_of_birth = "2010",
member_first_name = "Clay",
member_password = "123456",
HIDE_NONFUTURE_ROUTES = false,
member_last_name = "Abraham",
SHOW_ALL_VEHICLES = false,
SHOW_ALL_DRIVERS = false
};
// Run the query
string errorString = "";
MemberResponseV4 result = route4Me.CreateUser(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UserRegistration executed successfully");
Console.WriteLine("User: " + result.member_first_name + " " + result.member_last_name);
Console.WriteLine("member_id: " + result.member_id);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UserRegistration error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' User Registration (v4)
''' </summary>
Public Sub CreateUser()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParametersV4 = New MemberParametersV4() With { _
.HIDE_ROUTED_ADDRESSES = "FALSE", _
.member_phone = "571-259-5939", _
.member_zipcode = "22102", _
.member_email = "[email protected]", _
.HIDE_VISITED_ADDRESSES = "FALSE", _
.READONLY_USER = "FALSE", _
.member_type = "SUB_ACCOUNT_DISPATCHER", _
.date_of_birth = "2010", _
.member_first_name = "Clay", _
.member_password = "123456", _
.HIDE_NONFUTURE_ROUTES = "FALSE", _
.member_last_name = "Abraham", _
.SHOW_ALL_VEHICLES = "FALSE", _
.SHOW_ALL_DRIVERS = "FALSE" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponseV4 = route4Me.CreateUser(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("UserRegistration executed successfully")
Console.WriteLine("User: " & result.member_first_name & " " & result.member_last_name)
Console.WriteLine("member_id: " & result.member_id)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UserRegistration error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
success, err := service.Create(&Account{
Industry: "Gifting",
FirstName: "Olman",
LastName: "Oland",
Email: "[email protected]",
AcceptTOS: true,
Password: "111111",
Plan: "enterprise_plan",
})
if err != nil {
// error making request
return
}
if !success {
// error occured, while creating an account
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example demonstrates the creation of a new user.
// NOTE: For this example to work, please replace the demo API key `11111...` with your Route4Me API key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$params = Member::fromArray(array (
"HIDE_ROUTED_ADDRESSES" => "FALSE",
"member_phone" => "571-259-5939",
"member_zipcode" => "22102",
"route_count" => null,
"member_email" => "[email protected]",
"HIDE_VISITED_ADDRESSES"=> "FALSE",
"READONLY_USER" => "FALSE",
"member_type" => "SUB_ACCOUNT_DRIVER",
"date_of_birth" => "1994-10-01",
"member_first_name" => "Clay",
"member_password" => "123456",
"HIDE_NONFUTURE_ROUTES" => "FALSE",
"member_last_name" => "Abraham",
"SHOW_ALL_VEHICLES" => "FALSE",
"SHOW_ALL_DRIVERS" => "FALSE"
));
$member = new Member();
$response = $member->createMember($params);
Route4Me::simplePrint($response);
unit AddNewUserUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit, UserParametersUnit;
type
TAddNewUser = class(TBaseExample)
public
function Execute(Parameters: TUserParameters): NullableInteger;
end;
implementation
function TAddNewUser.Execute(Parameters: TUserParameters): NullableInteger;
var
ErrorString: String;
begin
Result := Route4MeManager.User.AddNewUser(Parameters, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('New user added successfully, MemberId = %d', [Result.Value]));
WriteLn('');
end
else
WriteLn(Format('AddNewUser error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/user.php?api_key=...
You can expect this API response:
{
"HIDE_NONFUTURE_ROUTES": "FALSE",
"HIDE_ROUTED_ADDRESSES": "FALSE",
"HIDE_VISITED_ADDRESSES": "FALSE",
"member_id": "147824",
"OWNER_MEMBER_ID": "1116",
"READONLY_USER": "FALSE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "TRUE",
"date_of_birth": "2010-00-00",
"member_email": "[email protected]",
"member_first_name": "Clay",
"member_last_name": "Abraham",
"member_phone": "571-259-5939",
"member_picture": null,
"member_type": "SUB_ACCOUNT_DISPATCHER",
"member_zipcode": "22102",
"preferred_language": "en",
"preferred_units": null,
"timezone": "America/New_York",
"user_reg_country_id": null,
"user_reg_state_id": null
}
Update a User
Updates an existing user.
See the Member JSON Schema in our GitHub repository.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
member_id | integer | Member ID | POST |
HIDE_ROUTED_ADDRESSES | boolean | If true, hide the routed addresses. | POST |
member_phone | string | User’s phone number | POST |
member_zipcode | string | The 5-7 digit ZIP Code | POST |
route_count | integer | Route count | POST |
member_email | string | Member’s email address | POST |
HIDE_VISITED_ADDRESSES | boolean | If true, hide the visited addresses. | POST |
READONLY_USER | boolean | If true, the user is read-only. | POST |
member_type | string | Type of member | POST |
date_of_birth | string | Date of birth | POST |
member_first_name | string | First name | POST |
member_password | string | Member’s password | POST |
HIDE_NONFUTURE_ROUTES | boolean | If true, hide non-future routes. | POST |
member_last_name | string | Last name | POST |
SHOW_ALL_VEHICLES | boolean | If true, show all vehicles. | POST |
SHOW_ALL_DRIVERS | boolean | If true, show all drivers. | POST |
<job id="Update Member's Account">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of updating an existing user account.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
jFile="member_edit_data.json"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
SET member_id=220461
:: The example demonstrates the process of updating an existing user account.
ECHO ON
curl -o file1.txt -g -X PUT -d "@member_edit_data.json" -k "%url%?api_key=%apikey%&member_id=%member_id%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of updating an existing user account.
curl -o file1.txt -g -X PUT -d "@member_edit_data.json" -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Update a User
/// </summary>
public void UpdateUser()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParametersV4 @params = new MemberParametersV4
{
member_id = 220461,
member_phone = "571-259-5939"
};
// Run the query
string errorString = "";
MemberResponseV4 result = route4Me.UserUpdate(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UpdateUser executed successfully");
Console.WriteLine("status: " + result.member_first_name + " " + result.member_last_name);
Console.WriteLine("member_id: " + result.member_id);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UpdateUser error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Update a User
''' </summary>
Public Sub UpdateUser()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParametersV4 = New MemberParametersV4() With { _
.member_id = 220461, _
.member_phone = "571-259-5939" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberResponseV4 = route4Me.UserUpdate(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("UpdateUser executed successfully")
Console.WriteLine("status: " & result.member_first_name & " " & result.member_last_name)
Console.WriteLine("member_id: " & result.member_id)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UpdateUser error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
// fetch users to edit later
users, err := service.GetSubusers()
if err != nil {
// could not get users
}
// get the last one
user := users[len(users)-1]
// change the phone number
user.Phone = "123452"
// call "edit"
member, err := service.Edit(user)
if err != nil {
// editing failed
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the updating of a user.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get a random member ID from a member with a type of SUB_ACCOUNT_DRIVER.
$randomMemberID = $member->getRandomMemberByType('SUB_ACCOUNT_DRIVER');
assert(!is_null($randomMemberID), "There is no member of the type SUB_ACCOUNT_DRIVER in the user's account");
// Update member
$params = Member::fromArray(array (
"member_id" => $randomMemberID,
"member_phone" => "555-777-888"
));
$response = $member->updateMember($params);
Route4Me::simplePrint($response);
unit UpdateUserUnit;
interface
uses SysUtils, BaseExampleUnit, UserParametersUnit;
type
TUpdateUser = class(TBaseExample)
public
procedure Execute(Parameters: TUserParameters);
end;
implementation
procedure TUpdateUser.Execute(Parameters: TUserParameters);
var
ErrorString: String;
begin
Route4MeManager.User.Update(Parameters, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('User updated successfully');
WriteLn('');
end
else
WriteLn(Format('UpdateUser error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("member_edit_data.json");
if(!inf.is_open())
{
cout << "Can't find data file" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
Json::Value member;
inf >> member;
if(route.modify_member(member, CRoute4Me::REQ_PUT) == 0)
{
cout << "User edited:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to modify member data " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/user.php?api_key=...
You can expect this API response:
{
"member_first_name": "Dumbo",
"member_id": "220461",
"member_last_name": "The Elephant",
"member_email": "[email protected]",
"preferred_units": "MI",
"preferred_language": "en",
"timezone": "America\/New_York",
"member_zipcode": null,
"OWNER_MEMBER_ID": "38392",
"member_type": "SUB_ACCOUNT_ADMIN",
"member_phone": "555-777-888",
"user_reg_state_id": "2",
"user_reg_country_id": "223",
"date_of_birth": "1980-01-01",
"HIDE_ROUTED_ADDRESSES": "FALSE",
"HIDE_VISITED_ADDRESSES": "FALSE",
"HIDE_NONFUTURE_ROUTES": "FALSE",
"READONLY_USER": "FALSE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "TRUE",
"member_picture": null
}
Add Custom Data to a User
Add/edit custom data to a user.
See the Member JSON Schema in our GitHub repository.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
member_id | integer | Member ID | POST |
HIDE_ROUTED_ADDRESSES | boolean | If true, hide the routed addresses. | POST |
member_phone | string | User’s phone number | POST |
member_zipcode | string | The 5-7 digit ZIP Code | POST |
route_count | integer | Route count | POST |
member_email | string | Member’s email address | POST |
HIDE_VISITED_ADDRESSES | boolean | If true, hide the visited addresses. | POST |
READONLY_USER | boolean | If true, the user is read-only. | POST |
member_type | string | Type of member | POST |
date_of_birth | string | Date of birth | POST |
member_first_name | string | First name | POST |
member_password | string | Member’s password | POST |
HIDE_NONFUTURE_ROUTES | boolean | If true, hide non-future routes. | POST |
member_last_name | string | Last name | POST |
SHOW_ALL_VEHICLES | boolean | If true, show all vehicles. | POST |
SHOW_ALL_DRIVERS | boolean | If true, show all drivers. | POST |
custom_data | array | An array of custom key value pairs. | POST |
<job id="Edit Member's Account">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' Edit/Add custom data of/to a member's account.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
jFile="member_edit_custom_data_data.json"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of adding/editing custom data to/of an existing user account.
ECHO ON
curl -o member_edit_custom_data_RESPONSE.json -g -X PUT -d "@member_edit_custom_data_data.json" -k "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
# The example refers to the process of adding/editing custom data to/of an existing user account.
curl -o member_edit_custom_data_RESPONSE.json -g -X PUT -d "@member_edit_custom_data_data.json" -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void AddEditCustomDataToUserTest()
{
if (skip == "yes") return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParametersV4 @params = new MemberParametersV4
{
HIDE_ROUTED_ADDRESSES = "FALSE",
member_phone = "571-259-5939",
member_zipcode = "22102",
member_email = "regression.autotests+" + DateTime.Now.ToString("yyyyMMddHHmmss") + "@gmail.com",
HIDE_VISITED_ADDRESSES = "FALSE",
READONLY_USER = "FALSE",
member_type = "SUB_ACCOUNT_DISPATCHER",
date_of_birth = "2010",
member_first_name = "Clay",
member_password = "123456",
HIDE_NONFUTURE_ROUTES = "FALSE",
member_last_name = "Abraham",
SHOW_ALL_VEHICLES = "FALSE",
SHOW_ALL_DRIVERS = "FALSE"
};
// Run the query
string errorString = "";
var result = route4Me.CreateUser(@params, out errorString);
// For successful testing of creating a user, you should provide a valid email address. Otherwise, you'll get the error "Email is used in system".
string rightResponse = result != null ? "ok" : ((errorString == "Email is used in system" || errorString == "Registration: The email address is missing or invalid.") ? "ok" : "");
Assert.IsTrue(rightResponse == "ok", "CreateUserTest failed... " + errorString);
lsMembers.Add(Convert.ToInt32(result.member_id));
MemberParametersV4 @customParams = new MemberParametersV4
{
member_id = result.member_id != null ? Convert.ToInt32(result.member_id) : -1,
custom_data = new Dictionary<string,string>() {{"Custom Key 2", "Custom Value 2"}}
};
errorString = "";
MemberResponseV4 result2 = route4Me.UserUpdate(@customParams, out errorString);
Assert.IsTrue(result2!=null, "UpdateUserTest failed... " + errorString);
Dictionary<string, string> customData = result2.custom_data;
Assert.IsTrue(customData.Keys.ElementAt(0) == "Custom Key 2", "Custom Key is not 'Custom Key 2'");
Assert.IsTrue(customData["Custom Key 2"] == "Custom Value 2", "Custom Value is not 'Custom Value 2'");
}
Public Sub AddEditCustomDataToUserTest()
If skip = "yes" Then Return
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim params As MemberParametersV4 = New MemberParametersV4 With {
.HIDE_ROUTED_ADDRESSES = "FALSE",
.member_phone = "571-259-5939",
.member_zipcode = "22102",
.member_email = "regression.autotests+" & DateTime.Now.ToString("yyyyMMddHHmmss") & "@gmail.com",
.HIDE_VISITED_ADDRESSES = "FALSE",
.READONLY_USER = "FALSE",
.member_type = "SUB_ACCOUNT_DISPATCHER",
.date_of_birth = "2010",
.member_first_name = "Clay",
.member_password = "123456",
.HIDE_NONFUTURE_ROUTES = "FALSE",
.member_last_name = "Abraham",
.SHOW_ALL_VEHICLES = "FALSE",
.SHOW_ALL_DRIVERS = "FALSE"
}
Dim errorString As String = ""
Dim result = route4Me.CreateUser(params, errorString)
Dim rightResponse As String = If(result IsNot Nothing, "ok", (If((errorString = "Email is used in system" OrElse errorString = "Registration: The email address is missing or invalid."), "ok", "")))
Assert.IsTrue(rightResponse = "ok", "CreateUserTest failed... " & errorString)
lsMembers.Add(Convert.ToInt32(result.member_id))
Dim customParams As MemberParametersV4 = New MemberParametersV4 With {
.member_id = If(result.member_id IsNot Nothing, Convert.ToInt32(result.member_id), -1),
.custom_data = New Dictionary(Of String, String)() From {
{"Custom Key 2", "Custom Value 2"}
}
}
errorString = ""
Dim result2 As MemberResponseV4 = route4Me.UserUpdate(customParams, errorString)
Assert.IsTrue(result2 IsNot Nothing, "UpdateUserTest failed... " & errorString)
Dim customData As Dictionary(Of String, String) = result2.custom_data
Assert.IsTrue(customData.Keys.ElementAt(0) = "Custom Key 2", "Custom Key is not 'Custom Key 2'")
Assert.IsTrue(customData("Custom Key 2") = "Custom Value 2", "Custom Value is not 'Custom Value 2'")
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example refers to the process of adding/editing custom data to/of an existing user account.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get random member ID of the member type SUB_ACCOUNT_DRIVER
$randomMemberID = $member->getRandomMemberByType('SUB_ACCOUNT_DRIVER');
assert(!is_null($randomMemberID), "There is no member of the type SUB_ACCOUNT_DRIVER in the user's account");
// Update member
$params = Member::fromArray(array (
"member_id" => $randomMemberID,
"custom_data" => array("Custom Key 2" => "Custom Value 2")
));
$response = $member->updateMember($params);
Route4Me::simplePrint($response["custom_data"]);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...
You can expect this API response:
{
"member_first_name": "Medvedson",
"member_id": "2",
"member_last_name": "David",
"member_email": "[email protected]",
"preferred_units": "MI",
"preferred_language": "en",
"timezone": "America/New_York",
"member_zipcode": null,
"OWNER_MEMBER_ID": "1",
"member_type": "SUB_ACCOUNT_DRIVER",
"member_phone": "+333333333333",
"user_reg_state_id": "2",
"user_reg_country_id": "223",
"date_of_birth": "1948-08-08",
"HIDE_ROUTED_ADDRESSES": "FALSE",
"HIDE_VISITED_ADDRESSES": "FALSE",
"HIDE_NONFUTURE_ROUTES": "FALSE",
"READONLY_USER": "TRUE",
"SHOW_ALL_DRIVERS": "FALSE",
"SHOW_ALL_VEHICLES": "FALSE",
"member_picture": null,
"api_key": "11111111111111111111111111111111",
"custom_data": {
"Custom Key 2": "Custom Value 2"
}
}
Remove a User
Removes an existing user from a member’s account.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
member_id | integer | Member ID | POST |
<job id="Remove a Sub-user">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of removing an existing sub-user from a member's account.
url="https://api.route4me.com/api.v4/user.php"
apikey="11111111111111111111111111111111"
jFile="member_delete_data.json"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/user.php
SET apikey=11111111111111111111111111111111
SET member_id=147824
:: The example demonstrates the process of removing an existing sub-user from a member's account.
ECHO ON
curl -o file1.txt -g -X DELETE -d "@member_delete_data.json" -k "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/user.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of removing an existing sub-user from a member's account.
curl -o file1.txt -g -X DELETE -d "@member_delete_data.json" -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Remove User
/// </summary>
public void DeleteUser()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberParametersV4 @params = new MemberParametersV4 { member_id = 147824 };
// Run the query
string errorString = "";
bool result = route4Me.UserDelete(@params, out errorString);
Console.WriteLine("");
if (result)
{
Console.WriteLine("DeleteUser executed successfully");
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("DeleteUser error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Remove User
''' </summary>
Public Sub DeleteUser()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberParametersV4 = New MemberParametersV4() With { _
.member_id = 147824 _
}
' Run the query
Dim errorString As String = ""
Dim result As Boolean = route4Me.UserDelete(params, errorString)
Console.WriteLine("")
If result Then
Console.WriteLine("DeleteUser executed successfully")
Console.WriteLine("---------------------------")
Else
Console.WriteLine("DeleteUser error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
users, err := service.GetSubusers()
if err != nil {
// could not get users
}
// get the last one
user := users[len(users)-1]
resp, err := service.Delete(user.ID)
if err != nil {
// handle error
}
if !resp.Status {
// something undefined went wrong
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of removing an existing sub-user from a member's account.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get a random member ID from a member with a type of SUB_ACCOUNT_DRIVER.
$randomMemberID = $member->getRandomMemberByType('SUB_ACCOUNT_DRIVER');
assert(!is_null($randomMemberID), "There is no member of the type SUB_ACCOUNT_DRIVER in the user's account");
// Delete member from the user's account
$params = Member::fromArray(array (
"member_id" => $randomMemberID
));
$response = $member->deleteMember($params);
Route4Me::simplePrint($response);
unit RemoveUserUnit;
interface
uses SysUtils, BaseExampleUnit, UserParametersUnit;
type
TRemoveUser = class(TBaseExample)
public
procedure Execute(MemberId: integer);
end;
implementation
procedure TRemoveUser.Execute(MemberId: integer);
var
ErrorString: String;
begin
Route4MeManager.User.Remove(MemberId, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('User removed successfully');
WriteLn('');
end
else
WriteLn(Format('RemoveUser error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("member_delete_data.json");
if(!inf.is_open())
{
cout << "Can't find data file" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
Json::Value member;
inf >> member;
if(route.modify_member(member, CRoute4Me::REQ_DELETE) == 0)
{
cout << "User data deleted:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to delete user data " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/user.php?api_key=...
You can expect this API response:
{
"status": true
}
Add a New Configuration Key
Adds a new configuration key to a member’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
config_key | string | Configuration key | POST |
config_value | string | Configuration value | POST |
is_hidden_value | boolean | If true, the value is hidden. | POST |
can_unhide_value | boolean | If true, the value can be visible. | POST |
<job id="New Account Configuration Key">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of creating a new account configuration key.
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="add_new_account_config_value_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of creating a new account configuration key.
curl -o file1.txt -k -g -X POST -H "Content-Type: application/json;" -d "@add_new_account_config_value_data2.json" "%url%?api_key=%apikey%"
timeout /t 30
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of creating a new account configuration key.
curl -o file1.txt -k -g -X POST -H "Content-Type: application/json;" -d "@add_new_account_config_value_data2.json" "%url%?api_key=%apikey%"
timeout /t 30
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Create New Configuration Key
/// </summary>
public void AddNewConfigurationKey()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters @params = new MemberConfigurationParameters
{
config_key = "destination_icon_uri",
config_value = "value"
};
// Run the query
string errorString = "";
MemberConfigurationResponse result = route4Me.CreateNewConfigurationKey(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("AddNewConfigurationKey executed successfully");
Console.WriteLine("Result: " + result.result);
Console.WriteLine("Affected: " + result.affected);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("AddNewConfigurationKey error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Create New Configuration Key
''' </summary>
Public Sub AddNewConfigurationKey()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberConfigurationParameters = New MemberConfigurationParameters() With { _
.config_key = "destination_icon_uri", _
.config_value = "value" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberConfigurationResponse = route4Me.CreateNewConfigurationKey(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("AddNewConfigurationKey executed successfully")
Console.WriteLine("Result: " & result.result)
Console.WriteLine("Affected: " & result.affected)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UserRegistration error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
success, err := service.AddConfigEntry("config-test-key-go", "config-test-value-go")
if err != nil {
// request unsuccessful
return
}
if !success {
// couldn't add entry
return
}
// everything went as expected
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example demonstrates the process of creating a new account configuration key.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$params = Member::fromArray(array (
"config_key" => "destination_icon_uri",
"config_value" => "value"
));
$member = new Member();
$response = $member->newMemberConfigKey($params);
Route4Me::simplePrint($response);
unit AddConfigValueUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TAddConfigValue = class(TBaseExample)
public
function Execute(Key, Value: String): boolean;
end;
implementation
function TAddConfigValue.Execute(Key, Value: String): boolean;
var
ErrorString: String;
begin
Result := Route4MeManager.User.AddConfigValue(Key, Value, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
if Result then
WriteLn('AddConfigValue executed successfully')
else
WriteLn('AddConfigValue error');
WriteLn('');
end
else
WriteLn(Format('AddConfigValue error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_account_data.json");
if(!inf.is_open())
{
cout << "Can't find data file" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
Json::Value account;
inf >> account;
if(route.modify_config(account, CRoute4Me::REQ_POST) == 0)
{
cout << "Config added:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to add config " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char file_name[] = "add_account_data.json";
char* data = NULL;
struct MapPoint point = {0,1};
if (deserialize(file_name, &data))
{
printf("File add_account_data.json not found!\n");
return -1;
}
init(key, 1);
if (!modify_config(data, REQ_POST))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
if (data)
{
free(data);
}
cleanUp();
return 0;
}
HTTP Request
/api.v4/configuration-settings.php?api_key=...
You can expect this API response:
{
"result":"OK",
"affected":1
}
Add an Array of Configuration Keys
Adds an array of configuration keys to a member’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
payload | string | A JSON object containing an array of configuration keys. | POST |
<job id="Add Account Configuration Keys Array">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' Example refers to the process of adding array of the new account configuration keys to the user's account.
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="add_array_of_account_config_values_data.json"
Set r4m=New Route4Me
r4m.outputFile="add_array_of_account_config_values_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of adding an array of configuration keys to a member's account.
curl -o add_array_of_account_config_values_RESPONSE.json -k -g -X POST -H "Content-Type: application/json;" -d "@add_array_of_account_config_values_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/configuration-settings.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of adding an array of configuration keys to a member's account.
curl -o add_array_of_account_config_values_RESPONSE.json -k -g -X POST -H "Content-Type: application/json;" -d "@add_array_of_account_config_values_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void AddConfigurationKeyArrayTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters[] parametersArray = new MemberConfigurationParameters[]
{
new MemberConfigurationParameters
{
config_key = "Test My Height",
config_value = "185"
},
new MemberConfigurationParameters
{
config_key = "Test My Weight",
config_value = "110"
},
};
// Run the query
var result = route4Me.CreateNewConfigurationKey(parametersArray, out string errorString);
Assert.IsNotNull(result, "AddNewConfigurationKeyTest failed... " + errorString);
lsConfigurationKeys.Add("Test My Height");
lsConfigurationKeys.Add("Test My Weight");
}
Public Sub AddConfigurationKeyArrayTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim parametersArray As MemberConfigurationParameters() = New MemberConfigurationParameters() _
{
New MemberConfigurationParameters With {
.config_key = "Test My Height",
.config_value = "185"
},
New MemberConfigurationParameters With {
.config_key = "Test My Weight",
.config_value = "110"
}}
Dim errorString As String = Nothing
Dim result = route4Me.CreateNewConfigurationKey(parametersArray, errorString)
Assert.IsNotNull(result, "AddNewConfigurationKeyTest failed... " & errorString)
lsConfigurationKeys.Add("Test My Height")
lsConfigurationKeys.Add("Test My Weight")
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Example refers to the process of adding array of the new account configuration keys to the user's account.
// Set the api key in the Route4me class
Route4Me::setApiKey('11111111111111111111111111111111');
$params = [
Member::fromArray([
'config_key' => 'hide_sharing_in_route_parameters_dialog',
'config_value' => 'false',
]),
Member::fromArray([
'config_key' => 'disable_telematics_popup_overlay',
'config_value' => 'false',
])
];
$member = new Member();
$response = $member->newMemberConfigKey($params);
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/configuration-settings.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 2
}
Get All Configuration Data
Get all configuration data from a member’s account.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
<job id="Get All Configuration Data">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting all configuration data from an account.
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting all configuration data from an account.
ECHO ON
curl -o file1.txt -g -X GET -k "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/configuration-settings.php
apikey=11111111111111111111111111111111
# The example refers to the process of getting all configuration data from an account.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get All Configuration Data
/// </summary>
public void GetAllConfigurationData()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters @params = new MemberConfigurationParameters();
// Run the query
string errorString = "";
MemberConfigurationDataRersponse result = route4Me.GetConfigurationData(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("GetAllConfigurationData executed successfully");
Console.WriteLine("Result: " + result.result);
foreach (MemberConfigurationData mc_data in result.data)
{
Console.WriteLine("member_id= " + mc_data.member_id);
Console.WriteLine("config_key= " + mc_data.config_key);
Console.WriteLine("config_value= " + mc_data.config_value);
Console.WriteLine("---------------------------");
}
}
else
{
Console.WriteLine("GetAllConfigurationData error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get All Configuration Data
''' </summary>
Public Sub GetAllConfigurationData()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberConfigurationParameters = New MemberConfigurationParameters()
' Run the query
Dim errorString As String = ""
Dim result As MemberConfigurationDataRersponse = route4Me.GetConfigurationData(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("GetAllConfigurationData executed successfully")
Console.WriteLine("Result: " & result.result)
For Each mc_data As MemberConfigurationData In result.data
Console.WriteLine("member_id= " & mc_data.member_id)
Console.WriteLine("config_key= " & mc_data.config_key)
Console.WriteLine("config_value= " & mc_data.config_value)
Console.WriteLine("---------------------------")
Next
Else
Console.WriteLine("GetAllConfigurationData error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
values, err := service.GetConfigValues()
if err != nil {
// handle error
return
}
// process values
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example refers to the process of getting all configuration data from an account.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$params = Member::fromArray(array ( ));
$member = new Member();
$response = $member->getMemberConfigData($params);
foreach ($response as $key => $value) {
if (is_array($value)) {
foreach ($value as $v1) {
Route4Me::simplePrint($v1);
echo "<br>";
}
} else {
echo "$key => $value <br>";
}
echo "<br>";
}
unit GetAllConfigValuesUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TGetAllConfigValues = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses
CommonTypesUnit;
procedure TGetAllConfigValues.Execute;
var
ErrorString: String;
Values: TListStringPair;
i: Integer;
begin
Values := Route4MeManager.User.GetAllConfigValues(ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('GetAllConfigValues executed successfully.');
for i := 0 to Values.Count - 1 do
WriteLn(Format('Key="%s", Value="%s"', [Values[i].Key, Values[i].Value]));
WriteLn('');
end
else
WriteLn(Format('GetAllConfigValues error: "%s"', [ErrorString]));
finally
FreeAndNil(Values);
end;
end;
end.
#include <iostream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
int ret = 0;
if(route.get_config() == 0)
{
cout << "Config data:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else
{
cout << "Failed to get config " << route.get_err_code() << ": " << route.get_err_msg() << endl;
ret = -1;
}
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/configuration-settings.php?api_key=...
You can expect this API response:
{
"result": "OK",
"data": [
{
"member_id": 1,
"config_key": "destination_icon_width",
"config_value": "32"
},
{
"member_id": 1,
"config_key": "destination_icon_uri",
"config_value": "value"
}
]
}
Get a Specific Configuration Key Value
Get a specific configuration key value from a member’s account.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
config_key | string | Configuration key | GET |
<job id="Get Specific Key Value">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting a specific single configuration key data.
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
config_key="destination_icon_width"
url=url&"?api_key="&apikey
url=url&"&config_key="&config_key
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
SET config_key=destination_icon_width
:: The example demonstrates the process of getting a specific single configuration key data.
ECHO ON
curl -o file1.txt -g -X GET -k "%url%?api_key=%apikey%&config_key=%config_key%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/configuration-settings.php
apikey=11111111111111111111111111111111
config_key=destination_icon_width
# The example demonstrates the process of getting a specific single configuration key data.
curl -o file1.txt -g -X GET -k "$url?api_key=$apikey&config_key=$config_key"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Specific Configuration Key Value (v4)
/// </summary>
public void GetSpecificConfigurationKeyData()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters @params = new MemberConfigurationParameters { config_key = "destination_icon_uri" };
// Run the query
string errorString = "";
MemberConfigurationDataRersponse result = route4Me.GetConfigurationData(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("GetSpecificConfigurationKeyData executed successfully");
Console.WriteLine("Result: " + result.result);
foreach (MemberConfigurationData mc_data in result.data)
{
Console.WriteLine("member_id= " + mc_data.member_id);
Console.WriteLine("config_key= " + mc_data.config_key);
Console.WriteLine("config_value= " + mc_data.config_value);
Console.WriteLine("---------------------------");
}
}
else
{
Console.WriteLine("GetSpecificConfigurationKeyData error: {0}", errorString);
}
}
}
}
Public Sub GetSpecificConfigurationKeyDataTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As New MemberConfigurationParameters() With { _
.config_key = "destination_icon_uri" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberConfigurationDataRersponse = route4Me.GetConfigurationData(params, errorString)
Assert.IsNotNull(result, Convert.ToString("GetSpecificConfigurationKeyDataTest failed... ") & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
values, err := service.GetConfigValues()
if err != nil {
// handle error
return
}
// process values
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of getting a specific single configuration key data.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get a random member config key
$randomParams = Member::fromArray(array ( ));
$response = $member->getMemberConfigData($randomParams);
assert(!is_null($response), "Can't retrieve all config data");
assert(sizeof($response)==2, "Can't retrieve all config data");
assert(isset($response['data']), "Can't retrieve all config data");
$randomKey = $response['data'][rand(0, sizeof($response['data']) - 1)]['config_key'];
// Get a specific single configuration key data
echo "randomKey -> $randomKey <br><br>";
$params = Member::fromArray(array (
"config_key" => $randomKey
));
$response = $member->getMemberConfigData($params);
foreach ($response as $key => $value) {
if (is_array($value)) {
Route4Me::simplePrint($value);
} else {
echo "$key => $value <br>";
}
}
unit GetConfigValueUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TGetConfigValue = class(TBaseExample)
public
procedure Execute(Key: String);
end;
implementation
uses
CommonTypesUnit, NullableBasicTypesUnit;
procedure TGetConfigValue.Execute(Key: String);
var
ErrorString: String;
Value: NullableString;
begin
Value := Route4MeManager.User.GetConfigValue(Key, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
if Value.IsNotNull then
WriteLn(
Format('GetConfigValue executed successfully. Key="%s", Value="%s"',
[Key, Value.Value]))
else
WriteLn('GetConfigValue error');
WriteLn('');
end
else
WriteLn(Format('GetConfigValue error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
if (!get_config(""))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/configuration-settings.php?api_key=...&config_key=...
You can expect this API response:
{
"result": "OK",
"data": [{
"member_id": 1,
"config_key": "destination_icon_width",
"config_value": "32"
}]
}
Remove a Configuration Key
Removes a configuration key from a member’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
config_key | string | Configuration key | POST |
<job id="Remove Specific Configuration Key">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of removing a specific configuration key belonging to an account.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="delete_existing_config_key_data.json"
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of removing a specific configuration key belonging to an account.
curl -o file1.txt -k -g -X DELETE -H "Content-Type: application/json;" -d "@delete_existing_config_key_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/configuration-settings.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of removing a specific configuration key belonging to an account.
curl -o file1.txt -k -g -X DELETE -H "Content-Type: application/json;" -d "@delete_existing_config_key_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Remove a Configuration Key
/// </summary>
public void RemoveConfigurationKey()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters @params = new MemberConfigurationParameters { config_key = "My height" };
// Run the query
string errorString = "";
MemberConfigurationResponse result = route4Me.RemoveConfigurationKey(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("RemoveConfigurationKey executed successfully");
Console.WriteLine("Result: " + result.result);
Console.WriteLine("Affected: " + result.affected);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UserRegistration error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Remove a Configuration Key
''' </summary>
Public Sub RemoveConfigurationKey()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberConfigurationParameters = New MemberConfigurationParameters() With { _
.config_key = "My height" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberConfigurationResponse = route4Me.RemoveConfigurationKey(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("RemoveConfigurationKey executed successfully")
Console.WriteLine("Result: " & result.result)
Console.WriteLine("Affected: " & result.affected)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UserRegistration error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
success, err := service.DeleteConfigEntry("config-test-key-go")
if err != nil {
// request unsuccessful
return
}
if !success {
// couldn't delete entry
return
}
// key deleted
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
// The example demonstrates the process of removing a specific configuration key belonging to an account.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Create a config key
$createParams = Member::fromArray(array (
"config_key" => "My height",
"config_value" => "182"
));
$response = $member->newMemberConfigKey($createParams);
// Delete a config key
$removeParams = Member::fromArray(array (
"config_key" => "My height"
));
$response = $member->removeMemberConfigKey($removeParams);
Route4Me::simplePrint($response);
unit DeleteConfigValueUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TDeleteConfigValue = class(TBaseExample)
public
function Execute(Key: String): boolean;
end;
implementation
function TDeleteConfigValue.Execute(Key: String): boolean;
var
ErrorString: String;
begin
Result := Route4MeManager.User.DeleteConfigValue(Key, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
if Result then
WriteLn('DeleteConfigValue executed successfully')
else
WriteLn('DeleteConfigValue error');
WriteLn('');
end
else
WriteLn(Format('DeleteConfigValue error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/configuration-settings.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 1
}
Update a Configuration Key Value
Updates a configuration key value in a member’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP method |
---|---|---|---|
api_key | string | API key of the user | GET |
config_key | string | Configuration key | POST |
config_value | string | Configuration value | POST |
is_hidden_value | boolean | If true the value is hidden | POST |
can_unhide_value | boolean | If true, the value can be visible | POST |
<job id="Update Specific Key Value">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example demonstrates the process of updating an existing configuration key value.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/configuration-settings.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="update_existing_config_key_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/configuration-settings.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the process of updating an existing configuration key value.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json;" -d "@update_existing_config_key_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/configuration-settings.php
apikey=11111111111111111111111111111111
# The example demonstrates the process of updating an existing configuration key value.
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json;" -d "@update_existing_config_key_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Update a Configuration Key Value
/// </summary>
public void UpdateConfigurationKey()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
MemberConfigurationParameters @params = new MemberConfigurationParameters
{
config_key = "destination_icon_uri",
config_value = "444"
};
// Run the query
string errorString = "";
MemberConfigurationResponse result = route4Me.UpdateConfigurationKey(@params, out errorString);
Console.WriteLine("");
if (result != null)
{
Console.WriteLine("UpdateConfigurationKey executed successfully");
Console.WriteLine("Result: " + result.result);
Console.WriteLine("Affected: " + result.affected);
Console.WriteLine("---------------------------");
}
else
{
Console.WriteLine("UpdateConfigurationKey error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Update a Configuration Key Value
''' </summary>
Public Sub UpdateConfigurationKey()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As MemberConfigurationParameters = New MemberConfigurationParameters() With { _
.config_key = "destination_icon_uri", _
.config_value = "444" _
}
' Run the query
Dim errorString As String = ""
Dim result As MemberConfigurationResponse = route4Me.UpdateConfigurationKey(params, errorString)
Console.WriteLine("")
If result IsNot Nothing Then
Console.WriteLine("UpdateConfigurationKey executed successfully")
Console.WriteLine("Result: " & result.result)
Console.WriteLine("Affected: " & result.affected)
Console.WriteLine("---------------------------")
Else
Console.WriteLine("UpdateConfigurationKey error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/users"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &users.Service{Client: client}
success, err := service.UpdateConfigEntry("config-test-key-go", "config-test-value-go")
if err != nil {
// request unsuccessful
return
}
if !success {
// couldn't edit entry
return
}
// everything went as expected
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Member;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of updating an existing configuration key value.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$member = new Member();
// Get a random member config key
$randomParams = Member::fromArray(array ( ));
$response = $member->getMemberConfigData($randomParams);
assert(!is_null($response), "Can't retrieve all config data");
assert(sizeof($response)==2, "Can't retrieve all config data");
assert(isset($response['data']), "Can't retrieve all config data");
$randIndex = rand(0, sizeof($response['data']) - 1);
$randomKey = $response['data'][$randIndex]['config_key'];
$randomValue = $response['data'][$randIndex]['config_value'];
echo "Random key -> $randomKey, random value -> $randomValue <br><br>";
// Update existing configuration key data
$params = Member::fromArray(array (
"config_key" => $randomKey,
"config_value" => $randomValue." Updated"
));
$response = $member->updateMemberConfigKey($params);
assert(isset($response['affected']), "Can't update the config data");
assert(isset($response['affected'])=='1', "Can't update the config data");
Route4Me::simplePrint($response);
unit UpdateConfigValueUnit;
interface
uses SysUtils, BaseExampleUnit, EnumsUnit;
type
TUpdateConfigValue = class(TBaseExample)
public
function Execute(Key, Value: String): boolean;
end;
implementation
function TUpdateConfigValue.Execute(Key, Value: String): boolean;
var
ErrorString: String;
begin
Result := Route4MeManager.User.UpdateConfigValue(Key, Value, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
if Result then
WriteLn('UpdateConfigValue executed successfully')
else
WriteLn('UpdateConfigValue error');
WriteLn('');
end
else
WriteLn(Format('UpdateConfigValue error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/configuration-settings.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 1
}
Notes
A note refers to an assigned or additional text description or data added to a Route
or Address
object.
See the Note JSON Schema in our GitHub repository.
Note Properties
Attribute | Type | Description |
---|---|---|
note_id | integer | The ID of the note in the system. |
route_id | string | Route ID |
route_destination_id | integer | Route destination ID |
upload_id | string | The unique ID of the file attachment. |
ts_added | integer | The Unix timestamp. |
lat | number | Latitude |
lng | number | Longitude |
activity_type | string | Activity Type |
contents | string | Contents |
upload_type | string | Upload Type |
upload_url | string | The direct CDN URL of the uploaded attachment. |
upload_extension | string | The extension of the attachment. |
device_type | string | Device type |
Add Route Notes
Adds a note to a route.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
address_id | integer | Address ID |
dev_lat | number | Device latitude |
dev_lng | number | Device longitude |
device_type | string | Device type |
input data | POST data | A valid JSON object string. See the Note JSON Schema as a guide. |
<job id="AddNotesToRoute">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' For accurate testing and results, use your API key and insert real test data.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/addRouteNotes.php"
apikey="11111111111111111111111111111111"
routeid="vf55g4fg5dfgfdg1fdgd21g2f"
addrid="787854545455"
dev_lat="33.132675170898"
dev_lng="-83.244743347168"
dev_type="web"
updatetype="dropoff"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&address_id="&addrid
url=url&"&dev_lat="&dev_lat
url=url&"&dev_lng="&dev_lng
url=url&"&device_type="&dev_type
url=url&"&update_type="&updatetype
jFile="add_notes_to_route_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void AddAddressNote(string routeId, int addressId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
NoteParameters noteParameters = new NoteParameters()
{
RouteId = routeId,
AddressId = addressId,
Latitude = 33.132675170898,
Longitude = -83.244743347168,
DeviceType = DeviceType.Web.Description(),
ActivityType = StatusUpdateType.DropOff.Description()
};
// Run the query
string errorString;
string contents = "Test Note Contents " + DateTime.Now.ToString();
AddressNote note = route4Me.AddAddressNote(noteParameters, contents, out errorString);
Console.WriteLine("");
if (note != null)
{
Console.WriteLine("AddAddressNote executed successfully");
Console.WriteLine("Note ID: {0}", note.NoteId);
}
else
{
Console.WriteLine("AddAddressNote error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub AddAddressNote(routeId As String, addressId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim noteParameters As New NoteParameters() With { _
.RouteId = routeId, _
.AddressId = addressId, _
.Latitude = 33.132675170898, _
.Longitude = -83.244743347168, _
.DeviceType = EnumHelper.GetEnumDescription(DeviceType.Web), _
.ActivityType = EnumHelper.GetEnumDescription(StatusUpdateType.DropOff) _
}
' Run the query
Dim errorString As String = ""
Dim contents As String = "Test Note Contents " + DateTime.Now.ToString()
Dim note As AddressNote = route4Me.AddAddressNote(noteParameters, contents, errorString)
Console.WriteLine("")
If note IsNot Nothing Then
Console.WriteLine("AddAddressNote executed successfully")
Console.WriteLine("Note ID: {0}", note.NoteId)
Else
Console.WriteLine("AddAddressNote error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import (
DEVICE_TYPE
)
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
route_id = response.route_id
route_destination_id = response.addresses[0].route_destination_id
lat = response.addresses[0].lat
lng = response.addresses[0].lng
note = 'Test Note Contents'
response = route4me.address.add_address_notes(
note,
route_id=route_id,
device_type=DEVICE_TYPE.WEB,
activity_type='wrongdelivery',
dev_lat=lat,
dev_lng=lng,
address_id=route_destination_id,
)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Note ID: {}'.format(response.note_id)
print 'Note contents: {}'.format(response.note.contents)
print 'Route ID: {}'.format(response.note.route_id)
print 'Route Destination ID: {}'.format(
response.note.route_destination_id)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.notes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.notes.NoteRequest;
import com.route4me.sdk.services.notes.NotesManager;
import com.route4me.sdk.services.notes.StatusUpdateType;
import com.route4me.sdk.services.routing.*;
import java.util.List;
public class AddAddressNotes {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
RoutingManager routeManager = new RoutingManager(apiKey);
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
Route responseObject = routeManager.getRoute(new RoutesRequest().setId(routes.get(0).getId()));
NotesManager notesManager = new NotesManager(apiKey);
Address address = responseObject.getAddresses().get(0);
long routeDestinationID = address.getRouteDestinationId();
String noteContent = "Adding a note to an Address";
NoteRequest request = new NoteRequest().setRouteId(routes.get(0).getId())
.setAddressId(Long.toString(routeDestinationID))
.setLatitude(address.getLatitude())
.setLongitude(address.getLongitude())
.setDeviceType(Constants.DeviceType.WEB);
NotesManager.AddedNote note = notesManager.addAddressNotes(request, noteContent, StatusUpdateType.WRONG_DELIVERY);
if (note.getStatus()) {
System.out.println(note);
}
}
}
package AddAddressNote;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::NoteParameters;
use Route4MeSDK::DataTypes::StatusUpdateType;
sub AddAddressNote {
my ($self, $routeId, $addressId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $noteParameters = NoteParameters->new(
route_id => $routeId,
address_id => $addressId,
dev_lat => 33.132675170898,
dev_lng => -83.244743347168,
device_type => DeviceType->Web,
strUpdateType => StatusUpdateType->DropOff
);
my $errorString = "";
my $contents = "Test Note Contents " . localtime();
my $note = $route4Me->addAddressNote($noteParameters, $contents, $errorString);
if ($note) {
print "AddAddressNote executed successfully\n";
printf "Note ID: %s\n\n", $note->{'note_id'};
} else {
printf "AddAddressNote error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/actions/addRouteNotes.php
SET apikey=11111111111111111111111111111111
SET routeid=DD376C7148E7FEE36CFABE2BD9978BDD
:: The parameters of the address "2705 N River Rd, Stow, OH 44224"
SET addrid=183045812
SET dev_lat=41.145240783691
SET dev_lng=-81.410247802734
SET dev_type=web
SET updatetype=dropoff
SET content=Note example for Destination Audit Use Case
:: The example refers to the process of adding a note to a route by sending HTTP parameters.
ECHO ON
curl -o file1.txt -g -k -X POST -H "Content-Type: multipart/form-data;" -F "strNoteContents=%content%" -F "strUpdateType=%dropoff%" "%url%?api_key=%apikey%&route_id=%routeid%&address_id=%addrid%&dev_lat=%dev_lat%&dev_lng=%dev_lng%&device_type=%dev_type%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/addRouteNotes.php
apikey=11111111111111111111111111111111
routeid=DD376C7148E7FEE36CFABE2BD9978BDD
# The parameters of the address "2705 N River Rd, Stow, OH 44224"
addrid=183045812
dev_lat=41.145240783691
dev_lng=-81.410247802734
dev_type=web
updatetype=dropoff
content=Note example for Destination Audit Use Case
# The example refers to the process of adding a note to a route by sending HTTP parameters.
curl -o file1.txt -g -k -X POST -H "Content-Type: multipart/form-data;" -F "strNoteContents=$content" -F "strUpdateType=$dropoff" "$url?api_key=$apikey&route_id=$routeid&address_id=$addrid&dev_lat=$dev_lat&dev_lng=$dev_lng&device_type=$dev_type"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve random route_id");
// Get the random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Add an address note
$noteParameters = array(
"route_id" => $route_id,
"address_id" => $route_destination_id,
"dev_lat" => 33.132675170898,
"dev_lng" => -83.244743347168,
"device_type" => "web",
"strUpdateType" => "dropoff",
"strNoteContents" => "Test"
);
$address = new Address();
echo "route_id = $route_id <br>";
echo "route_destination_id = $route_destination_id <br><br>";
$address1 = $address->AddAddressNote($noteParameters);
Route4Me::simplePrint((array)$address1, true);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
query := &NoteQuery{
RouteID: get.ID,
AddressID: get.Addresses[0].RouteDestinationID.String(),
Latitude: 33.132675170898,
Longitude: -83.244743347168,
ActivityType: DropOff,
}
addedNote, err = service.AddAddressNote(query, "Note Contents")
if err != nil {
//handle errors
return
}
}
unit AddAddressNoteUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TAddAddressNote = class(TBaseExample)
public
procedure Execute(RouteId: String; AddressId: integer);
end;
implementation
uses NoteParametersUnit, AddressNoteUnit, EnumsUnit;
procedure TAddAddressNote.Execute(RouteId: String; AddressId: integer);
var
ErrorString: String;
Parameters: TNoteParameters;
Contents: String;
Note: TAddressNote;
begin
Parameters := TNoteParameters.Create();
try
Parameters.RouteId := RouteId;
Parameters.AddressId := AddressId;
Parameters.Latitude := 33.132675170898;
Parameters.Longitude := -83.244743347168;
Parameters.DeviceType := TDeviceTypeDescription[TDeviceType.Web];
Parameters.ActivityType := TStatusUpdateTypeDescription[TStatusUpdateType.DropOff];
Contents := 'Test Note Contents ' + DateTimeToStr(Now);
Note := Route4MeManager.AddressNote.Add(Parameters, Contents, ErrorString);
try
WriteLn('');
if (Note <> nil) then
begin
WriteLn('AddAddressNote executed successfully');
WriteLn(Format('Note ID: %d', [Note.NoteId.Value]));
end
else
WriteLn(Format('AddAddressNote error: "%s"', [ErrorString]));
finally
FreeAndNil(Note);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_address_to_route.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
int ret = route.add_route_notes(route_id, route_destination_id, "info");
if (ret == 0)
cout << "Note added" << endl;
else
cout << "Error adding note :" << route.get_err_code() << ": " << route.get_err_msg() << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
"use strict"
const path = require("path")
const debug = require("debug")("route4me-node:examples")
require("../init-examples-suite")
const helper = require("./../../test/helper")
helper.describeIntegration(helper.toSuiteName(__filename), function T() {
this.timeout(5000)
this.slow(3000)
it.skip(path.basename(__filename), (done) => {
// const Route4Me = require("route4me-node")
const apiKey = "11111111111111111111111111111111"
const route4me = new Route4Me(apiKey)
const noteData = {
addressId: 167899269,
routeId: "241466F15515D67D3F951E2DA38DE76D",
deviceLatitude: 55.6884868,
deviceLongitude: 12.5366426,
deviceType: "android_phone",
note: "Just a test note",
type: "web",
}
route4me.Notes.create(noteData, (err, noteResult) => {
debug("error ", err)
debug("result ", noteResult)
// Expectations about result
expect(err).is.null
expect(noteResult).has.property("optimization_problem_id", "07372F2CF3814EC6DFFAFE92E22771AA")
// TODO: remove `done` call from examples
done()
})
})
})
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "CA902292134DBC134EAF8363426BD247";
char route_destination_id[] = "174405709A";
char file_name[] = "add_address_to_route.json";
char* data = NULL;
struct MapPoint point = {0,1};
deserialize(file_name, &data);
init(key, 1);
if (!add_route_notes(route_id, route_destination_id,"notes", "laptop", &point, data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
if (data)
{
free(data);
}
cleanUp();
return 0;
}
HTTP Request
/actions/addRouteNotes.php?api_key=...&route_id=...&address_id=...&dev_lat=...&dev_lng=...
You can expect this API response:
{
"status": true,
"note_id": "1015289",
"upload_id": "",
"note": {
"note_id": 1015289,
"route_id": "DD376C7148E7FEE36CFABE2BD9978BDD",
"route_destination_id": 183045812,
"ts_added": 1480511401,
"activity_type": "",
"upload_id": "",
"upload_extension": null,
"upload_url": null,
"upload_type": null,
"contents": "Note example for Destination Audit Use Case",
"lat": 41.145241,
"lng": -81.410248,
"device_type": "web"
}
}
Add a Note File
Adds a note to a route through file upload.
See the sample CSV file for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
address_id | integer | Address ID |
dev_lat | number | Device latitude |
dev_lng | number | Device longitude |
device_type | string | Device type |
strUpdateType | string | Update type |
strFilename | file | A file containing data for the note. See this sample CSV file as a guide. |
@ECHO OFF
SET url=https://api.route4me.com/actions/addRouteNotes.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET addrid=162916895
SET dev_lat=33.132675170898
SET dev_lng=-83.244743347168
SET dev_type=web
SET updatetype=dropoff
SET "filename=notes.csv"
SET "strNoteContents=This is the content of the file"
:: The example refers to the process of adding a note to a route through the use of file uploading.
ECHO ON
curl -o file1.txt -g -k -X POST -F "strFilename=@%filename%" "%url%?api_key=%apikey%&route_id=%routeid%&address_id=%addrid%&dev_lat=%dev_lat%&dev_lng=%dev_lng%&device_type=%dev_type%&strUpdateType=ANY_FILE"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/addRouteNotes.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
addrid=162916895
dev_lat=33.132675170898
dev_lng=-83.244743347168
dev_type=web
updatetype=dropoff
filename="notes.csv"
# The example refers to the process of adding a note to a route through the use of file uploading.
curl -o file1.txt -g -k -X POST -F "strFilename=@$filename" "$url?api_key=$apikey&route_id=$routeid&address_id=$addrid&dev_lat=$dev_lat&dev_lng=$dev_lng&device_type=$dev_type&strUpdateType=ANY_FILE"
echo "Finished..."
sleep 15
<job id="Add Notes To Route File Uploading">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of adding a note to a route through the use of file uploading.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/actions/addRouteNotes.php"
apikey="11111111111111111111111111111111"
routeid="7CA872B9D3C0C22B54841090DD3F0C4B"
addrid="167101717"
dev_lat="33.132675170898"
dev_lng="-83.244743347168"
dev_type="web"
updatetype="dropoff"
filename="notes.csv"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&address_id="&addrid
url=url&"&dev_lat="&dev_lat
url=url&"&dev_lng="&dev_lng
url=url&"&device_type="&dev_type
url=url&"&strUpdateType="&updatetype
Set r4m=New Route4Me
r4m.Upload url, filename, "strFilename", "strFilename="&filename
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Reflection;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void AddAddressNoteWithFile(string routeId, int addressId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
NoteParameters noteParameters = new NoteParameters()
{
RouteId = routeId,
AddressId = addressId,
Latitude = 33.132675170898,
Longitude = -83.244743347168,
DeviceType = DeviceType.Web.Description(),
ActivityType = StatusUpdateType.DropOff.Description()
};
string tempFilePath = null;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Route4MeSDKTest.Resources.test.png"))
{
var tempFiles = new TempFileCollection();
{
tempFilePath = tempFiles.AddExtension("png");
System.Console.WriteLine(tempFilePath);
using (Stream fileStream = File.OpenWrite(tempFilePath))
{
stream.CopyTo(fileStream);
}
}
}
// Run the query
string errorString;
string contents = "Test Note Contents with Attachment " + DateTime.Now.ToString();
AddressNote note = route4Me.AddAddressNote(noteParameters, contents, tempFilePath, out errorString);
Console.WriteLine("");
if (note != null)
{
Console.WriteLine("AddAddressNoteWithFile executed successfully");
Console.WriteLine("Note ID: {0}", note.NoteId);
}
else
{
Console.WriteLine("AddAddressNoteWithFile error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Imports System.IO
Imports System.Reflection
Imports System.CodeDom.Compiler
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub AddAddressNoteWithFile(routeId As String, addressId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim noteParameters As New NoteParameters() With { _
.RouteId = routeId, _
.AddressId = addressId, _
.Latitude = 33.132675170898, _
.Longitude = -83.244743347168, _
.DeviceType = DataTypes.DeviceType.Web, _
.ActivityType = StatusUpdateType.DropOff _
}
Dim tempFilePath As String = Nothing
Using stream As Stream = File.Open("test.png", FileMode.Open)
Dim tempFiles = New TempFileCollection()
If True Then
tempFilePath = tempFiles.AddExtension("png")
System.Console.WriteLine(tempFilePath)
Using fileStream As Stream = File.OpenWrite(tempFilePath)
stream.CopyTo(fileStream)
End Using
End If
End Using
' Run the query
Dim errorString As String = ""
Dim contents As String = "Test Note Contents with Attachment " + DateTime.Now.ToString()
Dim note As AddressNote = route4Me.AddAddressNote(noteParameters, contents, tempFilePath, errorString)
Console.WriteLine("")
If note IsNot Nothing Then
Console.WriteLine("AddAddressNoteWithFile executed successfully")
Console.WriteLine("Note ID: {0}", note.NoteId)
Else
Console.WriteLine("AddAddressNoteWithFile error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve random route_id");
// Get the random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Add a file note
$noteParameters = array(
"strFilename" => "notes.csv",
"route_id" => $route_id,
"address_id" => $route_destination_id,
"dev_lat" => 33.132675170898,
"dev_lng" => -83.244743347168,
"device_type" => "web",
"strUpdateType" => "ANY_FILE"
);
$address = new Address();
echo "route_id = $route_id <br>";
echo "route_destination_id = $route_destination_id <br><br>";
$address1 = $address->AddNoteFile($noteParameters);
Route4Me::simplePrint($address1);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/actions/addRouteNotes.php?api_key=...&route_id=...&address_id=...&dev_lat=...&dev_lng=...
You can expect this API response:
{
"status": true,
"note_id": "539264",
"upload_id": "1a499113c63d68d1a5d26045a1763d16",
"note": {
"note_id": 539264,
"route_id": "5C15E83A4BE005BCD1537955D28D51D7",
"route_destination_id": 162916895,
"ts_added": 1466515325,
"activity_type": "",
"upload_id": "1a499113c63d68d1a5d26045a1763d16",
"upload_extension": "csv",
"upload_url": "http:\/\/adb6def9928467589ebb-f540d5a8d53c2e76ad581b6e5c346ad6.r74.cf1.rackcdn.com\/1a499113c63d68d1a5d26045a1763d16.csv",
"upload_type": "ANY_FILE",
"contents": "",
"lat": 33.132675,
"lng": -83.244743,
"device_type": "web"
}
}
Get Notes
Get address notes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
route_destination_id | integer | Route destination ID |
<job id="GetAddressNotes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting the notes attached to the address of a route.
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api.v4/address.php"
apikey="11111111111111111111111111111111"
routeid="kllk645lkl6kllk6l5k6l5k6l5k6"
rdi="545464355"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&route_destination_id="&rdi
Set r4m=New Route4Me
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetAddressNotes(string routeId, int routeDestinationId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
NoteParameters noteParameters = new NoteParameters()
{
RouteId = routeId,
AddressId = routeDestinationId
};
// Run the query
string errorString;
AddressNote[] notes = route4Me.GetAddressNotes(noteParameters, out errorString);
Console.WriteLine("");
if (notes != null)
{
Console.WriteLine("GetAddressNotes executed successfully, {0} notes returned", notes.Length);
Console.WriteLine("");
}
else
{
Console.WriteLine("GetAddressNotes error: {0}", errorString);
Console.WriteLine("");
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetAddressNotes(routeId As String, routeDestinationId As Integer)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim noteParameters As New NoteParameters() With { _
.RouteId = routeId, _
.AddressId = routeDestinationId _
}
' Run the query
Dim errorString As String = ""
Dim notes As AddressNote() = route4Me.GetAddressNotes(noteParameters, errorString)
Console.WriteLine("")
If notes IsNot Nothing Then
Console.WriteLine("GetAddressNotes executed successfully, {0} notes returned", notes.Length)
Console.WriteLine("")
Else
Console.WriteLine("GetAddressNotes error: {0}", errorString)
Console.WriteLine("")
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
route = route4me.route
response = route.get_routes(limit=10, Offset=5)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
response = route.get_route(route_id=response[0].route_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
route_id = response.route_id
route_destination_id = response.addresses[0].route_destination_id
response = route4me.address.get_address_notes(
route_id=route_id,
route_destination_id=route_destination_id,
)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Address: {}'.format(response.address)
print 'Notes'
for i, note in response.notes:
print '\t{0} - {1}'.format(i + 1, note)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.notes;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.notes.Note;
import com.route4me.sdk.services.notes.NotesManager;
import com.route4me.sdk.services.routing.DataObject;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetAddressNotes {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
RoutingManager routingManager = new RoutingManager(apiKey);
try {
List<Route> routes = routingManager.getRoutes(new RoutesRequest().setLimit(2));
for(Route route : routes) {
DataObject dataObject = routingManager.getRoute(new RoutesRequest().setId(route.getId()));
NotesManager notesManager = new NotesManager(apiKey);
List<Note> notes = notesManager.getAddressNotes(route.getId(), Long.toString(dataObject.getAddresses().get(0).getRouteDestinationId()));
for (Note note : notes) {
System.out.println(note);
}
}
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
package GetAddressNotes;
use strict;
use warnings FATAL => 'all';
sub GetAddressNotes {
my ($self, $routeId, $addressId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $noteParameters = NoteParameters->new(
route_id => $routeId,
address_id => $addressId
);
my $errorString = "";
my @notes = $route4Me->getAddressNotes($noteParameters, $errorString);
print "\n";
if (@notes) {
printf "GetAddressNotes executed successfully, %s notes returned\n\n", scalar @notes;
} else {
printf "GetAddressNotes error: %s \n\n", $errorString;
}
}
1;
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route from test routes
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
assert(!is_null($route_id), "Can't retrieve random route_id");
// Get the random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($route_id);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Add an address note
$noteParameters = array(
"route_id" => $route_id,
"address_id" => $route_destination_id,
"dev_lat" => 33.132675170898,
"dev_lng" => -83.244743347168,
"device_type" => "web",
"strUpdateType" => "dropoff",
"strNoteContents" => "Test ".time()
);
$address = new Address();
$address1 = $address->AddAddressNote($noteParameters);
assert(!is_null($address1), "Can't create an address note");
// Get address notes
$noteParameters = array(
"route_id" => $route_id,
"route_destination_id" => $route_destination_id
);
$address = new Address();
$notes = $address->GetAddressesNotes($noteParameters);
echo "Destination note count --> ".$notes['destination_note_count']."<br>";
foreach ($notes['notes'] as $note) {
echo "========== Notes ==================<br>";
echo "note_id --> ".$note['note_id']."<br>";
$content = isset($note['contents']) ? $note['contents'] : "";
if (strlen($content)>0) echo "contents --> $content"."<br>";
}
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET routedestinationid=545464355
:: The example refers to the process of getting the notes attached to the address of a route.
:: For accurate testing and results, use your API key and insert real test data.
ECHO ON
curl -o file1.txt -g -k -X GET "%url%?api_key=%apikey%&route_id=%routeid%&route_destination_id=%routedestinationid%¬es=1"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
routedestinationid=545464355
# The example refers to the process of getting the notes attached to the address of a route.
# For accurate testing and results, use your API key and insert real test data.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&route_destination_id=$routedestinationid¬es=1"
echo "Finished..."
sleep 15
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/routing"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &routing.Service{Client: client}
query := &NoteQuery{
RouteID: "route_id",
AddressID: "address_id",
}
notes, err := service.GetAddressNotes(query)
if err != nil {
//handle errors
return
}
// do something with address notes
}
unit GetAddressNotesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAddressNotes = class(TBaseExample)
public
procedure Execute(RouteId: String; RouteDestinationId: integer);
end;
implementation
uses NoteParametersUnit, AddressNoteUnit;
procedure TGetAddressNotes.Execute(RouteId: String; RouteDestinationId: integer);
var
ErrorString: String;
Parameters: TNoteParameters;
Notes: TAddressNoteArray;
i: integer;
begin
Parameters := TNoteParameters.Create();
try
Parameters.RouteId := RouteId;
Parameters.AddressId := RouteDestinationId;
Notes := Route4MeManager.AddressNote.Get(Parameters, ErrorString);
try
WriteLn('');
if (Notes <> nil) then
WriteLn(Format('GetAddressNotes executed successfully, %d notes returned',
[Length(Notes)]))
else
WriteLn(Format('GetAddressNotes error: "%s"', [ErrorString]));
WriteLn('');
finally
for i := Length(Notes) - 1 downto 0 do
FreeAndNil(Notes[i]);
end;
finally
FreeAndNil(Parameters);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
ifstream inf("add_address_to_route.json");
if(!inf.is_open())
{
cout << "Can't find a file with addresses" << endl;
return -1;
}
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
const char *route_destination_id = "174405709A";
ret = route.get_route_notes(route_id, route_destination_id);
if (ret == 0)
cout << "Notes:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No notes: " << route.get_err_code() << ": " << route.get_err_msg() << endl;
// global cleanup
CRoute4Me::cleanup();
return ret;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char route_id[] = "CA902292134DBC134EAF8363426BD247";
char route_destination_id[] = "174405709A";
char file_name[] = "add_address_to_route.json";
char* data = NULL;
struct MapPoint point = {0,1};
deserialize(file_name, &data);
init(key, 1);
if (!add_route_notes(route_id, route_destination_id,"notes", "laptop", &point, data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
if (data)
{
free(data);
}
cleanUp();
return 0;
}
HTTP Request
/api.v4/address.php?api_key=...&route_id=...&route_destination_id=...notes=1
See the sample JSON response of this method.
Add New Custom Note Type
Add a new custom note type to the user’s account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
type | string | The custom note type. |
values | array | An array of string values. |
<job id="AddNewCustomNoteType">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of adding a custom note type to the user's account by sending HTTP parameters.
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/note_custom_types.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="add_new_note_custom_type_data.json"
'msgbox(url)
Set r4m=New Route4Me
r4m.OutputFile="add_new_note_custom_type_RESPONSE.json"
r4m.HttpPostRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/note_custom_types.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of adding a custom note type to the user's account by sending HTTP parameters.
ECHO ON
curl -o add_new_note_custom_type_RESPONSE.json -g -k -X POST -d "@add_new_note_custom_type_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/note_custom_types.php
apikey=11111111111111111111111111111111
# The example refers to the process of adding a custom note type to the user's account by sending HTTP parameters.
curl -o add_new_note_custom_type_RESPONSE.json -g -k -X POST -d "@add_new_note_custom_type_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void AddCustomNoteTypeTest()
{
var response = addCustomNoteType("To Do", new string[] { "Pass a package", "Pickup package", "Do a service" });
Assert.IsTrue(response.GetType() != typeof(String), response.ToString());
Assert.IsTrue(Convert.ToInt32(response) >= 0, "Can not create new custom note type");
}
public Object addCustomNoteType(string customType, string[] customValues)
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
var response = route4Me.AddCustomNoteType(customType, customValues, out errorString);
return response;
}
Public Sub AddCustomNoteTypeTest()
Dim response = addCustomNoteType("To Do", New String() {"Pass a package", "Pickup package", "Do a service"})
Assert.IsTrue(response.[GetType]() <> GetType(String), response.ToString())
Assert.IsTrue(Convert.ToInt32(response) >= 0, "Can not create new custom note type")
End Sub
Public Function addCustomNoteType(ByVal customType As String, ByVal customValues As String()) As Object
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim errorString As String
Dim response = route4Me.AddCustomNoteType(customType, customValues, errorString)
Return response
End Function
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Create a custom note type
$noteParameters=array(
"type" => 'To Do',
"values" => array(
'Pass a package',
'Pickup package',
'Do a service'
)
);
$address = new Address();
$response = $address->createCustomNoteType($noteParameters);
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/note_custom_types.php?api_key=...
You can expect this API response:
{
"result": "OK",
"affected": 1
}
Add Custom Note To Route
Adds a custom note to a route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
address_id | string | Route destination ID |
dev_lat | double | The device latitude |
dev_lng | double | The device longitude |
format | string | Response format |
custom_note_type[n] | string | URL encoded key-value pairs. n = custom note type ID |
<job id="AddCustomNotesToRoute">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
' The example refers to the process of adding a note custom type to a user's account by sending HTTP parameters.
WScript.Echo "Please, press OK and wait..."
url="https://www.route4me.com/actions/addRouteNotes.php"
apikey="11111111111111111111111111111111"
routeid="D1DF6BAF991E3CDC00134C28D27AEC12"
addrid="289863166"
dev_lat="-37.8207115"
dev_lng="144.9581931"
format="json"
custom_note_type11="slippery"
custom_note_type10="Backdoor"
strUpdateType="dropoff"
strNoteContents="test1111"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&address_id="&addrid
url=url&"&dev_lat="&dev_lat
url=url&"&dev_lng="&dev_lng
url=url&"&format="&format
url=url&"&custom_note_type[11]="&custom_note_type11
url=url&"&custom_note_type[10]="&custom_note_type10
url=url&"&strUpdateType="&strUpdateType
url=url&"&strNoteContents="&strNoteContents
'msgbox(url)
Set r4m=New Route4Me
jFile="add_custom_note_to_route_data.json"
r4m.OutputFile="add_custom_note_to_route_data_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/actions/addRouteNotes.php
SET apikey=11111111111111111111111111111111
SET routeID=D1DF6BAF991E3CDC00134C28D27AEC12
SET routeDestinationID=289863166
SET format=json
SET dev_lat=-37.8207115
SET dev_lng=144.9581931
:: The example refers to the process of adding a custom note type to a route destination by sending HTTP parameters.
ECHO ON
curl -o add_custom_note_to_route_data_RESPONSE.json -g -k -X POST -d "custom_note_type[11]=slippery&custom_note_type[10]=Backdoor&strUpdateType=dropoff&strNoteContents=test1111" "%url%?api_key=%apikey%&route_id=%routeID%&address_id=%routeDestinationID%&format=%format%&dev_lat=%dev_lat%&dev_lng=%dev_lng%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/actions/addRouteNotes.php
apikey=11111111111111111111111111111111
routeid=D1DF6BAF991E3CDC00134C28D27AEC12
address_id=289863166
format=json
dev_lat=-37.8207115
dev_lng=144.9581931
# The example refers to the process of adding a custom note type to a route destination by sending HTTP parameters.
curl -o add_custom_note_to_route_data_RESPONSE.json -g -k -X POST -d "custom_note_type[11]=slippery&custom_note_type[10]=Backdoor&strUpdateType=dropoff&strNoteContents=test1111" "$url?api_key=$apikey&route_id=$routeid&address_id=$address_id&dev_lat=$dev_lat&dev_lng=$dev_lng&format=$format"
echo "Finished..."
sleep 15
public void AddCustomNoteToRouteTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string errorString;
NoteParameters noteParameters = new NoteParameters()
{
RouteId = tdr.SDRT_route.RouteID,
AddressId = tdr.SDRT_route.Addresses[1].RouteDestinationId != null ? (int)tdr.SDRT_route.Addresses[1].RouteDestinationId : 0,
Format = "json",
Latitude = tdr.SDRT_route.Addresses[1].Latitude,
Longitude = tdr.SDRT_route.Addresses[1].Longitude
};
Dictionary<string, string> customNotes = new Dictionary<string, string>()
{
{"custom_note_type[11]", "slippery"},
{"custom_note_type[10]", "Backdoor"},
{"strUpdateType", "dropoff"},
{"strNoteContents", "test1111"}
};
var response = route4Me.addCustomNoteToRoute(noteParameters, customNotes, out errorString);
Assert.IsTrue(response.GetType() != typeof(String), errorString);
Assert.IsTrue(response.GetType() == typeof(AddressNote));
}
Public Sub AddCustomNoteToRouteTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim errorString As String
Dim noteParameters As NoteParameters = New NoteParameters() With {
.RouteId = tdr.SDRT_route.RouteID,
.AddressId = If(tdr.SDRT_route.Addresses(1).RouteDestinationId IsNot Nothing, CInt(tdr.SDRT_route.Addresses(1).RouteDestinationId), 0),
.Format = "json",
.Latitude = tdr.SDRT_route.Addresses(1).Latitude,
.Longitude = tdr.SDRT_route.Addresses(1).Longitude
}
Dim customNotes As Dictionary(Of String, String) = New Dictionary(Of String, String)() From {
{"custom_note_type[11]", "slippery"},
{"custom_note_type[10]", "Backdoor"},
{"strUpdateType", "dropoff"},
{"strNoteContents", "test1111"}
}
Dim response = route4Me.addCustomNoteToRoute(noteParameters, customNotes, errorString)
Assert.IsTrue(response.[GetType]() <> GetType(String), errorString)
Assert.IsTrue(response.[GetType]() = GetType(AddressNote))
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
// Get the random address ID from the selected route above
$addressRand = (array)$route->GetRandomAddressFromRoute($routeId);
$route_destination_id = $addressRand['route_destination_id'];
assert(!is_null($route_destination_id), "Can't retrieve random address");
// Add a custom note to a route
$noteParameters = array(
'route_id' => $routeId,
'address_id' => $route_destination_id,
'format' => 'json',
'dev_lat' => 33.132675170898,
'dev_lng' => -83.244743347168,
'custom_note_type[11]' => 'slippery',
'custom_note_type[10]' => 'Backdoor',
'strUpdateType' => 'dropoff',
'strNoteContents' => 'test1111'
);
$address = new Address();
$response = $address->addCustomNoteToRoute($noteParameters);
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/actions/addRouteNotes.php?api_key=...&route_id=...&address_id=...&format=...
You can expect this API response:
{
"status": true,
"note_id": "3237302",
"upload_id": "",
"note": {
"note_id": 3237302,
"route_id": "D1DF6BAF991E3CDC00134C28D27AEC12",
"route_destination_id": 289863166,
"ts_added": 1517238859,
"activity_type": "dropoff",
"upload_id": "",
"upload_extension": null,
"upload_url": null,
"upload_type": null,
"contents": "test1111",
"lat": -37.820712,
"lng": 144.958193,
"device_type": "web",
"custom_types": [{
"note_custom_entry_id": "ABCBA1228FA18968DBEECBFA2DA7899C850E15CA",
"note_id": "3237302",
"note_custom_type_id": "10",
"note_custom_value": "Backdoor",
"note_custom_type": "Dropoff Location"
},
{
"note_custom_entry_id": "0E297CA5584557C9C9782D74AEF476D33B06ACF1",
"note_id": "3237302",
"note_custom_type_id": "11",
"note_custom_value": "slippery",
"note_custom_type": "Conditions at Site"
}]
}
}
Get All Custom Note Types
Get all the custom note types.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
<job id="GetAllCustomNoteTypes">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting all the custom note types.
url="https://api.route4me.com/api.v4/note_custom_types.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.OutputFile="get_all_custom_note_types_RESPONSE.json"
r4m.HttpGetRequest url
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/note_custom_types.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting all the custom note types.
ECHO ON
curl -o get_all_custom_note_types_RESPONSE.json -g -k -X GET "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/note_custom_types.php
apikey=11111111111111111111111111111111
# The example refers to the process of getting all the custom note types.
curl -o get_all_custom_note_types_RESPONSE.json -g -k -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
public void GetAllCustomNoteTypesTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string errorString;
var response = route4Me.getAllCustomNoteTypes(out errorString);
Assert.IsTrue(response.GetType() != typeof(String), errorString);
Assert.IsTrue(response.GetType() == typeof(CustomNoteType[]));
}
Public Sub GetAllCustomNoteTypesTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim errorString As String
Dim response = route4Me.getAllCustomNoteTypes(errorString)
Assert.IsTrue(response.[GetType]() <> GetType(String), errorString)
Assert.IsTrue(response.[GetType]() = GetType(CustomNoteType()))
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get all custom note types
$address = new Address();
$response = $address->getAllCustomNoteTypes();
Route4Me::simplePrint($response);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/note_custom_types.php?api_key=...
You can expect this API response:
[{
"note_custom_type_id": 10,
"note_custom_type": "Dropoff Location",
"root_owner_member_id": 1,
"note_custom_type_values": [
"Front door",
"Backdoor",
"Roof"
]
},
{
"note_custom_type_id": 11,
"note_custom_type": "Conditions at Site",
"root_owner_member_id": 1,
"note_custom_type_values": [
"safe",
"mild",
"dangerous",
"slippery"
]
}]
Vehicles
Route4Me gives you the ability to add new vehicles and assign them to a route.
See the Vehicle JSON Schema in our GitHub repository.
Get Vehicles
Get the vehicles that belong to a Route4Me account.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
show | string | A scope to get. Avaiable scopes are: pending, deleted, all and active (default) |
search_query | string | Query string |
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/v5.0/vehicles
SET apikey=11111111111111111111111111111111
SET show=active
SET search_query=Medium
:: The example refers to the process of getting a list of the vehicles.
ECHO ON
curl -o get_vehicles_RESPONSE.json -g -X GET -k "%url%?api_key=%apikey%&show=%show%&search_query=%search_query%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/v5.0/vehicles
apikey=11111111111111111111111111111111
show=active
search_query=Medium
# The example refers to the process of getting a list of the vehicles.
curl -o get_vehicles_RESPONSE.json -g -X GET -k "$url?api_key=$apikey&show=$show&search_query=$search_query"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
public sealed partial class Route4MeExamples
{
/// <summary>
/// The example refers to the process of getting a list of the vehicles by their state using the API 5 endpoint.
/// </summary>
public void GetVehiclesByStateV5()
{
var route4Me = new Route4MeManagerV5(ActualApiKey);
var vehicles = route4Me.GetVehiclesByState(VehicleStates.ACTIVE, out ResultResponse resultResponse);
PrintTestVehcilesV5(vehicles, resultResponse);
RemoveTestVehiclesV5();
}
}
Public Function getVehiclesList() As VehiclesPaginated
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim vehicleParameters As VehicleParameters = New VehicleParameters With {
.WithPagination = True,
.Page = 1,
.PerPage = 10
}
Dim errorString As String = ""
Dim vehicles As VehiclesPaginated = route4Me.GetVehicles(vehicleParameters, errorString)
Assert.IsInstanceOfType(vehicles, GetType(VehiclesPaginated), "getVehiclesList failed... " & errorString)
Return vehicles
End Function
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
// Example refers to getting all vehicles.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = array(
"with_pagination" => true,
"page" => 2,
"perPage" => 10
);
$response = $vehicle->getVehicles($vehicleParameters);
foreach ($response['data'] as $key => $vehicle) {
Route4Me::simplePrint($vehicle);
echo "<br>";
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
See the sample JSON response of this method.
Get a Vehicle
Get a vehicle by supplying a value in the endpoint’s vehicle_id
path parameter.
PARAMETERS
Parameter | Type | Description | HTTP Method |
---|---|---|---|
api_key | string | API key of the user | GET |
vehicle_id | string | Vehicle ID (This is a path parameter.) |
GET |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/v5.0/vehicles
SET apikey=11111111111111111111111111111111
SET vehicle_id=AE350EF3153448665300F2C8216698C6
:: The example refers to the process of getting a vehicle by ID.
ECHO ON
curl -o get_vehicle_by_id_RESPONSE.json -g -X GET -k "%url%/%vehicle_id%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/v5.0/vehicles
apikey=11111111111111111111111111111111
vehicle_id=AE350EF3153448665300F2C8216698C6
# The example refers to the process of getting a vehicle by vehicle_id.
curl -o get_vehicle_by_id_RESPONSE.json -g -X GET -k "$url/$vehicle_id?api_key=$apikey"
echo "Finished..."
sleep 15
/// <summary>
/// The example refers to the process of getting a vehicle by ID using the API 5 endpoint.
/// </summary>
public void GetVehicleByIdV5()
{
var route4Me = new Route4MeManagerV5(ActualApiKey);
var vehicleData = route4Me.GetVehicleById(
"FFBBFE7960518F7B4A79C5767C9B10CF",
out ResultResponse resultResponse
);
PrintTestVehiclesV5(vehicleData, resultResponse);
}
Public Sub getVehicleTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim vehicleParameters As VehicleParameters = New VehicleParameters With {
.VehicleId = lsVehicleIDs(lsVehicleIDs.Count - 1)
}
Dim errorString As String = ""
Dim vehicles As VehicleV4Response = route4Me.GetVehicle(vehicleParameters, errorString)
Assert.IsInstanceOfType(vehicles, GetType(VehicleV4Response), "getVehicleTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to getting a vehicle.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
// Get a random vehicle ID
$randomVehicleID = $vehicle->getRandomVehicleId(1, 20);
assert(!is_null($randomVehicleID), "Can't retrieve a random vehicle ID");
// Get a vehicle by ID
$vehicle = $vehicle->getVehicleByID($randomVehicleID);
Route4Me::simplePrint($vehicle);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles/{vehicle_id}?api_key=...
You can expect this API response:
{
"vehicle_id": "AE350EF3153448665300F2C8216698C6",
"member_id": 1,
"is_deleted": false,
"vehicle_alias": "Commercial Vehicle Medium Duty 4",
"vehicle_vin": "WBADE6322VBW53333",
"vehicle_reg_state_id": 4,
"vehicle_reg_country_id": 223,
"vehicle_license_plate": "CRL8474",
"vehicle_type_id": "pickup_truck",
"timestamp_added": "2022-10-13T17:56:06+00:00",
"vehicle_make": "Ford",
"vehicle_model_year": null,
"vehicle_model": null,
"vehicle_year_acquired": 2017,
"vehicle_cost_new": null,
"purchased_new": null,
"license_start_date": "2022-07-29",
"license_end_date": "2025-08-19",
"is_operational": true,
"fuel_type": "unleaded 87",
"external_telematics_vehicle_id": null,
"timestamp_removed": null,
"vehicle_profile_id": 7889,
"fuel_consumption_city": null,
"fuel_consumption_highway": null,
"vehicle_capacity_profile_id": null,
"fuel_consumption_city_unit": "mi/l",
"fuel_consumption_highway_unit": "mi/l",
"mpg_city": null,
"mpg_highway": null,
"fuel_consumption_city_uf_value": "",
"fuel_consumption_highway_uf_value": ""
}
Update a Vehicle
Updates a vehicle using the value passed in the endpoint’s vehicle_id
path parameter.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP Method |
---|---|---|---|
api_key | string | API key of the user | GET |
vehicle_id | string | Vehicle ID (This is a path parameter.) |
GET |
input data | POST data | A valid JSON object string. See the Vehicle JSON Schema as a guide. | Payload |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/v5.0/vehicles
SET apikey=11111111111111111111111111111111
SET vehicle_id=AE350EF3153448665300F2C8216698C6
:: The example refers to the process of updating a vehicle.
ECHO ON
curl -o update_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X PATCH -k -d "@update_vehicle_data.json" "%url%/%vehicle_id%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/v5.0/vehicles
apikey=11111111111111111111111111111111
vehicle_id=AE350EF3153448665300F2C8216698C6
# The example refers to the process of updating a vehicle.
curl -o update_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X PATCH -k -d "@update_vehicle_data.json" "$url/$vehicle_id?api_key=$apikey"
echo "Finished..."
sleep 15
/// <summary>
/// The example refers to the process of updating a vehicle using the API 5 endpoint.
/// </summary>
public void UpdateVehicleV5()
{
var route4Me = new Route4MeManagerV5(ActualApiKey);
var vehicleParams = new Vehicle()
{
VehicleId = "68F3545D3DA82DBF007B20FA9A1875EB",
VehicleModelYear = 2015,
VehicleYearAcquired = 2019
};
var vehicle = route4Me.UpdateVehicle(vehicleParams, out ResultResponse resultResponse);
PrintTestVehiclesV5(vehicle, resultResponse);
}
Public Sub updateVehicleTest()
If lsVehicleIDs.Count < 1 Then
Dim newVehicle As VehicleV4Parameters = New VehicleV4Parameters() With {
.VehicleAlias = "Ford Transit Test 6"
}
Dim vehicle As VehicleV4Response = createVehicle(newVehicle)
lsVehicleIDs.Add(vehicle.VehicleId)
End If
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim vehicleParams As VehicleV4Parameters = New VehicleV4Parameters() With {
.VehicleId = lsVehicleIDs(lsVehicleIDs.Count - 1),
.VehicleAlias = "Ford Transit Test 4",
.VehicleModelYear = 1995,
.VehicleRegCountryId = 223,
.VehicleMake = "Ford",
.VehicleAxleCount = 2,
.MpgCity = 8,
.MpgHighway = 14,
.FuelType = "unleaded 93",
.HeightInches = 72,
.WeightLb = 2000
}
Dim errorString As String = ""
Dim vehicles As VehicleV4Response = route4Me.updateVehicle(vehicleParams, errorString)
Assert.IsInstanceOfType(vehicles, GetType(VehicleV4Response), "updateVehicleTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example refers to the process of updating a vehicle.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
// Get a random vehicle ID
$randomVehicleID = $vehicle->getRandomVehicleId(1, 20);
assert(!is_null($randomVehicleID), "Can't retrieve a random vehicle ID");
// Update the vehicle
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_id' => $randomVehicleID,
'vehicle_model_year' => 2013,
'vehicle_year_acquired' => 2016,
'vehicle_reg_country_id' => '223',
'vehicle_make' => 'Ford',
'vehicle_axle_count' => 3,
'mpg_city' => 11,
'mpg_highway' => 17,
'fuel_type' => 'unleaded 93',
'height_inches' => 74,
'weight_lb' => 2098
));
$result = $vehicle->updateVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles/{vehicle_id}?api_key=...
You can expect this API response:
{
"vehicle_id": "AE350EF3153448665300F2C8216698C6",
"member_id": 1,
"is_deleted": false,
"vehicle_alias": "Commercial Vehicle Medium Duty 4",
"vehicle_vin": "WBADE6322VBW53333",
"vehicle_reg_state_id": 4,
"vehicle_reg_country_id": 223,
"vehicle_license_plate": "CRL8474",
"vehicle_type_id": "pickup_truck",
"timestamp_added": "2022-10-13T17:56:06+00:00",
"vehicle_make": "Ford",
"vehicle_model_year": 2018,
"vehicle_model": null,
"vehicle_year_acquired": 2017,
"vehicle_cost_new": null,
"purchased_new": null,
"license_start_date": "2022-07-29",
"license_end_date": "2025-08-19",
"is_operational": true,
"fuel_type": "unleaded 87",
"external_telematics_vehicle_id": null,
"timestamp_removed": null,
"vehicle_profile_id": 7889,
"fuel_consumption_city": null,
"fuel_consumption_highway": null,
"vehicle_capacity_profile_id": null,
"fuel_consumption_city_unit": "mi/l",
"fuel_consumption_highway_unit": "mi/l",
"mpg_city": null,
"mpg_highway": null,
"fuel_consumption_city_uf_value": "",
"fuel_consumption_highway_uf_value": ""
}
Create a Vehicle
Creates a vehicle using the sent JSON payload.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description | HTTP Method |
---|---|---|---|
api_key | string | API key of the user | GET |
input data | POST data | A valid JSON object string. See the Vehicle JSON Schema as a guide. | Payload |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/v5.0/vehicles
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating a new vehicle.
ECHO ON
curl -o create_new_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_new_vehicle_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/v5.0/vehicles
apikey=11111111111111111111111111111111
# The example refers to the process of creating a new vehicle.
curl -o create_new_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_new_vehicle_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
/// <summary>
/// The example refers to the process of creating a vehicle using the API 5 endpoint.
/// </summary>
public void CreateVehicleV5()
{
var route4Me = new Route4MeManagerV5(ActualApiKey);
var vehicleParams = new Vehicle()
{
VehicleAlias = "Peterbilt 579",
VehicleVin = "1NP5DB9X93N507873",
VehicleLicensePlate = "PPV7516",
VehicleModel = "579",
VehicleModelYear = 2015,
VehicleYearAcquired = 2018,
VehicleRegCountryId = 223,
VehicleMake = "Peterbilt",
VehicleTypeId = "tractor_trailer",
FuelType = "diesel"
};
var vehicle = route4Me.CreateVehicle(vehicleParams, out ResultResponse resultResponse);
if (vehicle != null && vehicle.GetType() == typeof(Vehicle))
{
vehiclesToRemove = new System.Collections.Generic.List<string>();
vehiclesToRemove.Add(vehicle.VehicleId);
}
PrintTestVehiclesV5(vehicle, resultResponse);
}
Public Sub CreatetVehicleTest()
Dim commonVehicleParams As VehicleV4Parameters = New VehicleV4Parameters() With {
.VehicleAlias = "Ford Transit Test 6"
}
Dim commonVehicle As VehicleV4Response = createVehicle(commonVehicleParams)
End Sub
Public Function createVehicle(ByVal vehicleParams As VehicleV4Parameters) As VehicleV4Response
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim errorString As String = ""
Dim result As VehicleV4Response = route4Me.CreateVehicle(vehicleParams, errorString)
Assert.IsNotNull(result, "CreatetVehicleTest failed... " & errorString)
Return result
End Function
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example refers to the process of creating a new vehicle.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'Ford Transit Test 4',
'vehicle_vin' => 'JS3TD62V1Y4107898',
'vehicle_reg_country_id' => '223',
'vehicle_make' => 'Ford',
'vehicle_model_year' => 2013,
'vehicle_axle_count' => 3,
'mpg_city' => 8,
'mpg_highway' => 14,
'fuel_type' => 'unleaded 93',
'height_inches' => 72,
'weight_lb' => 2000
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "Commercial Vehicle Medium Duty 4",
"vehicle_vin": "WBADE6322VBW51984",
"vehicle_reg_state_id": 4,
"vehicle_reg_country_id": 223,
"vehicle_license_plate": "CRL8474",
"vehicle_type_id": "pickup_truck",
"vehicle_make": "Ford",
"license_start_date": "2022-07-29",
"license_end_date": "2025-08-19",
"is_operational": true,
"fuel_type": "unleaded 87",
"vehicle_profile_id": 76472,
"fuel_consumption_city_unit": "km/l",
"fuel_consumption_highway_unit": "km/l"
}
Remove a Vehicle
Removes a vehicle using the value passed in the endpoint’s vehicle_id
path parameter.
PARAMETERS
Parameter | Type | Description | HTTP Method |
---|---|---|---|
api_key | string | API key of the user | GET |
vehicle_id | string | Vehicle ID (This is a path parameter.) |
GET |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/v5.0/vehicles
SET apikey=11111111111111111111111111111111
SET vehicle_id=AE350EF3153448665300F2C8216698C6
:: The example refers to the process of deleting a vehicle.
ECHO ON
curl -o delete_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X DELETE -k "%url%/%vehicle_id%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/v5.0/vehicles
apikey=11111111111111111111111111111111
vehicle_id=AE350EF3153448665300F2C8216698C6
# The example refers to the process of deleting a vehicle.
curl -o delete_vehicle_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X DELETE -k "$url/$vehicle_id?api_key=$apikey"
echo "Finished..."
sleep 15
/// <summary>
/// The example refers to the process of removing a vehicle using the API 5 endpoint.
/// </summary>
public void DeleteVehicleV5()
{
var route4Me = new Route4MeManagerV5(ActualApiKey);
var vehicleData = route4Me.DeleteVehicle(
"FFBBFE7960518F7B4A79C5767C9B10CF",
out ResultResponse resultResponse
);
PrintTestVehiclesV5(vehicleData, resultResponse);
}
Public Sub deleteVehicleTest()
If lsVehicleIDs.Count < 1 Then
Dim newVehicle As VehicleV4Parameters = New VehicleV4Parameters() With {
.VehicleAlias = "Ford Transit Test 6"
}
Dim vehicle As VehicleV4Response = createVehicle(newVehicle)
lsVehicleIDs.Add(vehicle.VehicleId)
End If
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim vehicleParams As VehicleV4Parameters = New VehicleV4Parameters() With {
.VehicleId = lsVehicleIDs(lsVehicleIDs.Count - 1)
}
Dim errorString As String = ""
Dim vehicles As VehicleV4Response = route4Me.deleteVehicle(vehicleParams, errorString)
Assert.IsInstanceOfType(vehicles, GetType(VehicleV4Response), "updateVehicleTest failed... " & errorString)
lsVehicleIDs.RemoveAt(lsVehicleIDs.Count - 1)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to removing a vehicle.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
// Get a random vehicle ID
$randomVehicleID = $vehicle->getRandomVehicleId(1, 20);
assert(!is_null($randomVehicleID), "Can't retrieve a random vehicle ID");
// Remove the vehicle
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_id' => $randomVehicleID
));
$result = $vehicle->removeVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles/{vehicle_id}?api_key=...
You can expect this API response:
{
"vehicle_id": "A730BAC4B6FDA9E39AD5B86E97C2131D",
"member_id": 1,
"is_deleted": true,
"vehicle_alias": "Commercial Vehicle Medium Duty 4",
"vehicle_vin": "WBADE6322VBW51984",
"vehicle_reg_state_id": 4,
"vehicle_reg_country_id": 223,
"vehicle_license_plate": "CRL8474",
"vehicle_type_id": "pickup_truck",
"timestamp_added": "2023-03-02T14:34:14+00:00",
"vehicle_make": "Ford",
"vehicle_model_year": null,
"vehicle_model": null,
"vehicle_year_acquired": null,
"vehicle_cost_new": null,
"purchased_new": null,
"license_start_date": "2022-07-29",
"license_end_date": "2025-08-19",
"is_operational": true,
"fuel_type": "unleaded 87",
"external_telematics_vehicle_id": null,
"timestamp_removed": "2023-03-02T15:18:08+00:00",
"vehicle_profile_id": 76472,
"fuel_consumption_city": null,
"fuel_consumption_highway": null,
"vehicle_capacity_profile_id": null,
"fuel_consumption_city_unit": "mpg",
"fuel_consumption_highway_unit": "mpg",
"mpg_city": null,
"mpg_highway": null,
"fuel_consumption_city_uf_value": "",
"fuel_consumption_highway_uf_value": ""
}
Commercial Routing
Using the Route4Me API, you can create trucks in your account and optimize routes for trucking operations for different industries.
Trucks vary greatly in size, power, and configuration; smaller varieties, on the other hand, have a conventional configuration.
Commercial trucks can be huge and may be configured to mount specialized equipment, such as in the case of utility and fire trucks and concrete mixers and suction excavators. There are some features, which are essential in the trucking services: truck size, the presence of hazardous materials, trailer type and parameters, and local transportation rules for trucking.
These are the essential parameters for trucks:
Parameter | Type | Description |
---|---|---|
vehicle_type_id | string | Vehicle type. The allowed values are: “sedan”, “suv”, “pickup_truck”, “van”, “18wheeler”, “cabin”, “hatchback”, “motorcyle”, “waste_disposal”, “tree_cutting”, “bigrig”, “cement_mixer”, “livestock_carrier”, “dairy”, or “tractor_trailer”. |
vehicle_axle_count | integer | The vehicle’s number of axles. |
height_inches | number | Truck height measured in inches |
has_trailer | boolean | If true, the truck has a trailer. |
heightInInches | number | Vehicle height measured in inches |
lengthInInches | number | Vehicle length measured in inches |
widthInInches | number | Vehicle width measured in inches |
maxWeightPerAxleGroupInPounds | number | The maximum weight per axle group in pounds. |
HazmatType | string | The type of hazardous material contained inside the truck. The allowed values are: “INVALID”, “NONE”, “GENERAL”, “EXPLOSIVE”, “INHALANT”, “RADIOACTIVE”, “CAUSTIC”, “FLAMMABLE”, or “HARMFUL_TO_WATER”. |
LowEmissionZonePref | string | Low emission zone preference. The allowed values are: “AVOID”, “ALLOW”, or “WARN”. |
Use53FootTrailerRouting | string | Use 53-foot trailer routing |
UseNationalNetwork | string | Allow the use of the networked state highways and interstates for commercial truck drivers in the USA. The allowed values are “YES” or “NO”. |
UseTruckRestrictions | string | Use truck restrictions. The allowed values are “YES” or “NO”. |
AvoidFerries | string | Avoid routes that include ferries. The allowed values are “YES” or “NO”. |
DividedHighwayAvoidPreference | string | Preference for avoiding divided highways. The allowed values are: “STRONG_AVOID”, “AVOID”, “NEUTRAL”, “FAVOR”, or “STRONG_FAVOR”. |
FreewayAvoidPreference | string | Preference for avoiding freeways. The allowed values are “STRONG_AVOID”, “AVOID”, “NEUTRAL”, “FAVOR”, or “STRONG_FAVOR”. |
TollRoadUsage | string | Preference for avoiding toll roads. The allowed values are: “ALWAYS_AVOID”, “IF_NECESSARY”, or “NO_RESTRICTION”. |
hwy_only | boolean | If true, the vehicle uses highways only. |
long_combination_vehicle | boolean | If true, the vehicle is a long combination vehicle. |
truck_config | string | Truck configuration. The allowed values are: “NONE”, “PASSENGER”, “28_DOUBLETRAILER”, “48_STRAIGHT_TRUCK”, “48_SEMI_TRAILER”, “53_SEMI_TRAILER”, “FULLSIZEVAN”, or “26_STRAIGHT_TRUCK”. |
height_metric | number | Truck height in metric unit |
length_metric | number | Vehicle length in metric unit |
width_metric | number | Vehicle width in metric unit |
max_weight_per_axle_group_metric | number | Maximum weight per axle group in metric unit |
The commercial truck classification is determined based on the vehicle’s gross vehicle weight rating (GVWR):
- Light truck (classes 1-3, weight <= 14,000 lb);
- Medium truck (classes 4-6, weight: 14,001-26,000 lb);
- Heavy truck (classes 7-8, weight > 26,000 lb);
- Super-heavy truck (class 9, weight > 33,001 lb, with special duty characteristics);
- Hazmat truck (truck with hazardous materials).
The following sections below provide an example for each classification. *******
Light Truck
Light truck or light-duty truck is a classification for trucks or truck-based vehicles with a gross vehicle weight of up to 8,500 lb (3,860 kg) and a payload capacity of up to 4,000 lb (1,815 kg). Some good examples are the Toyota Tacoma, Ford Excursion, and Ford F-350 models.
See the sample input JSON data for this method.
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/vehicles
SET apikey=11111111111111111111111111111111
:: This example refers to the process of creating a light truck, class 2.
ECHO ON
curl -o create_light_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_light_truck_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/vehicles
apikey=11111111111111111111111111111111
# This example refers to the process of creating a light truck, class 2.
curl -o create_light_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_light_truck_data.json" "$url$vehicleid?api_key=$apikey"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to creating a light class truck.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'GMC TopKick C5500 Light',
'vehicle_vin' => 'SAJXA01A06FN08012',
'vehicle_license_plate' => 'CVH4561',
'vehicle_model' => 'TopKick C5500',
'vehicle_model_year' => 1995,
'vehicle_year_acquired' => 2008,
'vehicle_reg_country_id' => '223',
'vehicle_make' => 'GMC',
'vehicle_type_id' => 'pickup_truck',
'vehicle_axle_count' => 2,
'mpg_city' => 7,
'mpg_highway' => 14,
'fuel_type' => 'diesel',
'height_inches' => 97,
'height_metric' => 243,
'weight_lb' => 19000,
'maxWeightPerAxleGroupInPounds' => 9500,
'max_weight_per_axle_group_metric' => 4300,
'widthInInches' => 96,
'width_metric' => 240,
'lengthInInches' => 244,
'length_metric' => 610,
'Use53FootTrailerRouting' => 'NO',
'UseTruckRestrictions' => 'NO',
'DividedHighwayAvoidPreference' => 'NEUTRAL',
'FreewayAvoidPreference' => 'NEUTRAL',
'truck_config' => 'FULLSIZEVAN',
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "Ford Excursion",
"vehicle_vin": "1HGCG554XWA883434",
"vehicle_license_plate": "FEX6245",
"vehicle_model": "Ford Excursion",
"vehicle_model_year": 2005,
"vehicle_year_acquired": 2005,
"vehicle_reg_country_id": "223",
"vehicle_make": "Ford",
"vehicle_type_id": "pickup_truck",
"vehicle_axle_count": 2,
"mpg_city": 6,
"mpg_highway": 12,
"fuel_type": "diesel",
"height_inches": 77,
"height_metric": 193,
"weight_lb": 9200,
"maxWeightPerAxleGroupInPounds": 4600,
"max_weight_per_axle_group_metric": 4600,
"widthInInches": 80,
"width_metric": 200,
"lengthInInches": 227,
"length_metric": 567,
"Use53FootTrailerRouting": "YES",
"UseTruckRestrictions": "YES",
"DividedHighwayAvoidPreference": "NEUTRAL",
"FreewayAvoidPreference": "NEUTRAL",
"truck_config": "FULLSIZEVAN",
"member_id": 1,
"vehicle_id": "64788FBD0C4BBA3B69D07EC3F947C190",
"timestamp_added": "2018-10-18T15:38:31-04:00"
}
Medium Truck
Medium truck or medium-duty truck is a classification for trucks or truck-based vehicles with a gross vehicle weight in the range of 14,001–26,000 lb (6,351–11,793 kg). A medium truck can be a box truck, van, cutaway van chassis, platform truck, flatbed truck, stake bed truck, fire truck (may also be a heavy truck), or a recreational vehicle.
See the sample input JSON data for this method.
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/vehicles
SET apikey=11111111111111111111111111111111
:: This example refers to the process of creating a medium truck, class 6.
ECHO ON
curl -o create_medium_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_medium_truck_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/vehicles
apikey=11111111111111111111111111111111
# This example refers to the process of creating a medium truck, class 6.
curl -o create_medium_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_medium_truck_data.json" "$url$vehicleid?api_key=$apikey"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to creating a medium class truck.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'GMC TopKick C5500 Medium',
'vehicle_vin' => 'SAJXA01A06FN08012',
'vehicle_license_plate' => 'CVH4561',
'vehicle_model' => 'TopKick C5500',
'vehicle_model_year' => 1995,
'vehicle_year_acquired' => 2008,
'vehicle_reg_country_id' => '223',
'vehicle_make' => 'GMC',
'vehicle_type_id' => 'pickup_truck',
'vehicle_axle_count' => 2,
'mpg_city' => 7,
'mpg_highway' => 14,
'fuel_type' => 'diesel',
'height_inches' => 97,
'height_metric' => 243,
'weight_lb' => 19000,
'maxWeightPerAxleGroupInPounds' => 9500,
'max_weight_per_axle_group_metric' => 4300,
'widthInInches' => 96,
'width_metric' => 240,
'lengthInInches' => 244,
'length_metric' => 610,
'Use53FootTrailerRouting' => 'YES',
'UseTruckRestrictions' => 'YES',
'DividedHighwayAvoidPreference' => 'NEUTRAL',
'FreewayAvoidPreference' => 'NEUTRAL',
'truck_config' => 'FULLSIZEVAN',
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "GMC TopKick C5500",
"vehicle_vin": "SAJXA01A06FN08012",
"vehicle_license_plate": "CVH4561",
"vehicle_model": "TopKick C5500",
"vehicle_model_year": 1995,
"vehicle_year_acquired": 2008,
"vehicle_reg_country_id": "223",
"vehicle_make": "GMC",
"vehicle_type_id": "pickup_truck",
"vehicle_axle_count": 2,
"mpg_city": 7,
"mpg_highway": 14,
"fuel_type": "diesel",
"height_inches": 97,
"height_metric": 243,
"weight_lb": 19000,
"maxWeightPerAxleGroupInPounds": 9500,
"max_weight_per_axle_group_metric": 4300,
"widthInInches": 96,
"width_metric": 240,
"lengthInInches": 244,
"length_metric": 610,
"Use53FootTrailerRouting": "YES",
"UseTruckRestrictions": "YES",
"DividedHighwayAvoidPreference": "NEUTRAL",
"FreewayAvoidPreference": "NEUTRAL",
"truck_config": "FULLSIZEVAN",
"member_id": 1,
"vehicle_id": "2BB425F4D3300377FD74D58D6295B4DD",
"timestamp_added": "2018-08-14T09:21:16-04:00"
}
Heavy Truck
The heavy truck or heavy-duty truck is a classification for trucks or truck-based vehicles with a gross vehicle weight of over 26,000 lb (11,793 kg). Heavy trucks are the most massive on-road trucks, and some good examples are semi-trailer trucks, mobile cranes, refrigerator trucks, log carriers, vocational applications such as heavy dump trucks, concrete pump trucks, and refuse hauling, as well as ubiquitous long-haul 4x2 and 6x4 tractor units.
See the sample input JSON data for this method.
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/vehicles
SET apikey=11111111111111111111111111111111
:: This example refers to the process of creating a heavy truck, class 8.
ECHO ON
curl -o create_heavy_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_heavy_truck_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/vehicles
apikey=11111111111111111111111111111111
# This example refers to the process of creating a heavy truck, class 8.
curl -o create_heavy_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_heavy_truck_data.json" "$url$vehicleid?api_key=$apikey"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to creating a heavy class truck.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'Peterbilt 579',
'vehicle_vin' => '1NP5DB9X93N507873',
'vehicle_license_plate' => 'PPV7516',
'license_start_date' => '2017-06-05',
'license_end_date' => '2021-08-14',
'vehicle_model' => '579',
'vehicle_model_year' => 2015,
'vehicle_year_acquired' => 2018,
'vehicle_reg_country_id' => '223',
'vehicle_make' => 'Peterbilt',
'vehicle_type_id' => 'tractor_trailer',
'has_trailer' => true,
'vehicle_axle_count' => 5,
'mpg_city' => 6,
'mpg_highway' => 12,
'fuel_type' => 'diesel',
'height_inches' => 114,
'height_metric' => 290,
'weight_lb' => 50350,
'maxWeightPerAxleGroupInPounds' => 40000,
'max_weight_per_axle_group_metric' => 18000,
'widthInInches' => 102,
'width_metric' => 258,
'lengthInInches' => 640,
'length_metric' => 1625,
'Use53FootTrailerRouting' => 'YES',
'UseTruckRestrictions' => 'YES',
'DividedHighwayAvoidPreference' => 'STRONG_AVOID',
'FreewayAvoidPreference' => 'STRONG_AVOID',
'truck_config' => '53_SEMI_TRAILER',
'InternationalBordersOpen' => 'YES',
'purchased_new' => true
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "Peterbilt 579",
"vehicle_vin": "1NP5DB9X93N507873",
"vehicle_license_plate": "PPV7516",
"license_start_date": "2017-06-05",
"license_end_date": "2021-08-14",
"vehicle_model": "579",
"vehicle_model_year": 2015,
"vehicle_year_acquired": 2018,
"vehicle_reg_country_id": "223",
"vehicle_make": "Peterbilt",
"vehicle_type_id": "tractor_trailer",
"has_trailer": true,
"vehicle_axle_count": 5,
"mpg_city": 6,
"mpg_highway": 12,
"fuel_type": "diesel",
"height_inches": 114,
"height_metric": 290,
"weight_lb": 50350,
"maxWeightPerAxleGroupInPounds": 40000,
"max_weight_per_axle_group_metric": 18000,
"widthInInches": 102,
"width_metric": 258,
"lengthInInches": 640,
"length_metric": 1625,
"Use53FootTrailerRouting": "YES",
"UseTruckRestrictions": "YES",
"DividedHighwayAvoidPreference": "STRONG_FAVOR",
"FreewayAvoidPreference": "STRONG_AVOID",
"truck_config": "53_SEMI_TRAILER",
"TollRoadUsage": "ALWAYS_AVOID",
"InternationalBordersOpen": "YES",
"purchased_new": true,
"member_id": 1,
"vehicle_id": "DABA9B99B9EF691BF6064002B06B2533",
"timestamp_added": "2018-10-19T03:49:07-04:00"
}
Super-heavy Truck
These are trucks that are considered heavy-duty and are too large for highway use without escorts and special permits. Examples are the ALMA transporter, ballast tractor, heavy hauler, and haul truck.
See the sample input JSON data for this method.
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/vehicles
SET apikey=11111111111111111111111111111111
:: This example refers to the process of creating a super-heavy truck, class 9.
ECHO ON
curl -o create_super_heavy_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_super_heavy_truck_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/vehicles
apikey=11111111111111111111111111111111
# This example refers to the process of creating a super-heavy truck, class 9.
curl -o create_super_heavy_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_super_heavy_truck_data.json" "$url$vehicleid?api_key=$apikey"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to creating a super-heavy class truck.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'Liebherr T 282B mining truck',
'vehicle_vin' => '1NP5DB9X93N507873',
'vehicle_license_plate' => 'LMT8765',
'license_start_date' => '2008-04-12',
'license_end_date' => '2020-08-16',
'vehicle_model' => 'Liebherr T 282B',
'vehicle_model_year' => 2004,
'vehicle_year_acquired' => 2008,
'vehicle_reg_country_id' => '223',
'vehicle_type_id' => 'bigrig',
'has_trailer' => false,
'vehicle_axle_count' => 2,
'mpg_city' => 2,
'mpg_highway' => 4,
'fuel_type' => 'diesel',
'height_inches' => 596,
'height_metric' => 1490,
'weight_lb' => 1316000,
'maxWeightPerAxleGroupInPounds' => 658000,
'max_weight_per_axle_group_metric' => 298450,
'widthInInches' => 381,
'width_metric' => 952,
'lengthInInches' => 613,
'length_metric' => 1532,
'Use53FootTrailerRouting' => 'YES',
'UseTruckRestrictions' => 'YES',
'DividedHighwayAvoidPreference' => 'STRONG_AVOID',
'FreewayAvoidPreference' => 'STRONG_AVOID',
'truck_config' => '53_SEMI_TRAILER',
'InternationalBordersOpen' => 'YES',
'purchased_new' => true
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "Liebherr T 282B mining truck",
"vehicle_vin": "1NP5DB9X93N507873",
"vehicle_license_plate": "LMT8765",
"license_start_date": "2008-04-12",
"license_end_date": "2020-08-16",
"vehicle_model": "Liebherr T 282B",
"vehicle_model_year": 2004,
"vehicle_year_acquired": 2008,
"vehicle_reg_country_id": "223",
"vehicle_type_id": "bigrig",
"has_trailer": false,
"vehicle_axle_count": 2,
"mpg_city": 220,
"mpg_highway": 132,
"fuel_type": "diesel",
"height_inches": 596,
"height_metric": 1490,
"weight_lb": 1316000,
"maxWeightPerAxleGroupInPounds": 658000,
"max_weight_per_axle_group_metric": 298450,
"widthInInches": 381,
"width_metric": 596900,
"lengthInInches": 613,
"length_metric": 1532,
"Use53FootTrailerRouting": "YES",
"UseTruckRestrictions": "YES",
"DividedHighwayAvoidPreference": "STRONG_AVOID",
"FreewayAvoidPreference": "STRONG_AVOID",
"truck_config": "53_SEMI_TRAILER",
"TollRoadUsage": "ALWAYS_AVOID",
"InternationalBordersOpen": "YES",
"purchased_new": true,
"member_id": 1,
"vehicle_id": "4654F1D7083CF7F7F2207C7CC3E19FB5",
"timestamp_added": "2018-10-19T08:07:00-04:00"
}
Hazmat Truck
A typical hazmat vehicle has a command and communications center. Often fitted with computers, televisions, two-way radios and other equipment. This command center is usually located in a portion of the vehicle that slides out or expands.
Also, hazmat vehicles often come with a portable lab that allows for the analysis of samples collected at the scene. Early on-site scientific analysis and monitoring speed up the detection process and provide the correct response for the particular incident.
See the sample input JSON data for this method.
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://wh.route4me.com/modules/api/vehicles
SET apikey=11111111111111111111111111111111
:: This example refers to the process of creating a hazmat truck.
ECHO ON
curl -o create_hazmat_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_hazmat_truck_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://wh.route4me.com/modules/api/vehicles
apikey=11111111111111111111111111111111
# This example refers to the process of creating a super-heavy truck, class 9.
curl -o create_super_heavy_truck_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -X POST -k -d "@create_super_heavy_truck_data.json" "$url$vehicleid?api_key=$apikey"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Vehicle;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Example refers to creating a hazmat class truck.
// Set the API key in the Route4Me class.
Route4Me::setApiKey('11111111111111111111111111111111');
$vehicle = new Vehicle();
$vehicleParameters = Vehicle::fromArray(array (
'vehicle_alias' => 'ISUZU FTR',
'vehicle_vin' => '1NP5DB9X93N507873',
'vehicle_license_plate' => 'IFT6253',
'license_start_date' => '2008-05-14',
'license_end_date' => '2020-09-24',
'vehicle_model' => 'FTR',
'vehicle_model_year' => 2008,
'vehicle_year_acquired' => 2008,
'vehicle_reg_country_id' => '223',
'vehicle_type_id' => 'bigrig',
'has_trailer' => false,
'vehicle_axle_count' => 2,
'mpg_city' => 5,
'mpg_highway' => 15,
'fuel_type' => 'diesel',
'height_inches' => 112,
'height_metric' => 280,
'weight_lb' => 25950,
'maxWeightPerAxleGroupInPounds' => 19000,
'max_weight_per_axle_group_metric' => 8620,
'widthInInches' => 94,
'width_metric' => 235,
'lengthInInches' => 384,
'length_metric' => 960,
'Use53FootTrailerRouting' => 'NO',
'UseTruckRestrictions' => 'YES',
'DividedHighwayAvoidPreference' => 'NEUTRAL',
'FreewayAvoidPreference' => 'NEUTRAL',
'TollRoadUsage' => 'ALWAYS_AVOID',
'truck_config' => '26_STRAIGHT_TRUCK',
'InternationalBordersOpen' => 'YES',
'purchased_new' => true,
'HazmatType' => 'FLAMMABLE'
));
$result = $vehicle->createVehicle($vehicleParameters);
assert(!is_null($result), "Can't update the vehicle");
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/vehicles?api_key=...
You can expect this API response:
{
"vehicle_alias": "ISUZU FTR",
"vehicle_vin": "1NP5DB9X93N507873",
"vehicle_license_plate": "IFT6253",
"license_start_date": "2008-05-14",
"license_end_date": "2020-09-24",
"vehicle_model": "FTR",
"vehicle_model_year": 2008,
"vehicle_year_acquired": 2008,
"vehicle_reg_country_id": "223",
"vehicle_type_id": "bigrig",
"has_trailer": false,
"vehicle_axle_count": 2,
"mpg_city": 25,
"mpg_highway": 15,
"fuel_type": "diesel",
"height_inches": 112,
"height_metric": 280,
"weight_lb": 25950,
"maxWeightPerAxleGroupInPounds": 19000,
"max_weight_per_axle_group_metric": 8620,
"widthInInches": 94,
"width_metric": 235,
"lengthInInches": 384,
"length_metric": 960,
"Use53FootTrailerRouting": "YES",
"UseTruckRestrictions": "YES",
"DividedHighwayAvoidPreference": "NEUTRAL",
"FreewayAvoidPreference": "NEUTRAL",
"truck_config": "26_STRAIGHT_TRUCK",
"TollRoadUsage": "ALWAYS_AVOID",
"InternationalBordersOpen": "YES",
"purchased_new": true,
"HazmatType": "FLAMMABLE",
"member_id": 1,
"vehicle_id": "B7DB6E37E72BA8A3A9D631B2E44497FF",
"timestamp_added": "2018-10-20T08:40:01-04:00"
}
Activity Feed
The activity feed displays all routing activities on your account, such as route modifications, note additions or driver progress.
For VBScript (WSH) examples, you should place the Route4Me.vbs file in its appropriate folder as referred to in the examples.
Activity Feed Properties
Attribute | Type | Description |
---|---|---|
route_id | string | Route ID |
route_destination_id | integer | Route destination ID |
member_id | integer | Member ID |
note_id | string | Note ID |
note_attachment_url | string | The URL of the uploaded note. |
activity_type | string | Activity type |
activity_id | string | Activity ID |
activity_timestamp | string | The timestamp (in Epoch format) when the activity occurred. |
activity_message | string | Activity message |
Get All Activities
Get all recorded activities associated with a specific Route4Me account. Limit the search results using the limit
and offset
parameters.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET offset=0
SET limit=20
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&offset=%offset%&limit=%limit%"
timeout /t 30
<job id="Get Activities All">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
offset="0"
limit="20"
url=url&"?api_key="&apikey
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
offset=0
limit=20
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&offset=$offset&limit=$limit"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityParameters = ActivityParameters::fromArray(array(
"limit" => 10,
"offset" => 0
));
$activities = new ActivityParameters();
$actresults = $activities->getActivities($activityParameters);
$results = $activities->getValue($actresults, "results");
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo "<br>";
}
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetActivities(string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
RouteId = routeId,
Limit = 10,
Offset = 0
};
// Run the query
string errorString;
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("GetActivities executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
activities.ForEach(activity =>
{
Console.WriteLine("Activity ID: {0}", activity.ActivityId);
});
Console.WriteLine("");
}
else
{
Console.WriteLine("GetActivities error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetActivities(routeId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.RouteId = routeId, _
.Limit = 10, _
.Offset = 0 _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("GetActivities executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("GetActivities error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
response = activity_feed.get_activities_feed(limit=10, offset=0)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.Activity;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.routing.Route;
import com.route4me.sdk.services.routing.RoutesRequest;
import com.route4me.sdk.services.routing.RoutingManager;
import java.util.List;
public class GetActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
RoutingManager routeManager = new RoutingManager(apiKey);
try {
List<Route> routes = routeManager.getRoutes(new RoutesRequest().setLimit(10));
String routeID = routes.get(2).getId();
System.out.println("Getting Activities for Route ID: " + routeID);
Activities responseObject = manager.getActivities(new ActivityRequest().setLimit(10).setRouteId(routeID));
System.out.println("Total Activities: " + responseObject.getTotal());
for (Activity activity : responseObject.getResults()) {
System.out.println(activity);
}
} catch (APIException e) {
// Handle error
e.printStackTrace();
}
}
}
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{RouteID:"route-id"})
if err != nil {
t.Error(err)
}
// do something with activities, it's []Activity
}
package GetActivities;
use strict;
use warnings FATAL => 'all';
sub GetActivities {
my ($self, $routeId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $activityParameters = ActivityParameters->new( {
route_id => $routeId,
limit => 10,
offset => 0
} );
my $errorString = "";
my $dataObject = $route4Me->getActivities( $activityParameters, \$errorString );
print "\n";
if ($dataObject) {
printf "GetActivities executed successfully, %s activities returned\n\n", scalar @{$dataObject->results};
foreach my $activity (@{$dataObject->results}) {
printf "Activity ID: %s\n", $activity->activity_id;
}
} else {
printf "GetActivities error: %s\n", $errorString;
}
}
1;
unit GetAllActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAllActivities = class(TBaseExample)
public
procedure Execute(Limit, Offset: integer);
end;
implementation
uses ActivityUnit;
procedure TGetAllActivities.Execute(Limit, Offset: integer);
var
ErrorString: String;
Activities: TActivityList;
Activity: TActivity;
Total: integer;
begin
Activities := Route4MeManager.ActivityFeed.GetAllActivities(
Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Activities <> nil) and (Activities.Count > 0) then
begin
WriteLn(Format('GetActivities executed successfully, %d activities returned',
[Activities.Count]));
WriteLn('');
for Activity in Activities do
WriteLn(Format('Activity ID: %s', [Activity.Id.Value]));
WriteLn('');
end
else
WriteLn(Format('GetActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
int ret = route.get_all_activities();
if (ret == 0)
cout << "Activities: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No activities: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
struct Limit limit = {5,10};
if (!get_all_activities(&limit))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api/get_activities.php?api_key=...&offset=...&limit=...
See the sample JSON response of this method.
Get Team Activities on a Route
Get all recorded activities associated with a specific Route4Me account, including the activities of its team members.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
team | string | If set to “true”, team activities will be included. |
<job id="Get Team Activities on a Route">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
route_id="06B655F27E0D6A74BD37F6F9758E4D2E"
team="true"
url=url&"?api_key="&apikey
url=url&"&route_id="&route_id
url=url&"&team="&team
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET route_id=06B655F27E0D6A74BD37F6F9758E4D2E
SET team=true
:: The example demonstrates the process of getting team activities on a route.
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%route_id%&team=%team%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
route_id=06B655F27E0D6A74BD37F6F9758E4D2E
team=true
# The example demonstrates the process of getting team activities on a route.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$route_id&team=$team&"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Team Activities on a Route
/// </summary>
public void GetRouteTeamActivities()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string routeId = "06B655F27E0D6A74BD37F6F9758E4D2E";
ActivityParameters activityParameters = new ActivityParameters
{
RouteId = routeId,
Team = "true"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("GetActivities executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("GetActivities error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetRouteTeamActivities()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim routeId As String = "06B655F27E0D6A74BD37F6F9758E4D2E"
Dim activityParameters As New ActivityParameters() With { _
.RouteId = routeId, _
.team = "true" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("GetActivities executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("GetActivities error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{
Team: true,
RouteID: "06B655F27E0D6A74BD37F6F9758E4D2E",
})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$routeId = $route->getRandomRouteId(0, 10);
assert(!is_null($routeId), "Can't retrieve random route_id");
$activityParameters = ActivityParameters::fromArray(array(
"route_id" => $routeId,
"team" => "true"
));
$activities = new ActivityParameters();
$actresults = $activities->getActivities($activityParameters);
$results = $activities->getValue($actresults, "results");
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo "<br>";
}
unit GetTeamActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetTeamActivities = class(TBaseExample)
public
procedure Execute(RouteId: String; Limit, Offset: integer);
end;
implementation
uses ActivityUnit;
procedure TGetTeamActivities.Execute(RouteId: String; Limit, Offset: integer);
var
ErrorString: String;
Activities: TActivityList;
Activity: TActivity;
Total: integer;
begin
Activities := Route4MeManager.ActivityFeed.GetTeamActivities(
RouteId, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Activities <> nil) and (Activities.Count > 0) then
begin
WriteLn(Format('GetActivities executed successfully, %d activities returned',
[Activities.Count]));
WriteLn('');
for Activity in Activities do
WriteLn(Format('Activity ID: %s', [Activity.Id.Value]));
WriteLn('');
end
else
WriteLn(Format('GetActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
int ret = route.get_team_activities(route_id);
if (ret == 0)
cout << "Activities by team: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "No activities by team: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
const char *route_id = "CA902292134DBC134EAF8363426BD247";
init(key, 1);
if (!get_team_activities(route_id, "sf"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api/get_activities.php?api_key=...&route_id=...&team=true
See the sample JSON response of this method.
Get Last Activities
Get the last activities recorded after a specified date.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
start | integer | The time in Epoch format. |
<job id="Get Activities All">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example demonstrates the process of getting all activities recorded after the specified time.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
offset="0"
limit="20"
start="1495238400"
url=url&"?api_key="&apikey
url=url&"&offset="&offset
url=url&"&limit="&limit
url=url&"&start="&start
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET offset=0
SET limit=20
SET start=1495238400
ECHO ON
curl -o file1.txt -g -k -X GET "%url%?api_key=%apikey%&offset=%offset%&limit=%limit%&start=%start%"
timeout /t 30
#!/bin/bash
# The example demonstrates the process of getting all activities recorded after the specified time.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
offset=0
limit=20
start=1495238400
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&offset=$offset&limit=$limit&start=$start"
echo "Finished..."
sleep 15
public void GetLastActivities()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
DateTime activitiesAfterTime = DateTime.Now - (new TimeSpan(7, 0, 0, 0));
activitiesAfterTime = new DateTime(activitiesAfterTime.Year, activitiesAfterTime.Month, activitiesAfterTime.Day, 0, 0, 0);
uint uiActivitiesAfterTime = (uint)Route4MeSDK.R4MeUtils.ConvertToUnixTimestamp(activitiesAfterTime);
ActivityParameters activityParameters = new ActivityParameters()
{
Limit = 10,
Offset = 0,
Start = uiActivitiesAfterTime
};
// Run the query
string errorString;
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
foreach (Activity activity in activities)
{
uint activityTime = activity.ActivityTimestamp!=null ? (uint)activity.ActivityTimestamp : 0;
Assert.IsTrue(activityTime >= uiActivitiesAfterTime, "GetLastActivities failed. "+ errorString);
}
}
Public Sub GetLastActivitiesTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activitiesAfterTime As DateTime = DateTime.Now - (New TimeSpan(7, 0, 0, 0))
activitiesAfterTime = New DateTime(activitiesAfterTime.Year, activitiesAfterTime.Month, activitiesAfterTime.Day, 0, 0, 0)
Dim uiActivitiesAfterTime As UInteger = CUInt(Route4MeSDKLibrary.Route4MeSDK.R4MeUtils.ConvertToUnixTimestamp(activitiesAfterTime))
Dim activityParameters As New ActivityParameters() With { _
.Limit = 10, _
.Offset = 0, _
.Start = 0 _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
For Each activity As Activity In activities
Dim activityTime As UInteger = If(activity.ActivityTimestamp IsNot Nothing, CUInt(activity.ActivityTimestamp), 0)
Assert.IsTrue(activityTime >= uiActivitiesAfterTime, "GetLastActivities failed. " & errorString)
Next
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(
&activity.Query{
RouteID:"route-id",
Start: 1495238400, //Start is a timestamp
}
}
if err != nil {
t.Error(err)
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// The example demonstrates the process of getting all activities recorded after the specified time.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityParameters = ActivityParameters::fromArray(array(
"limit" => 10,
"offset" => 0,
"start" => strtotime("-1 week")
));
$activities = new ActivityParameters();
$actresults = $activities->getActivities($activityParameters);
$results = $activities->getValue($actresults, "results");
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo "<br>";
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&limit=...&start
See the sample JSON response of this method.
Log a Specific Message
Permanently store a specific message directly to the activity feed. A good use case for this method is to use it as part of a one or two-way chat solution.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type. In this case, it should be “user_message”. |
activity_message | string | The message or text to log into the activity feed. |
route_id | string | Route ID |
@ECHO OFF
SET url=https://api.route4me.com/api.v4/activity_feed.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates the logging of a specific message directly to the Activity Feed.
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d"@send_user_message_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/activity_feed.php
apikey=11111111111111111111111111111111
# The example demonstrates the logging of a specific message directly to the Activity Feed.
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d"@send_user_message_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
<job id="Send User Message">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/activity_feed.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="send_user_message_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\AvtivityParameters;
// The example demonstrates the logging of a specific message directly to the Activity Feed.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
$postParameters = ActivityParameters::fromArray(array(
"activity_type" => "user_message",
"activity_message" => "Hello - php!",
"route_id" => $route_id
));
$activities = new ActivityParameters();
$results = $activities->sendUserMessage($postParameters);
$msg = isset($results["status"])!=null
? ($results["status"]==1 ? "The user message was sent to the route " : "The user message could not be sent to the route ")
: "The user message could not be sent to the route ";
$msg .= " with route_id=".$route_id;
echo "<br> $msg <br>";
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Create User Activity
/// </summary>
/// <param name="message"> Activity message </param>
/// <param name="routeId"> Route identifier </param>
/// <returns> True/False </returns>
public bool LogCustomActivity(string message, string routeId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
Activity activity = new Activity()
{
ActivityType = "user_message",
ActivityMessage = message,
RouteId = routeId
};
// Run the query
string errorString;
bool added = route4Me.LogCustomActivity(activity, out errorString);
Console.WriteLine("");
if (added)
{
Console.WriteLine("LogCustomActivity executed successfully");
return added;
}
else
{
Console.WriteLine("LogCustomActivity error: {0}", errorString);
return added;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Log Specific Message
''' </summary>
Public Sub LogSpecificMessage()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim params As ActivityParameters = New ActivityParameters() With { _
.ActivityType = "user_message", _
.ActivityMessage = "Hello vb.net !", _
.RouteId = "2EA70721624592FC41522A708603876D" _
}
' Run the query
Dim errorString As String = ""
Dim result As Boolean = route4Me.LogSpecificMessage(params, errorString)
Console.WriteLine("")
If result Then
Console.WriteLine("LogSpecificMessage executed successfully")
Console.WriteLine("---------------------------")
Else
Console.WriteLine("LogSpecificMessage error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
response = activity_feed.log_specific_message(activity_message='Hello from Python SDK',
route_id='D2F447BCB1F8B8388E88B07188B3A256')
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Message Logged: {}'.format(response.status)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetSendUserMessageActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.USER_MESSAGE));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
err := service.Log("Message", "ROUTE_ID")
if err != nil {
// handle error
}
// success!
}
unit LogSpecificMessageUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TLogSpecificMessage = class(TBaseExample)
public
function Execute(Message, RouteId: String): boolean;
end;
implementation
function TLogSpecificMessage.Execute(Message, RouteId: String): boolean;
var
ErrorString: String;
begin
Result := Route4MeManager.ActivityFeed.LogSpecificMessage(RouteId, Message, ErrorString);
WriteLn('');
if (Result) then
WriteLn('LogSpecificMessage executed successfully')
else
WriteLn(Format('LogSpecificMessage error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
const char *route_id = "CA902292134DBC134EAF8363426BD247";
int ret = route.log_custom_activity(route_id, "test", "test2");
if (ret == 0)
cout << "Writing log: " << Json::FastWriter().write(route.get_json_resp()) << endl;
else
cout << "Error writing log: " << Json::FastWriter().write(route.get_json_resp()) << endl;
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
const char *route_id = "CA902292134DBC134EAF8363426BD247";
init(key, 1);
if (!log_custom_activity(route_id, "test", "test1"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/activity_feed.php?api_key=...
You can expect this API response:
{
"status":true
}
Area added
Get “area added” activities.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Area Added Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="area-added"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=area-added
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=area-added
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Search Area Added
/// </summary>
public void SearchAreaAdded()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "area-added" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchAreaAdded executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchAreaAdded error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchAreaAdded()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "area-added" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchAreaAdded executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchAreaAdded error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['area-added']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTIVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetAreaAddedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.AREA_ADDED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `area-added`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "area-added",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.AreaAdded})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
unit GetAreaAddedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAreaAddedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAreaAddedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atAreaAdded, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAreaAddedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAreaAddedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("area-added");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Area removed
Get “area removed” activities.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Area Removed Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="area-removed"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=area-removed
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=area-removed
ECHO ON
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Search Area Removed
/// </summary>
public void SearchAreaRemoved()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "area-removed" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchAreaRemoved executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchAreaRemoved error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchAreaRemoved()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "area-removed" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchAreaRemoved executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchAreaRemoved error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['area-removed']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetAreaRemovedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.AREA_REMOVED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.AreaRemoved})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `area-removed`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "area-removed",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAreaRemovedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAreaRemovedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAreaRemovedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atAreaRemoved, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('ActivityAreaRemoved executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('ActivityAreaRemoved error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("area-removed");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Area updated
Get “area updated” activities.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Area Updated Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="area-updated"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=area-updated
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=area-updated
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Search Area Updated
/// </summary>
public void SearchAreaUpdated()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "area-updated" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchAreaUpdated executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchAreaUpdated error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchAreaUpdated()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "area-updated" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchAreaUpdated executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchAreaUpdated error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['area-updated']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetAreaUpdatedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.AREA_UPDATED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.AreaUpdated})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `area-updated`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "area-updated",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAreaUpdatedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAreaUpdatedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAreaUpdatedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atAreaUpdated, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAreaUpdatedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAreaUpdatedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("area-updated");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "9F862B79AF6F19757D440D8B328B5382",
"activity_type": "area-updated",
"activity_timestamp": "1463663397",
"activity_message": "Region 'Test Territory' was updated",
"route_id": "00000000000000000000000000000000",
"route_name": null,
"route_destination_id": null,
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "*",
"member_first_name": "D*an",
"member_last_name": "*",
"member_email": "d*"
}
}],
"total": 1
}
Destination deleted
Get “destination deleted” activities.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Delete Destination Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
act_type="area-updated"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET act_type=delete-destination
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
act_type=delete-destination
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Delete Destination
/// </summary>
public void SearchDeleteDestination()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "delete-destination" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDeleteDestination executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDeleteDestination error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationDeleted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "delete-destination", _
.RouteId = "5C15E83A4BE005BCD1537955D28D51D7" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationDeleted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationDeleted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
response = activity_feed.get_activity_feed_deleted(route_id='C9F6F9F664169DFB4042110069EBE688')
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationDeletedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.DELETE_DESTINATION));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.DeleteDestination})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `delete-destination`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "delete-destination",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationDeletedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationDeletedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationDeletedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atDeleteDestination, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationDeletedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationDeletedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("delete-destination");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Destination out of sequence
Get “destination out of sequence” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Destination Out Of Sequence Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="destination-out-sequence"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=destination-out-sequence
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=destination-out-sequence
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Destination Out Sequence
/// </summary>
public void SearchDestinationOutSequence()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "destination-out-sequence" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDestinationOutSequence executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDestinationOutSequence error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationOutSequence()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "destination-out-sequence" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationOutSequence executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationOutSequence error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['destination-out-sequence']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationOutOfSequenceActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.DESTINATION_OUT_SEQUENCE));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.DestinationOutSequence})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `destination-out-sequence`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "destination-out-sequence",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationOutOfSequenceActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationOutOfSequenceActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationOutOfSequenceActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atDestinationOutSequence, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationOutOfSequenceActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationOutOfSequenceActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("destination-out-sequence");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Driver arrived early
Get “driver arrived early” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Driver Arrived Early Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="driver-arrived-early"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=driver-arrived-early
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=driver-arrived-early
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Driver Arrived Early
/// </summary>
public void SearchDriverArrivedEarly()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "driver-arrived-early" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDriverArrivedEarly executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDriverArrivedEarly error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDriverArrivedEarly()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "driver-arrived-early" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDriverArrivedEarly executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDriverArrivedEarly error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['driver-arrived-early']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDriverArrivedEarlyActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.DRIVER_ARRIVED_EARLY));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.DriverArrivedEarly})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `driver-arrived-early`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "driver-arrived-early",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDriverArrivedEarlyActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDriverArrivedEarlyActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDriverArrivedEarlyActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atDriverArrivedEarly, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDriverArrivedEarlyActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDriverArrivedEarlyActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("driver-arrived-early");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Driver arrived late
Get “driver arrived late” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Driver Arrived Late Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="driver-arrived-late"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=driver-arrived-late
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=driver-arrived-late
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Driver Arrived Late
/// </summary>
public void SearchDriverArrivedLate()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "driver-arrived-late" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDriverArrivedLate executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDriverArrivedLate error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDriverArrivedLate()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "driver-arrived-late" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDriverArrivedLate executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDriverArrivedLate error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['driver-arrived-late']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDriverArrivedLateActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.DRIVER_ARRIVED_LATE));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.DriverArrivedLate})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `driver-arrived-late`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "driver-arrived-late",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDriverArrivedLateActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDriverArrivedLateActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDriverArrivedLateActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atDriverArrivedLate, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDriverArrivedLateActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDriverArrivedLateActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("driver-arrived-late");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Driver arrived on time
Get “driver arrived on time” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Driver Arrived On Time Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="driver-arrived-on-time"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=driver-arrived-on-time
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=driver-arrived-on-time
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Driver Arrived On Time
/// </summary>
public void SearchDriverArrivedOnTime()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "driver-arrived-on-time" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDriverArrivedOnTime executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDriverArrivedOnTime error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDriverArrivedOnTime()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "driver-arrived-on-time" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDriverArrivedOnTime executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDriverArrivedOnTime error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['driver-arrived-on-time']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDriverArrivedOnTimeActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.DRIVER_ARRIVED_ON_TIME));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.DriverArrivedOnTime})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `driver-arrived-on-time`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "driver-arrived-on-time",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDriverArrivedOnTimeActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDriverArrivedOnTimeActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDriverArrivedOnTimeActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atDriverArrivedOnTime, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDriverArrivedOnTimeActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDriverArrivedOnTimeActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("driver-arrived-on-time");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "294FC46D14010EA7772AA1FFE4113379",
"destination_name": "4280 Kellway Circle, Addison, Texas, 75001",
"destination_alias": "Total Life Care",
"activity_type": "driver-arrived-on-time",
"activity_timestamp": "1454608230",
"activity_message": "The driver marked as visited within the expected time window the address '4280 Kellway Circle, Addison, Texas, 75001'",
"route_id": "E9C1BC7FCA59D934FFAC3703E287461C",
"route_name": "with-cubic (Part 001)",
"route_destination_id": "143359649",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
}],
"total": 1
}
Geofence entered
Get “geofence entered” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Geofence Entered Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="geofence-entered"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=geofence-entered
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=geofence-entered
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Geofence Entered
/// </summary>
public void SearchGeofenceEntered()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "geofence-entered" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchGeofenceEntered executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchGeofenceEntered error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchGeofenceEntered()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "geofence-entered" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchGeofenceEntered executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchGeofenceEntered error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['geofence-entered']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetGeofenceEnteredActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.GEOFENCE_ENTERED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.GeofenceEntered})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `geofence-entered`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "geofence-entered",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetGeofenceEnteredActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetGeofenceEnteredActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetGeofenceEnteredActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atGeofenceEntered, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetGeofenceEnteredActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetGeofenceEnteredActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("geofence-entered");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Geofence left
Get “geofence left” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Geofence Left Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="geofence-left"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=geofence-left
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=geofence-left
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Geofence Left
/// </summary>
public void SearchGeofenceLeft()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "geofence-left" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchGeofenceLeft executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchGeofenceLeft error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchGeofenceLeft()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "geofence-left" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchGeofenceLeft executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchGeofenceLeft error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['geofence-left']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetGeofenceLeftActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.GEOFENCE_LEFT));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.GeofenceLeft})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `geofence-left`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "geofence-left",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetGeofenceLeftActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetGeofenceLeftActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetGeofenceLeftActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atGeofenceLeft, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetGeofenceLeftActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetGeofenceLeftActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("geofence-left");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Destination inserted
Get “destination inserted” activities (events) from a particular route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
route_id | string | Route ID |
<job id="Get Insert Destination Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
act_type="insert-destination"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET act_type=insert-destination
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
act_type=insert-destination
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Insert Destination
/// </summary>
public void SearchInsertDestination()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
ActivityType = "insert-destination",
RouteId = "87B8873BAEA4E09942C68E2C92A9C4B7"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchInsertDestination executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchInsertDestination error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationInserted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "insert-destination", _
.RouteId = "87B8873BAEA4E09942C68E2C92A9C4B7" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationInserted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationInserted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
response = activity_feed.get_activity_feed_inserted(route_id='D2F447BCB1F8B8388E88B07188B3A256')
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationInsertedToCertainRouteActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.INSERT_DESTINATION).setRouteId("5C15E83A4BE005BCD1537955D28D51D7"));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.InsertDestination, RouteID: "5C15E83A4BE005BCD1537955D28D51D7"})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `insert-destination` on the specified route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "insert-destination",
"limit" => 2,
"offset" => 0,
"route_id" => $route_id
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationInsertedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationInsertedActivities = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationInsertedActivities.Execute(RouteId: String);
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(RouteId,
TActivityType.atInsertDestination, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationInsertedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationInsertedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("insert_destination");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "AED2D5EE219B6FE06FB41AC88B6B7052",
"destination_name": "3557-3593 W Market St, Fairlawn, OH 44333, USA",
"destination_alias": "",
"activity_type": "insert-destination",
"activity_timestamp": "1470407091",
"activity_message": "Address '3557-3593 W Market St, Fairlawn, OH 44333, USA' was added into route 'Reveive_notifications_address_checkin_08-05-2016'",
"route_id": "87B8873BAEA4E09942C68E2C92A9C4B7",
"route_name": "Reveive_notifications_address_checkin_08-05-2016",
"route_destination_id": "178204838",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
}],
"total": 1
}
Destination inserted (all)
Get “destination inserted” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Insert Destination All Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="insert-destination"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=insert-destination
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=insert-destination
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Insert Destination All
/// </summary>
public void SearchInsertDestinationAll()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
ActivityType = "insert-destination"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchInsertDestinationAll executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchInsertDestinationAll error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationInsertedAll()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "insert-destination" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationInsertedAll executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationInsertedAll error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationInsertedOfAllRoutesActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.INSERT_DESTINATION));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.InsertDestination})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `insert-destination`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "insert-destination",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAllDestinationInsertedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAllDestinationInsertedActivities = class(TBaseExample)
public
procedure Execute();
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAllDestinationInsertedActivities.Execute();
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atInsertDestination, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAllDestinationInsertedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAllDestinationInsertedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Destination marked as departed
Get “destination marked as departed” activities (events) from a particular route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
activity_type | string | Activity type |
<job id="Get Mark Destination Departed Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
act_type="mark-destination-departed"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET act_type=mark-destination-departed
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
act_type=mark-destination-departed
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Mark Destination As Departed
/// </summary>
public void SearchMarkDestinationDeparted()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
ActivityType = "mark-destination-departed",
RouteId = "03CEF546324F727239ABA69EFF3766E1"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMarkDestinationDeparted executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMarkDestinationDeparted error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationMarkedAsDeparted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "mark-destination-departed", _
.RouteId = "03CEF546324F727239ABA69EFF3766E1" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationMarkedAsDeparted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationMarkedAsDeparted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['mark-destination-departed']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationMarkedAsDepartedFromCertainRouteActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MARK_DESTINATION_DEPARTED).setRouteId("5C15E83A4BE005BCD1537955D28D51D7"));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MarkDestinationDeparted, RouteID: "5C15E83A4BE005BCD1537955D28D51D7"})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `mark-destination-departed` on the specified route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "mark-destination-departed",
"limit" => 2,
"offset" => 0,
"route_id" => $route_id
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationMarkedAsDepartedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationMarkedAsDepartedActivities = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationMarkedAsDepartedActivities.Execute(RouteId: String);
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(RouteId,
TActivityType.atMarkDestinationDeparted, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationMarkedAsDepartedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationMarkedAsDepartedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("mark-destination-departed");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...&route_id=...
You can expect this API response:
{
"results": [{
"activity_id": "17E82B5C4BFB3F5E0275D23D223A9C65",
"destination_name": "2 Victoria Ct, Fredericksburg, VA 22407",
"destination_alias": "",
"activity_type": "mark-destination-departed",
"activity_timestamp": "1450380541",
"activity_message": "The address '2 Victoria Ct, Fredericksburg, VA 22407' was marked as departed from the web interface",
"route_id": "03CEF546324F727239ABA69EFF3766E1",
"route_name": "accenture-single-driver-1",
"route_destination_id": "136592941",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
},
{
"activity_id": "DBCD55313DA1131646BFD83F9F7EF934",
"destination_name": "10809 Stacy Run, Fredericksburg, VA 22408",
"destination_alias": "",
"activity_type": "mark-destination-departed",
"activity_timestamp": "1450380340",
"activity_message": "The address '10809 Stacy Run, Fredericksburg, VA 22408' was marked as departed from the web interface",
"route_id": "03CEF546324F727239ABA69EFF3766E1",
"route_name": "accenture-single-driver-1",
"route_destination_id": "136592939",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
}],
"total": 2
}
Destination marked as departed (all)
Get “destination marked as departed” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Mark Destination Departed All Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="mark-destination-departed"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=mark-destination-departed
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=mark-destination-departed
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Mark Destination As Departed All
/// </summary>
public void SearchMarkDestinationDepartedAll()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "mark-destination-departed" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMarkDestinationDepartedAll executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMarkDestinationDepartedAll error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchMarkDestinationDepartedAll()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "mark-destination-departed" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchMarkDestinationDepartedAll executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchMarkDestinationDepartedAll error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationMarkedAsDepartedOfAllRoutesActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MARK_DESTINATION_DEPARTED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MarkDestinationDeparted})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `mark-destination-departed`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "mark-destination-departed",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAllDestinationMarkedAsDepartedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAllDestinationMarkedAsDepartedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAllDestinationMarkedAsDepartedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMarkDestinationDeparted, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAllDestinationMarkedAsDepartedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAllDestinationMarkedAsDepartedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Destination marked as visited
Get “destination marked as visited” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Mark Destination Visited All Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="mark-destination-visited"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=mark-destination-visited
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=mark-destination-visited
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Mark Destination as Visited
/// </summary>
public void SearchMarkDestinationVisited()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "mark-destination-visited" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMarkDestinationVisited executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMarkDestinationVisited error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchMarkDestinationVisited()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "mark-destination-visited" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchMarkDestinationVisited executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchMarkDestinationVisited error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['mark-destination-visited']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationMarkedAsVisitedOfAllRoutesActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MARK_DESTINATION_VISITED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MarkDestinationVisited})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// Example refers to the process of getting activities of the_type mark-destination-visited.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "mark-destination-visited",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAllDestinationMarkedAsVisitedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAllDestinationMarkedAsVisitedActivities = class(TBaseExample)
public
procedure Execute();
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAllDestinationMarkedAsVisitedActivities.Execute();
var
ErrorString: String;
Activities: TActivityList;
Limit, Offset, Total: integer;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMarkDestinationVisited, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAllDestinationMarkedAsVisitedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAllDestinationMarkedAsVisitedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("mark-destination-visited");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "2E4573C2252D01AAA182929E693A7E43",
"destination_name": "559 W Aurora Rd, Northfield, OH 44067",
"destination_alias": "",
"activity_type": "mark-destination-visited",
"activity_timestamp": "1469712876",
"activity_message": "The address '559 W Aurora Rd, Northfield, OH 44067' was marked as visited from the web interface",
"route_id": "241466F15515D67D3F951E2DA38DE76D",
"route_name": "Multiple Depot, Multiple Driver with 24 Stops, Time Window (Unrouted Destinations)",
"route_destination_id": "167899269",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "David",
"member_last_name": "Progman",
"member_email": "[email protected]"
}
},
{
"activity_id": "C6D2C6102EEF5BC00882BEE9D43BAAF8",
"destination_name": "559 W Aurora Rd, Northfield, OH 44067",
"destination_alias": "",
"activity_type": "mark-destination-visited",
"activity_timestamp": "1467820325",
"activity_message": "The address '559 W Aurora Rd, Northfield, OH 44067' was marked as not visited from the web interface",
"route_id": "241466F15515D67D3F951E2DA38DE76D",
"route_name": "Multiple Depot, Multiple Driver with 24 Stops, Time Window (Unrouted Destinations)",
"route_destination_id": "167899269",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "David",
"member_last_name": "Progman",
"member_email": "[email protected]"
}
}],
"total": 2
}
Member created
Get “member created” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Member Created Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="member-created"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=member-created
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=member-created
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Member Created
/// </summary>
public void SearchMemberCreated()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "member-created" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMemberCreated executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMemberCreated error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchMemberCreated()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "member-created" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchMemberCreated executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchMemberCreated error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['member-created']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetMemberCreatedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MEMBER_CREATED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MemberCreated})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `member-created`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "member-created",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetMemberCreatedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetMemberCreatedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetMemberCreatedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMemberCreated, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetMemberCreatedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetMemberCreatedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("member-created");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "90C49E33DEF1492C3288C362219E996A",
"destination_name": null,
"destination_alias": null,
"activity_type": "member-created",
"activity_timestamp": "1463757375",
"activity_message": "Team member \"bret x\" was created",
"route_id": null,
"route_name": null,
"route_destination_id": null,
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
},
{
"activity_id": "56F5772FD2EDA5DDC133B05EC7DA9065",
"destination_name": null,
"destination_alias": null,
"activity_type": "member-created",
"activity_timestamp": "1450472984",
"activity_message": "Team member \"Analyst Analyst\" was created",
"route_id": null,
"route_name": null,
"route_destination_id": null,
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
}],
"total": 2
}
Member deleted
Get “member deleted” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Member Deleted Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="member-deleted"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=member-deleted
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=member-deleted
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Member Deleted
/// </summary>
public void SearchMemberDeleted()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "member-deleted" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMemberDeleted executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMemberDeleted error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchMemberDeleted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "member-deleted" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchMemberDeleted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchMemberDeleted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['member-deleted']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetMemberDeletedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MEMBER_DELETED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MemberDeleted})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `member-deleted`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "member-deleted",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetMemberDeletedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetMemberDeletedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetMemberDeletedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMemberDeleted, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetMemberDeletedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetMemberDeletedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("member-deleted");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Member modified
Get “member modified” activities (events).
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Member Modified Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="member-modified"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=member-modified
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=member-modified
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Member Modified
/// </summary>
public void SearchMemberModified()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "member-modified" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMemberModified executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMemberModified error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchMemberModified()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "member-modified" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchMemberModified executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchMemberModified error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['member-modified']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetMemberUpdatedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MEMBER_MODIFIED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MemberModified})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `member-modified`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "member-modified",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>"
unit GetMemberModifiedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetMemberModifiedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetMemberModifiedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMemberModified, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetMemberModifiedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetMemberModifiedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("member-modified");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Destination moved (all)
Get “destination moved to another route” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Move Destination Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="move-destination"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=move-destination
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=move-destination
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Move Destination
/// </summary>
public void SearchMoveDestination()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "move-destination" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchMoveDestination executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchMoveDestination error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationMoved()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "move-destination" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationMoved executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationMoved error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['move-destination']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationMovedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.MOVE_DESTINATION));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.MoveDestination})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `move-destination`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "move-destination",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationMovedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationMovedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationMovedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atMoveDestination, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationMovedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationMovedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("move-destination");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
You can expect this API response:
{
"results": [{
"activity_id": "CB28C7FD9D4C7C8A3B641D30F7B16EDB",
"activity_type": "move-destination",
"activity_timestamp": "1463068860",
"activity_message": "Address '230 Arbor Way Milledgeville GA 31061' was moved into route 'Single Driver Round Trip'",
"route_id": "E9F85EA9BBBB0104D6D3493222557F11",
"route_name": "Single Driver Route 10 Stops",
"route_destination_id": "162437520",
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "*",
"member_first_name": "*",
"member_last_name": "*",
"member_email": "*"
}
}],
"total": 1
}
Note inserted
Get “note inserted” activities (events) from a particular route.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
activity_type | string | Activity type |
<job id="Get Note Insert Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
act_type="note-insert"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET act_type=note-insert
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
act_type=note-insert
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Note Inserted
/// </summary>
public void SearchNoteInserted()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
ActivityType = "note-insert",
RouteId = "C3E7FD2F8775526674AE5FD83E25B88A"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchNoteInserted executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchNoteInserted error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchNoteInserted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "note-insert", _
.RouteId = "C3E7FD2F8775526674AE5FD83E25B88A" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchNoteInserted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchNoteInserted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['note-insert']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetNoteInsertedFromCertainRouteActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.NOTE_INSERT).setRouteId("5C15E83A4BE005BCD1537955D28D51D7"));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.NoteInsert, RouteID: "5C15E83A4BE005BCD1537955D28D51D7"})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `note-insert` on the specified route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "note-insert",
"limit" => 2,
"offset" => 0,
"route_id" => $route_id
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetNoteInsertedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetNoteInsertedActivities = class(TBaseExample)
public
procedure Execute(RouteId: String);
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetNoteInsertedActivities.Execute(RouteId: String);
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(RouteId,
TActivityType.atNoteInsert, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetNoteInsertedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetNoteInsertedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...&route_id=...
You can expect this API response:
{
"results": [{
"activity_id": "72FEB9C96CA2204618217165BEF4816A",
"destination_name": "2210 SW 22nd Terrace Cape Coral, FL 33991-3032",
"destination_alias": "Hook Steve & Susan",
"activity_type": "note-insert",
"activity_timestamp": "1469648692",
"activity_message": "A note was added to the address '2210 SW 22nd Terrace Cape Coral, FL 33991-3032 (Hook Steve & Susan)' from an iPhone",
"route_id": "C3E7FD2F8775526674AE5FD83E25B88A",
"route_name": "Aarons",
"route_destination_id": "176449171",
"note_id": "629817",
"note_type": "",
"note_contents": "",
"note_file": "http:\/\/adb6def9928467589ebb-f540d5a8d53c2e76ad581b6e5c346ad6.r74.cf1.rackcdn.com\/4dc137d74102ee8b10f8fd5f34281809.jpg",
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
},
{
"activity_id": "2480861D51882FA3B2341398417A2411",
"destination_name": "2210 SW 22nd Terrace Cape Coral, FL 33991-3032",
"destination_alias": "Hook Steve & Susan",
"activity_type": "note-insert",
"activity_timestamp": "1469648562",
"activity_message": "A note was added to the address '2210 SW 22nd Terrace Cape Coral, FL 33991-3032 (Hook Steve & Susan)' from an iPhone",
"route_id": "C3E7FD2F8775526674AE5FD83E25B88A",
"route_name": "Aarons",
"route_destination_id": "176449171",
"note_id": "629809",
"note_type": "",
"note_contents": "",
"note_file": "http:\/\/adb6def9928467589ebb-f540d5a8d53c2e76ad581b6e5c346ad6.r74.cf1.rackcdn.com\/e36d66504c78b8f98dff232003c22c32.jpg",
"member": {
"member_id": "1",
"member_first_name": "Kevin",
"member_last_name": "Bacon",
"member_email": "[email protected]"
}
}],
"total": 2
}
Note inserted (all)
Get “note inserted” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Note Insert All Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="note-insert"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=note-insert
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=note-insert
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Note Inserted All
/// </summary>
public void SearchNoteInsertedAll()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters()
{
ActivityType = "note-insert"
};
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchNoteInsertedAll executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchNoteInsertedAll error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchNoteInsertedAll()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "note-insert" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchNoteInsertedAll executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchNoteInsertedAll error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetNoteInsertedOfAllRoutesActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.NOTE_INSERT));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.NoteInsert})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `note-insert`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "note-insert",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetAllNoteInsertedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAllNoteInsertedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetAllNoteInsertedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atNoteInsert, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetAllNoteInsertedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetAllNoteInsertedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("note-insert");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Route deleted
Get “route deleted” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Route Delete Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="route-delete"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=route-delete
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=route-delete
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Route Deleted
/// </summary>
public void SearchRouteDeleted()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "route-delete" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchRouteDeleted executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchRouteDeleted error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchRouteDeleted()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "route-delete" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchRouteDeleted executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchRouteDeleted error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['route-delete']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetRouteDeletedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.ROUTE_DELETE));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.RouteDelete})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `route-delete`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "route-delete",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetRouteDeletedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRouteDeletedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetRouteDeletedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atRouteDelete, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetRouteDeletedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetRouteDeletedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("route-delete");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Route optimized (all)
Get “route optimized” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Route Optimized Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="route-optimized"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=route-optimized
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=route-optimized
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Route Optimized
/// </summary>
public void SearchRouteOptimized()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "route-optimized" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchRouteOptimized executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchRouteOptimized error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchRouteOptimized()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "route-optimized" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchRouteOptimized executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchRouteOptimized error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['route-optimized']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetRouteOptimizedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.ROUTE_OPTIMIZED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.RouteOptimized})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `route-optimized`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "route-optimized",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetRouteOptimizedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRouteOptimizedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetRouteOptimizedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atRouteOptimized, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetRouteOptimizedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetRouteOptimizedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("route-optimized");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Route owner changed
Get “route owner changed” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
route_id | string | Route ID |
activity_type | string | Activity type |
<job id="Get Route Owner Changed Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
routeid="5C15E83A4BE005BCD1537955D28D51D7"
act_type="route-owner-changed"
url=url&"?api_key="&apikey
url=url&"&route_id="&routeid
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET routeid=5C15E83A4BE005BCD1537955D28D51D7
SET act_type=route-owner-changed
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&route_id=%routeid%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
routeid=5C15E83A4BE005BCD1537955D28D51D7
act_type=route-owner-changed
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&route_id=$routeid&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Route Owner Changed
/// </summary>
public void SearchRouteOwnerChanged()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "route-owner-changed" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchRouteOwnerChanged executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchRouteOwnerChanged error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchRouteOwnerChanged()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "route-owner-changed", _
.RouteId = "5C15E83A4BE005BCD1537955D28D51D7" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchRouteOwnerChanged executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchRouteOwnerChanged error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
response = activity_feed.get_activity_feed_deleted(route_id='5C15E83A4BE005BCD1537955D28D51D7')
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetRouteOwnerChangedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.ROUTE_OWNER_CHANGED));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.RouteOptimized, RouteID: "5C15E83A4BE005BCD1537955D28D51D7"})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `route-owner-changed` on the specified route.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
// Get random route ID
$route = new Route();
$route_id = $route->getRandomRouteId(0, 10);
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "route-owner-changed",
"limit" => 2,
"offset" => 0,
"route_id" => $route_id
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetRouteOwnerChangedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetRouteOwnerChangedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetRouteOwnerChangedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atRouteOwnerChanged, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetRouteOwnerChangedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetRouteOwnerChangedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("route-owner-changed");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...&route_id=...
You can expect this API response:
{
"results": [{
"activity_id": "8F9A3FF69C04E538DAB79812E1AA5C28",
"activity_type": "route-owner-changed",
"activity_timestamp": "1462372498",
"activity_message": "The owner of the route 'updated 040516' was changed from '***@novapulsar.com' to '***@lmsvc.com'",
"route_id": "5C15E83A4BE005BCD1537955D28D51D7",
"route_name": "updated 040516",
"route_destination_id": null,
"note_id": null,
"note_type": null,
"note_contents": null,
"note_file": null,
"member": {
"member_id": "177496",
"member_first_name": "Joshua",
"member_last_name": "Holkup",
"member_email": "[email protected]"
}
}],
"total": 1
}
Destination updated (all)
Get “destination updated” activities (events) from all routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
activity_type | string | Activity type |
<job id="Get Update Destinations Activities">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' For accurate testing and results, use your API key and insert real test data.
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
act_type="update-destinations"
url=url&"?api_key="&apikey
url=url&"&activity_type="&act_type
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: For accurate testing and results, use your API key and insert real test data.
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET act_type=update-destinations
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&activity_type=%act_type%"
timeout /t 30
#!/bin/bash
# For accurate testing and results, use your API key and insert real test data.
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
act_type=update-destinations
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&activity_type=$act_type"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Activities Destination Updated
/// </summary>
public void SearchDestinationUpdated()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
ActivityParameters activityParameters = new ActivityParameters { ActivityType = "update-destinations" };
// Run the query
string errorString = "";
Activity[] activities = route4Me.GetActivityFeed(activityParameters, out errorString);
Console.WriteLine("");
if (activities != null)
{
Console.WriteLine("SearchDestinationUpdated executed successfully, {0} activities returned", activities.Length);
Console.WriteLine("");
foreach (Activity Activity in activities)
{
Console.WriteLine("Activity ID: {0}", Activity.ActivityId);
}
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchDestinationUpdated error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchDestinationUpdated()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim activityParameters As New ActivityParameters() With { _
.ActivityType = "update-destinations" _
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivityFeed(activityParameters, errorString)
Console.WriteLine("")
If activities IsNot Nothing Then
Console.WriteLine("SearchDestinationUpdated executed successfully, {0} activities returned", activities.Length)
Console.WriteLine("")
For Each Activity As Activity In activities
Console.WriteLine("Activity ID: {0}", Activity.ActivityId)
Next
Console.WriteLine("")
Else
Console.WriteLine("SearchDestinationUpdated error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
ACTYVITY_TYPE = ['update-destinations']
def main():
route4me = Route4Me(KEY)
activity_feed = route4me.activity_feed
for activity_type in ACTYVITY_TYPE:
response = activity_feed.get_activities_feed_by_type(activity_type=activity_type, limit=1, offset=0)
print ' '.join(activity_type.split('-')).upper()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Total Found: {}'.format(response.total)
for i, activity in enumerate(response.results):
print 'Activity #{}'.format(i + 1)
print '\tActivity ID: {}'.format(activity.activity_id)
print '\tActivity Message: {}'.format(activity.activity_message)
print '\tActivity Type: {}'.format(activity.activity_type)
print '\tRoute ID: {}'.format(activity.route_id)
print '\tRoute Name: {}'.format(activity.route_name)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.activities;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.activities.Activities;
import com.route4me.sdk.services.activities.ActivityManager;
import com.route4me.sdk.services.activities.ActivityRequest;
import com.route4me.sdk.services.activities.ActivityType;
public class GetDestinationUpdatedActivities {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
ActivityManager manager = new ActivityManager(apiKey);
try {
Activities activities = manager.getActivities(new ActivityRequest().setType(ActivityType.UPDATE_DESTINATIONS));
System.out.println(activities.getResults());
}catch(APIException e) {
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/activity"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &activity.Service{Client: client}
activities, err := service.Get(&activity.Query{Type: service.UpdateDestinations})
if err != nil {
// handle error
}
// do something with activities, it's []Activity
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
use Route4Me\Enum\ActivityTypes;
// The example demonstrates how to get the activities of the type `update-destinations`.
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$activityTypes = new ActivityTypes();
$activityParameters = ActivityParameters::fromArray(array(
"activity_type" => "update-destinations",
"limit" => 2,
"offset" => 0
));
$activities = new ActivityParameters();
$results = $activities->searchActivities($activityParameters);
foreach ($results as $key => $activity) {
Route4Me::simplePrint($activity);
echo "<br>";
}
echo "------------------- <br><br>";
unit GetDestinationUpdatedActivitiesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetDestinationUpdatedActivities = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses ActivityUnit, EnumsUnit;
procedure TGetDestinationUpdatedActivities.Execute;
var
ErrorString: String;
Limit, Offset, Total: integer;
Activities: TActivityList;
begin
Limit := 10;
Offset := 0;
Activities := Route4MeManager.ActivityFeed.GetActivities(
TActivityType.atUpdateDestinations, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn(Format('GetDestinationUpdatedActivities executed successfully, ' +
'%d activities returned, %d total', [Activities.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetDestinationUpdatedActivities error: "%s"', [ErrorString]));
finally
FreeAndNil(Activities);
end;
end;
end.
#include <iostream>
#include <vector>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
static void feedback(const std::vector<std::string>& data, const char* message)
{
std::cout << message << std::endl;
for (int i = 0; i < data.size(); ++i)
{
std::cout << data[i] << std::endl;
}
}
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
std::vector<std::string> types;
types.push_back("update-destinations");
std::vector<std::string> foundActivities, missingActivities;
for (int i = 0; i < types.size(); ++i) {
const char* type = types[i].c_str();
if (route.get_activities_by_type(type) == 0)
foundActivities.push_back(type);
else
missingActivities.push_back(type);
}
feedback(foundActivities, "Activities found for types:");
feedback(missingActivities, "Activities missing for types:");
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 1);
if (!get_activity_by_type("update-destinations"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api/get_activities.php?api_key=...&activity_type=...
See the sample JSON response of this method.
Get Activities By User
Get the activities related to a specified user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
member_id | integer | Member ID |
<job id="Get Activities BY A Member">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' You should insert real test data and your API key for accurate testing
' Example refers to the process of getting all activities by a member
url="https://api.route4me.com/api/get_activities.php"
apikey="11111111111111111111111111111111"
member_id="888888"
url=url&"?api_key="&apikey
url=url&"&member_id="&member_id
Set r4m=New Route4Me
r4m.OutputFile="get_activities_by_member_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
:: You should insert real test data and your API key for accurate testing
:: Example refers to the process of getting all activities by a member
SET url=https://api.route4me.com/api/get_activities.php
SET apikey=11111111111111111111111111111111
SET member_id=888888
ECHO ON
curl -o get_activities_by_member_RESPONSE.json -g -k -X GET "%URL%?api_key=%apikey%&member_id=%member_id%"
timeout /t 30
#!/bin/bash
# You should insert real test data and your API key for accurate testing
# Example refers to the process of getting all activities by a member
url=https://api.route4me.com/api/get_activities.php
apikey=11111111111111111111111111111111
member_id=888888
curl -o get_activities_by_member_RESPONSE.json -g -k -X GET "$url?api_key=$apikey&member_id=$member_id"
echo "Finished..."
sleep 15
public void GetActivitiesByMemberTest()
{
if (c_ApiKey == ApiKeys.demoApiKey) return;
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
GenericParameters parameters = new GenericParameters()
{
};
string userErrorString;
var response = route4Me.GetUsers(parameters, out userErrorString);
Assert.IsInstanceOfType(response.results, typeof(MemberResponseV4[]), "GetActivitiesByMemberTest failed - cannot get users");
Assert.IsTrue(response.results.Length > 1, "Cannot retrieve more than 1 users");
ActivityParameters activityParameters = new ActivityParameters()
{
MemberId = response.results[1].member_id!=null ? Convert.ToInt32(response.results[1].member_id) : -1,
Offset = 0,
Limit = 10
};
// Run the query
string errorString;
Activity[] activities = route4Me.GetActiviies(activityParameters, out errorString);
Assert.IsInstanceOfType(activities, typeof(Activity[]), "GetActivitiesByMemberTest failed... " + errorString);
}
Public Sub GetActivitiesByMemberTest()
If c_ApiKey = ApiKeys.demoApiKey Then Return
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim parameters As New GenericParameters()
Dim userErrorString As String
Dim response = route4Me.GetUsers(parameters, userErrorString)
Assert.IsInstanceOfType(response.results, GetType(MemberResponseV4()), "GetActivitiesByMemberTest failed - cannot get users")
Assert.IsTrue(response.results.Length > 1, "Cannot retrieve more than 1 users")
Dim activityParameters As New ActivityParameters() With {
.MemberId = If(response.results(1).member_id IsNot Nothing, Convert.ToInt32(response.results(1).member_id), -1),
.Limit = 10,
.Offset = 0
}
' Run the query
Dim errorString As String = ""
Dim activities As Activity() = route4Me.GetActivities(activityParameters, errorString)
Assert.IsInstanceOfType(activities, GetType(Activity()), Convert.ToString("GetActivitiesTest failed... ") & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$MamberParames =Member::fromArray([ ]);
$member = new Member();
$response = $member->getUsers($MamberParames);
assert(isset($response['results']), 'Cannot retrieve the users! <br>');
assert(sizeof($response['results'])>1, 'Cannot retrieve more than 1 users');
$memberId = $response['results'][1]["member_id"];
$activityParameters = ActivityParameters::fromArray([
'member_id' => $memberId,
'limit' => 10,
'offset' => 0,
]);
$activities = new ActivityParameters();
$actResults = $activities->getActivities($activityParameters);
$results = $activities->getValue($actResults, 'results');
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo '<br>';
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{"status":true}
Address Book
An address book refers to a user’s locations repository.
See the Address Book JSON Schema in our GitHub repository.
Address Book Properties
Attribute | Type | Description |
---|---|---|
api_key | string | API key of the user |
address_1 | string | The route Address Line 1 |
address_2 | string | The route Address Line 2 |
address_alias | string | Address alias |
address_group | string | Address group |
first_name | string | First name |
last_name | string | Last name |
address_email | string | Address email |
address_phone_number | string | Address phone number |
cached_lat | number | Cached latitude |
cached_lng | number | Cached longitude |
address_city | string | Address city |
address_state_id | string | Address state ID |
address_country_id | string | Address country ID |
address_zip | string | Address ZIP Code |
address_custom_data | array | Address custom data (this is a String array). |
Create a Location
Adds a location to a user’s address book.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Address Book JSON Schema as a guide. |
For implementation details refer to:
https://github.com/route4me/route4me-vbscript-sdk/blob/master/Addressbook/Addressbook_add_contact.wsf
<job id="Addressbook Add Location">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="new_address_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public AddressBookContact AddAddressBookContact()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookContact contact = new AddressBookContact()
{
FirstName = "Test FirstName " + (new Random()).Next().ToString(),
Address1 = "Test Address1 " + (new Random()).Next().ToString(),
CachedLat = 38.024654,
CachedLng = -77.338814
};
// Run the query
string errorString;
AddressBookContact resultContact = route4Me.AddAddressBookContact(contact, out errorString);
Console.WriteLine("");
if (resultContact != null)
{
Console.WriteLine("AddAddressBookContact executed successfully");
Console.WriteLine("AddressId: {0}", resultContact.AddressId);
return resultContact;
}
else
{
Console.WriteLine("AddAddressBookContact error: {0}", errorString);
return null;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Function AddAddressBookContact() As AddressBookContact
' Create the manager with the API key
Dim route4Me As New Route4MeSDKLibrary.Route4MeSDK.Route4MeManager(c_ApiKey)
Dim contact As New AddressBookContact() With { _
.FirstName = "Test FirstName " + (New Random()).[Next]().ToString(), _
.Address1 = "Test Address1 " + (New Random()).[Next]().ToString(), _
.CachedLat = 38.024654, _
.CachedLng = -77.338814 _
}
' Run the query
Dim errorString As String = ""
Dim resultContact As AddressBookContact = route4Me.AddAddressBookContact(contact, errorString)
Console.WriteLine("")
If resultContact IsNot Nothing Then
Console.WriteLine("AddAddressBookContact executed successfully")
Console.WriteLine("AddressId: {0}", resultContact.AddressId)
Return resultContact
Else
Console.WriteLine("AddAddressBookContact error: {0}", errorString)
Return Nothing
End If
End Function
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.create_contact(
first_name="Juan",
last_name="Pimentel",
address_1="17205 RICHMOND TNPK, MILFORD, VA, 22514",
cached_lat=38.024654,
cached_lng=-77.338814,
)
print 'Address ID: {0}'.format(response.address_id)
print 'First Name: {0}'.format(response.first_name)
print 'Last Name: {0}'.format(response.last_name)
print 'Address: {0}'.format(response.address_1)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.addressbook.AddressBookManager;
import com.route4me.sdk.services.addressbook.Contact;
public class CreateAddressBookContact {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
AddressBookManager addressBookManager = new AddressBookManager(apiKey);
Contact contact = new Contact();
contact.setFirstName("Juan");
contact.setLastName("Pimentel");
contact.setAddress1("17205 RICHMOND TNPK, MILFORD, VA, 22514");
contact.setCachedLat(38.024654);
contact.setCachedLng(-77.338814);
try {
Contact responseObject = addressBookManager.createContact(contact);
System.out.println(responseObject.toString());
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"first_name" => "Test FirstName ".strval(rand(10000, 99999)),
"address_1" => "Test Address1 ".strval(rand(10000, 99999)),
"cached_lat" => 38.024654,
"cached_lng" => -77.338814
));
$abContacts = new AddressBookLocation();
$abcResults = $abContacts->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults["address_id"])."<br>";
Route4Me::simplePrint($abcResults);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
// To add a contact, you must first create an instance of it.
contact := &addressbook.Contact{
FirstName: "John",
Alias: "johny",
Address1: "Some address",
CachedLat: 38.024654,
CachedLng: -77.338814,
Email: "[email protected]",
PhoneNumber: "000-000-000",
StateID: "5",
CountryID: "3",
City: "City",
ZIP: "00-000",
}
newContact, err := service.Add(contact)
if err != nil {
// Handle errors
}
}
package AddAddressBookContact;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::AddressBookContact;
sub AddAddressBookContact {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $contact = AddressBookContact->new(
first_name => "Test FirstName " . int(rand(100000)),
address_1 => "Test Address1 " . int(rand(100000)),
cached_lat => 38.024654,
cached_lng => -77.338814
);
my $errorString = "";
my $resultContact = $route4Me->addAddressBookContact($contact, $errorString);
print "\n";
if ($resultContact) {
print "AddAddressBookContact executed successfully\n";
printf "AddressId: %s\n\n", $resultContact->address_id;
} else {
printf "AddAddressBookContact error: %s\n", $errorString;
}
return $resultContact;
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
ECHO ON
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d "@new_address_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# Add Addressbook Contact
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
curl -o file1.txt -g -k -X POST -H "Content-Type: application/json" -d "@new_address_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 30
unit CreateLocationUnit;
interface
uses SysUtils, BaseExampleUnit, AddressBookContactUnit;
type
TCreateLocation = class(TBaseExample)
public
function Execute(FirstName, Address: String): TAddressBookContact;
end;
implementation
function TCreateLocation.Execute(FirstName, Address: String): TAddressBookContact;
var
ErrorString: String;
Contact: TAddressBookContact;
begin
Contact := TAddressBookContact.Create();
try
Contact.FirstName := FirstName;
Contact.Address := Address;
Contact.Latitude := 38.024654;
Contact.Longitude := -77.338814;
Result := Route4MeManager.AddressBookContact.Add(Contact, ErrorString);
WriteLn('');
if (Result <> nil) then
begin
WriteLn('CreateLocation executed successfully');
WriteLn(Format('AddressId: %d', [Result.Id.Value]));
end
else
WriteLn(Format('CreateLocation error: "%s"', [ErrorString]));
finally
FreeAndNil(Contact);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
Json::Value props(Json::objectValue);
props["first_name"] = "John";
props["last_name"] = "Smith";
props["address_1"] = "Wall Street";
props["cached_lat"] = 100500;
props["cached_lng"] = 23450;
if (route.add_address_book_contacts(props) == 0) {
cout << "Address book:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Address book not added " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...
You can expect this API response:
{
"created_timestamp": 1464269324,
"address_id": 7254355,
"address_group": "",
"address_alias": "301 MARKET SHELL",
"address_1": "17205 RICHMOND TNPK, MILFORD, VA, 22514",
"address_2": "",
"member_id": 1,
"first_name": "Gela",
"last_name": "Gorason",
"address_email": "[email protected]",
"address_phone_number": "8046335852",
"address_city": "Tbilisi",
"address_state_id": "0",
"address_country_id": "0",
"address_zip": "00167",
"cached_lat": 38.024654,
"cached_lng": -77.338814,
"curbside_lat": 38.024654,
"curbside_lng": -77.338814,
"address_custom_data": {
"sales rep id": "545",
"sales rep name": "Kellye Foster",
"retailer id": "173907"
},
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": 0,
"local_timezone_string": "",
"color": "",
"address_icon": null,
"address_stop_type": "DELIVERY",
"address_cube": null,
"address_pieces": null,
"address_reference_no": null,
"address_revenue": null,
"address_weight": null,
"address_priority": null,
"address_customer_po": null
}
Create a Scheduled Location
The scheduled address book locations are used in the Hybrid Optimization process. Route4Me’s Hybrid Route Editor allows you to plan routes by merging recurrent customer visits from the scheduled address book contacts.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Address Book JSON Schema as a guide. |
An example for this language will be added in the future. For now, please see the other languages available for reference.
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating a new scheduled location in a Route4Me address book.
ECHO ON
:: Add a location, scheduled daily.
curl -o add_scheduled_location1_RESPONSE.json -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_location_data_1.json" "%url%?api_key=%apikey%"
:: Add a location, scheduled weekly.
START /WAIT curl -o add_scheduled_location2_RESPONSE.json -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_location_data_2.json" "%url%?api_key=%apikey%"
:: Add a location, scheduled monthly (dates mode).
START /WAIT curl -o add_scheduled_location3_RESPONSE.json -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_location_data_3.json" "%url%?api_key=%apikey%"
:: Add a location, scheduled monthly (nth mode).
START /WAIT curl -o add_scheduled_location4_RESPONSE.json -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_location_data_4.json" "%url%?api_key=%apikey%"
:: Add a location with daily scheduling and blacklisting.
START /WAIT curl -o add_scheduled_location6_RESPONSE.json -g -X POST -H "Content-Type: application/json" -d "@add_scheduled_location_data_6.json" "%url%?api_key=%apikey%"
timeout /t 30
An example for this language will be added in the future. For now, please see the other languages available for reference.
public void AddScheduledAddressBookContacts()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
#region // Add a location, scheduled daily.
Schedule sched1 = new Schedule("daily", false)
{
enabled = true,
mode = "daily",
daily = new schedule_daily(1)
};
scheduledContact1 = new AddressBookContact()
{
address_1 = "1604 PARKRIDGE PKWY, Louisville, KY, 40214",
address_alias = "1604 PARKRIDGE PKWY 40214",
address_group = "Scheduled daily",
first_name = "Peter",
last_name = "Newman",
address_email = "[email protected]",
address_phone_number = "65432178",
cached_lat = 38.141598,
cached_lng = -85.793846,
address_city = "Louisville",
address_custom_data = new Dictionary<string, string>() { { "scheduled", "yes" }, { "service type", "publishing" } },
schedule = new List<Schedule>(){ sched1}
};
string errorString;
scheduledContact1Response = route4Me.AddAddressBookContact(scheduledContact1, out errorString);
int location1 = scheduledContact1Response.address_id != null ? Convert.ToInt32(scheduledContact1Response.address_id) : -1;
Console.WriteLine("AddressId: {0}", location1);
#endregion
#region // Add a location, scheduled weekly.
Schedule sched2 = new Schedule("weekly", false)
{
enabled = true,
weekly = new schedule_weekly(1, new int[]{1,2,3,4,5})
};
scheduledContact2 = new AddressBookContact()
{
address_1 = "1407 MCCOY, Louisville, KY, 40215",
address_alias = "1407 MCCOY 40215",
address_group = "Scheduled weekly",
first_name = "Bart",
last_name = "Douglas",
address_email = "[email protected]",
address_phone_number = "95487454",
cached_lat = 38.202496,
cached_lng = -85.786514,
address_city = "Louisville",
service_time = 600,
schedule = new List<Schedule>() { sched2 }
};
scheduledContact2Response = route4Me.AddAddressBookContact(scheduledContact2, out errorString);
int location2 = scheduledContact2Response.address_id != null ? Convert.ToInt32(scheduledContact2Response.address_id) : -1;
Console.WriteLine("AddressId: {0}", location2);
#endregion
#region // Add a location, scheduled monthly (dates mode).
Schedule sched3 = new Schedule("monthly", false)
{
enabled = true,
monthly = new schedule_monthly(_every: 1, _mode: "dates", _dates: new int[] { 20, 22, 23, 24, 25 })
};
scheduledContact3 = new AddressBookContact()
{
address_1 = "4805 BELLEVUE AVE, Louisville, KY, 40215",
address_2 = "4806 BELLEVUE AVE, Louisville, KY, 40215",
address_alias = "4805 BELLEVUE AVE 40215",
address_group = "Scheduled monthly",
first_name = "Bart",
last_name = "Douglas",
address_email = "[email protected]",
address_phone_number = "95487454",
cached_lat = 38.178844,
cached_lng = -85.774864,
address_country_id = "US",
address_state_id = "KY",
address_zip = "40215",
address_city = "Louisville",
service_time = 750,
schedule = new List<Schedule>() { sched3 },
color = "red"
};
scheduledContact3Response = route4Me.AddAddressBookContact(scheduledContact3, out errorString);
int location3 = scheduledContact3Response.address_id != null ? Convert.ToInt32(scheduledContact3Response.address_id) : -1;
Console.WriteLine("AddressId: {0}", location3);
#endregion
#region // Add a location, scheduled monthly (nth mode).
Schedule sched4 = new Schedule("monthly", false)
{
enabled = true,
monthly = new schedule_monthly(_every: 1, _mode: "nth", _nth: new Dictionary<int,int>() {{1,4}})
};
scheduledContact4 = new AddressBookContact()
{
address_1 = "730 CECIL AVENUE, Louisville, KY, 40211",
address_alias = "730 CECIL AVENUE 40211",
address_group = "Scheduled monthly",
first_name = "David",
last_name = "Silvester",
address_email = "[email protected]",
address_phone_number = "36985214",
cached_lat = 38.248684,
cached_lng = -85.821121,
address_city = "Louisville",
service_time = 450,
address_custom_data = new Dictionary<string, string>() { { "scheduled", "yes" }, { "service type", "library" } },
schedule = new List<Schedule>() { sched4 },
address_icon = "emoji/emoji-bus"
};
scheduledContact4Response = route4Me.AddAddressBookContact(scheduledContact4, out errorString);
int location4 = scheduledContact4Response.address_id != null ? Convert.ToInt32(scheduledContact4Response.address_id) : -1;
Console.WriteLine("AddressId: {0}", location4);
#endregion
#region // Add a location with daily scheduling and blacklisting.
Schedule sched5 = new Schedule("daily", false)
{
enabled = true,
mode = "daily",
daily = new schedule_daily(1)
};
scheduledContact5 = new AddressBookContact()
{
address_1 = "4629 HILLSIDE DRIVE, Louisville, KY, 40216",
address_alias = "4629 HILLSIDE DRIVE 40216",
address_group = "Scheduled daily",
first_name = "Kim",
last_name = "Shandor",
address_email = "[email protected]",
address_phone_number = "9874152",
cached_lat = 38.176067,
cached_lng = -85.824638,
address_city = "Louisville",
address_custom_data = new Dictionary<string, string>() { { "scheduled", "yes" }, { "service type", "appliance" } },
schedule = new List<Schedule>() { sched5 },
schedule_blacklist = new string[] { "2017-12-22", "2017-12-23" },
service_time = 300
};
scheduledContact5Response = route4Me.AddAddressBookContact(scheduledContact5, out errorString);
int location5 = scheduledContact5Response.address_id != null ? Convert.ToInt32(scheduledContact5Response.address_id) : -1;
Console.WriteLine("AddressId: {0}", location5);
#endregion
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
#region // Add a location, scheduled daily with custom data.
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"address_1" => "1604 PARKRIDGE PKWY, Louisville, KY, 40214",
"address_alias" => "1604 PARKRIDGE PKWY 40214",
"address_group" => "Scheduled daily",
"first_name" => "Peter",
"last_name" => "Newman",
"address_email" => "[email protected]",
"address_phone_number" => "65432178",
"cached_lat" => 38.141598,
"cached_lng" => -85.793846,
"address_city" => "Louisville",
"address_custom_data" => array("scheduled" => "yes",
"service type" => "publishing"),
"schedule" => array(array(
"enabled" => true,
"mode" => "daily",
"daily" => array("every" => 1)
)),
"service_time" => 900
));
$abContacts1 = new AddressBookLocation();
$abcResults1 = $abContacts1->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults1["address_id"])."<br>";
Route4Me::simplePrint($abcResults1);
echo "<br>";
#endregion
#region // Add a location, scheduled weekly.
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"address_1" => "1407 MCCOY, Louisville, KY, 40215",
"address_alias" => "1407 MCCOY 40215",
"address_group" => "Scheduled weekly",
"first_name" => "Bart",
"last_name" => "Douglas",
"address_email" => "[email protected]",
"address_phone_number" => "95487454",
"cached_lat" => 38.202496,
"cached_lng" => -85.786514,
"curbside_lat" => 38.202496,
"curbside_lng" => -85.786514,
"address_city" => "Louisville",
"schedule" => array(array(
"enabled" => true,
"mode" => "weekly",
"weekly" => array(
"every" => 1,
"weekdays" => array(1, 2, 3, 4, 5)
)
)),
"service_time" => 600
));
$abContacts2 = new AddressBookLocation();
$abcResults2 = $abContacts2->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults2["address_id"])."<br>";
Route4Me::simplePrint($abcResults2);
echo "<br>";
#endregion
#region // Add a location, scheduled monthly (dates mode).
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"address_1" => "4805 BELLEVUE AVE, Louisville, KY, 40215",
"address_2" => "4806 BELLEVUE AVE, Louisville, KY, 40215",
"address_alias" => "4805 BELLEVUE AVE 40215",
"address_group" => "Scheduled monthly",
"first_name" => "Bart",
"last_name" => "Douglas",
"address_email" => "[email protected]",
"address_phone_number" => "95487454",
"cached_lat" => 38.178844,
"cached_lng" => -85.774864,
"curbside_lat" => 38.178844,
"curbside_lng" => -85.774864,
"address_city" => "Louisville",
"address_country_id" => "US",
"address_state_id" => "KY",
"address_zip" => "40215",
"schedule" => array(array(
"enabled" => true,
"mode" => "monthly",
"monthly" => array(
"every" => 1,
"mode" => "dates",
"dates" => array(20, 22, 23, 24, 25)
)
)),
"service_time" => 750,
"color" => "red"
));
$abContacts3 = new AddressBookLocation();
$abcResults3 = $abContacts3->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults3["address_id"])."<br>";
Route4Me::simplePrint($abcResults3);
echo "<br>";
#endregion
#region // Add a location, scheduled monthly (nth mode).
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"address_1" => "730 CECIL AVENUE, Louisville, KY, 40211",
"address_alias" => "730 CECIL AVENUE 40211",
"address_group" => "Scheduled monthly",
"first_name" => "David",
"last_name" => "Silvester",
"address_email" => "[email protected]",
"address_phone_number" => "36985214",
"cached_lat" => 38.248684,
"cached_lng" => -85.821121,
"curbside_lat" => 38.248684,
"curbside_lng" => -85.821121,
"address_city" => "Louisville",
"address_custom_data" => array(
"scheduled" => "yes",
"service type" => "library"
),
"schedule" => array(array(
"enabled" => true,
"mode" => "monthly",
"monthly" => array(
"every" => 1,
"mode" => "nth",
"nth" => array(
"n" => 1,
"what" => 4
)
)
)),
"service_time" => 450,
"address_icon" => "emoji/emoji-bus"
));
$abContacts4 = new AddressBookLocation();
$abcResults4 = $abContacts4->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults4["address_id"])."<br>";
Route4Me::simplePrint($abcResults4);
echo "<br>";
#endregion
#region // Add a location with daily scheduling and blacklisting.
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"address_1" => "4629 HILLSIDE DRIVE, Louisville, KY, 40216",
"address_alias" => "4629 HILLSIDE DRIVE 40216",
"address_group" => "Scheduled daily",
"first_name" => "Kim",
"last_name" => "Shandor",
"address_email" => "[email protected]",
"address_phone_number" => "9874152",
"cached_lat" => 38.176067,
"cached_lng" => -85.824638,
"curbside_lat" => 38.176067,
"curbside_lng" => -85.824638,
"address_city" => "Louisville",
"address_custom_data" => array(
"scheduled" => "yes",
"service type" => "appliance"
),
"schedule" => array(
"enabled" => true,
"mode" => "daily",
"daily" => array("every" => 1)
),
"schedule_blacklist" => array("2017-02-24", "2017-02-25"),
"service_time" => 300
));
$abContacts5 = new AddressBookLocation();
$abcResults5 = $abContacts5->addAdressBookLocation($AdressBookLocationParameters);
echo "address_id = ".strval($abcResults5["address_id"])."<br>";
Route4Me::simplePrint($abcResults5);
#endregion
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...
You can expect this API response:
{
"created_timestamp": 1509889058,
"address_id": 23142492,
"address_group": "Scheduled daily",
"address_alias": "1604 PARKRIDGE PKWY 40214",
"address_1": "1604 PARKRIDGE PKWY, Louisville, KY, 40214",
"address_2": "",
"member_id": 1,
"first_name": "Peter",
"last_name": "Newman",
"address_email": "[email protected]",
"address_phone_number": "65432178",
"address_city": "Louisville",
"address_state_id": null,
"address_country_id": "0",
"address_zip": "",
"cached_lat": 38.141598,
"cached_lng": -85.793846,
"curbside_lat": 38.141598,
"curbside_lng": -85.793846,
"address_custom_data": {
"scheduled": "yes",
"service type": "publishing"
},
"schedule": [{
"enabled": true,
"mode": "daily",
"daily": {
"every": 1
}
}],
"schedule_blacklist": null,
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": 900,
"local_timezone_string": null,
"color": null,
"address_icon": null,
"address_stop_type": "DELIVERY",
"address_cube": null,
"address_pieces": null,
"address_reference_no": null,
"address_revenue": null,
"address_weight": null,
"address_priority": null,
"address_customer_po": null
}
Remove Locations
Removes some locations from an address book.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
address_ids | array | An array of location IDs |
<job id="AddressbookDeleteContact">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="address_data_for_delete.json"
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void RemoveAddressBookContacts(string[] addressIds)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
bool removed = route4Me.RemoveAddressBookContacts(addressIds, out errorString);
Console.WriteLine("");
if (removed)
{
Console.WriteLine("RemoveAddressBookContacts executed successfully, {0} contacts deleted", addressIds.Length);
}
else
{
Console.WriteLine("RemoveAddressBookContacts error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub RemoveAddressBookContacts(addressIds As String())
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim removed As Boolean = route4Me.RemoveAddressBookContacts(addressIds, errorString)
Console.WriteLine("")
If removed Then
Console.WriteLine("RemoveAddressBookContacts executed successfully, {0} contacts deleted", addressIds.Length)
Else
Console.WriteLine("RemoveAddressBookContacts error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.create_contact(
first_name="Juan",
last_name="Pimentel",
address_1="17205 RICHMOND TNPK, MILFORD, VA, 22514",
cached_lat=38.024654,
cached_lng=-77.338814,
)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Address ID: {0}'.format(response.address_id)
print 'First Name: {0}'.format(response.first_name)
print 'Last Name: {0}'.format(response.last_name)
print 'Address: {0}'.format(response.address_1)
print 'Deleting this Contact'
address_ids = [response.address_id, ]
response = address_book.delete_addressbook_contact(
address_ids=address_ids)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Deleted: {}'.format(response.status)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.addressbook.AddressBookManager;
import com.route4me.sdk.services.addressbook.Contact;
import java.util.ArrayList;
import java.util.List;
public class DeleteAddressBookContact {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
AddressBookManager addressBookManager = new AddressBookManager(apiKey);
Contact contact = new Contact();
contact.setFirstName("Juan");
contact.setLastName("Pimentel");
contact.setAddress1("17205 RICHMOND TNPK, MILFORD, VA, 22514");
contact.setCachedLat(38.024654);
contact.setCachedLng(-77.338814);
try {
Contact responseObject = addressBookManager.createContact(contact);
Number addressID = responseObject.getAddressId();
List<Number> addressIDs = new ArrayList<>();
addressIDs.add(addressID);
System.out.println("Deleting Address ID: " + addressID);
boolean response = addressBookManager.deleteContact(addressIDs);
System.out.println(response);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"first_name" => "Test FirstName ".strval(rand(10000, 99999)),
"address_1" => "Test Address1 ".strval(rand(10000, 99999)),
"cached_lat" => 38.024654,
"cached_lng" => -77.338814
));
$abContacts = new AddressBookLocation();
$createdContact = $abContacts->addAdressBookLocation($AdressBookLocationParameters);
$address_id = -1;
if (isset($createdContact['address_id'])) {
$address_id = $createdContact["address_id"];
}
assert($address_id!=-1, "Creating of Address Book Location has failed. Try again!<br>");
echo "Address Book Location with address_id = ".strval($address_id)." was successfully added.<br>";
$addressBookLocations = array($address_id);
$abLocations = new AddressBookLocation();
$deleteResult = $abLocations->deleteAdressBookLocation($addressBookLocations);
assert(isset($deleteResult['status']), "Address Book Location delete operation failed!<br>");
assert($deleteResult['status'], "Address Book Location delete operation failed!<br>");
echo "Address Book Location with address_id = ".strval($address_id)." was successfully deleted.<br>";
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
removed, err := service.Delete([]string{"contact-id"})// It's likely your contact ID is in uint64. You will need to convert it to a string by calling strconv.FormatUint(contact-id, 10)
if err != nil {
// handle errors
return
}
}
package RemoveAddressBookContacts;
use strict;
use warnings FATAL => 'all';
sub RemoveAddressBookContacts {
my ($self, $addressIds) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $errorString;
my $removed = $route4Me->removeAddressBookContacts($addressIds, $errorString);
print "\n";
if ($removed)
{
printf "RemoveAddressBookContacts executed successfully, %s contacts deleted\n", scalar @$addressIds;
}
else
{
printf "RemoveAddressBookContacts error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
ECHO ON
curl -o file1.txt -g -k -X DELETE -H "Content-Type: application/json" -d "@address_data_for_delete.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
curl -o file1.txt -g -k -X DELETE -H "Content-Type: application/json" -d "@address_data_for_delete.json" "$url?api_key=$apikey"
sleep 20
unit RemoveLocationsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TRemoveLocations = class(TBaseExample)
public
procedure Execute(AddressIds: TArray<integer>);
end;
implementation
procedure TRemoveLocations.Execute(AddressIds: TArray<integer>);
var
ErrorString: String;
Removed: boolean;
begin
Removed := Route4MeManager.AddressBookContact.Remove(AddressIds, ErrorString);
WriteLn('');
if (Removed) then
WriteLn(Format('RemoveLocations executed successfully, %d contacts deleted',
[Length(AddressIds)]))
else
WriteLn(Format('RemoveLocations error: "%s"', [ErrorString]));
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...
You can expect this API response:
{"status":true}
Get a Location
Get an address book location using the value of the query
parameter. Records with fields that match or contain the search value are the ones returned.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
query | string | Search value |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
<job id="Addressbook Get Locations By Any Fields Specified Text">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
' The example demonstrates the searching for one or more locations using a search value provided in the `query` parameter.
search_text="technology"
offset="0"
limit="20"
url=url&"?api_key="&apikey
url=url&"&query="&search_text
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates the searching for one or more locations using a search value provided in the `query` parameter.
SET search_text="technology"
ECHO ON
curl -o file1.txt -k -X GET "%url%?api_key=%apikey%&query=%search_text%&offset=0&limit=20"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
# The example demonstrates the searching for one or more locations using a search value provided in the `query` parameter.
search_text="technology"
offset=0
limit=20
curl -o file1.txt -k -X GET "$url?api_key=$apikey&query=$search_text&offset=$offset&limit=$limit"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abLocation = new AddressBookLocation();
// Get random address book location
$AdressBookLocationParameters = array(
"limit" => 30,
"offset" => 0
);
$randomLocation = $abLocation->getRandomAddressBookLocation($AdressBookLocationParameters);
if (assert($randomLocation!=null, "Can't get a random address book location"));
// Get the address book location using the address_id
$addressID = $randomLocation["address_id"];
$abcResult = $abLocation->getAddressBookLocation($addressID);
$results = $abLocation->getValue($abcResult, "results");
Route4Me::simplePrint($results);
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Address Book Location
/// </summary>
public void GetAddressbookLocation()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookParameters addressBookParameters = new AddressBookParameters
{
Query = "david",
Offset = 0,
Limit = 20
};
// Run the query
uint total = 0;
string errorString = "";
AddressBookContact[] contacts = route4Me.GetAddressBookLocation(addressBookParameters, out total, out errorString);
Console.WriteLine("");
if (contacts != null)
{
Console.WriteLine("GetAddressbookLocation executed successfully, {0} contacts returned, total = {1}", contacts.Length, total);
Console.WriteLine("");
}
else
{
Console.WriteLine("GetAddressbookLocation error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetAddressbookLocation()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressBookParameters As New AddressBookParameters() With { _
.Query = "david", _
.Offset = 0, _
.Limit = 20 _
}
' Run the query
Dim total As UInteger
Dim errorString As String = ""
Dim contacts As AddressBookContact() = route4Me.GetAddressBookLocation(addressBookParameters, total, errorString)
Console.WriteLine("")
If contacts IsNot Nothing Then
Console.WriteLine("GetAddressbookLocation executed successfully, {0} contacts returned, total = {1}", contacts.Length, total)
Console.WriteLine("")
Else
Console.WriteLine("GetAddressbookLocation error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.get_addressbook_contacts(limit=10, Offset=5)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
address_id = "'{}'".format(response['results'][0]['address_id'])
response = address_book.get_addressbook_contact(address_id=address_id)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
contacts = response['results']
for i, contact in enumerate(contacts):
print 'Address: {0} - ID: {1}'.format(i+1, contact['address_id'])
print '\tFirst Name: {0}'.format(contact['first_name'])
print '\tLast Name: {0}'.format(contact['last_name'])
print '\tAddress: {0}'.format(contact['address_1'])
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.addressbook.AddressBookManager;
import com.route4me.sdk.services.addressbook.Contact;
import com.route4me.sdk.services.addressbook.ContactsRequest;
import java.util.List;
public class GetAddressBookContact {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
AddressBookManager addressBookManager = new AddressBookManager(apiKey);
try {
List<Contact> contacts = addressBookManager.getContacts(new ContactsRequest().setLimit(10));
Number addressID = contacts.get(0).getAddressId();
System.out.println(addressID);
Contact contact = addressBookManager.getContact(addressID);
System.out.println(contact.toString());
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
query := &addressbook.Query{
Query: "technology",
Offset: 0,
Limit: 20,
}
locations, total, err := service.Get(query)
if err != nil {
// handle errors
return
}
// do something with locations
}
unit GetLocationUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetLocation = class(TBaseExample)
public
procedure Execute(Query: String);
end;
implementation
uses AddressBookContactUnit;
procedure TGetLocation.Execute(Query: String);
var
ErrorString: String;
Total: integer;
Contacts: TAddressBookContactList;
Limit, Offset: integer;
begin
Limit := 10;
Offset := 0;
Contacts := Route4MeManager.AddressBookContact.Find(
Query, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Contacts.Count > 0) then
begin
WriteLn(Format('GetLocation executed successfully, ' +
'%d contacts returned, total = %d', [Contacts.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetLocation error: "%s"', [ErrorString]));
finally
FreeAndNil(Contacts);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.get_address_book_contacts_by_text("Wall") == 0) {
cout << "Found address:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Address not found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...&query=...&offset=...&limit=...
See the sample JSON response of this method.
Get Locations by IDs
Get locations from an address book using a specified list of location IDs.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
address_id | string | A comma-separated list of address IDs. |
<job id="Addressbook Get Locations By IDs">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
' Get contacts by listed IDs
addr_id="4623361,6281217"
url=url&"?api_key="&apikey
url=url&"&address_id="&addr_id
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.get_addressbook_contacts(limit=10, Offset=5)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
address_id = "'{}'".format(response['results'][0]['address_id'])
response = address_book.get_addressbook_contact(address_id=address_id)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
contacts = response['results']
for i, contact in enumerate(contacts):
print 'Address: {0} - ID: {1}'.format(i+1, contact['address_id'])
print '\tFirst Name: {0}'.format(contact['first_name'])
print '\tLast Name: {0}'.format(contact['last_name'])
print '\tAddress: {0}'.format(contact['address_1'])
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.Route4Me;
import com.route4me.sdk.managers.AddressBookManager;
import com.route4me.sdk.model.Contact;
public class GetAddressBookContact {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
Route4Me route4me = new Route4Me(apiKey);
AddressBookManager addressBookManager = route4me.getAddressBookManager();
Contact responseObject = addressBookManager.getContacts(10, 5);
Number addressID = responseObject.getResults().get(0).getAddress_id();
System.out.println(addressID);
responseObject = addressBookManager.getContact(addressID);
for (Contact contact : responseObject.getResults()) {
System.out.println("Address ID: " + contact.getAddress_id());
System.out.println("First Name: " + contact.getFirst_name());
System.out.println("Last Name: " + contact.getLast_name());
System.out.println("Address 1: " + contact.getAddress_1());
System.out.println("Address 2: " + contact.getAddress_2());
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Get two random location IDs
$adressBookLocationParameters = array(
"limit" => 30,
"offset" => 0
);
$abContacts = new AddressBookLocation();
$abcResults = $abContacts->getAddressBookLocations($adressBookLocationParameters);
$results = $abContacts->getValue($abcResults, "results");
$contactsNumber = sizeof($results);
$id1 = $results[rand(1, $contactsNumber) - 1]['address_id'];
$id2 = $results[rand(1, $contactsNumber) - 1]['address_id'];
$ids = array();
$ids['address_id'] = $id1.",".$id2;
// Retrieve address book locations by address_ids
$ablocation = new AddressBookLocation();
$abcResult = $ablocation->getAddressBookLocations($ids);
$results = $ablocation->getValue($abcResult, "results");
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo "<br>";
}
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
:: Get contacts by listed IDs
SET addr_id=4623361,6281217
ECHO ON
curl -o file1.txt -k -X GET "%url%?api_key=%apikey%&address_id=%addr_id%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
# Get locations by listed IDs
addr_id=4623361,6281217
curl -o file1.txt -k -X GET "$url?api_key=$apikey&address_id=$addr_id"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Search Locations By IDs
/// </summary>
public void SearchLocationsByIDs()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookParameters addressBookParameters = new AddressBookParameters { AddressId = "2640129,4621569" };
// Run the query
uint total = 0;
string errorString = "";
AddressBookContact[] contacts = route4Me.GetAddressBookLocation(addressBookParameters, out total, out errorString);
Console.WriteLine("");
if (contacts != null)
{
Console.WriteLine("SearchLocationsByIDs executed successfully, {0} contacts returned, total = {1}", contacts.Length, total);
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchLocationsByIDs error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchLocationsByIDs()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressBookParameters As New AddressBookParameters() With { _
.AddressId = "2640129,4621569" _
}
' Run the query
Dim total As UInteger
Dim errorString As String = ""
Dim contacts As AddressBookContact() = route4Me.GetAddressBookLocation(addressBookParameters, total, errorString)
Console.WriteLine("")
If contacts IsNot Nothing Then
Console.WriteLine("SearchLocationsByIDs executed successfully, {0} contacts returned, total = {1}", contacts.Length, total)
Console.WriteLine("")
Else
Console.WriteLine("SearchLocationsByIDs error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
query := &addressbook.Query{
AddressID: "4623361,6281217" //comma separated
}
locations, total, err := service.Get(query)
if err != nil {
//handle errors
return
}
// do something with locations
}
unit GetLocationsByIdsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetLocationsByIds = class(TBaseExample)
public
procedure Execute(AddressesIds: TArray<integer>);
end;
implementation
uses AddressBookContactUnit;
procedure TGetLocationsByIds.Execute(AddressesIds: TArray<integer>);
var
ErrorString: String;
Contacts: TAddressBookContactList;
begin
Contacts := Route4MeManager.AddressBookContact.Get(AddressesIds, ErrorString);
try
WriteLn('');
if (Contacts.Count > 0) then
begin
WriteLn(Format('GetLocationsByIds executed successfully, ' +
'%d contacts returned', [Contacts.Count]));
WriteLn('');
end
else
WriteLn(Format('GetLocationsByIds error: "%s"', [ErrorString]));
finally
FreeAndNil(Contacts);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.get_address_book_contacts("4621569") == 0) {
cout << "Found address:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Address book not found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...&address_id=...
You can expect this API response:
{
"results": [{
"created_timestamp": 1449084359,
"address_id": 4623361,
"address_group": "",
"address_alias": "",
"address_1": "102 Salina Lane, Goose Creek, SC, 29445",
"address_2": "",
"member_id": 177496,
"first_name": "Juan Updated Updated Upda",
"last_name": "Washington",
"address_email": "[email protected]",
"address_phone_number": "843-797-7874",
"address_city": "",
"address_state_id": null,
"address_country_id": null,
"address_zip": "",
"cached_lat": 32.96225,
"cached_lng": -80.020271,
"curbside_lat": 32.96225,
"curbside_lng": -80.020271,
"address_custom_data": {
"staff number": "105123", "fsc": "Gulzinski, Melissa",
"sr merch": "Yes", "lms technology": "Yes", "both": "Yes",
"jas only": "", "bhn only": "", "visits l3m": "202",
"pay l3m": "2533.36", "bonuses lm3": "30.75", "weight": 0,
"cost": 0, "revenue": 0, "cube": 0, "pieces": 0
},
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": null,
"local_timezone_string": null,
"color": null,
"address_icon": null,
"address_stop_type": "DELIVERY",
"address_cube": null,
"address_pieces": null,
"address_reference_no": null,
"address_revenue": null,
"address_weight": null,
"address_priority": null,
"address_customer_po": null
}],
"total": 1
}
Get Locations
Get all locations from a user’s address book.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
<job id="Addressbook Get Locations">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void GetAddressBookContacts()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookParameters addressBookParameters = new AddressBookParameters()
{
Limit = 10,
Offset = 0
};
// Run the query
uint total;
string errorString;
AddressBookContact[] contacts = route4Me.GetAddressBookContacts(addressBookParameters, out total, out errorString);
Console.WriteLine("");
if (contacts != null)
{
Console.WriteLine("GetAddressBookContacts executed successfully, {0} contacts returned, total = {1}", contacts.Length, total);
Console.WriteLine("");
}
else
{
Console.WriteLine("GetAddressBookContacts error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetAddressBookContacts()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressBookParameters As New AddressBookParameters() With {.Limit = 10, .Offset = 0}
' Run the query
Dim total As UInteger
Dim errorString As String = ""
Dim contacts As AddressBookContact() = route4Me.GetAddressBookContacts(addressBookParameters, total, errorString)
Console.WriteLine("")
If contacts IsNot Nothing Then
Console.WriteLine("GetAddressBookContacts executed successfully, {0} contacts returned, total = {1}", contacts.Length, total)
Console.WriteLine("")
Else
Console.WriteLine("GetAddressBookContacts error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.get_addressbook_contacts(limit=10, Offset=5)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
contacts = response['results']
for i, contact in enumerate(contacts):
print 'Address: {0} - ID: {1}'.format(i+1, contact['address_id'])
print '\tFirst Name: {0}'.format(contact['first_name'])
print '\tLast Name: {0}'.format(contact['last_name'])
print '\tAddress: {0}'.format(contact['address_1'])
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.addressbook.AddressBookManager;
import com.route4me.sdk.services.addressbook.Contact;
import com.route4me.sdk.services.addressbook.ContactsRequest;
import java.util.List;
public class GetAddressBookContacts {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
AddressBookManager addressBookManager = new AddressBookManager(apiKey);
try {
List<Contact> contacts = addressBookManager.getContacts(new ContactsRequest().setLimit(10));
for (Contact c : contacts) {
System.out.println(c);
}
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Route;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to getting all address book locations.
$AdressBookLocationParameters = array(
"limit" => 30,
"offset" => 0
);
$abContacts = new AddressBookLocation();
$abcResults = $abContacts->getAddressBookLocations($AdressBookLocationParameters);
$results = $abContacts->getValue($abcResults, "results");
foreach ($results as $result) {
Route4Me::simplePrint($result);
echo "<br>";
}
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
query := &addressbook.Query{
Limit: 10, // How many contacts to return
Offset: 0, // The offset (how many records to skip) of contacts.
}
contacts, total, err := service.Get(query)
if err != nil {
// handle errors
return
}
// do something with contacts, it's []Contact
// variable `total` represents the total number of contacts in your addressbook
}
package GetAddressBookContacts;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::AddressBookParameters;
sub GetAddressBookContacts {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $addressBookParameters = AddressBookParameters->new (
limit => 10,
offset => 0
);
my $errorString;
my $total;
my @contacts = $route4Me->getAddressBookContacts( $addressBookParameters, \$total, \$errorString );
print "\n";
if (@contacts)
{
printf "GetAddressBookContacts executed successfully, %s contacts returned, total = %s\n", scalar @contacts, $total;
print "\n";
}
else
{
printf "GetAddressBookContacts error: {0}", $errorString;
}
}
1;
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
ECHO ON
curl -o file1.txt -k -X GET "%url%?api_key=%apikey%&offset=0&limit=10"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
curl -o file1.txt -k -X GET "$url?api_key=$apikey&offset=0&limit=10"
echo "Finished..."
sleep 15
unit GetLocationsUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetLocations = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses AddressBookContactUnit;
procedure TGetLocations.Execute;
var
ErrorString: String;
Total: integer;
Contacts: TAddressBookContactList;
Limit, Offset: integer;
begin
Limit := 10;
Offset := 0;
Contacts := Route4MeManager.AddressBookContact.Get(Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Contacts.Count > 0) then
begin
WriteLn(Format('GetLocations executed successfully, ' +
'%d contacts returned, total = %d', [Contacts.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('GetLocations error: "%s"', [ErrorString]));
finally
FreeAndNil(Contacts);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.get_address_book_contacts("") == 0) {
cout << "All contacts:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "No contacts " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
// global cleanup
CRoute4Me::cleanup();
return 0;
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...&offset=...&limit=...
See the sample JSON response of this method.
Location Search
a) Get or search for some locations using the provided parameters.
Use the query
parameter to retrieve records with fields that match your search value.
On the other hand, use the offset
and limit
parameters to specify the search position and limit the number of records returned, respectively. Lastly, use the fields
parameter if you want to specify a limited number of fields for each record returned.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
query | string | Search value |
fields | string | A comma-separated list of field names. |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
<job id="Addressbook Get Contacts By Fields text">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
' The example demonstrates how to search/retrieve for Addressbook contacts using some parameters that limit or customize the result.
jFile=""
search_text="david"
fields="first_name,address_email"
offset="0"
limit="20"
url=url&"?api_key="&apikey
url=url&"&query="&search_text
url=url&"&fields="&fields
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.HttpGetRequest2 url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
:: The example demonstrates how to search/retrieve for Addressbook contacts using some parameters that limit or customize the result.
SET search_text="peter"
SET fields="first_name,address_email"
SET offset=0
SET limit=20
ECHO ON
curl -o file1.txt -k -X GET "%url%?api_key=%apikey%&query=%search_text%&fields=%fields%&offset=%offset%&limit=%limit%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
# The example demonstrates how to search/retrieve for Addressbook contacts using some parameters that limit or customize the result.
search_text="david"
fields="first_name,address_email"
offset=0
limit=20
curl -o file1.txt -k -X GET "$url?api_key=$apikey&query=$search_text&fields=$fields&offset=$offset&limit=$limit"
echo "Finished..."
sleep 15
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$ablocation = new AddressBookLocation();
// The example refers to the process of searching for a specific text and specifying only a few fields to include in the result.
$params = array(
'query' => 'David',
'fields' => 'first_name,address_email',
'offset' => 0,
'limit' => 5
);
$abcResult = $ablocation->searchAddressBookLocations($params);
assert(isset($abcResult['results']) && isset($abcResult['total']), "Can't search for the locations");
Route4Me::simplePrint($abcResult, true);
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Search for Specified Text, Show Specified Fields
/// </summary>
public void GetSpecifiedFieldsSearchText()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookParameters addressBookParameters = new AddressBookParameters
{
Query = "david",
Fields = "first_name,address_email",
Offset = 0,
Limit = 20
};
// Run the query
uint total = 0;
string errorString = "";
List<string[]> contacts = route4Me.SearchAddressBookLocation(addressBookParameters, out total, out errorString);
Console.WriteLine("");
if (contacts != null)
{
Console.WriteLine("GetSpecifiedFieldsSearchText executed successfully, {0} contacts returned, total = {1}", contacts.Count, total);
Console.WriteLine("");
}
else
{
Console.WriteLine("GetSpecifiedFieldsSearchText error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub GetSpecifiedFieldsSearchText()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressBookParameters As New AddressBookParameters() With { _
.Query = "david", _
.Fields = "first_name,address_email", _
.Offset = 0, _
.Limit = 20 _
}
' Run the query
Dim total As UInteger
Dim errorString As String = ""
Dim contacts As List(Of String()) = route4Me.SearchAddressBookLocation(addressBookParameters, total, errorString)
Console.WriteLine("")
If contacts IsNot Nothing Then
Console.WriteLine("GetSpecifiedFieldsSearchText executed successfully, {0} contacts returned, total = {1}", contacts.Count, total)
Console.WriteLine("")
Else
Console.WriteLine("GetSpecifiedFieldsSearchText error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
query := &addressbook.Query{
Query: "technology",
Offset: 0,
Limit: 20,
}
locations, total, err := service.Get(query)
if err != nil {
// handle errors
return
}
// do something with locations
}
unit LocationSearchUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TLocationSearch = class(TBaseExample)
public
procedure Execute(Query: String; Fields: TArray<String>);
end;
implementation
uses AddressBookContactUnit, CommonTypesUnit;
procedure TLocationSearch.Execute(Query: String; Fields: TArray<String>);
var
ErrorString: String;
Total: integer;
FindedResults: T2DimensionalStringArray;
Limit, Offset: integer;
begin
Limit := 10;
Offset := 0;
FindedResults := Route4MeManager.AddressBookContact.Find(
Query, Fields, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Length(FindedResults) > 0) then
begin
WriteLn(Format('LocationSearch executed successfully, ' +
'%d contacts returned, total = %d', [Length(FindedResults), Total]));
WriteLn('');
end
else
WriteLn(Format('LocationSearch error: "%s"', [ErrorString]));
finally
Finalize(FindedResults);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...&query=...&offset=...&limit=...
See the sample JSON response of this method.
b) Display the locations included in the routes.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
display | string | If set to ‘routed’, get the locations included in the routes. |
<job id="Addressbook Get Routed Locations">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
' Get routed locations. The `display` parameter can have any of these 3 possible values: [all, routed, unrouted].
display="routed"
url=url&"?api_key="&apikey
url=url&"&display="&display
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
:: Get routed locations. The `display` parameter can have any of these 3 possible values: [all, routed, unrouted].
SET display="routed"
ECHO ON
curl -o file1.txt -k -X GET "%url%?api_key=%apikey%&display=%display%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
# Get routed locations. The `display` parameter can have any of these 3 possible values: [all, routed, unrouted].
display="routed"
curl -o file1.txt -k -X GET "$url?api_key=$apikey&display=$display"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
using System.Collections.Generic;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Search Routed Locations
/// </summary>
public void SearchRoutedLocations()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookParameters addressBookParameters = new AddressBookParameters
{
Display = "routed",
Offset = 0,
Limit = 20
};
// Run the query
uint total = 0;
string errorString = "";
AddressBookContact[] contacts = route4Me.GetAddressBookLocation(addressBookParameters, out total, out errorString);
Console.WriteLine("");
if (contacts != null)
{
Console.WriteLine("SearchRoutedLocations executed successfully, {0} contacts returned, total = {1}", contacts.Length, total);
Console.WriteLine("");
}
else
{
Console.WriteLine("SearchRoutedLocations error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub SearchRoutedLocations()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim addressBookParameters As New AddressBookParameters() With { _
.Display = "routed", _
.Offset = 0, _
.Limit = 20 _
}
' Run the query
Dim total As UInteger
Dim errorString As String = ""
Dim contacts As AddressBookContact() = route4Me.GetAddressBookLocation(addressBookParameters, total, errorString)
Console.WriteLine("")
If contacts IsNot Nothing Then
Console.WriteLine("SearchRoutedLocations executed successfully, {0} contacts returned, total = {1}", contacts.Length, total)
Console.WriteLine("")
Else
Console.WriteLine("SearchRoutedLocations error: {0}", errorString)
End If
End Sub
End Class
End Namespace
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
query := &addressbook.Query{
Limit: 10, // How many contacts to return
Offset: 0, // The offset (how many records to skip) of contacts.
Display: "routed", // include locations in routes
}
contacts, total, err := service.Get(query)
if err != nil {
//handle errors
return
}
// do something with contacts, it's []Contact
// variable `total` represents the total number of contacts in your addressbook
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$ablocation = new AddressBookLocation();
// The example refers to the process of searching the routed locations.
$params = array(
'offset' => 0,
'limit' => 5,
'display' => 'routed'
);
$abcResult = $ablocation->searchAddressBookLocations($params);
assert(isset($abcResult['results']) && isset($abcResult['total']), "Can't search for the locations");
echo "Found ".$abcResult['total']." routed locations";
unit DisplayRoutedUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TDisplayRouted = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses AddressBookContactUnit, EnumsUnit;
procedure TDisplayRouted.Execute;
var
ErrorString: String;
Total: integer;
Contacts: TAddressBookContactList;
Limit, Offset: integer;
begin
Limit := 10;
Offset := 0;
Contacts := Route4MeManager.AddressBookContact.Find(
TDisplayLocations.dlRouted, Limit, Offset, Total, ErrorString);
try
WriteLn('');
if (Contacts.Count > 0) then
begin
WriteLn(Format('DisplayRouted executed successfully, ' +
'%d contacts returned, total = %d', [Contacts.Count, Total]));
WriteLn('');
end
else
WriteLn(Format('DisplayRouted error: "%s"', [ErrorString]));
finally
FreeAndNil(Contacts);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...&display=...
See the sample JSON response of this method.
Update a Location
Updates an existing address book location.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Address Book JSON Schema as a guide. |
<job id="Addressbook Update Location">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="address_data_for_update.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
public void UpdateAddressBookContact(AddressBookContact contact)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
// Run the query
string errorString;
AddressBookContact updatedContact = route4Me.UpdateAddressBookContact(contact, out errorString);
Console.WriteLine("");
if (updatedContact != null)
{
Console.WriteLine("UpdateAddressBookContact executed successfully");
}
else
{
Console.WriteLine("UpdateAddressBookContact error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
Public Sub UpdateAddressBookContact(contact As AddressBookContact)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
' Run the query
Dim errorString As String = ""
Dim updatedContact As AddressBookContact = route4Me.UpdateAddressBookContact(contact, errorString)
Console.WriteLine("")
If updatedContact IsNot Nothing Then
Console.WriteLine("UpdateAddressBookContact executed successfully")
Else
Console.WriteLine("UpdateAddressBookContact error: {0}", errorString)
End If
End Sub
End Class
End Namespace
#!/usr/bin/python
from route4me import Route4Me
from route4me.constants import *
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
address_book = route4me.address_book
response = address_book.get_addressbook_contacts(limit=10, Offset=5)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
address_id = "'{}'".format(response['results'][0]['address_id'])
response = address_book.get_addressbook_contact(address_id=address_id)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
contact = response['results'][0]
contact['first_name'] = '{} Updated'.format(contact['first_name'])
response = address_book.update_contact(**contact)
if 'errors' in response.keys():
print '. '.join(response['errors'])
else:
print 'Address ID: {0}'.format(response['address_id'])
print 'First Name: {0}'.format(response['first_name'])
print 'Last Name: {0}'.format(response['last_name'])
print 'Address: {0}'.format(response['address_1'])
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.addressbook;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.addressbook.AddressBookManager;
import com.route4me.sdk.services.addressbook.Contact;
import com.route4me.sdk.services.addressbook.ContactsRequest;
import java.util.List;
public class UpdateAddressBookContact {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
AddressBookManager addressBookManager = new AddressBookManager(apiKey);
try {
List<Contact> contacts = addressBookManager.getContacts(new ContactsRequest().setLimit(10));
contacts.get(0).setFirstName("Johny");
Contact contact = addressBookManager.updateContact(contacts.get(0));
System.out.println(contact);
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$AdressBookLocationParameters = AddressBookLocation::fromArray(array(
"first_name" => "Test FirstName ".strval(rand(10000, 99999)),
"address_1" => "Test Address1 ".strval(rand(10000, 99999)),
"cached_lat" => 38.024654,
"cached_lng" => -77.338814
));
$abLocation = new AddressBookLocation();
$abcResult = $abLocation->addAdressBookLocation($AdressBookLocationParameters);
$address_id = -1;
assert(isset($abcResult['address_id']), "Can't create an address book location<br><br>");
if (isset($abcResult["address_id"])) {
$address_id = $abcResult["address_id"];
}
assert($address_id!=-1, "Can't create an address book location<br><br>");
echo "Address Book Location with <b>address_id = ".strval($address_id)."</b> and <b>first_name = ".$abcResult['first_name']."</b> was successfully added.<br>";
$abcResult["first_name"] = "Test Firstname Updated";
$abcResult = $abLocation->updateAdressBookLocation(AddressBookLocation::fromArray($abcResult));
assert(isset($abcResult['first_name']), "Can't update the address book location<br><br>");
assert($abcResult['first_name']=='Test Firstname Updated', "Can't update the address book location<br><br>");
echo "The field <b>first_name</b> in the address book location <b>".$address_id."</b> was successfully updated to <b>Test Firstname Updated</b>.<br>";
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/addressbook"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &addressbook.Service{Client: client}
contact, err := service.Update(&contact)
if err != nil {
// handle errors
return
}
}
package UpdateAddressBookContact;
use strict;
use warnings FATAL => 'all';
sub UpdateAddressBookContact {
my ($self, $contact) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $errorString;
my $updatedContact = $route4Me->updateAddressBookContact($contact, $errorString);
print "\n";
if ($updatedContact)
{
print "UpdateAddressBookContact executed successfully\n";
}
else
{
printf "UpdateAddressBookContact error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book.php
SET apikey=11111111111111111111111111111111
ECHO ON
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@address_data_for_update.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/address_book.php
apikey=11111111111111111111111111111111
curl -o file1.txt -k -g -X PUT -H "Content-Type: application/json" -d "@address_data_for_update.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
unit UpdateLocationUnit;
interface
uses SysUtils, BaseExampleUnit, AddressBookContactUnit;
type
TUpdateLocation = class(TBaseExample)
public
procedure Execute(Contact: TAddressBookContact);
end;
implementation
procedure TUpdateLocation.Execute(Contact: TAddressBookContact);
var
ErrorString: String;
UpdatedContact: TAddressBookContact;
begin
UpdatedContact := Route4MeManager.AddressBookContact.Update(Contact, ErrorString);
try
WriteLn('');
if (UpdatedContact <> nil) then
WriteLn('UpdateLocation executed successfully')
else
WriteLn(Format('UpdateLocation error: "%s"', [ErrorString]));
finally
FreeAndNil(UpdatedContact);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/address_book.php?api_key=...
You can expect this API response:
{
"created_timestamp": 1462362515,
"address_id": 6879135,
"address_group": "",
"address_alias": "301 MARKET SHELL",
"address_1": "17205 RICHMOND TNPK, MILFORD, VA, 22514",
"address_2": "",
"member_id": 1,
"first_name": "Modified",
"last_name": "Gorason",
"address_email": "[email protected]",
"address_phone_number": "8046335852",
"address_city": "Tbilisi",
"address_state_id": "0",
"address_country_id": "0",
"address_zip": "00167",
"cached_lat": 38.024654,
"cached_lng": -77.338814,
"curbside_lat": 38.024654,
"curbside_lng": -77.338814,
"address_custom_data": [],
"in_route_count": 0,
"last_visited_timestamp": 0,
"last_routed_timestamp": 0,
"local_time_window_start": null,
"local_time_window_end": null,
"local_time_window_start_2": null,
"local_time_window_end_2": null,
"service_time": 0,
"local_timezone_string": "",
"color": "",
"address_icon": null,
"address_stop_type": "DELIVERY",
"address_cube": null,
"address_pieces": null,
"address_reference_no": null,
"address_revenue": null,
"address_weight": null,
"address_priority": null,
"address_customer_po": null
}
Address Book Group
An address book group refers to the searching and grouping process of the address book contacts.
See the Address Book Group JSON Schema in our GitHub repository.
Address Book Properties
Attribute | Type | Description |
---|---|---|
api_key | string | API key of the user |
group_id | string | Unique address book group ID |
group_name | string | Address book group name |
group_color | string | Address book group name color |
group_icon | string | Address book group icon |
member_id | integer | The member ID of the address book contacts repository |
filter | JSON object | The JSON object for filtering of the address book contacts |
Create a Group
Adds an address book group to the user account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | payload data | A valid JSON object string. See the Address Book Group JSON Schema as a guide. |
<job id="Create Address Book Group">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book_group.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_addressbook_group_data.json"
Set r4m=New Route4Me
r4m.OutputFile = "create_addressbook_group_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book_group.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating address book group.
ECHO ON
curl -o create_addressbook_group_RESPONSE.json -k -d "@create_addressbook_group_data.json" -X POST -H "Content-Type: application/json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# The example refers to the process of creating address book group.
url=https://api.route4me.com/api.v4/address_book_group.php
apikey=11111111111111111111111111111111
curl -o create_addressbook_group_RESPONSE.json -g -k -X POST -H "Content-Type: application/json" -d "@create_addressbook_group_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 30
private static AddressBookGroup CreateAddreessBookGroup(out string errorString)
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupRule addressBookGroupRule = new AddressBookGroupRule()
{
ID = "address_1",
Field = "address_1",
Operator = "not_equal",
Value = "qwerty123456"
};
AddressBookGroupFilter addressBookGroupFilter = new AddressBookGroupFilter()
{
Condition = "AND",
Rules = new AddressBookGroupRule[] { addressBookGroupRule }
};
AddressBookGroup addressBookGroupParameters = new AddressBookGroup()
{
groupName = "All Group",
groupColor = "92e1c0",
Filter = addressBookGroupFilter
};
// Run the query
//string errorString;
AddressBookGroup addressBookGroup = route4Me.AddAddressBookGroup(addressBookGroupParameters, out errorString);
return addressBookGroup;
}
Private Shared Function CreateAddreessBookGroup(ByRef errorString As String) As AddressBookGroup
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressBookGroupRule As AddressBookGroupRule = New AddressBookGroupRule() With {
.ID = "address_1",
.Field = "address_1",
.[Operator] = "not_equal",
.Value = "qwerty123456"
}
Dim addressBookGroupFilter As AddressBookGroupFilter = New AddressBookGroupFilter() With {
.Condition = "AND",
.Rules = New AddressBookGroupRule() {addressBookGroupRule}
}
Dim addressBookGroupParameters As AddressBookGroup = New AddressBookGroup() With {
.groupName = "All Group",
.groupColor = "92e1c0",
.Filter = addressBookGroupFilter
}
Dim addressBookGroup As AddressBookGroup = route4Me.AddAddressBookGroup(addressBookGroupParameters, errorString)
Return addressBookGroup
End Function
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of creating address book group.
// Note: you can find the allowed colors for the address book group at this link:
// https://github.com/route4me/route4me-json-schemas/blob/master/ColorSamples/AddressBookGroupAvailableColors.png
$createParameters= [
'group_name' => 'Louisville Group Temp',
'group_color' => '92e1c0',
'filter' => [
'condition' => 'AND',
'rules' => [[
'id' => 'address_1',
'field' => 'address_1',
'operator' => 'contains',
'value' => 'Luisville'
]]
]
];
$createdAddressBookGroup = $abGroup->createAddressBookGroup($createParameters);
Route4Me::simplePrint($createdAddressBookGroup);
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
HTTP Request
/api.v4/address_book_group.php?api_key=...
You can expect this API response:
{
"member_id": 1,
"group_name": "All Group",
"group_color": "92e1c0",
"group_icon": null,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"operator": "not_equal",
"value": "qwerty123456"
}
]
},
"group_id": "8A2401FE169B31E2136B4F7AECA3FB51"
}
Update a Group
Updates an address book group belonged to the user account.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | payload data | A valid JSON object string. See the Address Book Group JSON Schema as a guide. |
<job id="Update Address Book Group">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book_group.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="update_addressbook_group_data.json"
Set r4m=New Route4Me
r4m.OutputFile = "update_addressbook_group_RESPONSE.json"
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book_group.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of updating an address book group.
:: Note: you can find the allowed colors for the address book group at this link:
:: https://github.com/route4me/route4me-json-schemas/blob/master/ColorSamples/AddressBookGroupAvailableColors.png
ECHO ON
curl -o update_addressbook_group_RESPONSE.json -k -d "@update_addressbook_group_data.json" -X PUT -H "Content-Type: application/json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# The example refers to the process of updating an address book group.
# Note: you can find the allowed colors for the address book group at this link:
# https://github.com/route4me/route4me-json-schemas/blob/master/ColorSamples/AddressBookGroupAvailableColors.png
url=https://api.route4me.com/api.v4/address_book_group.php
apikey=11111111111111111111111111111111
curl -o update_addressbook_group_RESPONSE.json -g -k -X PUT -H "Content-Type: application/json" -d "@update_addressbook_group_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 30
public void UpdateAddressBookGroupTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupRule addressBookGroupRule = new AddressBookGroupRule()
{
ID = "address_1",
Field = "address_1",
Operator = "not_equal",
Value = "qwerty1234567"
};
AddressBookGroupFilter addressBookGroupFilter = new AddressBookGroupFilter()
{
Condition = "AND",
Rules = new AddressBookGroupRule[] { addressBookGroupRule }
};
AddressBookGroup addressBookGroupParameters = new AddressBookGroup()
{
groupID = group2.groupID,
groupColor = "cd74e6",
Filter = addressBookGroupFilter
};
// Run the query
string errorString;
AddressBookGroup addressBookGroup = route4Me.UpdateAddressBookGroup(addressBookGroupParameters, out errorString);
Assert.IsNotNull(addressBookGroup, "UpdateAddressBookGroupTest failed... " + errorString);
}
Public Sub UpdateAddressBookGroupTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressBookGroupRule As AddressBookGroupRule = New AddressBookGroupRule() With {
.ID = "address_1",
.Field = "address_1",
.[Operator] = "not_equal",
.Value = "qwerty1234567"
}
Dim addressBookGroupFilter As AddressBookGroupFilter = New AddressBookGroupFilter() With {
.Condition = "AND",
.Rules = New AddressBookGroupRule() {addressBookGroupRule}
}
Dim addressBookGroupParameters As AddressBookGroup = New AddressBookGroup() With {
.groupID = group2.groupID,
.groupColor = "cd74e6",
.Filter = addressBookGroupFilter
}
Dim errorString As String
Dim addressBookGroup As AddressBookGroup = route4Me.UpdateAddressBookGroup(addressBookGroupParameters, errorString)
Assert.IsNotNull(addressBookGroup, "UpdateAddressBookGroupTest failed... " & errorString)
End Sub
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of updating an address book group.
// Note: you can find the allowed colors for the address book group at this link:
// https://github.com/route4me/route4me-json-schemas/blob/master/ColorSamples/AddressBookGroupAvailableColors.png
$groupId=$abGroup->getAddressBookGroupIdByName('Louisville Group Temp');
if ($groupId==null) {
include('CreateAddressBookGroup.php');
$groupId=$abGroup->getAddressBookGroupIdByName('Louisville Group Temp');
}
$updateParameters= [
'group_id' => $groupId,
'group_color' => '7bd148'
];
$results = $abGroup->updateAddressBookGroup($updateParameters);
Route4Me::simplePrint($results);
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
HTTP Request
/api.v4/address_book_group.php?api_key=...
You can expect this API response:
{
"group_id": "492D586CCCAF4C89EACC9C8A4C517ACA",
"group_name": "All Group",
"group_color": "cd74e6",
"group_icon": "",
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"operator": "not_equal",
"value": "qwerty1234567"
}
]
}
}
Get Groups
Retrieves the address book groups.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
offset | integer | Search starting position |
limit | integer | The number of records to return. |
<job id="Get Address Book Groups">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book_group.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
offset="0"
limit="10"
url=url&"&offset="&offset
url=url&"&limit="&limit
Set r4m=New Route4Me
r4m.OutputFile = "get_addressbook_groups_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book_group.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting limited number of the address book groups.
ECHO ON
curl -o get_addressbook_groups_RESPONSE.json -k -X GET "%url%?api_key=%apikey%&offset=0&limit=10"
timeout /t 30
#!/bin/bash
# The example refers to the process of getting limited number of the address book groups.
url=https://api.route4me.com/api.v4/address_book_group.php
apikey=11111111111111111111111111111111
offset=0
limit=10
curl -o get_addressbook_groups_RESPONSE.json -g -k -XGET "$url?api_key=$apikey&offset=$offset&limit=$limit"
echo "Finished..."
sleep 30
public void GetAddressBookGroupsTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupParameters addressBookGroupParameters = new AddressBookGroupParameters()
{
Limit = 10,
Offset = 0
};
// Run the query
string errorString;
AddressBookGroup[] groups = route4Me.GetAddressBookGroups(addressBookGroupParameters, out errorString);
Assert.IsInstanceOfType(groups, typeof(AddressBookGroup[]), "GetAddressBookGroupsTest failed... " + errorString);
}
Public Sub GetAddressBookGroupsTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressBookGroupParameters As AddressBookGroupParameters = New AddressBookGroupParameters() With {
.Limit = 10,
.Offset = 0
}
Dim errorString As String
Dim groups As AddressBookGroup() = route4Me.GetAddressBookGroups(addressBookGroupParameters, errorString)
Assert.IsInstanceOfType(groups, GetType(AddressBookGroup()), "GetAddressBookGroupsTest failed... " & errorString)
End Sub
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of getting limited number of the address book groups.
$addressBookGroupParameters = [
'limit' => 20,
'offset' => 0,
];
$addressBookGroups = $abGroup->getAddressBookGroups($addressBookGroupParameters);
Route4Me::simplePrint($addressBookGroups);
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
Example Coming Soon in this Language. Please see another language for reference.
HTTP Request
/api.v4/address_book_group.php?api_key=...&offset=...&limit=...
You can expect this API response:
[
{
"group_id": "8A2401FE169B31E2136B4F7AECA3FB51",
"group_name": "All Group",
"group_color": "92e1c0",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"operator": "not_equal",
"value": "qwerty123456"
}
]
}
},
{
"group_id": "54AC71733C0DE0A1B67EE1B39BDE1142",
"group_name": "All Group",
"group_color": "92e1c0",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"operator": "not_equal",
"value": "qwerty123456"
}
]
}
},
{
"group_id": "D42FEF1C1B824EC040D1E2874FE3897F",
"group_name": "All Group",
"group_color": "92e1c0",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"operator": "not_equal",
"value": "qwerty123456"
}
]
}
},
{
"group_id": "22813F499204474E8E66380CBD8A78F8",
"group_name": "FL",
"group_color": "92e1c0",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"type": "string",
"input": "text",
"operator": "has_word",
"value": "FL"
}
]
}
},
{
"group_id": "6CDC2A86D2073FB6F9FBD3884B9ACB92",
"group_name": "ca",
"group_color": "9fe1e7",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"id": "address_1",
"field": "address_1",
"type": "string",
"input": "text",
"operator": "has_word",
"value": "CA"
}
]
}
}
]
Get a Group
Retrieves an address book group by group ID.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
group_id | string | Unique ID of the address book group |
<job id="Get Address Book Group">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book_group.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
group_id="54AC71733C0DE0A1B67EE1B39BDE1142"
url=url&"&group_id="&group_id
Set r4m=New Route4Me
r4m.OutputFile = "get_addressbook_group_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book_group.php
SET apikey=11111111111111111111111111111111
SET group_id=1322968F9B217C64785752B838849200
:: The example refers to the process of getting an adddress book group by group ID.
ECHO ON
curl -o get_addressbook_group_RESPONSE.json -k -X GET "%url%?api_key=%apikey%&group_id=%group_id%"
timeout /t 30
#!/bin/bash
# The example refers to the process of getting an adddress group by group ID.
url=https://api.route4me.com/api.v4/address_book_group.php
apikey=11111111111111111111111111111111
group_id="D42FEF1C1B824EC040D1E2874FE3897F"
curl -o get_addressbook_group_RESPONSE.json -g -k -XGET "$url?api_key=$apikey&group_id=$group_id"
echo "Finished..."
sleep 30
public void GetAddressBookGroupTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupParameters addressBookGroupParameters = new AddressBookGroupParameters()
{
GroupId = group2.groupID
};
// Run the query
string errorString;
AddressBookGroup addressBookGroup = route4Me.GetAddressBookGroup(addressBookGroupParameters, out errorString);
Assert.IsInstanceOfType(addressBookGroup, typeof(AddressBookGroup), "GetAddressBookGroupTest failed... " + errorString);
}
Public Sub GetAddressBookGroupTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressBookGroupParameters As AddressBookGroupParameters = New AddressBookGroupParameters() With {
.GroupId = group2.groupID
}
Dim errorString As String
Dim addressBookGroup As AddressBookGroup = route4Me.GetAddressBookGroup(addressBookGroupParameters, errorString)
Assert.IsInstanceOfType(addressBookGroup, GetType(AddressBookGroup), "GetAddressBookGroupTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of getting an address book group by group ID.
// Get reandom address book group
$addressBookGroupParameters = [
'limit' => 20,
'offset' => 0,
];
$randomGroup = $abGroup->getRandomAddressBookGroup($addressBookGroupParameters);
if (assert(null != $randomGroup, 'Cannot get a random address book group'));
// Get the address book group by group_id
$groupId = $randomGroup['group_id'];
$abgResult = $abGroup->getAddressBookGroup(['group_id' => $groupId]);
Route4Me::simplePrint($abgResult);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
api.v4/address_book_group.php?api_key=...&group_id=...
You can expect this API response:
{
"group_id": "35DC986E1AECDD71C9389641675024EE",
"group_name": "All Group",
"group_color": "92e1c0",
"group_icon": null,
"member_id": 1,
"filter": {
"condition": "AND",
"rules": [
{
"field": "address_1",
"id": "address_1",
"operator": "not_equal",
"value": "qwerty123456"
}
]
}
}
Remove a Group
Removes an address book group from a user account.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
group_id | string | Unique ID of the address book group |
<job id="Remove Address Book Group">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/address_book_group.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="remove_addressbook_group_data.json"
Set r4m=New Route4Me
r4m.OutputFile = "remove_addressbook_group_RESPONSE.json"
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api.v4/address_book_group.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of removing an address book group from a user's account.
ECHO ON
curl -o remove_addressbook_group_RESPONSE.json -k -d "@remove_addressbook_group_data.json" -X DELETE -H "Content-Type: application/json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# The example refers to the process of removing an address book group from a user's account.
url=https://api.route4me.com/api.v4/address_book_group.php
apikey=11111111111111111111111111111111
curl -o remove_addressbook_group_RESPONSE.json -g -k -X DELETE -H "Content-Type: application/json" -d "@remove_addressbook_group_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 30
private static StatusResponse DeleteAddreessBookGroup(string remeoveGroupID, out string errorString)
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupParameters addressGroupParams = new AddressBookGroupParameters()
{
groupID = remeoveGroupID
};
errorString = "";
StatusResponse status = route4Me.RemoveAddressBookGroup(addressGroupParams, out errorString);
return status;
}
Private Shared Function DeleteAddreessBookGroup(ByVal remeoveGroupID As String, ByRef errorString As String) As StatusResponse
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressGroupParams As AddressBookGroupParameters = New AddressBookGroupParameters() With {
.GroupId_ = remeoveGroupID ' Payload parameter is GroupId_, url query parameter: GroupId
}
errorString = ""
Dim status As StatusResponse = route4Me.RemoveAddressBookGroup(addressGroupParams, errorString)
Return status
End Function
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of removing an address book group from a user's account.
$groupId=$abGroup->getAddressBookGroupIdByName('Louisville Group Temp');
if ($groupId==null) {
include('CreateAddressBookGroup.php');
$groupId=$abGroup->getAddressBookGroupIdByName('Louisville Group Temp');
}
$updateParameters= [
'group_id' => $groupId
];
$result = $abGroup->removeAddressBookGroup($updateParameters);
Route4Me::simplePrint($result);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
api.v4/address_book_group.php?api_key=...&group_id=...
You can expect this API response:
{
"status": true
}
Get Contacts by Group
Retrieves address book contacts by group by sending HTTP POST request.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
fields | array | Array of the field names |
group_id | string | Unique ID of the address book group |
<job id="Get Contacts By Group">
<script language="VBScript" src="../../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api/address_book/get_search_group_addresses.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="get_addressbook_by_group_data.json"
Set r4m=New Route4Me
r4m.OutputFile = "get_addressbook_by_group_RESPONSE.json"
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
ECHO OFF
SET url=https://api.route4me.com/api/address_book/get_search_group_addresses.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting the address book locations by a geoup ID.
ECHO ON
curl -o get_addressbook_by_group_RESPONSE.json -k -XPOST -H "Content-Type: application/json" -d "@get_addressbook_by_group_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
# The example refers to the process of searching for the locations by a group ID.
url=https://api.route4me.com/api/address_book/get_search_group_addresses.php
apikey=11111111111111111111111111111111
curl -o get_addressbook_by_group_RESPONSE.json -g -k -XPOST -H "Content-Type: application/json" -d "@get_addressbook_by_group_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 30
public void GetAddressBookContactsByGroupTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AddressBookGroupParameters addressBookGroupParameters = new AddressBookGroupParameters()
{
groupID = group2.groupID
};
// Run the query
string errorString;
AddressBookContactsResponse addressBookGroup = route4Me.GetAddressBookContactsByGroup(addressBookGroupParameters, out errorString);
Assert.IsInstanceOfType(addressBookGroup, typeof(AddressBookContactsResponse), "GetAddressBookContactsByGroupTest failed... " + errorString);
}
Public Sub GetAddressBookContactsByGroupTest()
Dim route4Me As Route4MeManager = New Route4MeManager(c_ApiKey)
Dim addressBookGroupParameters As AddressBookGroupParameters = New AddressBookGroupParameters() With {
.GroupId_ = group2.groupID
}
Dim errorString As String
Dim addressBookGroup As AddressBookContactsResponse = route4Me.GetAddressBookContactsByGroup(addressBookGroupParameters, errorString)
Assert.IsInstanceOfType(addressBookGroup, GetType(AddressBookContactsResponse), "GetAddressBookContactsByGroupTest failed... " & errorString)
End Sub
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$abGroup = new AddressBookGroup();
// The example refers to the process of getting the address book locations by a group ID.
$groupId=$abGroup->getAddressBookGroupIdByName( 'Louisville Group Temp');
if ($groupId==null) {
include('CreateAddressBookGroup.php');
$groupId=$abGroup->getAddressBookGroupIdByName('Louisville Group Temp');
}
$searchParameters = [
'fields' => ['address_id'],
'group_id' => $groupId,
];
$addressBookContacts = $abGroup->getAddressBookContactsByGroup($searchParameters);
Route4Me::simplePrint($addressBookContacts, true);
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/order.php?api_key=...
You can expect this API response:
{"status":true}
Avoidance Zones
An avoidance zone refers to a geographic region or territory to avoid, defined by a user for an optimization problem.
See the Avoidance Zone JSON Schema in our GitHub repository.
Avoidance Zone Properties
Attribute | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Avoidance zone ID |
member_id | integer | Member ID |
territory_name | string | Avoidance zone name |
territory_color | string | Avoidance zone color |
territory | object | Territory property in Datatype |
Create an Avoidance Zone
a) Create an Avoidance Zone
object with a circular shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
input data | POST data | A valid JSON object string. See the Avoidance Zone JSON Schema as a guide. |
<job id="Create Circle Avoidance Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_circle_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Avoidance Zone
/// </summary>
/// <returns> ID of added territory </returns>
public string AddAvoidanceZone()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters avoidanceZoneParameters = new AvoidanceZoneParameters()
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory()
{
Type = TerritoryType.Circle.Description(),
Data = new string[] { "37.569752822786455,-77.47833251953125",
"5000"}
}
};
// Run the query
string errorString;
AvoidanceZone avoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, out errorString);
Console.WriteLine("");
if (avoidanceZone != null)
{
Console.WriteLine("AddAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId);
return avoidanceZone.TerritoryId;
}
else
{
Console.WriteLine("AddAvoidanceZone error: {0}", errorString);
return null;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Avoidance Zone
''' </summary>
''' <returns> ID of added territory </returns>
Public Function AddAvoidanceZone() As String
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Circle), _
.Data = New String() {"37.569752822786455,-77.47833251953125", "5000"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim avoidanceZone As AvoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, errorString)
Console.WriteLine("")
If avoidanceZone IsNot Nothing Then
Console.WriteLine("AddAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId)
Return avoidanceZone.TerritoryId
Else
Console.WriteLine("AddAvoidanceZone error: {0}", errorString)
Return Nothing
End If
End Function
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
print 'Creating Circle Shape Zone'
territory = {"territory_name": "Circle Territory",
"territory_color": "ff0000",
"territory": {"type": "circle",
"data": ["37.569752822786455,-77.47833251953125",
"5000",
]
}
}
response = avoidance_zones.add_avoidance_zone(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Example refers to the process of creating an avoidance zone with circle shape
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$AvoidanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Circle Avoidance Zone ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = $avoidancezone->addAvoidanceZone($AvoidanceZoneParameters);
Route4Me::simplePrint($result, true);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zone := &territories.AvoidanceZone{
Name: "Some zone",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Circle, //Type of an area
Data: []string{"37.569752822786455,-77.47833251953125", "5000"},
},
}
newZone, err := service.AddAvoidanceZone(zone)
if err != nil {
//handle errors
return
}
}
package AddAvoidanceZone;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::AvoidanceZoneParameters;
use Route4MeSDK::DataTypes::Territory;
use Route4MeSDK::DataTypes::TerritoryType;
sub AddAvoidanceZone {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $avoidanceZoneParameters = AvoidanceZoneParameters->new(
territory_name => "Test Territory",
territory_color => "ff0000",
territory => Territory->new(
type => TerritoryType->Circle,
data => ['37.569752822786455,-77.47833251953125', '5000']
)
);
my $errorString = "";
my $avoidanceZone = $route4Me->addAvoidanceZone($avoidanceZoneParameters, \$errorString);
print "\n";
if ($avoidanceZone) {
print "AddAvoidanceZone executed successfully\n";
printf "Territory ID: %s\n", $avoidanceZone->territory_id;
return $avoidanceZone->territory_id;
} else {
printf "AddAvoidanceZone error: %s\n", $errorString;
return undef;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: Example demonstrates creating an avoidance zone with circle shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_circle_zone_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
# Example demonstrates creating an avoidance zone with circle shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_circle_zone_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import com.route4me.sdk.services.routing.Constants;
import java.util.ArrayList;
import java.util.List;
public class AddAvoidanceZone {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> circleTerritoryDataList = new ArrayList<>();
circleTerritoryDataList.add("37.569752822786455,-77.47833251953125");
circleTerritoryDataList.add("5000");
TerritoryData circleTerritoryData = new TerritoryData();
circleTerritoryData.setData(circleTerritoryDataList);
Territory circleTerritory = new Territory();
circleTerritory.setTerritoryName("Circle Territory");
circleTerritory.setTerritoryColor("ff0000");
circleTerritory.setTerritory(circleTerritoryData);
circleTerritoryData.setType(Constants.TerritoryType.CIRCLE.toString());
responseObject = territoriesManager.addAvoidanceZone(circleTerritory);
System.out.println("Circle Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
unit AddCircleAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddCircleAvoidanceZone = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryUnit, AvoidanceZoneUnit;
function TAddCircleAvoidanceZone.Execute: NullableString;
var
ErrorString: String;
AvoidanceZone: TAvoidanceZone;
Territory: TCircleTerritory;
NewAvoidanceZone: TAvoidanceZone;
TerritoryName, TerritoryColor: String;
begin
Result := NullableString.Null;
TerritoryName := 'Circle Territory';
TerritoryColor := 'ff0000';
Territory := TCircleTerritory.Create(37.5697528227865, -77.4783325195313, 5000);
AvoidanceZone := TAvoidanceZone.Create(TerritoryName, TerritoryColor, Territory);
try
NewAvoidanceZone := Route4MeManager.AvoidanceZone.Add(AvoidanceZone, ErrorString);
try
WriteLn('');
if (NewAvoidanceZone <> nil) then
begin
WriteLn('AddCircleAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [NewAvoidanceZone.TerritoryId.Value]));
Result := NewAvoidanceZone.TerritoryId;
end
else
WriteLn(Format('AddCircleAvoidanceZone error: "%s"', [ErrorString]));
finally
FreeAndNil(NewAvoidanceZone);
end;
finally
FreeAndNil(AvoidanceZone);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "70B125103B97F7170D17D344F713468E",
"member_id": "1",
"territory_name": "Test Territory",
"territory_color": "ff0000",
"territory": {
"type": "circle",
"data": [
"37.569752822786455,-77.47833251953125",
"5000"
]
}
}
b) Create an Avoidance Zone
object with a polygon shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Avoidance Zone JSON Schema as a guide. |
<job id="Create Poly Avoidance Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_poly_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates creating an avoidance zone with a polygon shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_poly_zone_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
# The example demonstrates creating an avoidance zone with a polygon shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_poly_zone_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Polygon Avoidance Zone
/// </summary>
/// <returns> ID of added territory </returns>
public string AddPolygonAvoidanceZone()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters avoidanceZoneParameters = new AvoidanceZoneParameters
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Poly.Description(),
Data = new string[] {
"37.569752822786455,-77.47833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"
}
}
};
// Run the query
string errorString;
AvoidanceZone avoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, out errorString);
Console.WriteLine("");
if (avoidanceZone != null)
{
Console.WriteLine("AddPolygonAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId);
return avoidanceZone.TerritoryId;
}
else
{
Console.WriteLine("AddPolygonAvoidanceZone error: {0}", errorString);
return null;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Polygon Avoidance Zone
''' </summary>
''' <returns> ID of added territory </returns>
Public Function AddPolygonAvoidanceZone() As String
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Poly), _
.Data = New String() { _
"37.569752822786455,-77.47833251953125", _
"37.75886716305343,-77.68974800109863", _
"37.74763966054455,-77.6917221069336", _
"37.74655084306813,-77.68863220214844", _
"37.7502255383101,-77.68125076293945", _
"37.74797991274437,-77.67498512268066", _
"37.73327960206065,-77.6411678314209", _
"37.74430510679532,-77.63172645568848", _
"37.76641925847049,-77.66846199035645"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim avoidanceZone As AvoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, errorString)
Console.WriteLine("")
If avoidanceZone IsNot Nothing Then
Console.WriteLine("AddPolygonAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId)
Return avoidanceZone.TerritoryId
Else
Console.WriteLine("AddPolygonAvoidanceZone error: {0}", errorString)
Return Nothing
End If
End Function
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
print 'Creating Polygon Shape Zone'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = avoidance_zones.add_avoidance_zone(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import com.route4me.sdk.services.routing.Constants;
import java.util.ArrayList;
import java.util.List;
public class AddAvoidanceZone {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> polyTerritoryDataList = new ArrayList<>();
polyTerritoryDataList.add("56.127184156131065,56.93115234375");
polyTerritoryDataList.add("58.41322259056806,59.501953125");
polyTerritoryDataList.add("61.53840616716746,59.315185546875");
polyTerritoryDataList.add("61.047650586031104,51.998291015625");
polyTerritoryDataList.add("59.254649544483726,53.63525390625");
polyTerritoryDataList.add("56.47462805805596,54.42626953125");
TerritoryData polyTerritoryData = new TerritoryData();
polyTerritoryData.setData(polyTerritoryDataList);
Territory polyTerritory = new Territory();
polyTerritory.setTerritoryName("Polygon Territory");
polyTerritory.setTerritoryColor("ff0000");
polyTerritory.setTerritory(polyTerritoryData);
polyTerritoryData.setType(Constants.TerritoryType.POLY.toString());
Territory responseObject = territoriesManager.addAvoidanceZone(polyTerritory);
System.out.println("Polygon Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zone := &territories.AvoidanceZone{
Name: "Some zone",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Polygonal, //Type of an area
Data: []string{"37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"},
},
}
newZone, err := service.AddAvoidanceZone(zone)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to the process of creating an avoidance zone with a polygon shape
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::POLY;
$territoryParams['data'] = array(
"37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"
);
$AvoidanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Poligonian Avoidance Zone ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = $avoidancezone->addAvoidanceZone($AvoidanceZoneParameters);
Route4Me::simplePrint($result, true);
unit AddPolygonAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddPolygonAvoidanceZone = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryUnit, AvoidanceZoneUnit;
function TAddPolygonAvoidanceZone.Execute: NullableString;
var
ErrorString: String;
AvoidanceZone: TAvoidanceZone;
Territory: TPolygonTerritory;
NewAvoidanceZone: TAvoidanceZone;
TerritoryName, TerritoryColor: String;
begin
Result := NullableString.Null;
TerritoryName := 'Polygon Territory';
TerritoryColor := 'ff0000';
Territory := TPolygonTerritory.Create();
Territory.AddPoint(37.7697528227865, -77.6783325195313);
Territory.AddPoint(37.7588671630534, -77.6897480010986);
Territory.AddPoint(37.7476396605445, -77.6917221069336);
Territory.AddPoint(37.7465508430681, -77.6886322021484);
Territory.AddPoint(37.7502255383101, -77.6812507629394);
Territory.AddPoint(37.7479799127443, -77.6749851226806);
Territory.AddPoint(37.7332796020606, -77.6411678314209);
Territory.AddPoint(37.7443051067953, -77.6317264556884);
Territory.AddPoint(37.7664192584704, -77.6684619903564);
AvoidanceZone := TAvoidanceZone.Create(TerritoryName, TerritoryColor, Territory);
try
NewAvoidanceZone := Route4MeManager.AvoidanceZone.Add(AvoidanceZone, ErrorString);
try
WriteLn('');
if (NewAvoidanceZone <> nil) then
begin
WriteLn('AddPolygonAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [NewAvoidanceZone.TerritoryId.Value]));
Result := NewAvoidanceZone.TerritoryId;
end
else
WriteLn(Format('AddPolygonAvoidanceZone error: "%s"', [ErrorString]));
finally
FreeAndNil(NewAvoidanceZone);
end;
finally
FreeAndNil(AvoidanceZone);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
ifstream inf("poly.json");
if(!inf.is_open()) {
cout << "Can't find a file with an avoidance zone" << endl;
return -1;
}
Json::Value poly_data;
inf >> poly_data;
if (route.add_avoidance_zone("ABC", poly_data) == 0) {
cout << "Added poly:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Failed adding poly: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
char data_file[] = "poly.json";
char id[] = "A1";
char* data = NULL;
if (deserialize(data_file, &data) == -1)
{
printf("Missing poly.json\n");
return -1;
}
if (!get_multiple_routes(data_file, data))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "F1B1865C7F713893CCF87A34D6604617",
"member_id": "1",
"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {
"type": "poly",
"data": [
"37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"
]
}
}
c) Create an Avoidance Zone
object with a rectangular shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Avoidance Zone JSON Schema as a guide. |
<job id="Create Rectangle Avoidance Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_rect_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
ECHO ON
:: The example demonstrates creating an avoidance zone with a rectangle shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_rect_zone_data.json" "%url%?api_key=%apikey%%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
# The example demonstrates creating an avoidance zone with a rectangle shape by sending HTTP parameters
curl -o file1.txt -g -k -X POST -d "@create_rect_zone_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Add Rectangular Avoidance Zone
/// </summary>
/// <returns> ID of added territory </returns>
public string AddRectAvoidanceZone()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters avoidanceZoneParameters = new AvoidanceZoneParameters
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Rect.Description(),
Data = new string[] {
"43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
}
}
};
// Run the query
string errorString;
AvoidanceZone avoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, out errorString);
Console.WriteLine("");
if (avoidanceZone != null)
{
Console.WriteLine("AddRectAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId);
return avoidanceZone.TerritoryId;
}
else
{
Console.WriteLine("AddRectAvoidanceZone error: {0}", errorString);
return null;
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Rectangular Avoidance Zone
''' </summary>
''' <returns> ID of added territory </returns>
Public Function AddRectAvoidanceZone() As String
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Rect), _
.Data = New String() { _
"43.51668853502909,-109.3798828125", _
"46.98025235521883,-101.865234375"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim avoidanceZone As AvoidanceZone = route4Me.AddAvoidanceZone(avoidanceZoneParameters, errorString)
Console.WriteLine("")
If avoidanceZone IsNot Nothing Then
Console.WriteLine("AddRectAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId)
Return avoidanceZone.TerritoryId
Else
Console.WriteLine("AddRectAvoidanceZone error: {0}", errorString)
Return Nothing
End If
End Function
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
print 'Creating Rectangular Shape Zone'
territory = {"territory_name": "Rect Territory",
"territory_color": "ff0000",
"territory": {"type": "rect",
"data": ["43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
]
}
}
response = avoidance_zones.add_avoidance_zone(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import com.route4me.sdk.services.routing.Constants;
import java.util.ArrayList;
import java.util.List;
public class AddAvoidanceZone {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> rectTerritoryDataList = new ArrayList<>();
rectTerritoryDataList.add("43.51668853502909,-109.3798828125");
rectTerritoryDataList.add("46.98025235521883,-101.865234375");
TerritoryData rectTerritoryData = new TerritoryData();
rectTerritoryData.setData(rectTerritoryDataList);
Territory rectTerritory = new Territory();
rectTerritory.setTerritoryName("Rect Territory");
rectTerritory.setTerritoryColor("ff0000");
rectTerritory.setTerritory(rectTerritoryData);
rectTerritoryData.setType(Constants.TerritoryType.RECT.toString());
responseObject = territoriesManager.addAvoidanceZone(rectTerritory);
System.out.println("Rect Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zone := &territories.AvoidanceZone{
Name: "Some zone",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Rectangular, //Type of an area
Data: []string{"43.51668853502909,-109.3798828125","46.98025235521883,-101.865234375"},
},
}
newZone, err := service.AddAvoidanceZone(zone)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to the process of creating an avoidance zone with a rectangle shape
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::RECT;
$territoryParams['data'] = array(
"43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
);
$AvoidanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Rectangular Avoidance Zone ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = $avoidancezone->addAvoidanceZone($AvoidanceZoneParameters);
Route4Me::simplePrint($result, true);
unit AddRectangularAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddRectangularAvoidanceZone = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryUnit, AvoidanceZoneUnit;
function TAddRectangularAvoidanceZone.Execute: NullableString;
var
ErrorString: String;
AvoidanceZone: TAvoidanceZone;
Territory: TRectangularTerritory;
NewAvoidanceZone: TAvoidanceZone;
TerritoryName, TerritoryColor: String;
begin
Result := NullableString.Null;
TerritoryName := 'Rect Territory';
TerritoryColor := 'ff0000';
Territory := TRectangularTerritory.Create(
43.5166885350291, -109.3798828125, 46.9802523552188, -101.865234375);
AvoidanceZone := TAvoidanceZone.Create(TerritoryName, TerritoryColor, Territory);
try
NewAvoidanceZone := Route4MeManager.AvoidanceZone.Add(AvoidanceZone, ErrorString);
try
WriteLn('');
if (NewAvoidanceZone <> nil) then
begin
WriteLn('AddRectangularAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [NewAvoidanceZone.TerritoryId.Value]));
Result := NewAvoidanceZone.TerritoryId;
end
else
WriteLn(Format('AddRectangularAvoidanceZone error: "%s"', [ErrorString]));
finally
FreeAndNil(NewAvoidanceZone);
end;
finally
FreeAndNil(AvoidanceZone);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "00BDD621FFF56266ED0BF7276B8DF7BA",
"member_id": "1",
"territory_name": "Rect Territory",
"territory_color": "ff0000",
"territory": {
"type": "rect",
"data": [
"43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
]
}
}
Get an Avoidance Zone
Get a specified Avoidance Zone
object by its ID.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Avoidance zone ID |
<job id="Get Avoidance Zone By ID">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting an Avoidance Zone object using an Avoidance Zone ID.
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
terid="02ACC3A8A552A5F2F0C09E6839DBB761"
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Avoidance Zone
/// </summary>
/// <param name="territoryId"> Avoidance Zone ID </param>
public void GetAvoidanceZone(string territoryId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneQuery avoidanceZoneQuery = new AvoidanceZoneQuery()
{
TerritoryId = territoryId
};
// Run the query
string errorString;
AvoidanceZone avoidanceZone = route4Me.GetAvoidanceZone(avoidanceZoneQuery, out errorString);
Console.WriteLine("");
if (avoidanceZone != null)
{
Console.WriteLine("GetAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId);
}
else
{
Console.WriteLine("GetAvoidanceZone error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Avoidance Zone
''' </summary>
''' <param name="territoryId"> Avoidance Zone ID </param>
Public Sub GetAvoidanceZone(territoryId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneQuery As New AvoidanceZoneQuery() With { _
.TerritoryId = territoryId _
}
' Run the query
Dim errorString As String = ""
Dim avoidanceZone As AvoidanceZone = route4Me.GetAvoidanceZone(avoidanceZoneQuery, errorString)
Console.WriteLine("")
If avoidanceZone IsNot Nothing Then
Console.WriteLine("GetAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId)
Else
Console.WriteLine("GetAvoidanceZone error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
response = avoidance_zones.get_avoidance_zones()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response[0].territory_id
print 'Getting Territory ID: {}'.format(territory_id)
response = avoidance_zones.get_avoidance_zone(territory_id=territory_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Add Avoidance Zone and get territory_id
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$AvoisanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = (array)$avoidancezone->addAvoidanceZone($AvoisanceZoneParameters);
assert(isset($result), "Failed to create new Avoidance Zone");
$territory_id = $result["territory_id"];
echo "New Avoidance Zone with territory_id = $territory_id created successfully<br>";
$result1 = $avoidancezone->getAvoidanceZone($territory_id);
Route4Me::simplePrint($result1, true);
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
SET terid=02ACC3A8A552A5F2F0C09E6839DBB761
:: The example refers to the process of getting an Avoidance Zone object using an Avoidance Zone ID.
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%&territory_id=%terid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
terid=02ACC3A8A552A5F2F0C09E6839DBB761
# The example refers to the process of getting an Avoidance Zone object using an Avoidance Zone ID.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey&territory_id=$terid"
echo "Finished..."
sleep 15
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import java.util.List;
public class GetAvoidanceZone {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);;
List<Territory> territories = territoriesManager.getAvoidanceZones();
String territoryID;
territoryID = territories.get(0).getTerritoryId();
Territory responseObject = territoriesManager.getAvoidanceZone(territoryID);
System.out.println(responseObject);
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zone, err := service.GetAvoidanceZone(&territories.Query{ID: "zoneid"})
if err != nil {
//handle error
return
}
//do something with the zone
}
unit GetAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAvoidanceZone = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
uses AvoidanceZoneUnit;
procedure TGetAvoidanceZone.Execute(TerritoryId: String);
var
ErrorString: String;
AvoidanceZone: TAvoidanceZone;
begin
AvoidanceZone := Route4MeManager.AvoidanceZone.Get(TerritoryId, ErrorString);
try
WriteLn('');
if (AvoidanceZone <> nil) then
begin
WriteLn('GetAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [AvoidanceZone.TerritoryId.Value]));
end
else
WriteLn(Format('GetAvoidanceZone error: %s', [ErrorString]));
finally
FreeAndNil(AvoidanceZone);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.get_avoidance_zone("") == 0) {
cout << "Zone:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "No zone: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
if (!get_avoidance_zone("A1"))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "02ACC3A8A552A5F2F0C09E6839DBB761",
"member_id": "1",
"territory_name": "Zone 1",
"territory_color": "ffad46",
"territory": {
"type": "poly",
"data": ["37.569752822786455,-77.47833251953125",
"37.55886716305343,-77.48974800109863",
"37.54763966054455,-77.4917221069336",
"37.54655084306813,-77.48863220214844",
"37.5502255383101,-77.48125076293945",
"37.54797991274437,-77.47498512268066",
"37.53327960206065,-77.4411678314209",
"37.54430510679532,-77.43172645568848",
"37.56641925847049,-77.46846199035645"]
}
}
Get Multiple Avoidance Zones
Get all Avoidance Zone
objects defined by a user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
<job id="Get Avoidance Zones">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting all avoidance zones from a user account.
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zones, err := service.GetAvoidanceZones(&territories.Query{})
if err != nil {
//Handle error
return
}
//do something with zones, it's a []AvoidanceZone
}
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Avoidance Zone list
/// </summary>
public void GetAvoidanceZones()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneQuery avoidanceZoneQuery = new AvoidanceZoneQuery()
{
};
// Run the query
string errorString;
AvoidanceZone[] avoidanceZones = route4Me.GetAvoidanceZones(avoidanceZoneQuery, out errorString);
Console.WriteLine("");
if (avoidanceZones != null)
{
Console.WriteLine("GetAvoidanceZones executed successfully, {0} zones returned", avoidanceZones.Length);
}
else
{
Console.WriteLine("GetAvoidanceZones error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Avoidance Zone list
''' </summary>
Public Sub GetAvoidanceZones()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneQuery As New AvoidanceZoneQuery()
' Run the query
Dim errorString As String = ""
Dim avoidanceZones As AvoidanceZone() = route4Me.GetAvoidanceZones(avoidanceZoneQuery, errorString)
Console.WriteLine("")
If avoidanceZones IsNot Nothing Then
Console.WriteLine("GetAvoidanceZones executed successfully, {0} zones returned", avoidanceZones.Length)
Else
Console.WriteLine("GetAvoidanceZones error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
response = avoidance_zones.get_avoidance_zones()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
for i, territory in enumerate(response):
print '{0} - Territory ID: {1}'.format(i + 1,
territory.territory_id)
print '\tTerritory Name: {}'.format(territory.territory_name)
print '\tTerritory Color: {}'.format(territory.territory_color)
print '\tMember ID: {}'.format(territory.member_id)
print '\tTerritory Type: {}'.format(territory.territory.type)
if territory.territory.data:
print '\tData: '
for data in territory.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$avoidancezone = new AvoidanceZone();
$queryparameters = array ();
$azones = $avoidancezone->getAvoidanceZones($queryparameters);
foreach ($azones as $azone) {
Route4Me::simplePrint($azone);
echo "<br>";
}
package GetAvoidanceZones;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::AvoidanceZoneQuery;
sub GetAvoidanceZones {
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $avoidanceZoneQuery = AvoidanceZoneQuery->new();
my $errorString;
my @avoidanceZones = $route4Me->getAvoidanceZones($avoidanceZoneQuery, $errorString);
print "\n";
if (@avoidanceZones)
{
printf "GetAvoidanceZones executed successfully, %s zones returned\n", scalar @avoidanceZones;
}
else
{
printf "GetAvoidanceZones error: %s\n", $errorString;
}
}
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of getting all avoidance zones from a user account.
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
# The example refers to the process of getting all avoidance zones from a user account.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import java.util.List;
public class GetAvoidanceZones {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
try {
List<Territory> territories = territoriesManager.getAvoidanceZones();
for (Territory territory : territories) {
System.out.println(territory);
}
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
unit GetAvoidanceZonesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetAvoidanceZones = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses AvoidanceZoneUnit;
procedure TGetAvoidanceZones.Execute;
var
ErrorString: String;
AvoidanceZones: TAvoidanceZoneList;
begin
AvoidanceZones := Route4MeManager.AvoidanceZone.GetList(ErrorString);
try
WriteLn('');
if (AvoidanceZones.Count > 0) then
WriteLn(Format('GetAvoidanceZones executed successfully, %d zones returned',
[AvoidanceZones.Count]))
else
WriteLn(Format('GetAvoidanceZones error: "%s"', [ErrorString]));
finally
FreeAndNil(AvoidanceZones);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.get_avoidance_zones() == 0) {
cout << "All zones:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "No zones found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/avoidance.php?api_key=...
See the sample JSON response of this method.
Remove an Avoidance Zone
Deletes a specified Avoidance Zone
object.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Avoidance zone ID |
<job id="Delete Avoidance Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of removing an avoidance zone from a user account.
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
terid1="F31128DB9EEA076B85ECDE37274A4D78"
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid1
jFile=""
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Delete Avoidance Zone
/// </summary>
/// <param name="territoryId"> Avoidance Zone ID </param>
public void DeleteAvoidanceZone(string territoryId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneQuery avoidanceZoneQuery = new AvoidanceZoneQuery()
{
TerritoryId = territoryId
};
// Run the query
string errorString;
route4Me.DeleteAvoidanceZone(avoidanceZoneQuery, out errorString);
Console.WriteLine("");
if (errorString == "")
{
Console.WriteLine("DeleteAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", territoryId);
}
else
{
Console.WriteLine("DeleteAvoidanceZone error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Delete Avoidance Zone
''' </summary>
''' <param name="territoryId"> Avoidance Zone ID </param>
Public Sub DeleteAvoidanceZone(territoryId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneQuery As New AvoidanceZoneQuery() With { _
.TerritoryId = territoryId _
}
' Run the query
Dim errorString As String = ""
route4Me.DeleteAvoidanceZone(avoidanceZoneQuery, errorString)
Console.WriteLine("")
If errorString = "" Then
Console.WriteLine("DeleteAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", territoryId)
Else
Console.WriteLine("DeleteAvoidanceZone error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
print 'Creating Poly Zone'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = avoidance_zones.add_avoidance_zone(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response.territory_id
print 'Territory ID: {0} -> Created'.format(territory_id)
response = avoidance_zones.delete_avoidance_zone(
territory_id=territory_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {0} -> Deleted: {1}'.format(territory_id,
response.status)
if __name__ == '__main__':
main()
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Add Avoidance Zone and get territory_id
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$AvoisanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = (array)$avoidancezone->addAvoidanceZone($AvoisanceZoneParameters);
assert(isset($result), "Failed to create new Avoidance Zone");
$territory_id = $result["territory_id"];
echo "New Avoidance Zone with territory_id = $territory_id created successfully<br>";
$result1 = $avoidancezone->deleteAvoidanceZone($territory_id);
assert(isset($result), "Failed to delete the avoidance zone with territory_id = ".$territory_id);
echo "Avoidance Zone with territory_id = $territory_id was deleted successfully<br>";
Route4Me::simplePrint($result1);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
err := service.DeleteAvoidanceZone(&territories.Query{ID: "zoneid"})
if err != nil {
//handle error
return
}
}
package DeleteAvoidanceZone;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::QueryTypes::AvoidanceZoneQuery;
sub DeleteAvoidanceZone {
my ($self, $territoryId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $avoidanceZoneQuery = AvoidanceZoneQuery->new(
territory_id => $territoryId
);
my $errorString = "";
$route4Me->deleteAvoidanceZone($avoidanceZoneQuery, $errorString);
print "\n";
if ($errorString eq "")
{
print "DeleteAvoidanceZone executed successfully.\n";
printf "Territory ID: %s\n", $territoryId;
}
else
{
printf "DeleteAvoidanceZone error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
SET terid1=083F0E34A2271FCAFA5476A364F32B4E
:: The example refers to the process of removing an avoidance zone from a user account.
ECHO ON
curl -o file1.txt -g -k -X DELETE "%url%?api_key=%apikey%&territory_id=%terid1%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
terid1=083F0E34A2271FCAFA5476A364F32B4E
# The example refers to the process of removing an avoidance zone from a user account.
curl -o file1.txt -g -k -X DELETE "$url?api_key=$apikey&territory_id=$terid1"
echo "Finished..."
sleep 15
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import java.util.ArrayList;
import java.util.List;
public class DeleteAvoidanceZone {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> polyTerritoryDataList = new ArrayList<>();
polyTerritoryDataList.add("56.127184156131065,56.93115234375");
polyTerritoryDataList.add("58.41322259056806,59.501953125");
polyTerritoryDataList.add("61.53840616716746,59.315185546875");
polyTerritoryDataList.add("61.047650586031104,51.998291015625");
polyTerritoryDataList.add("59.254649544483726,53.63525390625");
polyTerritoryDataList.add("56.47462805805596,54.42626953125");
TerritoryData polyTerritoryData = new TerritoryData();
polyTerritoryData.setData(polyTerritoryDataList);
Territory polyTerritory = new Territory();
polyTerritory.setTerritoryName("Polygon Territory");
polyTerritory.setTerritoryColor("ff0000");
polyTerritory.setTerritory(polyTerritoryData);
polyTerritoryData.setType(Constants.TerritoryType.POLY.toString());
Territory responseObject = territoriesManager.addAvoidanceZone(polyTerritory);
System.out.println("Polygon Territory");
System.out.println(responseObject.toString());
System.out.println();
System.out.println("Deleting Territory");
boolean response = territoriesManager.deleteAvoidanceZone(responseObject.getTerritoryId());
System.out.println(response);
}
}
unit DeleteAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TDeleteAvoidanceZone = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
procedure TDeleteAvoidanceZone.Execute(TerritoryId: String);
var
ErrorString: String;
begin
Route4MeManager.AvoidanceZone.Remove(TerritoryId, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('DeleteAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [TerritoryId]));
end
else
WriteLn(Format('DeleteAvoidanceZone error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.remove_avoidance_zone("ABC") == 0) {
cout << "Zone removed:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Zone removal failed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please /*see */the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...
You can expect this API response:
{"status":true}
Update an Avoidance Zone
Updates a specified Avoidance Zone
object with a circular shape.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Avoidance zone ID |
input data | POST data | A valid JSON object string. See the Avoidance Zone JSON Schema as a guide. |
<job id="Update Circle Avoidance Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of updating an avoidance zone by sending HTTP parameters.
url="https://api.route4me.com/api.v4/avoidance.php"
apikey="11111111111111111111111111111111"
terid="33C1D8EA0B3078B6238626259FBA914F"
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid
jFile="update_circle_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Update Avoidance Zone
/// </summary>
/// <param name="territoryId"> Avoidance Zone ID </param>
public void UpdateAvoidanceZone(string territoryId)
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters avoidanceZoneParameters = new AvoidanceZoneParameters()
{
TerritoryId = territoryId,
TerritoryName = "Test Territory Updated",
TerritoryColor = "ff00ff",
Territory = new Territory()
{
Type = TerritoryType.Circle.Description(),
Data = new string[] { "38.41322259056806,-78.501953234",
"3000"}
}
};
// Run the query
string errorString;
AvoidanceZone avoidanceZone = route4Me.UpdateAvoidanceZone(avoidanceZoneParameters, out errorString);
Console.WriteLine("");
if (avoidanceZone != null)
{
Console.WriteLine("UpdateAvoidanceZone executed successfully");
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId);
}
else
{
Console.WriteLine("UpdateAvoidanceZone error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Update Avoidance Zone
''' </summary>
''' <param name="territoryId"> Avoidance Zone ID </param>
Public Sub UpdateAvoidanceZone(territoryId As String)
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim avoidanceZoneParameters As New AvoidanceZoneParameters() With { _
.TerritoryId = territoryId, _
.TerritoryName = "Test Territory Updated", _
.TerritoryColor = "ff00ff", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Circle), _
.Data = New String() {"38.41322259056806,-78.501953234", "3000"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim avoidanceZone As AvoidanceZone = route4Me.UpdateAvoidanceZone(avoidanceZoneParameters, errorString)
Console.WriteLine("")
If avoidanceZone IsNot Nothing Then
Console.WriteLine("UpdateAvoidanceZone executed successfully")
Console.WriteLine("Territory ID: {0}", avoidanceZone.TerritoryId)
Else
Console.WriteLine("UpdateAvoidanceZone error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
avoidance_zones = route4me.avoidance_zones
print 'Creating Poly Zone'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = avoidance_zones.add_avoidance_zone(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response.territory_id
print 'Territory ID: {0} -> Created'.format(territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
territory = {"territory_name": "Polygon Territory Updated",
"territory_color": "ff00ff",
"territory": {"type": "poly",
"data": [
"56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = avoidance_zones.update_avoidance_zone(
territory_id=territory_id, **territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Add Avoidance Zone and get territory_id
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$AvoidanceZoneParameters = AvoidanceZone::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$avoidancezone = new AvoidanceZone();
$result = (array)$avoidancezone->addAvoidanceZone($AvoidanceZoneParameters);
assert(isset($result), "Failed to create new Avoidance Zone");
$territory_id = $result["territory_id"];
echo "New Avoidance Zone with territory_id = $territory_id created successfully<br>";
$territory = new Territory();
$territory->type = TerritoryTypes::RECT;
$territory->data = array(
"37.869752822786455,-77.49833251953125",
"5000"
);
$AvoidanceZoneParameters = array(
"territory_id" => $territory_id,
"territory_name" => "Test Territory Updated",
"territory_color" => "ff5500",
"territory" => $territory
);
$result1 = $avoidancezone->updateAvoidanceZone($AvoidanceZoneParameters);
assert(isset($result), "Can't update the avoidance zone with territory_id = $territory_id");
echo "Avoidance Zone with territory_id = $territory_id was updated successfully<br>";
Route4Me::simplePrint($result1, true);
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
zone := //get zone using Get, GetAll or constructing yourself.
contact, err := service.UpdateAvoidanceZone(zone)
if err != nil {
t.Error(err)
return
}
}
package UpdateAvoidanceZone;
use strict;
use warnings FATAL => 'all';
use Route4MeSDK::DataTypes::TerritoryType;
sub UpdateAvoidanceZone {
my ($self, $territoryId) = @_;
my $route4Me = Route4MeManager->new( ExamplesInfrastructure->ApiKey );
my $avoidanceZoneParameters = new AvoidanceZoneParameters(
territory_id => $territoryId,
territory_name => "Test Territory Updated",
territory_color => "ff00ff",
territory => Territory->new(
type => TerritoryType->Circle,
data => ['38.41322259056806,-78.501953234', '3000']
)
);
my $errorString;
my $avoidanceZone = $route4Me->updateAvoidanceZone($avoidanceZoneParameters, $errorString);
print "\n";
if ($avoidanceZone)
{
print "UpdateAvoidanceZone executed successfully\n";
printf "Territory ID: %s\n", $avoidanceZone->territory_id;
}
else
{
printf "UpdateAvoidanceZone error: %s\n", $errorString;
}
}
1;
@ECHO OFF
SET url=https://api.route4me.com/api.v4/avoidance.php
SET apikey=11111111111111111111111111111111
SET terid=33C1D8EA0B3078B6238626259FBA914F
:: The example refers to the process of updating an avoidance zone by sending HTTP parameters.
ECHO ON
curl -o file1.txt -g -k -X PUT -d "@update_circle_zone_data.json" "%url%?api_key=%apikey%&territory_id=%terid%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/avoidance.php
apikey=11111111111111111111111111111111
terid=33C1D8EA0B3078B6238626259FBA914F
# The example refers to the process of updating an avoidance zone by sending HTTP parameters.
curl -o file1.txt -g -k -X PUT -d '@update_circle_zone_data.json' "$url?api_key=$apikey&territory_id=$terid"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
unit UpdateAvoidanceZoneUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TUpdateAvoidanceZone = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
uses AvoidanceZoneUnit, TerritoryUnit;
procedure TUpdateAvoidanceZone.Execute(TerritoryId: String);
var
ErrorString: String;
AvoidanceZone: TAvoidanceZone;
Territory: TTerritory;
NewAvoidanceZone: TAvoidanceZone;
TerritoryName, TerritoryColor: String;
begin
TerritoryName := 'Test Territory Updated';
TerritoryColor := 'ff00ff';
Territory := TCircleTerritory.Create(38.4132225905681, -78.501953234, 3000);
AvoidanceZone := TAvoidanceZone.Create(TerritoryName, TerritoryColor, Territory);
try
AvoidanceZone.TerritoryId := TerritoryId;
NewAvoidanceZone := Route4MeManager.AvoidanceZone.Update(AvoidanceZone, ErrorString);
try
WriteLn('');
if (NewAvoidanceZone <> nil) then
begin
WriteLn('UpdateAvoidanceZone executed successfully');
WriteLn(Format('Territory ID: %s', [NewAvoidanceZone.TerritoryId.Value]));
end
else
WriteLn(Format('UpdateAvoidanceZone error: "%s"', [ErrorString]));
finally
FreeAndNil(NewAvoidanceZone);
end;
finally
FreeAndNil(AvoidanceZone);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
CRoute4Me route(KEY);
if (route.update_avoidance_zone("ABC", poly_data) == 0) {
cout << "Zone updated:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Zone update failed: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/avoidance.php?api_key=...&territory_id=...&territory_id=...
You can expect this API response:
{
"territory_id": "33C1D8EA0B3078B6238626259FBA914F",
"member_id": "1",
"territory_name": "Test Territory",
"territory_color": "ff0000",
"territory": {
"type": "circle",
"data": ["37.569752822786455,-77.47833251953125",
"5000"]
}
}
Territories
Territory refers to an area that is made up of smaller areas that are all joined together. For example:
- Sales territories that might be made up of a group of ZIP Code areas, counties, or states.
- School districts that might be made up of groups of blocks or streets.
See the Territory JSON Schema in our GitHub repository.
Territory Properties
Attribute | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
member_id | integer | Member ID |
territory_name | string | Avoidance zone name |
territory_color | string | Avoidance zone color |
territory | object | Territory property in Datatype |
Create a Territory
a) Create a new territory with a circular shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Territory JSON Schema as a guide. |
<job id="Create Circle Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of creating a territory zone with circle shape by sending HTTP data.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_circle_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating a territory zone with circle shape by sending HTTP data.
ECHO ON
curl -o file1.txt -g -k -X POST -d "@create_circle_zone_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
curl -o file1.txt -g -k -X POST -d "@create_circle_zone_data.json" "$url?api_key=$apikey"
# The example refers to the process of creating a territory zone with circle shape by sending HTTP data.
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Create Territory with Circular Shape
/// </summary>
public void CreateTerritory()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters territoryParameters = new AvoidanceZoneParameters
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Circle.Description(),
Data = new string[] {
"37.569752822786455,-77.47833251953125",
"5000"
}
}
};
// Run the query
string errorString = "";
AvoidanceZone territory = route4Me.CreateTerritory(territoryParameters, out errorString);
Console.WriteLine("");
if (territory != null)
{
Console.WriteLine("CreateTerritory executed successfully");
Console.WriteLine("Territory ID: {0}", territory.TerritoryId);
}
else
{
Console.WriteLine("CreateTerritory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Avoidance Zone
''' </summary>
Public Sub CreateTerritory()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Circle), _
.Data = New String() {"37.569752822786455,-77.47833251953125", "5000"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim territory As AvoidanceZone = route4Me.CreateTerritory(territoryParameters, errorString)
Console.WriteLine("")
If territory IsNot Nothing Then
Console.WriteLine("CreateTerritory executed successfully")
Console.WriteLine("Territory ID: {0}", territory.TerritoryId)
Else
Console.WriteLine("CreateTerritory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
print 'Creating Circle Territory'
territory = {"territory_name": "Circle Territory",
"territory_color": "ff0000",
"territory": {"type": "circle",
"data": ["37.569752822786455,-77.47833251953125",
"5000",
]
}
}
response = territories.add_territory(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import java.util.ArrayList;
import java.util.List;
public class AddTerritory {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> circleTerritoryDataList = new ArrayList<>();
circleTerritoryDataList.add("37.569752822786455,-77.47833251953125");
circleTerritoryDataList.add("5000");
TerritoryData circleTerritoryData = new TerritoryData();
circleTerritoryData.setData(circleTerritoryDataList);
Territory circleTerritory = new Territory();
circleTerritory.setTerritoryName("Circle Territory");
circleTerritory.setTerritoryColor("ff0000");
circleTerritory.setTerritory(circleTerritoryData);
circleTerritoryData.setType(Constants.TerritoryType.CIRCLE.toString());
responseObject = territoriesManager.addTerritory(circleTerritory);
System.out.println("Circle Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territory := &territories.Territory{
Name: "Some territory",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Circle, //Type of an area
Data: []string{"37.569752822786455,-77.47833251953125", "5000"},
},
}
newTerritory, err := service.AddTerritory(zone)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$TerritoryParameters = Territory::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$territory = new Territory();
$result = $territory->addTerritory($TerritoryParameters);
Route4Me::simplePrint($result, true);
unit AddCircleTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddCircleTerritory = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryContourUnit;
function TAddCircleTerritory.Execute: NullableString;
var
ErrorString: String;
TerritoryName, TerritoryColor: String;
TerritoryContour: TTerritoryContour;
TerritoryId: NullableString;
begin
TerritoryName := 'Circle Territory';
TerritoryColor := 'ff0000';
TerritoryContour := TTerritoryContour.MakeCircleContour(
37.5697528227865, -77.4783325195313, 5000);
TerritoryId := Route4MeManager.Territory.Add(
TerritoryName, TerritoryColor, TerritoryContour, ErrorString);
WriteLn('');
if (TerritoryId.IsNotNull) then
begin
WriteLn('AddCircleTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [TerritoryId.Value]));
end
else
WriteLn(Format('AddCircleTerritory error: "%s"', [ErrorString]));
Result := TerritoryId;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
ifstream inf("territory.json");
if(!inf.is_open()) {
cout << "Can't find a file with territory" << endl;
return -1;
}
Json::Value territory_data;
inf >> territory_data;
CRoute4Me route(KEY);
if (route.add_territory(territory_data) == 0) {
cout << "Added territory:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Failed adding territory: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "206CB7EC7E94D82B29926C0801664184",
"member_id": "1",
"territory_name": "Test Territory",
"territory_color": "ff0000",
"addresses": [],
"territory": {
"type": "circle",
"data": ["37.569752822786455,-77.47833251953125",
"5000"]
}
}
b) Create a new territory with a polygon shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Territory JSON Schema as a guide. |
<job>
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of creating a territory zone with a polygon shape by sending HTTP data.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_poly_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating a territory zone with a polygon shape by sending HTTP data.
ECHO ON
curl -o file1.txt -g -k -X POST -d "@create_poly_zone_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
# The example refers to the process of creating a territory zone with a polygon shape by sending HTTP data.
curl -o file1.txt -g -k -X POST -d "@create_poly_zone_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Create Territory with Polygon Shape
/// </summary>
public void CreatePolygonTerritory()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters territoryParameters = new AvoidanceZoneParameters
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Poly.Description(),
Data = new string[] {
"37.569752822786455,-77.47833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"
}
}
};
// Run the query
string errorString = "";
AvoidanceZone territory = route4Me.CreateTerritory(territoryParameters, out errorString);
Console.WriteLine("");
if (territory != null)
{
Console.WriteLine("CreatePolygonTerritory executed successfully");
Console.WriteLine("Territory ID: {0}", territory.TerritoryId);
}
else
{
Console.WriteLine("CreatePolygonTerritory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Polygon Territory
''' </summary>
Public Sub CreatePolygonTerritory()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Poly), _
.Data = New String() { _
"37.569752822786455,-77.47833251953125", _
"37.75886716305343,-77.68974800109863", _
"37.74763966054455,-77.6917221069336", _
"37.74655084306813,-77.68863220214844", _
"37.7502255383101,-77.68125076293945", _
"37.74797991274437,-77.67498512268066", _
"37.73327960206065,-77.6411678314209", _
"37.74430510679532,-77.63172645568848", _
"37.76641925847049,-77.66846199035645"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim territory As AvoidanceZone = route4Me.CreateTerritory(territoryParameters, errorString)
Console.WriteLine("")
If territory IsNot Nothing Then
Console.WriteLine("CreatePolygonTerritory executed successfully")
Console.WriteLine("Territory ID: {0}", territory.TerritoryId)
Else
Console.WriteLine("CreatePolygonTerritory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
print 'Creating Poly Territory'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = territories.add_territory(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import java.util.ArrayList;
import java.util.List;
public class AddTerritory {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> polyTerritoryDataList = new ArrayList<>();
polyTerritoryDataList.add("56.127184156131065,56.93115234375");
polyTerritoryDataList.add("58.41322259056806,59.501953125");
polyTerritoryDataList.add("61.53840616716746,59.315185546875");
polyTerritoryDataList.add("61.047650586031104,51.998291015625");
polyTerritoryDataList.add("59.254649544483726,53.63525390625");
polyTerritoryDataList.add("56.47462805805596,54.42626953125");
TerritoryData polyTerritoryData = new TerritoryData();
polyTerritoryData.setData(polyTerritoryDataList);
Territory polyTerritory = new Territory();
polyTerritory.setTerritoryName("Polygon Territory");
polyTerritory.setTerritoryColor("ff0000");
polyTerritory.setTerritory(polyTerritoryData);
polyTerritoryData.setType(Constants.TerritoryType.POLY.toString());
Territory responseObject = territoriesManager.addTerritory(polyTerritory);
System.out.println("Polygon Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territory := &territories.Territory{
Name: "Some territory",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Polygonal, //Type of an area
Data: []string{"37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"},
},
}
newTerritory, err := service.AddTerritory(territory)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to the process of creating a territory with a polygon shape
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::POLY;
$territoryParams['data'] = array(
"37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"
);
$TerritoryParameters = Territory::fromArray(array(
"territory_name" => "Test Polygonian Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$territory = new Territory();
$result = $territory->addTerritory($TerritoryParameters);
Route4Me::simplePrint($result, true);
unit AddPolygonTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddPolygonTerritory = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryContourUnit, TerritoryUnit, PositionUnit;
function TAddPolygonTerritory.Execute: NullableString;
var
ErrorString: String;
TerritoryContour: TTerritoryContour;
TerritoryName, TerritoryColor: String;
TerritoryId: NullableString;
begin
Result := NullableString.Null;
TerritoryName := 'Polygon Territory';
TerritoryColor := 'ff0000';
TerritoryContour := TTerritoryContour.MakePolygonContour([
TPosition.Create(37.7697528227865, -77.6783325195313),
TPosition.Create(37.7588671630534, -77.6897480010986),
TPosition.Create(37.7476396605445, -77.6917221069336),
TPosition.Create(37.7465508430681, -77.6886322021484),
TPosition.Create(37.7502255383101, -77.6812507629394),
TPosition.Create(37.7479799127443, -77.6749851226806),
TPosition.Create(37.7332796020606, -77.6411678314209),
TPosition.Create(37.7443051067953, -77.6317264556884),
TPosition.Create(37.7664192584704, -77.6684619903564)
]);
TerritoryId := Route4MeManager.Territory.Add(
TerritoryName, TerritoryColor, TerritoryContour, ErrorString);
WriteLn('');
if (TerritoryId.IsNotNull) then
begin
WriteLn('AddPolygonTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [Result.Value]));
end
else
WriteLn(Format('AddPolygonTerritory error: "%s"', [ErrorString]));
Result := TerritoryId;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
char* data = NULL;
init(key, 0);
if (deserialize("create_poly_zone_data.json", &data))
{
printf("Data file not found!\n");
}
if (!add_territory(data))
{
json_object* opt_lst = getJSONResponse();
json_object* opt_id = json_object_object_get(opt_lst, "territory_id");
printf("Territory added: %s\n", json_object_to_json_string(opt_id));
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
if (data)
{
free(data);
}
cleanUp();
return 0;
}
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "FBCEA43FC1E1B48B573F3E89A4CDFBEF",
"member_id": "1",
"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"addresses": [],
"territory": {
"type": "poly",
"data": ["37.769752822786455,-77.67833251953125",
"37.75886716305343,-77.68974800109863",
"37.74763966054455,-77.6917221069336",
"37.74655084306813,-77.68863220214844",
"37.7502255383101,-77.68125076293945",
"37.74797991274437,-77.67498512268066",
"37.73327960206065,-77.6411678314209",
"37.74430510679532,-77.63172645568848",
"37.76641925847049,-77.66846199035645"]
}
}
c) Create a new territory with a rectangular shape
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Territory JSON Schema as a guide. |
<job id="Create Rectangle Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of creating a territory zone with rectangle shape by sending HTTP data.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
jFile="create_rect_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPostRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
:: The example refers to the process of creating a territory zone with rectangle shape by sending HTTP data.
ECHO ON
curl -o file1.txt -g -k -X POST -d "@create_rect_zone_data.json" "%url%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
# The example refers to the process of creating a territory zone with rectangle shape by sending HTTP data.
curl -o file1.txt -g -k -X POST -d "@create_rect_zone_data.json" "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Create Territory with Rectangular Shape
/// </summary>
public void CreateRectTerritory()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneParameters territoryParameters = new AvoidanceZoneParameters
{
TerritoryName = "Test Territory",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Rect.Description(),
Data = new string[] {
"43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
}
}
};
// Run the query
string errorString = "";
AvoidanceZone territory = route4Me.CreateTerritory(territoryParameters, out errorString);
Console.WriteLine("");
if (territory != null)
{
Console.WriteLine("CreateRectTerritory executed successfully");
Console.WriteLine("Territory ID: {0}", territory.TerritoryId);
}
else
{
Console.WriteLine("CreateRectTerritory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Add Rectangle Territory
''' </summary>
Public Sub CreateRectTerritory()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryParameters As New AvoidanceZoneParameters() With { _
.TerritoryName = "Test Territory", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Rect), _
.Data = New String() { _
"43.51668853502909,-109.3798828125", _
"46.98025235521883,-101.865234375" _
} _
} _
}
' Run the query
Dim errorString As String = ""
Dim territory As AvoidanceZone = route4Me.CreateTerritory(territoryParameters, errorString)
Console.WriteLine("")
If territory IsNot Nothing Then
Console.WriteLine("CreateRectTerritory executed successfully")
Console.WriteLine("Territory ID: {0}", territory.TerritoryId)
Else
Console.WriteLine("CreateRectTerritory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
print 'Creating Rect Territory'
territory = {"territory_name": "Rect Territory",
"territory_color": "ff0000",
"territory": {"type": "rect",
"data": ["43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
]
}
}
response = territories.add_territory(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import java.util.ArrayList;
import java.util.List;
public class AddTerritory {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> rectTerritoryDataList = new ArrayList<>();
rectTerritoryDataList.add("43.51668853502909,-109.3798828125");
rectTerritoryDataList.add("46.98025235521883,-101.865234375");
TerritoryData rectTerritoryData = new TerritoryData();
rectTerritoryData.setData(rectTerritoryDataList);
Territory rectTerritory = new Territory();
rectTerritory.setTerritoryName("Rect Territory");
rectTerritory.setTerritoryColor("ff0000");
rectTerritory.setTerritory(rectTerritoryData);
rectTerritoryData.setType(Constants.TerritoryType.RECT.toString());
responseObject = territoriesManager.addTerritory(rectTerritory);
System.out.println("Rect Territory");
System.out.println(responseObject.toString());
System.out.println();
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territory := &territories.Territory{
Name: "Some zone",
Color: "beeeee", //hexadecimal color
Territory: territories.TerritoryShape{
Type: territories.Rectangular, //Type of an area
Data: []string{"43.51668853502909,-109.3798828125","46.98025235521883,-101.865234375"},
},
}
newTerritory, err := service.AddTerritory(territory)
if err != nil {
//handle errors
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// The example refers to the process of creating a territory with a rectangular shape
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::RECT;
$territoryParams['data'] = array(
"43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"
);
$TerritoryParameters = Territory::fromArray(array(
"territory_name" => "Test Rectangular Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$territory = new Territory();
$result = $territory->addTerritory($TerritoryParameters);
Route4Me::simplePrint($result, true);
unit AddRectangularTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit, NullableBasicTypesUnit;
type
TAddRectangularTerritory = class(TBaseExample)
public
function Execute: NullableString;
end;
implementation
uses TerritoryContourUnit, TerritoryUnit;
function TAddRectangularTerritory.Execute: NullableString;
var
ErrorString: String;
TerritoryContour: TTerritoryContour;
TerritoryName, TerritoryColor: String;
TerritoryId: NullableString;
begin
Result := NullableString.Null;
TerritoryName := 'Rect Territory';
TerritoryColor := 'ff0000';
TerritoryContour := TTerritoryContour.MakeRectangularContour(
43.5166885350291, -109.3798828125, 46.9802523552188, -101.865234375);
TerritoryId := Route4MeManager.Territory.Add(
TerritoryName, TerritoryColor, TerritoryContour, ErrorString);
WriteLn('');
if (TerritoryId.IsNotNull) then
begin
WriteLn('AddRectangularTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [Result.Value]));
end
else
WriteLn(Format('AddRectangularTerritory error: "%s"', [ErrorString]));
Result := TerritoryId;
end;
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "C480883359A9C4EC528509CD8D65E121",
"member_id": "****",
"territory_name": "Rect Territory",
"territory_color": "ff0000",
"addresses": [],
"territory": {
"type": "rect",
"data": ["43.51668853502909,-109.3798828125",
"46.98025235521883,-101.865234375"]
}
}
Get a Territory
Get a specified Territory
object by its ID.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
addresses | integer | If equal to 1, the enclosed addresses will be included in the response. |
orders | integer | If equal to 1, the enclosed orders will be included in the response. |
<job id="Get Territory Zone By Id">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
terid="63E27D8186AAE43F202CB97DECBFD826"
addresses=1
orders=1
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid
url=url&"&addresses="&addresses
url=url&"&orders="&orders
Set r4m=New Route4Me
r4m.outputFile="get_territory_with_addresses_orders_RESPONSE.json"
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
SET terid=63E27D8186AAE43F202CB97DECBFD826
SET addresses=1
SET orders=1
ECHO ON
:: The example refers to the process of getting Territory zone with covered addresses and orders.
curl -o get_territory_with_addresses_orders_RESPONSE.json -g -k -X GET "%url%?api_key=%apikey%&territory_id=%terid%&addresses=%addresses%&orders=%orders%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
terid=63E27D8186AAE43F202CB97DECBFD826
addresses=1
orders=1
# The example refers to the process of getting Territory zone with covered addresses and orders.
curl -o get_territory_with_addresses_orders_RESPONSE.json -g -k -X GET "$url?api_key=$apikey&territory_id=$terid&addresses=$addresses&orders=$orders"
echo "Finished..."
sleep 15
public void GetTerritoryTest()
{
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string territoryId = "";
if (lsTerritories.Count > 1) territoryId = lsTerritories[1];
TerritoryQuery territoryQuery = new TerritoryQuery()
{
TerritoryId = territoryId,
Addresses = 1,
Orders = 1
};
// Run the query
string errorString;
TerritoryZone territory = route4Me.GetTerritory(territoryQuery, out errorString);
Assert.IsNotNull(territory, "GetTerritoryTest failed... " + errorString);
}
Public Sub GetTerritoryTest()
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryId As String = ""
If lsTerritories.Count > 1 Then
territoryId = lsTerritories(1)
End If
Dim territoryQuery As New TerritoryQuery() With {
.TerritoryId = territoryId,
.Addresses = 1,
.Orders = 1
}
' Run the query
Dim errorString As String = ""
Dim territory As TerritoryZone = route4Me.GetTerritory(territoryQuery, errorString)
Assert.IsNotNull(territory, Convert.ToString("GetTerritoryTest failed... ") & errorString)
End Sub
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
response = territories.get_territories()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response[0].territory_id
print 'Getting Territory ID: {}'.format(territory_id)
response = territories.get_territory(territory_id=territory_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import java.util.List;
public class GetTerritory {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);;
List<Territory> territories = territoriesManager.getTerritories();
String territoryID;
territoryID = territories.get(0).getTerritoryId();
Territory responseObject = territoriesManager.getTerritory(territoryID);
System.out.println(responseObject);
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territory, err := service.GetTerritory(&territories.Query{ID: "territory id"})
if err != nil {
//handle error
return
}
//do something with the territory
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the api key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$territory = new Territory();
// Select a terriotry with the enclosed addresses and orders from the list
$params = [
'offset' => 0,
'limit' => 50,
'addresses' => 1,
'orders' => 1
];
$results = $territory->getTerritories($params);
assert(!is_null($results), "Cannot retrieve the territories with addresses");
$territory1 = null;
foreach ($results as $terr) {
if (isset($terr['addresses'])) {
if (sizeof($terr['addresses']) > 0) {
$territory1 = $terr;
break;
}
}
}
assert(isset($territory1['territory_id']), "Cannot retrieve a random territory ID");
$territory_id = $territory1['territory_id'];
echo "Territory ID -> $territory_id <br><br>";
// Get a territory with the addresses
$params = [
'territory_id' => $territory_id,
'addresses' => 1,
];
$result1 = $territory->getTerritory($params);
Route4Me::simplePrint($result1, true);
unit GetTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetTerritory = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
uses TerritoryUnit;
procedure TGetTerritory.Execute(TerritoryId: String);
var
ErrorString: String;
Territory: TTerritory;
GetEnclosedAddresses: boolean;
begin
GetEnclosedAddresses := False;
Territory := Route4MeManager.Territory.Get(
TerritoryId, GetEnclosedAddresses, ErrorString);
try
WriteLn('');
if (Territory <> nil) then
begin
WriteLn('GetTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [Territory.Id.Value]));
end
else
WriteLn(Format('GetTerritory error: %s', [ErrorString]));
finally
FreeAndNil(Territory);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
Json::Value territory_data;
inf >> territory_data;
CRoute4Me route(KEY);
if (route.get_territory("DCBBBF90D8E9399B99C4D6FF11ED999F") == 0) {
cout << "Found territories:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "No territories found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char id[] = "F8320C21984385D473DFA73C1A86339D";
if (!get_territory(id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "63E27D8186AAE43F202CB97DECBFD826",
"member_id": "1",
"territory_name": "Houston Test Area",
"territory_color": "16a765",
"addresses": [
50240057, 50240056, 50240055, 50240054,
50240053, 50240052, 50240051, 50240050,
50240049, 50240048
],
"orders": [
36864, 37120, 37376, 37632,
38144, 38400, 38656, 39168,
39424, 39680, 40192, 40448,
40704, 40960, 41216
],
"territory": {
"type": "poly",
"data": [
"29.761136250306,-95.373945236206",
"29.76139703434,-95.37119865417",
"29.75487722975,-95.360083580017",
"29.753386929151,-95.358324050903",
"29.751486763744,-95.358281135559",
"29.7502199667945,-95.36021232605",
"29.7510396607664,-95.36403179168",
"29.7541693397318,-95.368323326110",
"29.758602884318,-95.374588966369"
]
}
}
Get Multiple Territories
Get all Territory
objects defined by a user.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
<job id="Get Territory Zones">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of getting the territory zones from a user's account.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
url=url&"?api_key="&apikey
Set r4m=New Route4Me
r4m.HttpGetRequest(url)
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
SET addresses=1
:: The example refers to the process of getting the territory zones from a user's account.
ECHO ON
curl -o file1.txt -g -k -X GET "%URL%?api_key=%apikey%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
# The example refers to the process of getting the territory zones from a user's account.
curl -o file1.txt -g -k -X GET "$url?api_key=$apikey"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Get Territories
/// </summary>
public void GetTerritories()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
AvoidanceZoneQuery territoryQuery = new AvoidanceZoneQuery();
// Run the query
string errorString = "";
AvoidanceZone[] territories = route4Me.GetTerritories(territoryQuery, out errorString);
Console.WriteLine("");
if (territories != null)
{
Console.WriteLine("GetTerritories executed successfully");
Console.WriteLine("GetAvoidanceZones executed successfully, {0} territories returned", territories.Length);
}
else
{
Console.WriteLine("GetTerritories error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Get Territories
''' </summary>
Public Sub GetTerritories()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryQuery As New AvoidanceZoneQuery()
' Run the query
Dim errorString As String = ""
Dim territories As AvoidanceZone() = route4Me.GetTerritories(territoryQuery, errorString)
Console.WriteLine("")
If territories IsNot Nothing Then
Console.WriteLine("GetTerritories executed successfully")
Console.WriteLine("GetAvoidanceZones executed successfully, {0} territories returned", territories.Count)
Else
Console.WriteLine("GetTerritories error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territory = route4me.territory
response = territory.get_territories()
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
for i, territory in enumerate(response):
print '{0} - Territory ID: {1}'.format(i + 1,
territory.territory_id)
print '\tTerritory Name: {}'.format(territory.territory_name)
print '\tTerritory Color: {}'.format(territory.territory_color)
print '\tMember ID: {}'.format(territory.member_id)
print '\tTerritory Type: {}'.format(territory.territory.type)
if territory.territory.data:
print '\tData: '
for data in territory.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import java.util.List;
public class GetTerritories {
public static void main(String[] args) {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
try {
List<Territory> territories = territoriesManager.getTerritories();
for (Territory territory : territories) {
System.out.println(territory);
}
} catch (APIException e) {
//handle exception
e.printStackTrace();
}
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territories, err := service.GetTerritories(&territories.Query{})
if err != nil {
//Handle error
return
}
//do something with territories, it's a []Territory
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
$territory = new Territory();
$queryparameters = array (
"offset" => 0,
"limit" => 20
);
$response = $territory->getTerritories($queryparameters);
foreach ($response as $terr1) {
Route4Me::simplePrint($terr1, true);
echo "<br>";
}
unit GetTerritoriesUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TGetTerritories = class(TBaseExample)
public
procedure Execute;
end;
implementation
uses TerritoryUnit;
procedure TGetTerritories.Execute;
var
ErrorString: String;
Territories: TTerritoryList;
begin
Territories := Route4MeManager.Territory.GetList(ErrorString);
try
WriteLn('');
if (Territories.Count > 0) then
WriteLn(Format('GetTerritories executed successfully, %d zones returned',
[Territories.Count]))
else
WriteLn(Format('GetTerritories error: "%s"', [ErrorString]));
finally
FreeAndNil(Territories);
end;
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
Json::Value territory_data;
inf >> territory_data;
CRoute4Me route(KEY);
if (route.get_all_territories() == 0) {
cout << "Found territories:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "No territories found: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/territory.php?api_key=...
See the sample JSON response of this method.
Remove a Territory
Deletes a specified Territory
object.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
<job id="Delete Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of removing a territory zone from a user's account.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
terid1="F31128DB9EEA076B85ECDE37274A4D78"
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid1
jFile=""
Set r4m=New Route4Me
r4m.HttpDeleteRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
SET terid1=8506E4725A006B59D5CA2EA375E08B97
:: The example refers to the process of removing a territory zone from a user's account.
ECHO ON
curl -o file1.txt -g -k -X DELETE "%url%?api_key=%apikey%&territory_id=%terid1%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
terid1=083F0E34A2271FCAFA5476A364F32B4E
# The example refers to the process of removing a territory zone from a user's account.
curl -o file1.txt -g -k -X DELETE "$url?api_key=$apikey&territory_id=$terid1"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Remove Territory
/// </summary>
public void RemoveTerritory()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string territoryId = "12ABBFA3B5E4FB007BB0ED73291576C2";
AvoidanceZoneQuery territoryQuery = new AvoidanceZoneQuery { TerritoryId = territoryId };
// Run the query
string errorString = "";
route4Me.RemoveTerritory(territoryQuery, out errorString);
Console.WriteLine("");
if (string.IsNullOrEmpty(errorString))
{
Console.WriteLine("RemoveTerritory executed successfully");
Console.WriteLine("Territory ID: {0}", territoryId);
}
else
{
Console.WriteLine("RemoveTerritory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Remove Territory
''' </summary>
Public Sub RemoveTerritory()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryId As String = "12ABBFA3B5E4FB007BB0ED73291576C2"
Dim territoryQuery As New AvoidanceZoneQuery() With { _
.TerritoryId = territoryId _
}
' Run the query
Dim errorString As String = ""
route4Me.RemoveTerritory(territoryQuery, errorString)
Console.WriteLine("")
If errorString = "" Then
Console.WriteLine("RemoveTerritory executed successfully")
Console.WriteLine("Territory ID: {0}", territoryId)
Else
Console.WriteLine("RemoveTerritory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
print 'Creating Poly Territory'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = territories.add_territory(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response.territory_id
print 'Territory ID: {0} -> Created'.format(territory_id)
response = territories.delete_territory(territory_id=territory_id)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {0} -> Deleted: {1}'.format(territory_id,
response.status)
if __name__ == '__main__':
main()
package com.route4me.sdk.examples.territories;
import com.route4me.sdk.exception.APIException;
import com.route4me.sdk.services.routing.Constants;
import com.route4me.sdk.services.territories.TerritoriesManager;
import com.route4me.sdk.services.territories.Territory;
import com.route4me.sdk.services.territories.TerritoryData;
import java.util.ArrayList;
import java.util.List;
public class DeleteTerritory {
public static void main(String[] args) throws APIException {
String apiKey = "11111111111111111111111111111111";
TerritoriesManager territoriesManager = new TerritoriesManager(apiKey);
List<String> polyTerritoryDataList = new ArrayList<>();
polyTerritoryDataList.add("56.127184156131065,56.93115234375");
polyTerritoryDataList.add("58.41322259056806,59.501953125");
polyTerritoryDataList.add("61.53840616716746,59.315185546875");
polyTerritoryDataList.add("61.047650586031104,51.998291015625");
polyTerritoryDataList.add("59.254649544483726,53.63525390625");
polyTerritoryDataList.add("56.47462805805596,54.42626953125");
TerritoryData polyTerritoryData = new TerritoryData();
polyTerritoryData.setData(polyTerritoryDataList);
Territory polyTerritory = new Territory();
polyTerritory.setTerritoryName("Polygon Territory");
polyTerritory.setTerritoryColor("ff0000");
polyTerritory.setTerritory(polyTerritoryData);
polyTerritoryData.setType(Constants.TerritoryType.POLY.toString());
Territory responseObject = territoriesManager.addTerritory(polyTerritory);
System.out.println("Polygon Territory");
System.out.println(responseObject.toString());
System.out.println();
System.out.println("Deleting Territory");
boolean response = territoriesManager.deleteTerritory(responseObject.getTerritoryId());
System.out.println(response);
}
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
err := service.DeleteTerritory(&territories.Query{ID: "territory id"})
if err != nil {
//handle error
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Create a territory and get territory_id
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$TerritoryParameters = Territory::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$territory = new Territory();
$result = (array)$territory->addTerritory($TerritoryParameters);
assert(!is_null($result), "Can't create a territory");
assert(isset($result["territory_id"]), "Can't create a territory");
$territory_id = $result["territory_id"];
echo "New Territory with territory_id = $territory_id created successfully<br>";
echo "------------------------------------------------------------------------<br><br>";
$result1 = $territory->deleteTerritory($territory_id);
assert(isset($result), "Can't delete the territory");
echo "Territory with territory_id = $territory_id was deleted successfully<br>";
Route4Me::simplePrint($result1);
unit RemoveTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TRemoveTerritory = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
procedure TRemoveTerritory.Execute(TerritoryId: String);
var
ErrorString: String;
begin
Route4MeManager.Territory.Remove(TerritoryId, ErrorString);
WriteLn('');
if (ErrorString = EmptyStr) then
begin
WriteLn('RemoveTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [TerritoryId]));
end
else
WriteLn(Format('RemoveTerritory error: "%s"', [ErrorString]));
end;
end.
#include <iostream>
#include <fstream>
#include "../include/route4me.h"
#define KEY "11111111111111111111111111111111"
using namespace std;
int main()
{
// global init
CRoute4Me::init();
Json::Value territory_data;
inf >> territory_data;
CRoute4Me route(KEY);
if (route.remove_territory("DCBBBF90D8E9399B99C4D6FF11ED999F") == 0) {
cout << "Remove territory:" << endl << Json::FastWriter().write(route.get_json_resp()) << endl;
}
else {
cout << "Failed to remove territory: " << Json::FastWriter().write(route.get_json_resp()) << endl;
}
CRoute4Me::cleanup();
}
An example for this language will be added in the future. For now, please see the other languages available for reference.
#include <stdio.h>
#include "../include/route4me.h"
static char key[] = "11111111111111111111111111111111";
int main(int argc, char* argv[])
{
init(key, 0);
const char id[] = "a1";
if (!remove_territory(id))
{
json_object* opt_lst = getJSONResponse();
printf("%s\n", json_object_to_json_string(opt_lst));
}
struct response_data response = getCurrentResponse();
printf("Return code: %d\n Response: %s\n", response.m_err_code, response.m_raw_resp);
cleanUp();
return 0;
}
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"status":true
}
Update a Territory
Updates a specified Territory
object with a circular shape.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Type | Description |
---|---|---|
api_key | string | API key of the user |
territory_id | string | Territory ID |
input data | POST data | A valid JSON object string. See the Territory JSON Schema as a guide. |
<job id="Update Circle Zone">
<script language="VBScript" src="../Route4Me.vbs"/>
<script language="VBScript">
WScript.Quit main()
Function main()
Dim r4m
Dim jFile
WScript.Echo "Please, press OK and wait..."
' The example refers to the process of updating a territory zone by sending HTTP parameters.
url="https://api.route4me.com/api.v4/territory.php"
apikey="11111111111111111111111111111111"
terid="39236C3A30F92CA338C41EB0978F9D8A"
url=url&"?api_key="&apikey
url=url&"&territory_id="&terid
jFile="update_circle_zone_data.json"
Set r4m=New Route4Me
r4m.HttpPutRequest url,jFile
main=1
WScript.Echo "Finished..."
End Function
</script>
</job>
@ECHO OFF
SET url=https://api.route4me.com/api.v4/territory.php
SET apikey=11111111111111111111111111111111
SET terid1=39236C3A30F92CA338C41EB0978F9D8A
ECHO ON
:: The example refers to the process of updating a territory zone by sending HTTP parameters.
curl -o file1.txt -g -k -X PUT -d "@update_circle_zone_data.json" "%url%?api_key=%apikey%&territory_id=%terid1%"
timeout /t 30
#!/bin/bash
url=https://api.route4me.com/api.v4/territory.php
apikey=11111111111111111111111111111111
terid=39236C3A30F92CA338C41EB0978F9D8A
# The example refers to the process of updating a territory zone by sending HTTP parameters.
curl -o file1.txt -g -k -X PUT -d "@update_circle_zone_data.json" "$url?api_key=$apikey&territory_id=$terid"
echo "Finished..."
sleep 15
using Route4MeSDK.DataTypes;
using Route4MeSDK.QueryTypes;
using System;
namespace Route4MeSDK.Examples
{
public sealed partial class Route4MeExamples
{
/// <summary>
/// Update Territory
/// </summary>
public void UpdateTerritory()
{
// Create the manager with the API key
Route4MeManager route4Me = new Route4MeManager(c_ApiKey);
string territoryId = "1CEFEC7568D900FB781C21603780775E";
AvoidanceZoneParameters territoryParameters = new AvoidanceZoneParameters
{
TerritoryId = territoryId,
TerritoryName = "Test Territory Updated",
TerritoryColor = "ff0000",
Territory = new Territory
{
Type = TerritoryType.Circle.Description(),
Data = new string[] {
"37.569752822786455,-77.47833251953125",
"6000"
}
}
};
// Run the query
string errorString = "";
AvoidanceZone territory = route4Me.UpdateTerritory(territoryParameters, out errorString);
Console.WriteLine("");
if (territory != null)
{
Console.WriteLine("UpdateTerritory executed successfully");
Console.WriteLine("Territory ID: {0}", territory.TerritoryId);
}
else
{
Console.WriteLine("UpdateTerritory error: {0}", errorString);
}
}
}
}
Imports Route4MeSDKLibrary.Route4MeSDK
Imports Route4MeSDKLibrary.Route4MeSDK.DataTypes
Imports Route4MeSDKLibrary.Route4MeSDK.QueryTypes
Namespace Route4MeSDKTest.Examples
Partial Public NotInheritable Class Route4MeExamples
''' <summary>
''' Update Territory
''' </summary>
Public Sub UpdateTerritory()
' Create the manager with the API key
Dim route4Me As New Route4MeManager(c_ApiKey)
Dim territoryId As String = "4703BC24F64E43C45DA852ABAFB5B404"
Dim territoryParameters As New AvoidanceZoneParameters() With { _
.TerritoryId = territoryId, _
.TerritoryName = "Test Territory Updated", _
.TerritoryColor = "ff0000", _
.Territory = New Territory() With { _
.Type = EnumHelper.GetEnumDescription(TerritoryType.Circle), _
.Data = New String() {"37.569752822786455,-77.47833251953125", "5000"} _
} _
}
' Run the query
Dim errorString As String = ""
Dim territory As AvoidanceZone = route4Me.UpdateTerritory(territoryParameters, errorString)
Console.WriteLine("")
If territory IsNot Nothing Then
Console.WriteLine("UpdateTerritory executed successfully")
Console.WriteLine("Territory ID: {0}", territory.TerritoryId)
Else
Console.WriteLine("UpdateTerritory error: {0}", errorString)
End If
End Sub
End Class
End Namespace
from route4me import Route4Me
KEY = "11111111111111111111111111111111"
def main():
route4me = Route4Me(KEY)
territories = route4me.territory
print 'Creating Poly Zone'
territory = {"territory_name": "Polygon Territory",
"territory_color": "ff0000",
"territory": {"type": "poly",
"data": ["56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125"
]
}
}
response = territories.add_territory(**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
territory_id = response.territory_id
print 'Territory ID: {0} -> Created'.format(territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
territory = {"territory_name": "Polygon Territory Updated",
"territory_color": "ff00ff",
"territory": {"type": "poly",
"data": [
"56.127184156131065,56.93115234375",
"58.41322259056806,59.501953125",
"61.53840616716746,59.315185546875",
"61.047650586031104,51.998291015625",
"59.254649544483726,53.63525390625",
"56.47462805805596,54.42626953125",
]
}
}
response = territories.update_territory(territory_id=territory_id,
**territory)
if hasattr(response, 'errors'):
print '. '.join(response.errors)
else:
print 'Territory ID: {}'.format(response.territory_id)
print '\tTerritory Name: {}'.format(response.territory_name)
print '\tTerritory Color: {}'.format(response.territory_color)
print '\tMember ID: {}'.format(response.member_id)
print '\tTerritory Type: {}'.format(response.territory.type)
if response.territory.data:
print '\tData: '
for data in response.territory.data:
print '\t\t{0}'.format(data)
if __name__ == '__main__':
main()
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
import (
"github.com/route4me/route4me-go-sdk"
"github.com/route4me/route4me-go-sdk/territories"
)
func main() {
client := route4me.NewClient("your-api-key")
service := &territories.Service{Client: client}
territory := //get zone using Get, GetAll or constructing yourself.
contact, err := service.UpdateTerritory(territory)
if err != nil {
t.Error(err)
return
}
}
<?php
namespace Route4Me;
$root = realpath(dirname(__FILE__).'/../../');
require $root.'/vendor/autoload.php';
use Route4Me\Route4Me;
use Route4Me\Enum\TerritoryTypes;
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
// Set the API key in the Route4Me class
Route4Me::setApiKey('11111111111111111111111111111111');
// Add Avoidance Zone and get territory_id
$territory = new Territory();
$territoryParams['type'] = TerritoryTypes::CIRCLE;
$territoryParams['data'] = array(
"37.569752822786455,-77.47833251953125",
"5000"
);
$TerritoryParameters = Territory::fromArray(array(
"territory_name" => "Test Territory ".strval(rand(10000, 99999)),
"territory_color" => "ff7700",
"territory" => $territoryParams
));
$result = (array)$territory->addTerritory($TerritoryParameters);
assert(!is_null($result), "Can't create a territory");
$territory_id = $result["territory_id"];
echo "New Territory with territory_id = $territory_id created successfully<br>";
echo "---------------------------------------------------------------<br><br>";
// Update territory
$territoryParameters = array (
"type" => TerritoryTypes::RECT,
"data" => array(
"29.6600127358956,-95.6593322753906",
"29.8966150753098,-95.3146362304688"
)
);
$TerritoryParameters = Territory::fromArray(array(
"territory_id" => $territory_id,
"territory_name" => "Test Territory Updated as rectangle",
"territory_color" => "ff5500",
"territory" => $territoryParameters
));
$result1 = $territory->updateTerritory($TerritoryParameters);
assert(isset($result1), "Can't update the territory");
Route4Me::simplePrint($result1, true);
unit UpdateTerritoryUnit;
interface
uses SysUtils, BaseExampleUnit;
type
TUpdateTerritory = class(TBaseExample)
public
procedure Execute(TerritoryId: String);
end;
implementation
uses TerritoryUnit, TerritoryContourUnit;
procedure TUpdateTerritory.Execute(TerritoryId: String);
var
ErrorString: String;
Territory: TTerritory;
TerritoryContour: TTerritoryContour;
NewTerritory: TTerritory;
TerritoryName, TerritoryColor: String;
begin
TerritoryName := 'Test Territory Updated';
TerritoryColor := 'ff00ff';
TerritoryContour := TerritoryContour.MakeCircleContour(
38.4132225905681, -78.501953234, 3000);
Territory := TTerritory.Create(TerritoryName, TerritoryColor, TerritoryContour);
try
Territory.Id := TerritoryId;
NewTerritory := Route4MeManager.Territory.Update(Territory, ErrorString);
try
WriteLn('');
if (NewTerritory <> nil) then
begin
WriteLn('UpdateTerritory executed successfully');
WriteLn(Format('Territory ID: %s', [NewTerritory.Id.Value]));
end
else
WriteLn(Format('UpdateTerritory error: "%s"', [ErrorString]));
finally
FreeAndNil(NewTerritory);
end;
finally
FreeAndNil(Territory);
end;
end;
end.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/api.v4/territory.php?api_key=...&territory_id=...
You can expect this API response:
{
"territory_id": "39236C3A30F92CA338C41EB0978F9D8A",
"member_id": "1",
"territory_name": "Test Territory",
"territory_color": "ff0000",
"addresses": [],
"territory": {
"type": "circle",
"data": ["37.569752822786455,-77.47833251953125",
"5000"]
}
}
Telematics Connections
A telematics connection allows you to import and synchronize your telematics vendor’s data to your account in the Operational Assessment system. It’s the system’s abstraction in using and communicating with the Telematics Gateway API. Under the hood, the system communicates with the Telematics Gateway API through this connection to retrieve your telematics vendor’s data.
Useful links:
- An online tool for choosing a telematics vendor
- Get an API key
- Telematics Articles
- Route4Me Telematics Integrations
Get Telematics Connection List
Returns a list of active connections from the Telematics Gateway.
PARAMETERS
Parameter | Parameter Type | Description | Data Type |
---|---|---|---|
x-auth-token | header | The authorization token that will be given after signing in. | string |
x-api-key | header | Use the API with an API key without authorization. | string |
offset | query | Only records from that offset will be considered | integer |
api_key | query | Use the API with an API key without authorization. | string |
x-original-api-key | header | Authorization by Route4Me key in the HTTP request header, for Route4Me users. | string |
auth_token | query | The authorization token that will be given after signing in. | string |
limit | query | The number of records to return. | integer |
original_api_key | query | Authorization by Route4Me key, for Route4Me users. | string |
As a guide, see this method’s JSON schema for its: - input parameters - response
An example for this language will be added in the future. For now, please see the other languages available for reference.
ECHO OFF
:: Use your API key in the `api_key` parameter.
SET url=https://oa.route4me.com/api/v1/user/telematics-connections
SET api_key=1111111111111111111111111111111111111111111111111111111111111111
SET offset=0
SET limit=3
:: The example demonstrates the process of getting the telematics connections.
ECHO ON
curl -o User_telematics_connections_get_RESPONSE.json -H "Accept: application/json" -g -k -X GET "%url%?api_key=%api_key%&offset=%offset%&limit=%limit%"
timeout /t 30
#!/bin/bash
# Use your API key in the `api_key` parameter.
url=https://oa.route4me.com/api/v1/user/telematics-connections
api_key=1111111111111111111111111111111111111111111111111111111111111111
offset=0
limit=100
# The example demonstrates the process of getting the telematics connections.
curl -o User_telematics_connections_get_RESPONSE.json -H "Accept: application/json" -g -k -X GET "$url?api_key=$api_key&offset=$offset&limit=$limit"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/user/telematics-connections?offset=...&limit=...
You can expect this API response:
{
"data": [{
"is_active": true,
"password": "route4me",
"email": "[email protected]",
"account_id": "nnnnnnnnnn",
"telematics_connection_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"user_id": "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",
"telematics_id": 10100,
"created_at": 1533131149,
"vendor_name": "TelServ",
"vendor_id": 4,
"host": "",
"virtual_password": "PPPPPPPP",
"name": "geo",
"device_position_refresh_rate": 60,
"virtual_email": "[email protected]",
"updated_at": 1533131149,
"username": "[email protected]",
"telematics_connection_token": "ssssssssssssssssssssssssssssssss",
"last_name": "xx1",
"telematics_api_token": "66666666666666666666666666666666",
"company_name": "xx2",
"first_name": "evhen"
},
{
"is_active": true,
"email": "[email protected]",
"name": "r4me_changed",
"updated_at": 1533131360,
"last_name": "tekhon",
"api_key": "11111111111111111111111111111111",
"telematics_connection_id": "BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"user_id": "EDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",
"virtual_email": "[email protected]",
"telematics_id": 10101,
"device_position_refresh_rate": 60,
"telematics_connection_token": "asssssssssssssssssssssssssssssss",
"vendor_name": "Route4Me",
"vendor_id": 9,
"created_at": 1533130795,
"first_name": "evora",
"virtual_password": "ttttttttttt",
"company_name": "simple",
"telematics_api_token": "76666666666666666666666666666666"
},
{
"is_active": true,
"email": "[email protected]",
"name": "r4m1",
"updated_at": 1533112869,
"last_name": "participant 3",
"api_key": "11111111111111111111111111111111",
"telematics_connection_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"user_id": "FDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",
"virtual_email": "[email protected]",
"telematics_id": 10102,
"device_position_refresh_rate": 60,
"telematics_connection_token": "bsssssssssssssssssssssssssssssss",
"vendor_name": "Route4Me",
"vendor_id": 9,
"created_at": 1533112817,
"first_name": "evhen",
"virtual_password": "5555555555",
"company_name": "3pa3 OA",
"telematics_api_token": "86666666666666666666666666666666"
}],
"metadata": {
"limit": 3,
"total": 70,
"user_id": "EBEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE",
"offset": 0
}
}
Create Telematics Connection
Creates a telematics connection on the Telematics Gateway that’s tied to a chosen participant that doesn’t have any connections yet.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Parameter Type | Description | Data Type |
---|---|---|---|
participant_ user_id | path | Participant user ID | string |
original_api_key | query | Authorization by Route4Me key, for Route4Me users. | string |
x-original-api-key | header | Authorization by Route4Me key in the HTTP request header, for Route4Me users. | string |
x-auth-token | header | The authorization token that will be given after signing in. | string |
api_key | query | Use the API with an API key without authorization. | string |
auth_token | query | The authorization token that will be given after signing in. | string |
payload | body | JSON payload data | Model |
x-api-key | header | Use the API with an API key without authorization. | string |
As a guide, see this method’s JSON schema for its: - input parameters - response - payload data
An example for this language will be added in the future. For now, please see the other languages available for reference.
ECHO OFF
:: Use your API key in the `api_key` parameter.
SET url=https://oa.route4me.com/api/v1/user/participants/
SET api_key=1111111111111111111111111111111111111111111111111111111111111111
SET participant_user_id=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
:: The example demonstrates the process of creating a connection to a telematics vendor.
ECHO ON
curl -o User_participant_telematics_connection_create_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X POST -d "@User_participant_telematics_connection_create_data.json" "%url%%participant_user_id%/telematics-connection?api_key=%api_key%"
timeout /t 30
#!/bin/bash
# Use your API key in the `api_key` parameter.
url=https://oa.route4me.com/api/v1/user/participants/
api_key=1111111111111111111111111111111111111111111111111111111111111111
participant_user_id=9B6D55A57AD44B57850371564C95AEE8
# The example demonstrates the process of creating a connection to a telematics vendor.
curl -o User_participant_telematics_connection_create_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X POST -d "@User_participant_telematics_connection_create_data.json" "$url$participant_user_id/telematics-connection?api_key=$api_key"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/user/participants/{participant_user_id}/telematics-connection
You can expect this API response:
{
"data": {
"is_active": true,
"email": null,
"name": "Test Connection",
"updated_at": 1533044746,
"last_name": null,
"api_key": "33333333333333333333333333333333",
"telematics_connection_id": "55555555555555555555555555555555",
"user_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"virtual_email": "[email protected]",
"telematics_id": 100000,
"device_position_refresh_rate": 60,
"telematics_connection_token": "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR",
"vendor_name": "Route4Me",
"vendor_id": 9,
"created_at": 1532651489,
"first_name": null,
"virtual_password": "o4yCk6P8jGW",
"company_name": null,
"telematics_api_token": "782cf32dc5243a42723b2ef0793ed72c"
},
"metadata": {
"user_id": "EBA794354DC847E3BC19AEE49CF4AB1B",
"participant": {
"original_r4m_api_key": "44444444444444444444444444444444",
"email": "[email protected]",
"vendor_company_name": "",
"locale": null,
"timezone": null,
"affiliate_user_id": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"affiliate_email": "",
"user_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"measurement": 0,
"affiliate_company_name": "",
"origin_r4m_member_id": 888888,
"vendor_user_id": "11111111111111111111111111111111",
"vendor_id": 9,
"phone_number": null,
"last_name": "Doe",
"r4m_api_key": "99999999999999999999999999999999",
"website": null,
"company_name": null,
"r4m_member_id": 222222,
"first_name": "John"
}
}
}
Delete Telematics Connection
Deletes a telematics connection on the Telematics Gateway. Once a connection is deleted, the Operational Assessment system stops receiving raw GPS points from the telematics control unit(s) associated with the connection.
PARAMETERS
Parameter | Parameter Type | Description | Data Type |
---|---|---|---|
participant_ user_id | path | Participant user ID | string |
telematic_ connection_id | path | Telematics connection ID | string |
original_api_key | query | Authorization by Route4Me key, for Route4Me users. | string |
x-original-api-key | header | Authorization by Route4Me key in the HTTP request header, for Route4Me users. | string |
api_key | query | Use the API with an API key without authorization. | string |
auth_token | query | The authorization token that will be given after signing in. | string |
x-auth-token | header | The authorization token that will be given after signing in. | string |
x-api-key | header | Use the API with an API key without authorization. | string |
As a guide, see this method’s JSON schema for its: - input parameters - response - failure response
An example for this language will be added in the future. For now, please see the other languages available for reference.
ECHO OFF
:: Use your API key in the `api_key` parameter.
SET url=https://oa.route4me.com/api/v1/user/participants/
SET api_key=1111111111111111111111111111111111111111111111111111111111111111
SET participant_user_id=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
SET telematic_connection_id=22222222222222222222222222222222
:: The example demonstrates the process of deleting a participant's connection from a telematics vendor.
ECHO ON
curl -o User_participant_telematics_connection_delete_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X DELETE "%url%%participant_user_id%/telematics-connection/%telematic_connection_id%?api_key=%api_key%"
timeout /t 30
#!/bin/bash
# Use your API key in the `api_key` parameter.
url=https://oa.route4me.com/api/v1/user/participants/
api_key=1111111111111111111111111111111111111111111111111111111111111111
participant_user_id=474868258B914C35BABBF333EFD7C7EC
telematic_connection_id=89139BD0A3C343D6B1AE74D1BE612A93
# The example demonstrates the process of deleting a participant's connection from a telematics vendor.
curl -o User_participant_telematics_connection_delete_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X DELETE "$url$participant_user_id/telematics-connection/$telematic_connection_id?api_key=$api_key"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/user/participants/{participant_user_id}/telematics-connection/{telematic_connection_id}
You can expect this API response:
{
"data": null,
"metadata": {
"user_id": "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
}
}
Get a Telematics Connection
Returns the information about a participant’s telematics connection by setting the values of these path parameters: telematic_connection_id
and participant_user_id
.
PARAMETERS
Parameter | Parameter Type | Description | Data Type |
---|---|---|---|
telematic_ connection_id | path | Telematics connection ID | string |
participant_ user_id | path | Participant user ID | string |
original_api_key | query | Authorization by Route4Me key, for Route4Me users. | string |
x-original-api-key | header | Authorization by Route4Me key in the HTTP request header, for Route4Me users. | string |
api_key | query | Use the API with an API key without authorization. | string |
auth_token | query | The authorization token that will be given after signing in. | string |
x-auth-token | header | The authorization token that will be given after signing in. | string |
x-api-key | header | Use the API with an API key without authorization. | string |
As a guide, see this method’s JSON schema for its: - input parameters - response
An example for this language will be added in the future. For now, please see the other languages available for reference.
ECHO OFF
:: Use your API key in the `api_key` parameter.
SET url=https://oa.route4me.com/api/v1/user/participants/
SET api_key=1111111111111111111111111111111111111111111111111111111111111111
SET participant_user_id=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
SET telematic_connection_id=22222222222222222222222222222222
:: The example demonstrates the process of getting a participant's telematics connection.
ECHO ON
curl -o User_participant_telematics_connection_get_RESPONSE.json -H "Accept: application/json" -g -k -X GET "%url%%participant_user_id%/telematics-connection/%telematic_connection_id%?api_key=%api_key%"
timeout /t 30
#!/bin/bash
# Use your API key in the `api_key` parameter.
url=https://oa.route4me.com/api/v1/user/participants/
api_key=1111111111111111111111111111111111111111111111111111111111111111
participant_user_id=A2F8FE5085EA4412BE9B7AB00665F0E1
telematic_connection_id=A25C3B365005429490B4D08345BC5DDA
# The example demonstrates the process of getting a participant's telematics connection.
curl -o User_participant_telematics_connection_get_RESPONSE.json -H "Accept: application/json" -g -k -X GET "$url$participant_user_id/telematics-connection/$telematic_connection_id?api_key=$api_key"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/user/participants/{participant_user_id}/telematics-connection/{telematic_connection_id}
You can expect this API response:
{
"data": {
"is_active": true,
"email": null,
"name": "Test Connection",
"updated_at": 1533044746,
"last_name": null,
"api_key": "33333333333333333333333333333333",
"telematics_connection_id": "22222222222222222222222222222222",
"user_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"virtual_email": "[email protected]",
"telematics_id": 10020,
"device_position_refresh_rate": 60,
"telematics_connection_token": "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR",
"vendor_name": null,
"vendor_id": null,
"created_at": 1532651489,
"first_name": null,
"virtual_password": "ooooooooooo",
"company_name": null,
"telematics_api_token": "77777777777777777777777777777777"
},
"metadata": {
"user_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
}
}
Update a Telematics Connection
Updates the description and refresh rate of a telematics connection.
See the sample input JSON data for this method.
PARAMETERS
Parameter | Parameter Type | Description | Data Type |
---|---|---|---|
telematic_ connection_id | path | Telematic connection ID | string |
participant_ user_id | path | Participant user ID | string |
original_api_key | query | Authorization by Route4Me key, for Route4Me users. | string |
x-original-api-key | header | Authorization by Route4Me key in the HTTP request header, for Route4Me users. | string |
api_key | query | Use the API with an API key without authorization. | string |
auth_token | query | The authorization token that will be given after signing in. | string |
x-auth-token | header | The authorization token that will be given after signing in. | string |
payload | body | JSON payload data | Model |
x-api-key | header | Use the API with an API key without authorization. | string |
As a guide, see this method’s JSON schema for its: - input parameters - response - payload data
An example for this language will be added in the future. For now, please see the other languages available for reference.
ECHO OFF
:: Use your API key in the `api_key` parameter.
SET url=https://oa.route4me.com/api/v1/user/participants/
SET api_key=1111111111111111111111111111111111111111111111111111111111111111
SET participant_user_id=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
SET telematic_connection_id=22222222222222222222222222222222
:: The example demonstrates the process of updating the name of a participant's telematics connection.
ECHO ON
curl -o User_participant_tc_update_name_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X PUT -d "@User_participant_tc_update_name_data.json" "%url%%participant_user_id%/telematics-connection/%telematic_connection_id%?api_key=%api_key%"
timeout /t 30
#!/bin/bash
# Use your API key in the `api_key` parameter.
url=https://oa.route4me.com/api/v1/user/participants/
api_key=1111111111111111111111111111111111111111111111111111111111111111
participant_user_id=A2F8FE5085EA4412BE9B7AB00665F0E1
telematic_connection_id=A25C3B365005429490B4D08345BC5DDA
# The example demonstrates the process of updating the name of a participant's telematics connection.
curl -o User_participant_tc_update_name_RESPONSE.json -H "Content-Type: application/json" -H "Accept: application/json" -g -k -X PUT -d "@User_participant_tc_update_name_data.json" "$url$participant_user_id/telematics-connection/$telematic_connection_id?api_key=$api_key"
echo "Finished..."
sleep 15
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
An example for this language will be added in the future. For now, please see the other languages available for reference.
HTTP Request
/user/participants/{participant_user_id}/telematics-connection/{telematic_connection_id}
You can expect this API response:
{
"data": {
"is_active": true,
"email": null,
"name": "Renamed Test Connection",
"updated_at": 1533124666,
"last_name": null,
"api_key": "33333333333333333333333333333333",
"telematics_connection_id": "22222222222222222222222222222222",
"user_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"virtual_email": "[email protected]",
"telematics_id": 10100,
"device_position_refresh_rate": 60,
"telematics_connection_token": "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR",
"vendor_name": "Route4Me",
"vendor_id": 9,
"created_at": 1532651489,
"first_name": null,
"virtual_password": "ooooooooooo",
"company_name": null,
"telematics_api_token": "77777777777777777777777777777777"
},
"metadata": {
"user_id": "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
}
}