Download OpenAPI specification:Download
VROMO is setting a new standard for integrating last-mile delivery management software into your technology mix. In addition to our best-in-class software for streamlining restaurant deliveries and improving customer engagement, our API-first approach means we consume our own public API in developing the VROMO interface. This gives your team access to the same API endpoints that we use internally and the ability to utilize the vast majority of VROMO's functionality to build custom add ons, create deep integrations to other products or extend your own platform to add VROMO functionality such as:
If you are integrating an ordering platform or Point of Sales (POS) and want a simple create and dispatch or if you are integrating with an existing delivery partner start with the Core steps for integrating with an ordering app or delivery partner section after the glossary below.
VROMO requests are authenticated by including an access_token
parameter in the url.
GET https://api.vromo.io/v2/graph?access_token=API_TOKEN
Note: You will need to replace API_TOKEN
with your API key.
You will find the API token for a particular group by logging into VROMO with the administrator role, clicking on your avatar in the top right corner of the screen, then selecting 'integrations'. If you want to create and manage jobs in sub-teams in a company structure, it is best practice to set up your team structure first and use separate API keys in your integration.
JOB: An individual delivery. Jobs comprise of one or more tasks.
TASK: Tasks are the individual units of progress in a job, and can be applied in flexible ways depending on your purpose. For a typical restaurant delivery, you might create 4 tasks - Arrive at the restaurant, leave the restaurant, arrive at the customer and leave the customer. Note that in addition to the tasks, every job also has a global 'Start job' and 'Complete job' status that is presented to the driver.
SITE: An individual location from which deliveries will be collected. If you apply a site to a job you will be able to use site to filter the job list and reports in the VROMO interface. You can also use the site record to store default preferences for campaign and policy for a particular restaurant.
BLUEPRINT: A blueprint is used to simplify the job creation process. Jobs can be created on a blueprint and a site(typically with a blueprint attached). The blueprint transforms the most basic data needed to create a job (i.e. pickup location, customer address, customer latitude and longitude, customer contact details) into a more complete job according to how the blueprint is set up.
POLICY: A policy is a collection of rules that determine which drivers are offered unassigned jobs. When you create a job with a policy (optional), the job will automatically be offered to all drivers that adhere to the set of rules in that policy until a driver accepts the job, or the job is cancelled.
CAMPAIGN: A jobs campaign field determines the customer engagement settings for the job. These include the wording of the SMS, and the look and feel of the driver tracking page including any video and promotional content to be included.
JOB ATTRIBUTE: Since there is no universal set of fields that delivery teams like to add to a job, VROMO enables you to add any arbitrary number of additional fields using key:value pairs that we call 'job attributes'.
If you are starting in the same place as most ordering app and website integrations your first step will be using the VROMO API to create and view Jobs. If you are trying to assign the driver from your own system you'll also want to dispatch them at this point.
To create an order ingestion integration it is first necessary to decide if orders should be created on Sites or Blueprints (a.k.a Job Templates). Sites are optimal for frequent orders for brick and mortar stores such as restaurants. Blueprints are often preferred for infrequent orders (e.g. a once off order for a restaurant) or orders where the pickup location is not a brick and mortar location.
To create a Job on a Site we recommend creating a Site with the `external` field populated. This allows integrations to create Jobs on Sites based on a third party's id for the store/restaurant. Following this, use the Site's external id to create a Job.
An alternative strategy is to always attempt to create the Job on a Site using the Site's External id and if the request returns a 404 error, create the Site, then try recreate the Job again.
Providing the `external` field for Sites and Jobs ensures idempotency therefore if either are created with an external id that already exists the existing item will be returned and not recreated.
To create a Job on a Blueprint you must have a known Blueprint (a.k.a Job Template) id stored.
Webhooks receive notifications and status updates as jobs are updated and completed in the system. You can use the webhook endpoints to manage your webhooks. A successful integration should require only a single registered webhook to handle all job updates. The easiest way to implement them is to then treat every update for a particular job ID as a trigger to use the jobs endpoint to fetch the current status of all the fields of interest as the webhook itself contains just the updated information, not the entire state of the job.
If you need to cancel a previously created job (e.g. your customer has cancelled an order) you can use the update job endpoint to post a cancellation.
If you are integrating with a third-party delivery team using VROMO or are an ordering app linking to self-delivery teams then you probably won't send the jobs to individual drivers since you aren't responsible for those drivers. You might have an agreement to include a particular dispatch Policy on the job when you create it or to use a Site ID in order to assist the delivery team to automate the dispatch at their end however.
If you are intending to dispatch the jobs from within your system however, you have two options you can either allow your users to manually select a driver and then dispatch the job to them, or you can create the job with dispatch Policy, which will then start offering the job to rules. To dispatch to a specific driver, you just need to issue a Dispatch event for the job to be dispatched with the Vehicle ID of the driver to receive the job and with the type 'dispatched'. You'll see in the dispatches section the full details of issuing 'dispatched' Dispatches along with recalling jobs and manually marking them complete.
Fetch an array of jobs. The limit of jobs returned is 2500. Use the filtering parameters to reduce the amount.
:id required | integer <int64> The Job's ID |
access_token required | string API access token |
_all_id__in | string Example: _all_id__in=242697673588737,120968299200513 filter by Job Ids. A comma separated list (with no spaces) of Job IDs |
_all_group__in | string Example: _all_group__in=13433822412801,163469279117313 filter by Group Ids. A comma separated list (with no spaces) of Group IDs |
_all_site__exists_id__in | string Example: _all_site__exists_id__in=241264736108545,249838391721985 filter by Site Ids. A comma separated list (with no spaces) of Site IDs |
_all_created__between | string Example: _all_created__between=[1571097600000..1571616000000) millisecond timestamps in interval notation |
_all_finished__between | string Example: _all_finished__between=[1571097600000..1571616000000) millisecond timestamps in interval notation |
_all_dispatches__include | boolean Example: _all_dispatches__include=false
|
_all_route__include | boolean Example: _all_route__include=false
|
_all_attr__include | boolean Example: _all_attr__include=false
|
_all_issues__include | boolean Example: _all_issues__include=false
|
_all_chat__include | boolean Example: _all_chat__include=false
|
_size__lte | integer Example: _size__lte=350 Integer number of Jobs to be returned, max 2500 |
_all_created__order | string Enum: "asc" "desc" "any" Example: _all_created__order=asc
|
_all_finished__order | string Enum: "asc" "desc" "any" Example: _all_finished__order=desc
|
_all_status__in | string Enum: "dispatched" "underway" "cancelled" "completed" "failed" "open" Example: _all_status__in=dispatched,underday,open filter by Job |
OK
Not found
curl -X GET 'https://api.vromo.io/v2/graph/role/jobs?access_token={{AUTH_TOKEN}}'
{- "items": [
- {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": { },
- "ratio": 0
}
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": { },
- "ratio": 0
}
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}
]
}
Fetch a single Job by Job ID
:id required | integer <int64> The Job's ID |
access_token required | string API access token |
group__in | integer <int64> Example: group__in=13433822412800 test if this Job exists under the Group Id provided. Returns the Job and Status Code 200 if true, or Status Code 404 if false. |
created__between | string Example: created__between=[1578700800000..1579478400000) test if this Job was created between the two millisecond timestamps provided in interval notion. Returns the Job and Status Code 200 if true, or Status Code 404 if false. |
finished__between | string Example: finished__between=[1578700800000..1579478400000) test if this Job was completed between the two millisecond timestamps provided in interval notion. Returns the Job and Status Code 200 if true, or Status Code 404 if false. |
dispatches__include | boolean Example: dispatches__include=false
|
route__include | boolean Example: route__include=false
|
attr__include | boolean Example: attr__include=false
|
issues__include | boolean Example: issues__include=false
|
chat__include | boolean Example: chat__include=false
|
status__in | string Enum: "dispatched" "underway" "cancelled" "completed" "failed" "open" Example: status__in=dispatched,underday,open comma separated list of Job Statuses to filter by. Test if this Job has a status in the list provided. Returns the Job and Status Code 200 if true, or Status Code 404 if false. |
OK
Not found
curl -X GET 'https://api.vromo.io/v2/graph/role/jobs/:id?access_token={{AUTH_TOKEN}}'
{- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": { },
- "ratio": 0
}
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": { },
- "ratio": 0
}
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}
This request updates a Job. For example, you may wish to cancel a Job or record an issue with a Job.
:id required | integer <int64> the Job's ID |
access_token required | string API access token |
Updating a Job's details
name | string user defined Job name |
status | string Value: "cancelled" cancel Job |
group | integer <int64> Group Id of Group the Job should be moved to |
site | object Nullable |
cancelled | object Nullable cancellation information |
campaign | object Nullable |
policy | object Nullable |
dispatches | object This set of objects determines what driver the Job is assigned to and the status of the job's progress. |
contact | object |
attr | Array of objects key/value pairs of extra details to provide dispatch operators and/or delivery drivers |
tasks | Array of objects details of each task drivers must completed |
notes | object |
lines | Array of objects List of job line items to be delivered. |
instructions | string Delivery instructions from end customer for the driver. |
issues | object |
chat | Array of objects |
consignment | object |
payable | object |
job updated
bad request
{- "tasks": [
- {
- "zone": {
- "name": "Arrive at Cafe Example",
- "address": "35 Example Way",
- "coords": {
- "lat": -31.977559,
- "lon": 115.816393
}
}
}, - {
- "zone": {
- "name": "Depart Cafe Example",
- "address": "35 Example Way",
- "coords": {
- "lat": -31.977559,
- "lon": 115.816393
}
}
}, - {
- "zone": {
- "name": "Deliver to Customer",
- "address": "123 Fake St",
- "coords": {
- "lat": -32.977559,
- "lon": 114.816393
}
}, - "timeframe": {
- "by": 1559838800000
}
}
]
}
{- "id": 200558002405377,
- "merge": "update",
- "name": "My job name",
- "status": "cancelled",
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "cancelled": {
- "note": "string",
- "reason": {
- "id": 25203
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com"
}, - "attr": {
- "items": [
- {
- "key": "Driver instructions",
- "value": "Call mobile on arrival"
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store",
- "radius": 50.5
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com"
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "constraints": [
- "manual",
- "photo"
], - "ix": 0
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string"
}
]
}, - "issues": {
- "items": [
- {
- "type": "customer_unreachable"
}
]
}, - "chat": [
- {
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}
], - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com"
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com"
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}
}
Create Jobs on a Site
:id required | string Example: external:a1b2c3d4e5f6g7h Use your system's store id as an external id to create Jobs in VROMO. This external id must be prefixed with |
access_token required | string API access token |
Create Jobs on a Site
name | string user defined job name |
contact | object |
instructions | string Extra details for job delivery |
lines | Array of objects List of job line items to be delivered. |
external | string external id for the Job. i.e. the id from a 3rd party that can be used to fetch/patch the Job. May also be used for reporting and payroll purposes. Note that |
group | integer <int64> group id of sub-group job should be created on |
payable | object currency, tip, order value in lowest denomination for the purpose of transfering between APIs |
attr | Array of objects key/value pairs of extra details to provide dispatch operators and/or delivery drivers |
tasks | Array of objects details of each task drivers must completed |
[- {
- "name": "Job Created on Site",
- "contact": {
- "name": "Andy",
- "phone": "+353830000000",
- "email": "andy@vromo.io"
}, - "external": "vromo_a1b2c3d4e5f6g7h8i9",
- "lines": [
- {
- "title": "Quarter pounder burger",
- "quantity": 2
}, - {
- "title": "Cola",
- "quantity": 1
}
], - "instructions": "No-contact delivery: please leave at the doorstep",
- "payable": {
- "currency": "usd",
- "order": 4050,
- "tip": 300
}, - "attr": [
- {
- "key": "key1",
- "value": "value1"
}, - {
- "key": "key2",
- "value": "value2"
}
], - "tasks": [
- {
- "timeframe": {
- "by": 1578585415881
}
}, - {
- "timeframe": {
- "by": 1578589038037
}, - "zone": {
- "name": "Andy",
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}
}
}
]
}
]
{- "items": [
- {
- "name": "My Job",
- "campaign": null,
- "contact": {
- "name": "Andy",
- "email": "andy@vromo.io",
- "phone": "+353832224444"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "id": 250187348180993,
- "policy": null,
- "attr": {
- "items": [
- {
- "created": 1578505423888,
- "id": 250187348182273,
- "key": "key1",
- "subject": 250187348180993,
- "value": "value1"
}, - {
- "created": 1578505423888,
- "id": 250187348182529,
- "key": "key2",
- "subject": 250187348180993,
- "value": "value2"
}
]
}, - "created": 1578505423888,
- "group": 13433822412801,
- "site": {
- "id": 241264736108545
}, - "tasks": [
- {
- "constraints": [
- "region"
], - "created": 1578505423888,
- "id": 250187348181249,
- "ix": 0,
- "timeframe": {
- "by": 1578509023314
}, - "zone": {
- "address": "23 O'Connell Street, Dublin, Ireland",
- "coords": {
- "lat": 53.350786,
- "lon": -6.260277
}, - "name": "Arrive at Andy's Cafe 12",
- "type": "arrival"
}
}, - {
- "constraints": [
- "manual",
- "photo"
], - "created": 1578505423888,
- "id": 250187348181505,
- "ix": 1,
- "zone": {
- "address": "23 O'Connell Street, Dublin, Ireland",
- "coords": {
- "lat": 53.350786,
- "lon": -6.260277
}, - "name": "Depart customer Andy's Cafe 12",
- "type": "departure"
}
}, - {
- "constraints": [
- "region"
], - "created": 1578505423888,
- "id": 250187348181761,
- "ix": 2,
- "zone": {
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}, - "name": "Arrive at Restaurant",
- "type": "arrival"
}
}, - {
- "constraints": [
- "region",
- "signature"
], - "created": 1578505423888,
- "id": 250187348182017,
- "ix": 3,
- "timeframe": {
- "by": 1578512623314
}, - "zone": {
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}, - "name": "Depart Restaurant",
- "type": "departure"
}
}
]
}
]
}
Create Jobs on a Blueprint
:id required | integer <int64> The Blueprint's ID |
access_token required | string API access token |
Create Jobs on a Blueprint
name | string user defined job name |
contact | object |
instructions | string Extra details for job delivery |
lines | Array of objects List of job line items to be delivered. |
external | string external id for the Job. i.e. the id from a 3rd party that can be used to fetch/patch the Job. May also be used for reporting and payroll purposes. Note that |
group | integer <int64> group id of sub-group job should be created on |
payable | object currency, tip, order value in lowest denomination for the purpose of transfering between APIs |
attr | Array of objects key/value pairs of extra details to provide dispatch operators and/or delivery drivers |
tasks | Array of objects details of each task drivers must completed |
[- {
- "name": "Job Created on Blueprint",
- "contact": {
- "name": "Andy",
- "phone": "+353830000000",
- "email": "andy@vromo.io"
}, - "external": "vromo_a1b2c3d4e5f6g7h8i9",
- "lines": [
- {
- "title": "Quarter pounder burger",
- "quantity": 2
}, - {
- "title": "Cola",
- "quantity": 1
}
], - "instructions": "No-contact delivery: please leave at the doorstep",
- "payable": {
- "currency": "usd",
- "order": 4050,
- "tip": 300
}, - "attr": [
- {
- "key": "key1",
- "value": "value1"
}, - {
- "key": "key2",
- "value": "value2"
}
], - "tasks": [
- {
- "timeframe": {
- "by": 1578585415881
}, - "zone": {
- "name": "Andy's Cafe",
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}
}
}, - {
- "timeframe": {
- "by": 1578589038037
}, - "zone": {
- "name": "Andy",
- "address": "3, O'Connell Street, Dublin, Ireland",
- "coords": {
- "lat": 53.351322,
- "lon": -6.260629
}
}
}
]
}
]
{- "items": [
- {
- "name": "My Job",
- "campaign": null,
- "contact": {
- "name": "Andy",
- "email": "andy@vromo.io",
- "phone": "+353832224444"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "id": 250187348180993,
- "policy": null,
- "attr": {
- "items": [
- {
- "created": 1578505423888,
- "id": 250187348182273,
- "key": "key1",
- "subject": 250187348180993,
- "value": "value1"
}, - {
- "created": 1578505423888,
- "id": 250187348182529,
- "key": "key2",
- "subject": 250187348180993,
- "value": "value2"
}
]
}, - "created": 1578505423888,
- "group": 13433822412801,
- "tasks": [
- {
- "constraints": [
- "region"
], - "created": 1578505423888,
- "id": 250187348181249,
- "ix": 0,
- "timeframe": {
- "by": 1578509023314
}, - "zone": {
- "address": "23 O'Connell Street, Dublin, Ireland",
- "coords": {
- "lat": 53.350786,
- "lon": -6.260277
}, - "name": "Arrive at Andy's Cafe 12",
- "type": "arrival"
}
}, - {
- "constraints": [
- "manual",
- "photo"
], - "created": 1578505423888,
- "id": 250187348181505,
- "ix": 1,
- "zone": {
- "address": "23 O'Connell Street, Dublin, Ireland",
- "coords": {
- "lat": 53.350786,
- "lon": -6.260277
}, - "name": "Depart customer Andy's Cafe 12",
- "type": "departure"
}
}, - {
- "constraints": [
- "region"
], - "created": 1578505423888,
- "id": 250187348181761,
- "ix": 2,
- "zone": {
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}, - "name": "Arrive at Restaurant",
- "type": "arrival"
}
}, - {
- "constraints": [
- "region",
- "signature"
], - "created": 1578505423888,
- "id": 250187348182017,
- "ix": 3,
- "timeframe": {
- "by": 1578512623314
}, - "zone": {
- "address": "25, Phibsborough Tower, Dublin, Ireland",
- "coords": {
- "lat": 53.355473,
- "lon": -6.270598
}, - "name": "Depart Restaurant",
- "type": "departure"
}
}
]
}
]
}
Dispatch Jobs to drivers. Update the dispatch status of a Job, setting it to underway
, started
, or completed
. Change assigned driver by reassigning, or recall the Job back into the unassigned queue.
Update the dispatch status of a Job. Change assigned driver by assigning or recalling and update progress by starting or completing the Job as a whole
:id required | integer <int64> The Job's Id |
access_token required | string API access token |
vehicle | object (Vehicle) |
type required | string Enum: "returned" "dispatched" "underway" "closed" "cancelled" Job's dispatch status. |
[- {
- "vehicle": {
- "id": 241273251741697
}, - "type": "dispatched"
}
]
{- "type": "create",
- "items": [
- {
- "audit": {
- "type": "dispatcher",
- "user": {
- "id": 13433822413057
}
}, - "created": 1580742435604,
- "id": 286838548234241,
- "job": {
- "id": 250187348180993
}, - "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}
Fetch all available sites. This may be needed if creating Jobs on Sites.
access_token required | string API access token |
curl -X GET 'https://api.vromo.io/v2/graph/role/sites?access_token={{AUTH_TOKEN}}'
{- "items": [
- {
- "contact": {
- "address": "123 Typical Restaurant St, City, Country",
- "name": "Typical Restaurant Name"
}, - "coords": {
- "lat": -31.977559,
- "lon": 115.816393
}, - "policy": {
- "id": 78483343081729
}, - "blueprint": {
- "id": 167757185712129
}, - "campaign": {
- "id": 78481995759617
}, - "group": 13433822412801,
- "radius": 50.5,
- "id": 211735804231681,
- "external": "211735804231681",
- "ingest": "qpcm_jd_cvgputs5j_vu@integrate.spatula.io"
}, - {
- "contact": {
- "address": "Another Street, City, Country",
- "name": "John's Coffee Shop"
}, - "coords": {
- "lat": -34.269364,
- "lon": 112.023487
}, - "blueprint": {
- "id": 167757185712129
}, - "campaign": {
- "id": 78481995759617
}, - "group": 13433822412801,
- "radius": 25,
- "id": 241264736108545,
- "external": "andysRestaurant1",
- "ingest": "t82kct8n9p7s44kf9uah@integrate.spatula.io"
}
]
}
Create Sites.
access_token required | string API access token |
Creating Sites
policy | object |
blueprint | object |
campaign | object |
contact | object |
coords | object (Coords) |
radius | number <double> Nullable radius around the Site used for geo-fencing and auto swiping |
group | integer <int64> specify a subteam the Site should be created under |
external | string specify an external id which may be used to fetch this site and create jobs on it |
[- {
- "contact": {
- "name": "Demo Restaurant",
- "address": "123 Demo Street, Chicago, USA"
}, - "coords": {
- "lat": 41.875842,
- "lon": -87.631746
}, - "external": "company_abcdefghij"
}
]
{- "items": [
- {
- "blueprint": {
- "id": 150690140209407
}, - "calculator": null,
- "campaign": null,
- "contact": {
- "address": "16 O'Connell Street, Dublin, Ireland",
- "name": "Andy's Cafe"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "group": 13433822412801,
- "id": 123716323753985,
- "ingest": "t3d9p2wus8udbh82r6gp@integrate.spatula.io",
- "policy": null,
- "radius": null,
- "external": "andysCafe1"
}
]
}
Fetch a Site.
:id required | integer <int64> The Site's ID |
access_token required | string API access token |
curl -X GET 'https://api.vromo.io/v2/graph/role/sites/:id?access_token={{AUTH_TOKEN}}'
{- "blueprint": {
- "id": 150690140209407
}, - "calculator": null,
- "campaign": null,
- "contact": {
- "address": "16 O'Connell Street, Dublin, Ireland",
- "name": "Andy's Cafe"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "group": 13433822412801,
- "id": 123716323753985,
- "ingest": "t3d9p2wus8udbh82r6gp@integrate.spatula.io",
- "policy": null,
- "radius": null,
- "external": "andysRestaurant1"
}
Update a Site.
:id required | integer <int64> The Site's ID |
access_token required | string API access token |
Updating Sites
policy | object |
blueprint | object |
campaign | object |
contact | object |
coords | object (Coords) |
radius | number <double> Nullable radius around the Site used for geo-fencing and auto swiping |
group | integer <int64> specify a subteam the Site should be created under |
{- "contact": {
- "name": "Demo Restaurant",
- "address": "123 Demo Street, Chicago, USA"
}
}
{- "blueprint": {
- "id": 150690140209407
}, - "contact": {
- "address": "16 O'Connell Street, Dublin, Ireland",
- "name": "Andy's Cafe"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "group": 13433822412801,
- "id": 123716323753985
}
Delete a Site.
:id required | integer <int64> The Site's ID |
access_token required | string API access token |
curl -X DELETE 'https://api.vromo.io/v2/graph/role/sites/:id?access_token={{AUTH_TOKEN}}'
{- "blueprint": {
- "id": 150690140209407
}, - "calculator": null,
- "campaign": null,
- "contact": {
- "address": "16 O'Connell Street, Dublin, Ireland",
- "name": "Andy's Cafe"
}, - "coords": {
- "lat": 53.35071590514363,
- "lon": -6.260483386319265
}, - "group": 13433822412801,
- "id": 123716323753985,
- "ingest": "t3d9p2wus8udbh82r6gp@integrate.spatula.io",
- "policy": null,
- "radius": null,
- "external": "123716323753985"
}
Fetch all Groups.
access_token required | string API access token |
_all_id__in | string Example: _all_id__in=242697673588737,120968299200513 A comma separated list (with no spaces) of Group IDs |
curl -X GET 'https://api.vromo.io/v2/graph/role/groups?access_token={{AUTH_TOKEN}}'
{- "items": [
- {
- "name": "Typical Restaurant Name",
- "group": 13433822412801,
- "id": 211735804231681
}
]
}
VROMO, and deliveries in general, are event driven. There are many occasions where you want to receive live updates as a Job progresses. You are able to register and manage webhooks in VROMO using the Webhooks endpoint.
Once you have registered a webhook, all updates are parsed in an efficient format that includes the type of update and the actual updates.
Diffing changes and updating your data directly can be a bit fiddly in practice, so typically the simplest way to implement webhooks is to treat any update for a particular Job as a notification that something has changed and use it trigger a fetch of the info of interest to your system from the Jobs endpoint.
Below are examples of webhook events received from VROMO. Keep in mind that these are for example purposes only:
the recommended method for implementing webhooks is to use every update for a particular Job as a trigger to refresh all your fields of interest for that Job using the Jobs endpoint
{
"type": "create",
"items": [
{
"created": 1540363746530,
"tracking": "https://vrom.io/M8_Sp27zG",
"contact": {
"phone": "+61466601706",
"name": "Andrew Walker",
"email": ""
},
"name": "Job name",
"campaign": {
"id": 0
},
"id": 6059855129,
"attr": {
"items": [
{
"created": 1540363746530,
"id": 6059855120,
"value": "500",
"key": "Some info:"
},
{
"created": 1540363746530,
"id": 6059855121,
"value": "Phone",
"key": "More Info"
},
{
"created": 1540363746530,
"id": 6059855122,
"value": "1",
"key": "Something else"
}
]
},
"tasks": {
"items": [
{
"zone": {
"address": "High Wycombe WA, Australia",
"created": 1540363746530,
"name": "@Andrew Walker",
"id": 6059855130,
"radius": 50,
"coords": {
"lon": 116.00299999999993,
"lat": -31.942
}
},
"created": 1540363746530,
"id": 6059855119,
"ix": 0
}
]
},
"group": 6059562777
}
]
}
{
"type": "update",
"items": [
{
"dispatches": {
"items": [
{
"created": 1540363831864,
"id": 6059861396,
"job": {
"id": 6059855129
},
"type": "dispatched",
"vehicle": {
"id": 6059834126
}
}
]
},
"id": 6059855129,
"status": "dispatched"
}
]
}
{
"type": "update",
"items": [
{
"dispatches": {
"items": [
{
"created": 1540363852872,
"id": 6059861757,
"job": {
"id": 6059855129
},
"type": "underway",
"vehicle": {
"id": 6059834126
}
}
]
},
"id": 6059855129,
"status": "underway"
}
]
}
{
"type": "update",
"items": [
{
"progress": 1,
"id": 6059855129,
"tasks": {
"type": "update",
"items": [
{
"id": 6059855119,
"completed": {
"time": 1540363899240
}
}
]
}
}
]
}
{
"type":"update","items":[{"audit":{"user":{"id":13433822413057}},"cancelled":{"audit":{"type":"dispatcher","user":{"id":13433822413057}},"created":1628094452633,"note":"","reason":{"created":1530282928000,"id":25100,"name":"Delivery outside radius","type":"cancelled"}},"finished":1628094452634,"id":1062653843521540,"merge":"update","status":"cancelled"}]
}
{
"type": "update",
"items": [
{
"dispatches": {
"items": [
{
"created": 1540363929224,
"id": 6059863172,
"job": {
"id": 6059855129
},
"type": "closed",
"vehicle": {
"id": 6059834126
}
}
]
},
"id": 6059855129,
"status": "completed"
}
]
}
This request lists webhooks associated with your account.
access_token required | string API access token |
_all_id__in | string Example: _all_id__in=242697673588737,120968299200513 A comma separated list (with no spaces) of Webhook IDs |
OK
invalid input, object invalid
curl -X GET 'https://api.vromo.io/v2/graph/role/webhooks?access_token={{AUTH_TOKEN}}'
[- {
- "items": [
- {
- "created": 1560176730000,
- "id": 600000000,
- "event": "role/jobs",
- "group": 600000001,
}, - {
- "created": 1560176730200,
- "id": 600000002,
- "event": "role/jobs",
- "group": 600000003,
}
]
}
]
This request allows you to set up a webhook on your server or create a temporary webhook URL using a third party service. Note that one webhook is enough to receive all necessary job updates. Do not register new webhooks every time you create a new job. If your webhook URL and API token are valid, the request will be successful and return a 200 series response. You will subsequently be able to view your newly created webhook using the 'List Webhooks' endpoint.
access_token required | string API access token |
Create webhook payload
event | string Value: "role/jobs"
|
target | string <url> url of webhook to send events |
invalid input, object invalid
[
]
{- "items": [
- {
- "created": 1578933867850,
- "event": "role/jobs",
- "group": 13433822412801,
- "id": 257206974054401,
}
]
}
Fetch a webhook
:id required | integer <int64> the |
access_token required | string API access token |
curl -X GET 'https://api.vromo.io/v2/graph/role/webhooks/:id?access_token={{AUTH_TOKEN}}'
{- "created": 1578473640400,
- "id": 257206974054401,
- "event": "role/jobs",
- "group": 13433822412801,
}
This request deletes a webhook and will unsubscribe it from future job events.
:id required | integer <int64> the |
access_token required | string API access token |
invalid input, object invalid
curl -X DELETE 'https://api.vromo.io/v2/graph/role/webhooks/:id?access_token={{AUTH_TOKEN}}'
{- "created": 1578473640400,
- "id": 257206974054401,
- "event": "role/jobs",
- "group": 13433822412801,
}
All actions related to drivers and vehicles are done through the vehicles
endpoints. You can think of the driver as a user in the system and the vehicle as the driver's role in a team that gives them the ability to receive jobs. Through this endpoint you can fetch and create vehicles with a driver. There exists a many to one relationship between vehicles and drivers i.e. a driver can be thought of as an individual user who may belong to multiple vehicles.
This request fetches the vehicle's information and the corresponding driver's details.
access_token required | string API access token |
_all_id__in | string Example: _all_id__in=242697673588737,120968299200513 A comma separated list (with no spaces) of Vehicle IDs |
_all_offers__include | string Example: _all_offers__include=true
|
curl -X GET 'https://api.vromo.io/v2/graph/role/vehicles?access_token={{AUTH_TOKEN}}'
{- "items": [
- {
- "driver": {
- "created": 1559838800000,
- "contact": {
- "name": "Joe Bloggs",
- "phone": "+10123456789",
- "email": "joebloggs@example.com"
}, - "apiHost": "api.vromo.io",
- "payment": {
- "paypal": "string"
}, - "id": 178127709147294,
- "username": "USER178127709147294",
}, - "external": "company_1234567890",
- "name": "Joe Bloggs' Vehicle",
- "id": 200878775402497,
- "group": 163469279117313,
- "offers": {
- "items": [
- {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}, - "ratio": 0
}
]
}, - "stages": { },
- "cancelled": {
- "note": "string",
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}, - "ratio": 0
}
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}
]
}
}
]
}
Create Vehicles with drivers.
access_token required | string API access token |
Vehicle to create
name | string user defined vehicle name |
group | integer <int64> group id the Vehicle should exists under |
external | string external id for the Vehicle. i.e. the id from a 3rd party that can be used to fetch/patch the Vehicle. May also be used for reporting and payroll purposes. Note that |
driver | object |
invalid input, object invalid
[- {
- "name": "Vehicle Name",
- "group": 13433822412801,
- "driver": {
- "contact": {
- "name": "Driver Name",
- "email": "driver@gmail.com",
- "phone": "+12223335555"
}
}
}
]
{- "items": [
- {
- "created": 1579540672479,
- "driver": {
- "apiHost": "api.vromo.io",
- "contact": {
- "email": "fakedriver@gmail.com",
- "name": "Driver Name",
- "phone": "+12223335555"
}, - "created": 1579540672481,
- "id": 267148861128705
}, - "group": 13433822412801,
- "id": 267148861095937,
- "name": "Vehicle Name"
}
]
}
This request fetches the vehicle's information and the corresponding driver's details.
:id required | integer <int64> the |
access_token required | string API access token |
curl -X GET 'https://api.vromo.io/v2/graph/role/vehicles/:id?access_token={{AUTH_TOKEN}}'
{- "availability": {
- "items": [
- {
- "created": 1559336378000,
- "id": 6423669297,
- "type": "available"
}
]
}, - "points": {
- "items": [
- {
- "heading": 172.4227160871494,
- "created": 1559336777000,
- "subject": 178127709192304,
- "reported": 1559838801998,
- "location": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "id": 182349571883009,
- "speed": 0.39792680740356456
}
]
}, - "driver": {
- "created": 1559838800000,
- "contact": {
- "name": "Joe Bloggs",
- "phone": "+10123456789",
- "email": "joebloggs@example.com"
}, - "apiHost": "api.vromo.io",
- "payment": {
- "paypal": "string"
}, - "id": 178127709147294,
- "username": "USER178127709147294",
}, - "external": "company_1234567890",
- "name": "Joe Bloggs' Vehicle",
- "id": 200878775402497,
- "group": 163469279117313,
- "offers": {
- "items": [
- {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}, - "ratio": 0
}
]
}, - "stages": { },
- "cancelled": {
- "note": "string",
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- {
- "comment": "string",
- "created": 1559838800000,
- "id": 6423669000,
- "job": {
- "id": 5788549471,
- "name": "My job name",
- "status": "open",
- "created": 153173990000,
- "finished": 153174000000,
- "group": 6417500000,
- "site": {
- "id": 200558002405377
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "offered": {
- "items": [
- {
- "driver": {
- "id": 241273251758081
}, - "group": 13433822412801,
- "id": 241273251741697,
- "name": "Andy's Vehicle"
}
]
}, - "route": {
- "fetched": 0,
- "items": [
- {
- "distance": 0,
- "duration": 0,
- "ix": 0,
- "polyline": {
- "encoded": "string"
}, - "job": 0,
- "task": 0
}
]
}, - "stages": { },
- "cancelled": {
- "reason": {
- "created": 153174000000,
- "id": 25203,
- "name": "string",
- "type": "cancelled"
}
}, - "campaign": {
- "id": 78481995759617
}, - "policy": {
- "id": 78483343081729
}, - "dispatches": {
- "items": [
- {
- "created": 153173990000,
- "id": 6422217999,
- "type": "dispatched",
- "vehicle": {
- "id": 241273251741697
}
}
]
}, - "instructions": "Contactless delivery - leave at the door please",
- "lines": {
- "items": [
- {
- "title": "Pizza",
- "quantity": 2
}
]
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "attr": {
- "items": [
- {
- "key": "Customer instructions",
- "value": "Call mobile on arrival",
- "id": 120968299201793,
- "subject": 120968299200513
}
]
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 252911835742209,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "arrival"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 266818940322305,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}, - "notes": {
- "items": [
- {
- "contents": "string",
- "created": 1559336347602,
- "id": 5788549470,
- "source": 0,
- "subject": 0,
- "visible": true
}
]
}, - "issues": {
- "items": [
- {
- "created": 1559336347602,
- "id": 5788549470,
- "type": "customer_unreachable"
}
]
}, - "chat": {
- "created": 1559336378000,
- "from": {
- "apiHost": "api.vromo.io",
- "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "created": 1559336378000,
- "id": 241273251758081,
- "payment": {
- "paypal": "string"
}, - "username": "USER241273251758081"
}, - "id": 242711551787009,
- "message": "Hi dispatch, I can not find the customer's house, could you assist, please?"
}, - "consignment": {
- "campaign": {
- "id": 78481995759617
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "progress": 0,
- "ratings": {
- "items": [
- { }
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}, - "ratio": 0
}
]
}, - "site": {
- "id": 200558002405377
}, - "tasks": {
- "items": [
- {
- "zone": {
- "address": "123 Store/Customer's Street, Town, City, Postcode",
- "name": "Depart store",
- "id": 5788549470,
- "radius": 50.5,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "type": "Depart store"
}, - "contact": {
- "address": "123 street name, town, country, postcode",
- "phone": "+10123456789",
- "name": "Joe Bloggs",
- "email": "joebloggs@example.com",
- "methods": [
- "sms"
]
}, - "id": 5788549470,
- "completed": {
- "time": 1559336347602,
- "coords": {
- "lat": 61.25387,
- "lon": -0.53421603
}, - "by": {
- "id": 241273251741697
}
}, - "timeframe": {
- "from": 1559336370000,
- "by": 1559336380000
}, - "ix": 0
}
]
}, - "uploads": {
- "items": [
- {
- "category": "photo",
- "id": 6423669000,
- "url": "string"
}
]
}
}, - "payable": {
- "currency": "usd",
- "order": 20050,
- "tip": 125
}
}
]
}
}
Delete a Vehicle.
:id required | integer <int64> The Vehicle's ID |
access_token required | string API access token |
curl -X DELETE 'https://api.vromo.io/v2/graph/role/vehicles/:id?access_token={{AUTH_TOKEN}}'
{- "driver": {
- "id": 200253569761281
}, - "group": 13433822412801,
- "id": 200253569695745,
- "name": "Vehicle Name"
}
Update a Vehicle.
:id required | integer <int64> The Vehicle's ID |
access_token required | string API access token |
Updating a Vehicle
name | string user defined Vehicle name |
group | integer <int64> group id the Vehicle should exist under |
external | string external id for the Vehicle. i.e. the id from a 3rd party that can be used to fetch/patch the Vehicle. May also be used for reporting and payroll purposes. Note that |
{- "name": "Demo Vehicle"
}
{- "id": 200878775402497,
- "name": "John's Vehicle",
- "group": 163469279117313
}
Update a Vehicle's location for a given time if provided, or now if not. This may be needed for unconventional Vehicles such as drones.
:id required | integer <int64> The Vehicle's ID |
access_token required | string API access token |
Updating a Vehicle's location
location | object (Coords) |
reported | integer <int64> millisecond timestamp of when the Vehicle was at this coordinates. Omit |
[- {
- "location": {
- "lat": 53.355886,
- "lon": -6.273605
}
}
]
{- "items": [
- {
- "created": 1579008965326,
- "id": 258437371101185,
- "location": {
- "lat": 53.355886,
- "lon": -6.273605
}, - "reported": 1579008965326,
- "subject": 200878775402497
}
]
}