NAV
http

Introduction

The GSMtasks API is a RESTful web service for developers to programmatically interact with GSMtasks data, real-time delivery and task management and route optimization functionality.

The GSMtasks API is organized around REST. Every bit of data exchanged between clients and the API is JSON over HTTPS. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. You must authenticate for all requests.

The base URL for the GSMTasks API is https://gsmtasks.com/api/tasks/.

If you have questions about using the API, or have come across a bug you’d like to report, write us an email at info@gsmtasks.com.

Authentication

For clients to authenticate, the token key should be included in the Authorization HTTP header.

The key should be prefixed by the string literal “Token”, with whitespace separating the two strings.

Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

Unauthenticated responses that are denied permission will result in an HTTP 401 Unauthorized response with an appropriate WWW-Authenticate header.

WWW-Authenticate: Token

Obtaining authentication tokens

To obtain a authentication token the fallowing HTTP request has to be performed.

The request returns JSON structured like this:

{
  "account": "4368ec5d-9942-4c74-90f7-eea752a6e489",
  "token": "7e9917ffg57b043b9527711395c013761b2113c7",
  "accounts": [
    "4368ec5d-9942-4c74-90f7-eea752a6e489",
    "5941c788-f162-4ad0-a43a-4af82bcb30b6"
  ],
  "user": "https://gsmtasks.com/api/tasks/users/85410f5f-ec82-4148-ba78-5be5a79f0fb1/"
}

HTTP Request

POST https://gsmtasks.com/api/authenticate/

Query Parameters

Parameter Type Required Description
username String yes The email used during signup
password String yes The password set for that username

Errors

GSMtasks uses conventional HTTP response codes to indicate success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g. a required parameter was missing, a charge failed, etc.), and codes in the 5xx range indicate an error with GSMtasks’s servers.

Status code Status text Description
200 OK Everything worked as expected.
400 Bad Request Often missing a required parameter.
401 Unauthorized No valid API key provided.
402 Request Failed Parameters were valid but request failed.
404 Not Found The requested item doesn’t exist.
429 Too Many Requests Too many requests hit the API too quickly.
50* Server Errors Something went wrong on our end.

Accounts

This is an object representing your GSMtasks account and it’s settings. On signup an account is created for the user. It’s also possible to have access to other accounts through Role objects.

List Accounts

Returns a array of accounts that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "4368ec5d-9942-4c74-90f7-eea752a6e489",
        "url": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
        "name": "Fast Couriers",
        "slug": "fast-couriers",
        "timezone": "Europe/London",
        "country_code": "GB",
        "address": {
          "raw_address": "Piccadilly Circus, London, United Kingdom",
          "formatted_address": "Piccadilly Circus, London W1D 7ET, UK",
          "location": {
            "type": "Point",
            "coordinates": [
              -0.13457340000002205,
              51.5100974
            ]
          },
          "google_place_id": "ChIJwR8g_9MEdkgR_rI--wzfivA",
          "point_of_interest": "",
          "street": "Piccadilly Circus",
          "house_number": "",
          "apartment_number": "",
          "city": "London",
          "state": "",
          "postal_code": "W1D 7ET",
          "country": "United Kingdom",
          "country_code": "GB"
        },
        "managers": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/managers/",
        "workers": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/workers/",
        "task_duration": "00:05:00"
    }
]

GET https://gsmtasks.com/api/tasks/accounts/

Attributes

Attribute Type Description
id String Account unique identifier
url String Unique URL for the resource
name String Name of the account for easy reference
slug String Machine readable account identifier
timezone String Timezone name for dates and time
country_code  String ISO 2 country code
address Object Address object describing the location of the account
managers String URL for easy access to account managers
workers String URL for easy access to account workers
task_duration String Default task duration in the format of HH:MM:SS

Retrieve a specific Account

GET https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/

Create Account

Request to create a new account with the parameters provided

Example POST request JSON data:

{
    "account": {
        "name": "Fast Couriers",
        "timezone": "Europe/London",
        "country_code": "GB"
    },
    "user": {
        "first_name": "Tom",
        "last_name": "Smith",
        "email": "tom.smith@fast.uk",
        "phone": "+447700900132",
        "password": "password"
    }
}

The request returns JSON of the created Account structured like this:

{
    "account": {
        "id": "4368ec5d-9942-4c74-90f7-eea752a6e489",
        "url": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
        "name": "Fast Couriers",
        "timezone": "Europe/London",
        "country_code": "GB"
    },
    "user": {
        "id": "e04b279e-d8ed-4c12-b4df-698652d4c627",
        "url": "https://gsmtasks.com/api/tasks/users/e04b279e-d8ed-4c12-b4df-698652d4c627/",
        "first_name": "Tom",
        "last_name": "Smith",
        "email": "tom.smith@fast.uk",
        "phone": "++447700900132"
    },
    "token": "5dac4af44f7da18f802cfae8685c00a3de73755b"
}

POST https://gsmtasks.com/api/register/

Request parameters

Parameter Type Required Description
name String Yes Name of the account for easy reference
timezone String No Timezone name for dates and time
country_code  String No ISO 2 country code
user  object Yes User object

Account Roles

List Account Roles

Returns a array of account roles. Account Roles define the access to a specific account the user has been given.

Currently a very simple system is used and only two types of accesses can be given. Either manager, worker or both.

The request returns JSON structured like this:

[
  {
      "id": "dae7ab83-d6d9-4d83-acdf-e39890a8abe2",
      "url": "https://gsmtasks.com/api/tasks/roles/dae7ab83-d6d9-4d83-acdf-e39890a8abe2/",
      "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
      "user": "https://gsmtasks.com/api/tasks/users/18fb9d97-824b-4c2a-9b74-764a88a78c96/",
      "is_manager": false,
      "is_worker": true,
      "created_at": "2016-10-18T08:34:46.117131Z",
      "updated_at": "2016-10-18T08:34:46.117157Z"
  }
]

GET https://gsmtasks.com/api/tasks/roles/

Attributes

Attribute Type Description
id String Account Role unique identifier
url String Unique URL for the resource
account String URL of the account resource
user String URL of the user resource
is_manager Boolean Manager access boolean
is_worker Boolean Worker access boolean
created_at String The time when the account role was created
updated_at String The time when the account role was updated

Retrieve a specific Account Role

GET https://gsmtasks.com/api/tasks/roles/dae7ab83-d6d9-4d83-acdf-e39890a8abe2/

Create Account Role

Request to create a new account role with the parameters provided

Example POST request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "user": "https://gsmtasks.com/api/tasks/users/18fb9d97-824b-4c2a-9b74-764a88a78c96/",
    "is_manager": false,
    "is_worker": true
}

The request returns JSON of the created Account Role structured like this:

{
    "id": "dae7ab83-d6d9-4d83-acdf-e39890a8abe2",
    "url": "https://gsmtasks.com/api/tasks/roles/dae7ab83-d6d9-4d83-acdf-e39890a8abe2/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "user": "https://gsmtasks.com/api/tasks/users/18fb9d97-824b-4c2a-9b74-764a88a78c96/",
    "is_manager": false,
    "is_worker": true,
    "created_at": "2016-10-20T12:55:33.977065Z",
    "updated_at": "2016-10-20T12:55:33.977092Z"
}

POST https://gsmtasks.com/api/tasks/roles/

Request parameters

Parameter Type Required Description
account String Yes Name of the account for easy reference
user String Yes URL of the user resource
is_manager Boolean Yes Manager access boolean
is_worker Boolean Yes Worker access boolean

Update Account Role

Request to update a account role. We will change the is_manager to true and is_worker to false as an example.

Example PUT request JSON data:

{
    "is_manager": true,
    "is_worker": false
}

The request returns JSON of the updated Account Role structured like this:

{
    "id": "dae7ab83-d6d9-4d83-acdf-e39890a8abe2",
    "url": "https://gsmtasks.com/api/tasks/roles/dae7ab83-d6d9-4d83-acdf-e39890a8abe2/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "user": "https://gsmtasks.com/api/tasks/users/18fb9d97-824b-4c2a-9b74-764a88a78c96/",
    "is_manager": true,
    "is_worker": false,
    "created_at": "2016-10-20T12:55:33.977065Z",
    "updated_at": "2016-10-20T12:55:33.977092Z"
}

PUT https://gsmtasks.com/api/tasks/roles/dae7ab83-d6d9-4d83-acdf-e39890a8abe2/

Request parameters

Parameter Type Required Description
account object No URL of the account resource
user object No URL of the user resource
is_manager Boolean No Manager access boolean
is_worker Boolean No Worker access boolean

Users

List Users

Returns a array of users. The users returned are the users to whom you have access through different accounts.

The request returns JSON structured like this:

[
    {
        "id": "835cdcf8-9d1e-4718-ad47-4cf0a63626b4",
        "url": "https://gsmtasks.com/api/tasks/users/835cdcf8-9d1e-4718-ad47-4cf0a63626b4/",
        "first_name": "Tom",
        "last_name": "Smith",
        "display_name": "Tom Smith",
        "email": "tom.smith@fast.uk",
        "phone": "+447700900132"
    }
]

GET https://gsmtasks.com/api/tasks/users/

Attributes

Attribute Type Description
id String Account Role unique identifier
url String Unique URL for the resource
first_name String First name of the user
last_name String Last name of the user
display_name String Display name of the user
email String Email of the user
phone String International phone number of the user

Retrieve a specific User

GET https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/

Create User

Request to create a new user with the parameters provided

Example POST request JSON data:

{
  "first_name": "Tom",
  "last_name": "Smith",
  "email": "tom.smith@fast.uk",
  "phone": "+447700900132"
}

The request returns JSON of the created User structured like this:

{
    "id": "835cdcf8-9d1e-4718-ad47-4cf0a63626b4",
    "url": "https://gsmtasks.com/api/tasks/users/835cdcf8-9d1e-4718-ad47-4cf0a63626b4/",
    "first_name": "Tom",
    "last_name": "Smith",
    "display_name": "Tom Smith",
    "email": "tom.smith@fast.uk",
    "phone": "+447700900132"
}

POST https://gsmtasks.com/api/tasks/users/

Request parameters

Parameter Type Required Description
first_name String No First name of the user
last_name String No Last name of the user
email String Yes Email of the user
phone String No International phone number of the user

Orders

Orders are to group together some tasks (waypoints) that need to be completed to full fill the order.

List Orders

Returns a array of orders that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "4336f911-32ec-4fb4-b17a-e58aef3943e6",
    "url": "https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "external_id": "123ABC",
    "reference": "ABCD",
    "client": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/",
    "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/353ce213-c649-4e4b-bbcf-a493433cee9c/"
      "https://gsmtasks.com/api/tasks/tasks/d0de6a56-e8ae-4ac9-983e-ef1486909ce7/"
    ],
    "auto_assign": true,
    "created_at": "2016-10-10T09:36:22.190884Z",
    "updated_at": "2016-10-10T09:48:19.376249Z"
  }
]

GET https://gsmtasks.com/api/tasks/orders/

Attributes

Attribute Type Description
id String Order unique identifier
url String Unique URL for the resource
account String URL of the account resource
external_id String External id of the order
reference String Reference of the order
client String URL of the client
tasks Array Tasks that need to be completed
auto_assign Boolean Should the tasks be auto assigned to a driver
created_at String The time when the order was created
updated_at String The time when the order was updated

Retrieve a specific Order

GET https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/

Create Order

Request to create a new order with the parameters provided. The tasks that are going to be attached to the order need to be created beforehand or add the tasks later by updating the order.

You can read more about creating tasks here.

Example POST request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "external_id": "123456",
  "reference": "reference",
  "client": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/", 
  "tasks": [
    "https://gsmtasks.com/api/tasks/tasks/353ce213-c649-4e4b-bbcf-a493433cee9c/"
    "https://gsmtasks.com/api/tasks/tasks/d0de6a56-e8ae-4ac9-983e-ef1486909ce7/"
  ],
  "auto_assign": true
}

The request returns JSON of the created Order structured like this:

{
  "id": "4336f911-32ec-4fb4-b17a-e58aef3943e6",
  "url": "https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "external_id": "123456",
  "reference": "reference",
  "client": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/", 
  "tasks": [
    "https://gsmtasks.com/api/tasks/tasks/353ce213-c649-4e4b-bbcf-a493433cee9c/"
    "https://gsmtasks.com/api/tasks/tasks/d0de6a56-e8ae-4ac9-983e-ef1486909ce7/"
  ],
  "auto_assign": true,
  "created_at": "2016-10-18T11:27:23.043743Z",
  "updated_at": "2016-10-18T11:27:23.043774Z"
}

POST https://gsmtasks.com/api/tasks/orders/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
external_id String No External id of the order
reference String No Reference of the order
client String No URL of the client
tasks Array No Tasks that need to be completed referenced by the URLs
auto_assign Boolean No Should the tasks be auto assigned to a driver

Update Order

Request to update a order. We will add a task to the tasks array as an example.

Example PUT request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "tasks": [
    "https://gsmtasks.com/api/tasks/tasks/353ce213-c649-4e4b-bbcf-a493433cee9c/"
    "https://gsmtasks.com/api/tasks/tasks/d0de6a56-e8ae-4ac9-983e-ef1486909ce7/"
    "https://gsmtasks.com/api/tasks/tasks/850b2503-6466-41ae-9073-5e994688b812/"
  ]
}

The request returns JSON of the updated Order structured like this:

{
  "id": "4336f911-32ec-4fb4-b17a-e58aef3943e6",
  "url": "https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "external_id": "123456",
  "reference": "reference",
  "client": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/", 
  "tasks": [
    "https://gsmtasks.com/api/tasks/tasks/353ce213-c649-4e4b-bbcf-a493433cee9c/"
    "https://gsmtasks.com/api/tasks/tasks/d0de6a56-e8ae-4ac9-983e-ef1486909ce7/"
    "https://gsmtasks.com/api/tasks/tasks/850b2503-6466-41ae-9073-5e994688b812/"
  ],
  "auto_assign": true,
  "created_at": "2016-10-18T11:27:23.043743Z",
  "updated_at": "2016-10-18T11:27:23.043774Z"
}

PUT https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
tasks Array No Tasks that need to be completed
external_id String No External id of the order
reference String No Reference of the order
client String No URL of the client resource
auto_assigne Boolena No Should the tasks be auto assigned to a driver

Tasks

All orders consist of tasks. Task is a waypoint that has to be completed in order to full fill the order. There are three categories of tasks - the category is for general reference and also taken into account when tasks are optimized to find the optimal driving route for the driver.

Category Description
assignment Assignment task with no dependencies
pick_up Pick up task (dependency - always before drop offs)
drop_off Drop off task (dependency - always after pick ups)

States

Each task has a property state to help you understand the task’s most recent status.

State Color Description
unassigned white Task has not yet been assigned to a worker
assigned ligth blue Task has been assigned to a worker
accepted dark blue Worker has accepted the task
transit purple Worker is driving to the location of the task
active light green Worker at location and performing the task
completed dark green Task has been completed
Failed yellow Task has failed - waiting to be rescheduled or reattempted
Cancelled red The task has been cancelled and will not be reattempted

List Tasks

Returns a array of tasks.

The request returns JSON structured like this:

[
  {
    "id": "d09b5fc0-d82f-42ed-9d5f-022d68f36df6",
    "url": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "order": "https://gsmtasks.com/api/tasks/orders/7050443e-4637-4c3a-ade8-1592c308785c/",
    "external_id": "7869",
    "category": "assignment",
    "orderer": null,
    "receiver": null,
    "contact": {
      "name": "Tom ",
      "company": "Smith",
      "phone": "+447700900132",
      "email": "tom.smith@fast.uk",
      "notes": "Call 5 minutes before"
    },
    "address": {
      "raw_address": "Piccadilly Circus, London, United Kingdom",
      "formatted_address": "Piccadilly Circus, London W1D 7ET, UK",
      "location": {
        "type": "Point",
        "coordinates": [
          -0.13457340000002205,
          51.5100974
        ]
      },
      "google_place_id": "ChIJwR8g_9MEdkgR_rI--wzfivA",
      "point_of_interest": "",
      "street": "Piccadilly Circus",
      "house_number": "",
      "apartment_number": "",
      "city": "London",
      "state": "",
      "postal_code": "W1D 7ET",
      "country": "United Kingdom",
      "country_code": "GB"
    },
    "description": "Description of what should the driver do or deliver to that location.",
    "reference": "O-112",
    "complete_after": "2015-09-08T04:51:36.732219Z",
    "complete_before": null,
    "scheduled_time": null,
    "state": "completed",
    "completed_at": "2015-09-10T10:25:34.898560Z",
    "cancelled_at": null,
    "assignee": "https://gsmtasks.com/api/tasks/users/cfdf3a8e-a9d7-4878-a922-344081a1ed75/",
    "auto_assign": false,
    "assignee_proximity": "away",
    "position": "2015-09-08T04:51:36.732219Z",
    "duration": "00:15:00",
    "is_full_load": false,
    "metafields": {},
    "issues": [],
    "created_at": "2015-09-08T04:51:36.732219Z",
    "updated_at": "2015-12-17T06:35:42.007643Z",
    "events": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/events/",
    "documents": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/documents/",
    "signatures": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/signatures/",
    "actions": {},
    "counts": {
        "events": 4,
        "documents": 1,
        "signatures": 1,
        "forms": 0,
        "forms_completed": 0
    }
  }
]

GET https://gsmtasks.com/api/tasks/tasks/

It’s possible to filter the tasks returned by providing the following URL query parameters with the request.

Attribute Description
account Filter by an account unique identifier
state Filter by task state
assignee Filter by whom the task has been assigned to
category Filter by task category
updated_at Filter by updated at
created_at Filter by created at

GET https://gsmtasks.com/api/tasks/tasks/?account=4368ec5d-9942-4c74-90f7-eea752a6e489

Attributes

Attribute Type Description
id String Task unique identifier
url String Unique URL for the resource
account String URL of the account resource
order String URL of the order resource
external_id String Unique identifier of an external system for ease of integration
category String Category of the task (pickup, drop_off, …)
orderer String URL of the orderer
receiver String URL of the receiver
contact  Object  Contact object describing the contact person for that task
address Object Address object describing the location of the task
description String Description of the task
reference String Order reference number
complete_after String Sets the time after what the task should be completed (if not defined it will default to creation time)
complete_before String Sets the time before what the task should be completed
scheduled_time  String The time scheduled by the worker from the mobile app
state String Show the current state of the task
completed_at String The time when the task was completed
cancelled_at String The time when the task was cancelled
assignee String URL of the user resource the task has been assigned to
auto_assign Boolean Should the task be auto assigned to the best suited driver
assignee_proximity String Whether the assignee is near this task or away
position String Task position is the sort order in the specified assignee’s task list
duration  String  Duration planned for the completion of the task at location
is_full_load Boolean Whether this task is a full load and the assignee cannot carry another at the same time
metafields Object Metafields contain custom datafields that have been configured
issues Array List of issues detected with the task, e.g. geocoding failures etc
created_at String The time when the task was created
updated_at String The time when the task was updated
events String URL to fetch all the task related events
documents String URL to fetch all the task related documents
signatures String URL to fetch all the task related signatures
actions Object
counts Object

Retrieve a specific Task

GET https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/

Create Task

Request to create a new task with the parameters provided

Example POST request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "external_id": "7869",
  "order": "https://gsmtasks.com/api/tasks/orders/7050443e-4637-4c3a-ade8-1592c308785c/",
  "category": "assignment",
  "reference": "O-112",
  "contact": {
    "name": "Tom ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "tom.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "address": {
    "raw_address": "Piccadilly Circus, London, United Kingdom"
  },
  "description": "Description of what should the driver do or deliver to that location.",
  "complete_after": "2015-09-08T10:00:00Z",
  "complete_before": "2015-09-08T11:00:00Z",
  "assignee": "https://gsmtasks.com/api/tasks/users/cfdf3a8e-a9d7-4878-a922-344081a1ed75/",
  "auto_assign": false
}

The request returns JSON of the created Task structured like this:

{
    "id": "b779cd0b-5f32-4bb6-8d5e-d9c44535e682",
    "url": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "external_id": "7869",
    "order": "https://gsmtasks.com/api/tasks/orders/7050443e-4637-4c3a-ade8-1592c308785c/",
    "category": "assignment",
    "orderer": null,
    "receiver": "https://gsmtasks.com/api/tasks/clients/fe8ad9b9-a49d-45ff-a1d9-d3325d80f236/",
    "contact": {
        "name": "Tom",
        "company": "Smith",
        "phone": "+447700900132",
        "email": "tom.smith@fast.uk",
        "notes": "Call 5 minutes before"
    },
    "address": {
        "raw_address": "Piccadilly Circus, London, United Kingdom",
        "formatted_address": "Piccadilly Circus, London, United Kingdom",
        "location": {
            "type": "Point",
            "coordinates": [
                24.716517899999985,
                59.4329769
            ]
        },
        "google_place_id": "",
        "point_of_interest": "",
        "street": "",
        "house_number": "",
        "apartment_number": "",
        "city": "",
        "state": "",
        "postal_code": "",
        "country": "",
        "country_code": ""
    },
    "description": "Description of what should the driver do or deliver to that location.",
    "reference": "O-112",
    "complete_after": "2015-09-08T10:00:00Z",
    "complete_before": "2015-09-08T11:00:00Z",
    "scheduled_time": null,
    "state": "assigned",
    "completed_at": null,
    "cancelled_at": null,
    "assignee": "https://gsmtasks.com/api/tasks/users/cfdf3a8e-a9d7-4878-a922-344081a1ed75/",
    "auto_assign": false,
    "assignee_proximity": "away",
    "position": "2015-09-08T10:00:00Z",
    "duration": null,
    "is_full_load": false,
    "metafields": {},
    "issues": [],
    "created_at": "2016-10-18T12:51:49.972662Z",
    "updated_at": "2016-10-18T13:00:17.957134Z",
    "events": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/events/",
    "documents": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/documents/",
    "signatures": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/signatures/",
    "actions": {
        "activate": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/activate/",
        "complete": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/complete/",
        "transit": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/transit/",
        "accept": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/accept/",
        "cancel": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/cancel/",
        "unassign": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/unassign/",
        "reject": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/reject/",
        "fail": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/fail/",
        "assign": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/assign/"
    },
    "counts": {
        "events": null,
        "documents": null,
        "signatures": null,
        "forms": null,
        "forms_completed": null
    }
}

POST https://gsmtasks.com/api/tasks/tasks/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
order String No URL of the order
external_id String No Unique identifier of an external system for ease of integration
category String Yes Category of the task (pickup, drop_off, …)
orderer String No URL of the orderer
receiver String No URL of the receiver
contact Object No Contact object describing the contact person for that task
address Object Yes Address object describing the location of the task
description String No Description of the task
reference String No Order reference number
complete_after String No Sets the time after what the task should be completed (if not defined it will default to creation time)
complete_before String No Sets the time before what the task should be completed
scheduled_time String No The time scheduled by the worker from the mobile app
assignee String No URL of the user resource the task has been assigned to
auto_assign Boolean No Should the task be auto assigned to the best suited driver
position String No Task position is the sort order in the specified assignee’s task list
duration String No Duration planned for the completion of the task at location
metafields Object No Metafields contain custom datafields that have been configured

Using serialized objects instead of URLs

For the assignee field, it is possible to create a task using a short serialized representation of the user object instead of the user’s hyperlink. The user will be looked up on the server side using the provided e-mail address.

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "address": {
    "raw_address": "Piccadilly Circus, London, United Kingdom"
  },
  "assignee": {
    "email": "worker@mycompany.com"
  }
}

Update Task

Request to update a task. We will change the order, external_id and category as an example.

Example PUT request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "order": "https://gsmtasks.com/api/tasks/orders/f779cd66-bb05-438d-80ee-ad65235cca39/",
  "external_id": "9999",
  "category": "pick_up",
  "address": {
    "raw_address": "Telliskivi 60a, Tallinn 10412, Estonia",
    "formatted_address": "Telliskivi 60a, Tallinn 10412, Estonia",
    "location": {
        "type": "Point",
        "coordinates": [
            24.716517899999985,
            59.4329769
        ]
    }
  }
}

The request returns JSON of the updated Task structured like this:

{
    "id": "b779cd0b-5f32-4bb6-8d5e-d9c44535e682",
    "url": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "external_id": "9999",
    "order": "https://gsmtasks.com/api/tasks/orders/f779cd66-bb05-438d-80ee-ad65235cca39/",
    "category": "pick_up",
    "orderer": null,
    "receiver": "https://gsmtasks.com/api/tasks/clients/fe8ad9b9-a49d-45ff-a1d9-d3325d80f236/",
    "contact": {
        "name": "Tom",
        "company": "Smith",
        "phone": "+447700900132",
        "email": "tom.smith@fast.uk",
        "notes": "Call 5 minutes before"
    },
    "address": {
        "raw_address": "Piccadilly Circus, London, United Kingdom",
        "formatted_address": "Piccadilly Circus, London, United Kingdom",
        "location": {
            "type": "Point",
            "coordinates": [
                24.716517899999985,
                59.4329769
            ]
        },
        "google_place_id": "",
        "point_of_interest": "",
        "street": "",
        "house_number": "",
        "apartment_number": "",
        "city": "",
        "state": "",
        "postal_code": "",
        "country": "",
        "country_code": ""
    },
    "description": "Description of what should the driver do or deliver to that location.",
    "reference": "O-112",
    "complete_after": "2015-09-08T10:00:00Z",
    "complete_before": "2015-09-08T11:00:00Z",
    "scheduled_time": null,
    "state": "assigned",
    "completed_at": null,
    "cancelled_at": null,
    "assignee": "https://gsmtasks.com/api/tasks/users/cfdf3a8e-a9d7-4878-a922-344081a1ed75/",
    "auto_assign": false,
    "assignee_proximity": "away",
    "position": "2015-09-08T10:00:00Z",
    "duration": null,
    "is_full_load": false,
    "metafields": {},
    "issues": [],
    "created_at": "2016-10-18T12:51:49.972662Z",
    "updated_at": "2016-10-18T13:00:17.957134Z",
    "events": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/events/",
    "documents": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/documents/",
    "signatures": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/signatures/",
    "actions": {
        "activate": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/activate/",
        "complete": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/complete/",
        "transit": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/transit/",
        "accept": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/accept/",
        "cancel": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/cancel/",
        "unassign": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/unassign/",
        "reject": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/reject/",
        "fail": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/fail/",
        "assign": "https://gsmtasks.com/api/tasks/tasks/b779cd0b-5f32-4bb6-8d5e-d9c44535e682/assign/"
    },
    "counts": {
        "events": null,
        "documents": null,
        "signatures": null,
        "forms": null,
        "forms_completed": null
    }
}

PUT https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
order String No URL of the order
external_id String No Unique identifier of an external system for ease of integration
category String Yes Category of the task (pickup, drop_off, …)
orderer String No URL of the orderer
receiver String No URL of the receiver
contact Object No Contact object describing the contact person for that task
address Object Yes Address object describing the location of the task
description String No Description of the task
reference String No Order reference number
complete_after String No Sets the time after what the task should be completed (if not defined it will default to creation time)
complete_before String No Sets the time before what the task should be completed
scheduled_time String No The time scheduled by the worker from the mobile app
assignee String No URL of the user resource the task has been assigned to
auto_assign Boolean No Should the task be auto assigned to the best suited driver
position String No Task position is the sort order in the specified assignee’s task list
duration String No Duration planned for the completion of the task at location
metafields Object No Metafields contain custom datafields that have been configured

Task Events

A task event object is a definition of user action against one particular task. As there are many task events for each task a task event history is formed.

It’s also possible to define a callback to the clients server about the task event so it’s possible to update the task states also in the CRM or any other system that for example needs to know when a task was completed.

The following task events are registered and sent.

State Description
created Task has been created
assign Task has been assigned to a worker
unassign Task has been unassigned
transit Task has gone into transit mode
active Task has been activated
completed Task has been completed
Failed Task has failed
Cancelled The task has been cancelled

List Task Events

Returns a array of accounts that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "d9a80a68-bf33-488b-9f8f-3da038aadea8",
    "url": "https://gsmtasks.com/api/tasks/task_events/d9a80a68-bf33-488b-9f8f-3da038aadea8/",
    "task": "https://gsmtasks.com/api/tasks/tasks/46267d9f-66cd-4fdb-9e9e-aaa63c81f29b/",
    "field": "state",
    "event": "activate",
    "from_state": "transit",
    "to_state": "active",
    "user": "https://gsmtasks.com/api/tasks/users/2e25e0c6-889c-4eda-ae3c-db27949fa05d/",
    "notes": "",
    "location": {
      "type": "Point",
      "coordinates": [
        -0.13457340000002205,
        51.5100974
      ]
    },
    "assignee": "https://gsmtasks.com/api/tasks/users/2e25e0c6-889c-4eda-ae3c-db27949fa05d/",
    "created_at": "2016-05-10T09:07:28.172058Z",
    "updated_at": "2016-05-10T09:07:39.294848Z"
  }
]

GET https://gsmtasks.com/api/tasks/task_events/

Attributes

Attribute Type Description
id String Task Event unique identifier
url String Unique URL for the resource
task String URL of the task resource
field String Scope of the event: ‘state’ or 'assignee_proximity’
event String Event name
from_state String The state from where the event was triggered
to_state  String The state to which the task was transitioned to
user String  URL of the user who triggered the event
notes String Any comments / notes attached to the event
location Object A GeoJSON object that defines the location from where the task was triggered from
assignee String URL of the user who the task was assigned to
created_at String The time when the task event was created
updated_at String The time when the task event was updated

Retrieve a specific Task Event

GET https://gsmtasks.com/api/tasks/task_events/d9a80a68-bf33-488b-9f8f-3da038aadea8/

Contact Addresses

The Contact Address objects as the name describes are a combination of a Contact object and a Address object. Together they are unique. Once created they can be re-used for future tasks and autocompletion.

List Contact Addresses

Returns a array of Contact Addresses that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "a36ff250-df3d-4515-af4a-14c48558b297",
    "url": "https://gsmtasks.com/api/tasks/contact_addresses/a36ff250-df3d-4515-af4a-14c48558b297/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4f946a84-fb06-43ac-b98d-d2b38bbe307a/",
    "client": "https://gsmtasks.com/api/tasks/clients/b233dd8f-aeee-4a5f-8c0e-a95657186cf9/",
    "contact": {
      "name": "Tom ",
      "company": "Smith",
      "phone": "+447700900132",
      "email": "tom.smith@fast.uk",
      "notes": "Call 5 minutes before"
    },
    "address": {
      "raw_address": "Piccadilly Circus, London, United Kingdom",
      "formatted_address": "Piccadilly Circus, London W1D 7ET, UK",
      "location": {
        "type": "Point",
        "coordinates": [
          -0.13457340000002205,
          51.5100974
        ]
      },
      "google_place_id": "ChIJwR8g_9MEdkgR_rI--wzfivA",
      "point_of_interest": "",
      "street": "Piccadilly Circus",
      "house_number": "",
      "apartment_number": "",
      "city": "London",
      "state": "",
      "postal_code": "W1D 7ET",
      "country": "United Kingdom",
      "country_code": "GB"
    },
    "created_at": "2016-10-06T11:09:52.856869Z",
    "updated_at": "2016-10-06T11:16:00.563052Z"
  }
]

GET https://gsmtasks.com/api/tasks/contact_addresses/

Attributes

Attribute Type Description
id String Contact Address unique identifier
url String Unique URL for the resource
account String URL of the account resource
client String URL of the client resource
contact Object Contact object
address Object Address object
created_at String The time when the contact address was created
updated_at String The time when the contact address was updated

Retrieve a specific Contact Address

GET https://gsmtasks.com/api/tasks/contact_addresses/a36ff250-df3d-4515-af4a-14c48558b297/

Create Contact Address

Request to create a new Contact Address with the parameters provided

Example POST request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4f946a84-fb06-43ac-b98d-d2b38bbe307a/",
  "client": "https://gsmtasks.com/api/tasks/clients/b233dd8f-aeee-4a5f-8c0e-a95657186cf9/",
  "contact": {
    "name": "Tom ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "tom.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "address": {
    "raw_address": "Piccadilly Circus, London, United Kingdom"
  }
}

The request returns JSON of the created Contact Address structured like this:

{
  "id": "a36ff250-df3d-4515-af4a-14c48558b297",
  "url": "https://gsmtasks.com/api/tasks/contact_addresses/a36ff250-df3d-4515-af4a-14c48558b297/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4f946a84-fb06-43ac-b98d-d2b38bbe307a/",
  "client": "https://gsmtasks.com/api/tasks/clients/b233dd8f-aeee-4a5f-8c0e-a95657186cf9/",
  "contact": {
    "name": "Tom ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "tom.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "address": {
    "raw_address": "Piccadilly Circus, London, United Kingdom",
    "formatted_address": "Piccadilly Circus, London W1D 7ET, UK",
    "location": {
      "type": "Point",
      "coordinates": [
        -0.13457340000002205,
        51.5100974
      ]
    },
    "google_place_id": "ChIJwR8g_9MEdkgR_rI--wzfivA",
    "point_of_interest": "",
    "street": "Piccadilly Circus",
    "house_number": "",
    "apartment_number": "",
    "city": "London",
    "state": "",
    "postal_code": "W1D 7ET",
    "country": "United Kingdom",
    "country_code": "GB"
  },
  "created_at": "2016-10-06T11:09:52.856869Z",
  "updated_at": "2016-10-06T11:16:00.563052Z"
}

POST https://gsmtasks.com/api/tasks/contact_addresses/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
client String No URL of the client resource
contact Object Yes Contact object
address Object Yes Address object

Update Contact Address

Request to update a Contact Address. We will change the client and contact as an example.

Example PUT request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4f946a84-fb06-43ac-b98d-d2b38bbe307a/",
  "client": "https://gsmtasks.com/api/tasks/clients/3d7cc9e6-f63f-4c85-886f-7b720939e8a6/",
  "contact": {
    "name": "James ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "James.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "address": {}
}

The request returns JSON of the updated Contact Address structured like this:

{
  "id": "a36ff250-df3d-4515-af4a-14c48558b297",
  "url": "https://gsmtasks.com/api/tasks/contact_addresses/a36ff250-df3d-4515-af4a-14c48558b297/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4f946a84-fb06-43ac-b98d-d2b38bbe307a/",
  "client": "https://gsmtasks.com/api/tasks/clients/3d7cc9e6-f63f-4c85-886f-7b720939e8a6/",
  "contact": {
    "name": "James ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "James.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "address": {
    "raw_address": "Piccadilly Circus, London, United Kingdom",
    "formatted_address": "Piccadilly Circus, London W1D 7ET, UK",
    "location": {
      "type": "Point",
      "coordinates": [
        -0.13457340000002205,
        51.5100974
      ]
    },
    "google_place_id": "ChIJwR8g_9MEdkgR_rI--wzfivA",
    "point_of_interest": "",
    "street": "Piccadilly Circus",
    "house_number": "",
    "apartment_number": "",
    "city": "London",
    "state": "",
    "postal_code": "W1D 7ET",
    "country": "United Kingdom",
    "country_code": "GB"
  },
  "created_at": "2016-10-06T11:09:52.856869Z",
  "updated_at": "2016-10-06T11:16:00.563052Z"
}

PUT https://gsmtasks.com/api/tasks/contact_addresses/a36ff250-df3d-4515-af4a-14c48558b297/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
client String No URL of the client resource
contact Object Yes Contact object
address Object Yes Address object

Trackers

Trackers are sharable tracking links that can be publicly viewed or even embeded on websites trough an iframe.

List Trackers

Returns a array of trackers that the user has access to.

The request returns JSON structured like this:

[
  {
      "id": "92133df6-55b7-49f9-9cc3-5a516cee8f52",
      "url": "https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/",
      "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
      "tasks": [
          "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
          "https://gsmtasks.com/api/tasks/tasks/4c340c01-55eb-4d12-9988-a4a34785b512/"
      ],
      "active_from": "2015-09-08T00:00:00Z",
      "active_until": "2015-09-10T00:00:00Z",
      "active_states": [
          "transit",
          "active"
      ],
      "show_driver_info": true,
      "show_destination": true,
      "show_sms_action": true,
      "show_call_action": true,
      "show_logo": true,
      "show_path": false,
      "autozoom": true,
      "max_zoom_level": null
    }
]

GET https://gsmtasks.com/api/tasks/trackers/

Attributes

Attribute Type Description
id String Tracker unique identifier
url String Unique URL for the resource
account String URL of the account resource
tasks Array Tasks that are displayed on this tracker
active_from String Date and time from when the tracker is active
active_until String Date and time until when the tracker is active
active_states Array  States of the tasks when the tracker is active
show_driver_info Boolean Show driver name
show_destination Boolean Show task destination address (only first implemented)
show_sms_action Boolean Show SMS action button
show_call_action Boolean Show Call action button
show_logo Boolean Show logo (will be deprecated)
show_path Boolean Show driving path (transit state)
autozoom   Boolean Automatic zoom to fallow on the driver
max_zoom_level Integer Maximum Google maps zoom level

Retrieve a specific Tracker

GET https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/

Create Tracker

Request to create a new tracker with the parameters provided. The tasks that are going to be attached to the tracker need to be created beforehand.

You can read more about creating tasks here.

Example POST request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/4c340c01-55eb-4d12-9988-a4a34785b512/"
  ],
  "active_from": "2015-09-08T00:00:00Z",
  "active_until": "2015-09-10T00:00:00Z",
  "active_states": [
      "transit",
      "active"
  ],
  "show_driver_info": true,
  "show_destination": true,
  "show_sms_action": true,
  "show_call_action": true,
  "show_logo": true,
  "show_path": false,
  "autozoom": true,
  "max_zoom_level": null
}

The request returns JSON of the created Order structured like this:

{
  "id": "92133df6-55b7-49f9-9cc3-5a516cee8f52",
  "url": "https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/4c340c01-55eb-4d12-9988-a4a34785b512/"
  ],
  "active_from": "2015-09-08T00:00:00Z",
  "active_until": "2015-09-10T00:00:00Z",
  "active_states": [
      "transit",
      "active"
  ],
  "show_driver_info": true,
  "show_destination": true,
  "show_sms_action": true,
  "show_call_action": true,
  "show_logo": true,
  "show_path": false,
  "autozoom": true,
  "max_zoom_level": null
}

POST https://gsmtasks.com/api/tasks/trackers/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
tasks Array Yes Tasks that need to be completed referenced by the URLs
active_from String Yes Date and time from when the tracker is active
active_until String Yes Date and time until when the tracker is active
active_states Array  Yes States of the tasks when the tracker is active
show_driver_info Boolean Yes Show driver name
show_destination Boolean Yes Show task destination address (only first implemented)
show_sms_action Boolean Yes Show SMS action button
show_call_action Boolean Yes Show Call action button
show_logo Boolean Yes Show logo (will be deprecated)
show_path Boolean Yes Show driving path (transit state)
autozoom   Boolean Yes Automatic zoom to fallow on the driver
max_zoom_level Integer Yes Maximum Google maps zoom level

Update Tracker

Request to update a tracker. We will add a task to the tasks array as an example.

Example PUT request JSON data:

{
  "id": "92133df6-55b7-49f9-9cc3-5a516cee8f52",
  "url": "https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/4c340c01-55eb-4d12-9988-a4a34785b512/"
      "https://gsmtasks.com/api/tasks/tasks/702ef11a-6ee7-44bd-8564-81f9b8a2248f/"
  ],
  "active_from": "2015-09-08T00:00:00Z",
  "active_until": "2015-09-10T00:00:00Z",
  "active_states": [
      "transit",
      "active"
  ],
  "show_driver_info": true,
  "show_destination": true,
  "show_sms_action": true,
  "show_call_action": true,
  "show_logo": true,
  "show_path": false,
  "autozoom": true,
  "max_zoom_level": null
}

The request returns JSON of the updated Tracker structured like this:

{
  "id": "92133df6-55b7-49f9-9cc3-5a516cee8f52",
  "url": "https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/4c340c01-55eb-4d12-9988-a4a34785b512/"
      "https://gsmtasks.com/api/tasks/tasks/702ef11a-6ee7-44bd-8564-81f9b8a2248f/"
  ],
  "active_from": "2015-09-08T00:00:00Z",
  "active_until": "2015-09-10T00:00:00Z",
  "active_states": [
      "transit",
      "active"
  ],
  "show_driver_info": true,
  "show_destination": true,
  "show_sms_action": true,
  "show_call_action": true,
  "show_logo": true,
  "show_path": false,
  "autozoom": true,
  "max_zoom_level": null
}

POST https://gsmtasks.com/api/tasks/trackers/92133df6-55b7-49f9-9cc3-5a516cee8f52/

Route Optimizations

Route optimizations are triggered to find the optimal driving route to complete the tasks given.

States

Each route optimization has a state. Route optimizations are queued so they are executed async.

State Description
pending Route optimization has just been created and queued
started Route optimization in progress
completed Route optimization completed and tasks reordered
failed Route optimization failed

List Route Optimizations

Returns a array of route optimizations that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "ae0fbdc6-f4b9-4c0b-91e9-b15d333ed28d",
    "url": "https://gsmtasks.com/api/tasks/route_optimizations/ae0fbdc6-f4b9-4c0b-91e9-b15d333ed28d/",
    "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
    "assignee": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
    "state": "completed",
    "tasks": [
        "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
        "https://gsmtasks.com/api/tasks/tasks/2ab15703-6c4c-48db-b305-88c117b763db/",
        "https://gsmtasks.com/api/tasks/tasks/d6ed4d74-9a38-429c-ba1c-f9e073461ad7/"
    ],
    "start_location": null,
    "end_location": null,
    "total_distance": null,
    "total_duration": null,
    "created_at": "2016-10-10T13:26:33.979847Z",
    "updated_at": "2016-10-10T13:26:33.979877Z"
  }
]

GET https://gsmtasks.com/api/tasks/route_optimizations/

Attributes

Attribute Type Description
id String Route optimization unique identifier
url String Unique URL for the resource
account String URL of the account resource
assignee String URL of the user resource
tasks Array URLs of the task resources to be optimized
start_location String  Starting location
end_location String  Ending location
total_distance String  Distance of the optimized route
total_duration String  Duration of the optimized route
created_at String The time when the route optimization was created
updated_at String The time when the route optimization was updated

Retrieve a specific Route optimization

GET https://gsmtasks.com/api/tasks/route_optimizations/4368ec5d-9942-4c74-90f7-eea752a6e489/

Create Route optimization

Request to create a new route optimization with the parameters provided

Example POST request JSON data:

{
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "assignee": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/2ab15703-6c4c-48db-b305-88c117b763db/",
      "https://gsmtasks.com/api/tasks/tasks/d6ed4d74-9a38-429c-ba1c-f9e073461ad7/"
  ]
}

The request returns JSON of the created Account structured like this:

{
  "id": "ae0fbdc6-f4b9-4c0b-91e9-b15d333ed28d",
  "url": "https://gsmtasks.com/api/tasks/route_optimizations/ae0fbdc6-f4b9-4c0b-91e9-b15d333ed28d/",
  "account": "https://gsmtasks.com/api/tasks/accounts/4368ec5d-9942-4c74-90f7-eea752a6e489/",
  "assignee": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
  "state": "completed",
  "tasks": [
      "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
      "https://gsmtasks.com/api/tasks/tasks/2ab15703-6c4c-48db-b305-88c117b763db/",
      "https://gsmtasks.com/api/tasks/tasks/d6ed4d74-9a38-429c-ba1c-f9e073461ad7/"
  ],
  "start_location": null,
  "end_location": null,
  "total_distance": null,
  "total_duration": null,
  "created_at": "2016-10-10T13:26:33.979847Z",
  "updated_at": "2016-10-10T13:26:33.979877Z"
}

POST https://gsmtasks.com/api/tasks/route_optimizations/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
assignee String Yes URL of the user resource
tasks Array Yes URLs of the task resources to be optimized

File uploads

To attach a file to a Task or Order. The file has to be uploaded via this endpoint.

List File Uploads

Returns a array of file uploads that the user has access to.

The request returns JSON structured like this:

[
  {
        "id": "24588f76-aaf8-4d7c-9a56-385c54356eff",
        "url": "https://gsmtasks.com/api/tasks/file_uploads/874965eb-1de6-442a-92f0-2cadbed45716/",
        "file": "https://gsmtasks.com/media/fileupload/874965eb-1de6-442a-92f0-2cadbed45716/attachment.xlsx",
        "size": 8550,
        "created_by": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
        "is_image": false,
        "created_at": "2016-10-20T08:03:14.540726Z",
        "updated_at": "2016-10-20T08:03:14.540759Z"
    }
]

GET https://gsmtasks.com/api/tasks/file_uploads/

Attributes

Attribute Type Description
id String File Upload unique identifier
url String Unique URL for the resource
file String URL of the file for downloading
size String Size of the file uploaded in bytes
created_by String URL of the user who created the upload
is_image Boolean Defines if the upload is an image
created_at String The time when the file upload was created
updated_at String The time when the order file upload updated

Retrieve a specific File upload

GET https://gsmtasks.com/api/tasks/file_uploads/874965eb-1de6-442a-92f0-2cadbed45716/

Create a file upload

Request to create a new file with the parameters provided and the base64 encoded file data.

Example POST request JSON data:

{
    "file": "https://gsmtasks.com/media/fileupload/d242bb19-d273-4393-84fe-40c2314e558d/Important.jpg",
    "is_image": true
}

The request returns JSON of the created File Upload structured like this:


{
    "id": "d242bb19-d273-4393-84fe-40c2314e558d",
    "url": "https://gsmtasks.com/api/tasks/file_uploads/d242bb19-d273-4393-84fe-40c2314e558d/",
    "file": "https://gsmtasks.com/media/fileupload/d242bb19-d273-4393-84fe-40c2314e558d/Important.jpg",
    "size": 141652,
    "created_by": "https://gsmtasks.com/api/tasks/users/adba000d-9f1b-4469-a2b7-7dfb7977f57b/",
    "is_image": true,
    "created_at": "2016-10-06T11:09:52.856869Z",
    "updated_at": "2016-10-06T11:16:00.563052Z"

}

POST https://gsmtasks.com/api/tasks/file_uploads/

Request parameters

Parameter Type Required Description
file String Yes URL of the file
is_image Boolean - Defines if the upload is an image

Documents

Documents attach File Upload objects to a task.

List Documents

Returns a array of documents that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "c6a66d6d-76e0-4c7e-a22c-02eff4d68b59",
    "url": "https://gsmtasks.com/api/tasks/documents/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/",
    "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
    "order": "https://gsmtasks.com/api/tasks/orders/2e627baf-dcfb-4e22-bb23-82c0670553ca/",
    "file": "https://gsmtasks.com/media/fileupload/874965eb-1de6-442a-92f0-2cadbed45716/attachment.xlsx",
    "size": 8550,
    "is_image": false,
    "description": "Attached Excel spreadsheet",
    "created_by": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
    "visible_to_worker": true,
    "visible_to_client": true,
    "created_at": "2016-10-06T11:09:52.856869Z",
    "updated_at": "2016-10-06T11:16:00.563052Z"
  }
]

GET https://gsmtasks.com/api/tasks/documents/

Attributes

Attribute Type Description
id String Document unique identifier
url String Unique URL for the resource
task String URL of the task resource
order String URL of the order resource
file String URL of the file for downloading
size Number Size of the file uploaded in bytes
is_image Boolean Defines if the upload is an image
description String Description of the file attached
created_by String URL of the user who created the upload
visible_to_worker Boolean Defines if the document is visible for worker
visible_to_client Boolean Defines if the document is visible to orderer / client
created_at String The time when the document was created
updated_at String The time when the document was updated

Retrieve a specific Document

GET https://gsmtasks.com/api/tasks/documents/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/

Create Document

Request to create a new document with the parameters provided

Example POST request JSON data:

{
  "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
  "order": "https://gsmtasks.com/api/tasks/orders/4336f911-32ec-4fb4-b17a-e58aef3943e6/",
  "file_upload": "https://gsmtasks.com/api/tasks/file_uploads/874965eb-1de6-442a-92f0-2cadbed45716/",
  "description": "Attached Excel spreadsheet",
  "visible_to_worker": true,
  "visible_to_client": true
}

The request returns JSON of the created Document structured like this:

{
  "id": "c6a66d6d-76e0-4c7e-a22c-02eff4d68b59",
  "url": "https://gsmtasks.com/api/tasks/documents/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/",
  "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
  "order": "https://gsmtasks.com/api/tasks/orders/2e627baf-dcfb-4e22-bb23-82c0670553ca/",
  "file": "https://gsmtasks.com/media/fileupload/874965eb-1de6-442a-92f0-2cadbed45716/attachment.xlsx",
  "size": 8550,
  "is_image": false,
  "description": "Attached Excel spreadsheet",
  "created_by": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
  "visible_to_worker": true,
  "visible_to_client": true,
  "created_at": "2016-10-06T11:09:52.856869Z",
  "updated_at": "2016-10-06T11:16:00.563052Z"
}

POST https://gsmtasks.com/api/tasks/documents/

Request parameters

Attribute Required Type Description
task Yes String URL of the task resource
order Yes String URL of the order resource
file_upload Yes String URL of the file upload object
description  No String Description of the file attached
visible_to_worker  Yes  Boolean Defines if the document is visible for worker
visible_to_client  Yes Boolean Defines if the document is visible to orderer / client

Signatures

Signatures attach File Upload objects to a task and are meant to separate leagal signatures from documents.

List Signatures

Returns a array of signatures that the user has access to.

The request returns JSON structured like this:

[
  {
    "id": "c6a66d6d-76e0-4c7e-a22c-02eff4d68b59",
    "url": "https://gsmtasks.com/api/tasks/signatures/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/",
    "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
    "file": "https://gsmtasks.com/media/fileupload/874965eb-1de6-442a-92f0-2cadbed45716/attachment.xlsx",
    "size": 8550,
    "is_image": false,
    "signer": {
      "name": "Tom ",
      "company": "Smith",
      "phone": "+447700900132",
      "email": "tom.smith@fast.uk",
      "notes": "All good"
    },
    "location": {
      "type": "Point",
      "coordinates": [
        -0.13457340000002205,
        51.5100974
      ]
    },
    "created_by": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
    "created_at": "2016-10-18T08:34:46.117131Z",
    "updated_at": "2016-10-18T08:34:46.117157Z"
  }
]

GET https://gsmtasks.com/api/tasks/signatures/

Attributes

Attribute Type Description
id String Signature unique identifier
url String Unique URL for the resource
task String URL of the task resource
file String URL of the file for downloading
size Number Size of the file in bytes
signer  Object Signer object of the signature
location  GeoJSON Location of the signing event
created_by String URL of the user who created the signature
created_at String The time when the signature was created
updated_at String The time when the signature was updated

Retrieve a specific Signature

GET https://gsmtasks.com/api/tasks/signatures/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/

Create Signature

Request to create a new document with the parameters provided

Example POST request JSON data:

{
  "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
  "file_upload": "https://gsmtasks.com/api/tasks/file_uploads/874965eb-1de6-442a-92f0-2cadbed45716/",
  "signer": {
    "name": "Tom ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "tom.smith@fast.uk",
    "notes": "Call 5 minutes before"
  },
  "location": {
    "type": "Point",
    "coordinates": [
      -0.13457340000002205,
      51.5100974
    ]
  }
}

The request returns JSON of the created Signature structured like this:

{
  "id": "c6a66d6d-76e0-4c7e-a22c-02eff4d68b59",
  "url": "https://gsmtasks.com/api/tasks/documents/c6a66d6d-76e0-4c7e-a22c-02eff4d68b591/",
  "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
  "file": "https://gsmtasks.com/media/fileupload/874965eb-1de6-442a-92f0-2cadbed45716/attachment.xlsx",
  "size": 8550,
  "is_image": false,
  "signer": {
    "name": "Tom ",
    "company": "Smith",
    "phone": "+447700900132",
    "email": "tom.smith@fast.uk",
    "notes": "All good"
  },
  "location": {
    "type": "Point",
    "coordinates": [
      -0.13457340000002205,
      51.5100974
    ]
  },
  "created_by": "https://gsmtasks.com/api/tasks/users/12d2821e-01e2-48fb-97bc-eaebca93cbdc/",
  "created_at": "2016-10-18T08:34:46.117131Z",
  "updated_at": "2016-10-18T08:34:46.117157Z"
}

POST https://gsmtasks.com/api/tasks/signatures/

Request parameters

Attribute Required Type Description
task Yes String URL of the task resource
file_upload Yes String URL of the file upload object
signer  Yes Oject Signer object
location  GeoJSON Location of the signing event

Clients

List Clients

Returns a array of clients that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "74c08598-08b8-46bc-9da7-8b85f7168f20",
        "url": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/",
        "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
        "name": "Client",
        "slug": "client",
        "archived": false,
        "created_at": "2016-10-05T13:31:10.305811Z",
        "updated_at": "2016-10-06T08:50:21.366881Z"
    }
]

GET https://gsmtasks.com/api/tasks/clients/

Attributes

Attribute Type Description
id String Client unique identifier
url String Unique URL for the resource
account String URL of the account resource
name String Name of the client
slug String Machine readable account identifier
archived Boolean Shows whether the client is archived or not
created_at String The time when the order was created
updated_at String The time when the order was updated

Retrieve a specific Client

GET https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/

Create Client

Request to create a new Client with the parameters provided.

Example POST request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Client",
    "archived": false
}

The request returns JSON of the created Order structured like this:

{
    "id": "74c08598-08b8-46bc-9da7-8b85f7168f20",
    "url": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/",
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Client",
    "slug": "client",
    "archived": false,
    "created_at": "2016-10-05T13:31:10.305811Z",
    "updated_at": "2016-10-06T08:50:21.366881Z"
}

POST https://gsmtasks.com/api/tasks/clients/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
name String Yes Name of the client
archived String Yes Shows whether the client is archived or not

Update Client

Request to update a Client. We will change the name and the archived status as an example.

Example PUT request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Another client",
    "archived": true
}

The request returns JSON of the updated Order structured like this:

{
    "id": "74c08598-08b8-46bc-9da7-8b85f7168f20",
    "url": "https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/",
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Another client",
    "slug": "client",
    "archived": true,
    "created_at": "2016-10-05T13:31:10.305811Z",
    "updated_at": "2016-10-06T08:50:21.366881Z"
}

PUT https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
name String Yes Name of the client
archived String No Shows whether the client is archived or not

Task Metadatas

List Task Metadatas

Returns a array of task metadatas that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "eed4a5fe-5cde-4859-baaf-68b60b2c03af",
        "url": "https://gsmtasks.com/api/tasks/task_metadatas/eed4a5fe-5cde-4859-baaf-68b60b2c03af/",
        "task": "https://gsmtasks.com/api/tasks/tasks/008110f2-8e66-4b17-b9b3-73da42c1e8f8/",
        "events_count": 5,
        "documents_count": 0,
        "signatures_count": 0,
        "forms_count": 0,
        "forms_completed_count": 0,
        "unassigned_duration": "00:00:00.007993",
        "assigned_duration": "00:30:38.002657",
        "accepted_duration": "00:00:00",
        "transit_duration": "75 22:49:15.261130",
        "active_duration": "00:00:00",
        "completed_duration": "00:00:00",
        "failed_duration": "00:00:00",
        "cancelled_duration": "00:00:00",
        "last_unassigned_at": null,
        "last_assigned_at": null,
        "last_accepted_at": null,
        "last_transit_at": null,
        "last_active_at": null,
        "last_completed_at": null,
        "last_failed_at": null,
        "last_cancelled_at": null
    }
]

GET https://gsmtasks.com/api/tasks/task_metadatas/

Attributes

Attribute Type Description
id String Task metadata unique identifier
url String Unique URL for the resource
task String URL of the task resource
events_count Integer
documents_count Integer
signatures_count Integer
forms_count Integer
forms_completed_count Integer
unassigned_duration String
assigned_duration String
accepted_duration String
transit_duration String
active_duration String
completed_duration String
failed_duration String
cancelled_duration String
last_unassigned_at String
last_assigned_at String
last_accepted_at String
last_transit_at String
last_active_at String
last_completed_at String
last_failed_at String
last_cancelled_at String

Retrieve a specific Task metadata

GET https://gsmtasks.com/api/tasks/task_metadatas/eed4a5fe-5cde-4859-baaf-68b60b2c03af/

Task Forms

List Task Forms

Returns a array of task forms that the user has access to.

[
    {
        "id": "9d361905-6871-489e-89b8-a218178c6faa",
        "url": "https://gsmtasks.com/api/tasks/task_forms/9d361905-6871-489e-89b8-a218178c6faa/",
        "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "name": "Name",
        "link": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "edit_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "view_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "pdf_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "completed": false,
        "created_at": "2016-10-07T11:12:01.237733Z",
        "updated_at": "2016-10-07T11:12:01.237761Z"
    }
]

GET https://gsmtasks.com/api/tasks/task_forms/

Attributes

Attribute Type Description
id String Task form unique identifier
url String Unique URL for the resource
task String URL of the task resource
name String Name of the task form
link String
edit_url String
view_url String
pdf_url String
completed Boolean Shows whether the task form is completed or not
created_at String The time when the task form was created
updated_at String The time when the task form was updated

Retrieve a specific Task form

GET https://gsmtasks.com/api/tasks/task_forms/9d361905-6871-489e-89b8-a218178c6faa/

Create Task form

Request to create a new task form with the parameters provided. The tasks that are going to be attached to the task form need to be created beforehand.

You can read more about creating tasks here.

Example POST request JSON data:

{
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "name": "Name",
    "edit_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "view_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "pdf_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "completed": false
}

The request returns JSON of the created Order structured like this:

{
    "id": "9d361905-6871-489e-89b8-a218178c6faa",
    "url": "https://gsmtasks.com/api/tasks/task_forms/9d361905-6871-489e-89b8-a218178c6faa/",
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "name": "Name",
    "link": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "edit_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "view_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "pdf_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "completed": false,
    "created_at": "2016-10-07T11:12:01.237733Z",
    "updated_at": "2016-10-07T11:12:01.237761Z"
}

POST https://gsmtasks.com/api/tasks/task_forms/

Request parameters

Parameter Type Required Description
task String Yes URL of the account resource
name String Yes Name of the task form
edit_url String Yes
view_url String No
pdf_url String No
completed Boolean No Shows whether the task form is completed or not

Update Task Form

Request to update a Task Form. We will change the name and the completed status as an example.

Example PUT request JSON data:

{
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "name": "Some other name",
    "edit_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "completed": true
}

The request returns JSON of the updated Order structured like this:

{
    "id": "9d361905-6871-489e-89b8-a218178c6faa",
    "url": "https://gsmtasks.com/api/tasks/task_forms/9d361905-6871-489e-89b8-a218178c6faa/",
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "name": "Some other name",
    "link": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "edit_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "view_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "pdf_url": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "completed": true,
    "created_at": "2016-10-07T11:12:01.237733Z",
    "updated_at": "2016-10-07T11:12:01.237761Z"
}

PUT https://gsmtasks.com/api/tasks/task_forms/9d361905-6871-489e-89b8-a218178c6faa/

Request parameters

Parameter Type Required Description
task String Yes URL of the account resource
name String Yes Name of the task form
edit_url String Yes
view_url String No
pdf_url String No
completed Boolean No Shows whether the task form is completed or not

Task Event Tracks

List Task Event Tracks

Returns a array of task event tracks that the user has access to.

The request returns JSON structured like this:

{
    "type": "FeatureCollection",
    "features": [
        {
            "id": "d1dba784-f973-42f0-a875-7889676e077e",
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [
                        24.7773089,
                        59.4289815
                    ],
                    [
                        24.7297235,
                        59.4403178
                    ]
                ]
            },
            "properties": {
                "model": "task_event_track",
                "url": "https://gsmtasks.com/api/tasks/task_event_tracks/d1dba784-f973-42f0-a875-7889676e077e/",
                "task": "ffec72b7-8e5a-4062-b338-33fa458a497b",
                "task_event": "https://gsmtasks.com/api/tasks/task_events/d1dba784-f973-42f0-a875-7889676e077e/",
                "event": "unaccept",
                "from_state": "accepted",
                "to_state": "assigned",
                "user": "cfdf3a8e-a9d7-4878-a922-344081a1ed75",
                "notes": "",
                "assignee": "cfdf3a8e-a9d7-4878-a922-344081a1ed75",
                "created_at": "2016-10-24T05:17:39.459316Z",
                "updated_at": "2016-10-24T05:17:50.948596Z"
            }
        }
    ]
}

GET https://gsmtasks.com/api/tasks/task_event_tracks/

Attributes

Attribute Type Description
id String Task event track unique identifier
type String Type of the task event track
geometry object
properties object

Task Address Feature

List Task Address Feature

Returns a array of task address feature that the user has access to.

The request returns JSON structured like this:

{
    "type": "FeatureCollection",
    "features": [
        {
            "id": "d09b5fc0-d82f-42ed-9d5f-022d68f36df6",
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    24.716517899999985,
                    59.4329769
                ]
            },
            "properties": {
                "model": "task_address_feature",
                "task": "https://gsmtasks.com/api/tasks/tasks/d09b5fc0-d82f-42ed-9d5f-022d68f36df6/",
                "formatted_address": "Paldiski maantee 42d, 10612 Tallinn, Estonia",
                "category": "assignment",
                "state": "completed"
            }
        }
    ]
}

GET https://gsmtasks.com/api/tasks/task_address_features/

Attributes

Attribute Type Description
id String Task event track unique identifier
type String Type of the task event track
geometry Object
properties Object

Metafields

List Metafields

Returns a array of metafields that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "b0f05cbb-4022-4cf8-b471-373b1bfbd1b5",
        "url": "https://gsmtasks.com/api/tasks/metafields/b0f05cbb-4022-4cf8-b471-373b1bfbd1b5/",
        "account": "https://gsmtasks.com/api/tasks/accounts/a6f60fdf-d87b-4c5d-b5ec-67a90cd16236/",
        "namespace": "account",
        "key": "metafield1",
        "field_name": "account:metafield1",
        "value_type": "string",
        "label": "App",
        "choices": null,
        "is_editable": true,
        "show_in_detail_view": true,
        "show_in_list_view": true,
        "show_in_mobile_app": true,
        "created_at": "2016-02-25T13:05:39.140375Z",
        "updated_at": "2016-10-05T14:17:43.191265Z"
    }
]

GET https://gsmtasks.com/api/tasks/metafields/

Attributes

Attribute Type Description
id String Client unique identifier
url String Unique URL for the resource
account String URL of the account resource
namespace String Namespace of this metafield which defines the scope of the attribute, e.g. ‘account’
key String Key of this metafield, which names the attribute key in the metafields dict
field_name String
value_type String
label String
choices Array
is_editable Boolean
show_in_detail_view Boolean
show_in_list_view Boolean
show_in_mobile_app Boolean
created_at String The time when the metafield was created
updated_at String The time when the metafield was updated

Retrieve a specific Metafield

GET https://gsmtasks.com/api/tasks/metafields/b0f05cbb-4022-4cf8-b471-373b1bfbd1b5/

Create Metafield

Request to create a new Metafield with the parameters provided.

Example POST request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/a6f60fdf-d87b-4c5d-b5ec-67a90cd16236/",
    "namespace": "account",
    "key": "metafield1",
    "value_type": "string",
    "label": "App",
    "choices": ["choice 1", "choice 2"],
    "is_editable": true,
    "show_in_detail_view": true,
    "show_in_list_view": true,
    "show_in_mobile_app": true
}

The request returns JSON of the created Order structured like this:

    {
        "id": "b0f05cbb-4022-4cf8-b471-373b1bfbd1b5",
        "url": "https://gsmtasks.com/api/tasks/metafields/b0f05cbb-4022-4cf8-b471-373b1bfbd1b5/",
        "account": "https://gsmtasks.com/api/tasks/accounts/a6f60fdf-d87b-4c5d-b5ec-67a90cd16236/",
        "namespace": "account",
        "key": "metafield1",
        "field_name": "account:metafield1",
        "value_type": "string",
        "label": "App",
        "choices": null,
        "is_editable": true,
        "show_in_detail_view": true,
        "show_in_list_view": true,
        "show_in_mobile_app": true,
        "created_at": "2016-02-25T13:05:39.140375Z",
        "updated_at": "2016-10-05T14:17:43.191265Z"
    }

POST https://gsmtasks.com/api/tasks/metafields/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
namespace String Yes Namespace of this metafield which defines the scope of the attribute, e.g. 'account’
key String Yes Key of this metafield, which names the attribute key in the metafields dict
value_type String Yes
label String No
choices Array No
is_editable Boolean No
show_in_detail_view Boolean No
show_in_list_view Boolean No
show_in_mobile_app Boolean No

Update Metafield

Request to update a Metafield. We will change the namespace and key as an example.

Example PUT request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/a6f60fdf-d87b-4c5d-b5ec-67a90cd16236/",
    "namespace": "metafield",
    "key": "updated"
}

The request returns JSON of the updated Order structured like this:

{
    "id": "b0f05cbb-4022-4cf8-b471-373b1bfbd1b5",
    "url": "https://gsmtasks.com/api/tasks/metafields/b0f05cbb-4022-4cf8-b471-373b1bfbd1b5/",
    "account": "https://gsmtasks.com/api/tasks/accounts/a6f60fdf-d87b-4c5d-b5ec-67a90cd16236/",
    "namespace": "metafield",
    "key": "updated",
    "field_name": "metafield:updated",
    "value_type": "string",
    "label": "App",
    "choices": null,
    "is_editable": true,
    "show_in_detail_view": true,
    "show_in_list_view": true,
    "show_in_mobile_app": true,
    "created_at": "2016-02-25T13:05:39.140375Z",
    "updated_at": "2016-10-05T14:17:43.191265Z"
}

PUT https://gsmtasks.com/api/tasks/clients/74c08598-08b8-46bc-9da7-8b85f7168f20/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
namespace String Yes Namespace of this metafield which defines the scope of the attribute, e.g. 'account’
key String Yes Key of this metafield, which names the attribute key in the metafields dict
value_type String Yes
label String No
choices Array No
is_editable Boolean No
show_in_detail_view Boolean No
show_in_list_view Boolean No
show_in_mobile_app Boolean No

Notifications

List Notifications

Returns a array of notifications that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "5bb47214-66a1-4f1e-9e00-ee287e3648ec",
        "url": "https://gsmtasks.com/api/tasks/notifications/5bb47214-66a1-4f1e-9e00-ee287e3648ec/",
        "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
        "event": "create",
        "recipient": "account",
        "emails": [
            "tom.smith@fast.uk"
        ],
        "phone": "+447700900132",
        "app": false,
        "message": "Example message",
        "created_at": "2016-10-24T10:45:26.599735Z",
        "updated_at": "2016-10-24T10:45:26.599764Z"
    }
]

GET https://gsmtasks.com/api/tasks/notifications/

Attributes

Attribute Type Description
id String notification unique identifier
url String Unique URL for the resource
task String URL of the task resource
event String
recipient String
emails Array
phone String
app Boolean
message String
created_at String The time when the notification was created
updated_at String The time when the notification was updated

Retrieve a specific Notification

GET https://gsmtasks.com/api/tasks/notifications/5bb47214-66a1-4f1e-9e00-ee287e3648ec/

Create Notification

Request to create a new Notification with the parameters provided.

Example POST request JSON data:

{
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "event": "create",
    "recipient": "account",
    "emails": [
        "tom.smith@fast.uk"
    ],
    "phone": "+447700900132",
    "app": false,
    "message": "Example message"
}

The request returns JSON of the created Order structured like this:

{
    "id": "5bb47214-66a1-4f1e-9e00-ee287e3648ec",
    "url": "https://gsmtasks.com/api/tasks/notifications/5bb47214-66a1-4f1e-9e00-ee287e3648ec/",
    "task": "https://gsmtasks.com/api/tasks/tasks/90c65c5e-b8b8-44c9-9d8b-cb7f91b53c38/",
    "event": "create",
    "recipient": "account",
    "emails": [
        "tom.smith@fast.uk"
    ],
    "phone": "+447700900132",
    "app": false,
    "message": "Example message",
    "created_at": "2016-10-24T10:45:26.599735Z",
    "updated_at": "2016-10-24T10:45:26.599764Z"
}

POST https://gsmtasks.com/api/tasks/notifications/

Request parameters

Parameter Type Required Description
task String Yes URL of the task resource
event String No
recipient String No
emails Array No
phone String No
app Boolean No
message String Yes

Notification Templates

List Notification Templates

Returns a array of notification templates that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "8eaa96d6-e4b7-4592-ace9-aa05576c868d",
        "url": "https://gsmtasks.com/api/tasks/notification_templates/8eaa96d6-e4b7-4592-ace9-aa05576c868d/",
        "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
        "name": "Name",
        "event": "",
        "recipient": "account",
        "via_sms": true,
        "via_email": false,
        "via_app": false,
        "is_active": false,
        "message": "message",
        "created_at": "2016-10-10T11:34:31.497853Z",
        "updated_at": "2016-10-25T07:01:13.009925Z"
    }
]

GET https://gsmtasks.com/api/tasks/notification_templates/

Attributes

Attribute Type Description
id String Notificaton template unique identifier
url String Unique URL for the resource
account String URL of the account resource
name String Name of the notification template
event String
recipient String
via_sms Boolean
via_email Boolean
via_app Boolean
is_active Boolean
message String
created_at String The time when the notification template was created
updated_at String The time when the notification template was updated

Retrieve a specific Notification Template

GET https://gsmtasks.com/api/tasks/notification_templates/8eaa96d6-e4b7-4592-ace9-aa05576c868d/

Create Notification Template

Example POST request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Name",
    "event": "create",
    "recipient": "account",
    "via_sms": true,
    "via_email": false,
    "via_app": false,
    "is_active": false,
    "message": "message"
}

The request returns JSON of the created Notification Template structured like this:

{
    "id": "773ef894-290d-4ab7-ab40-c53eaa47237f",
    "url": "https://gsmtasks.com/api/tasks/notification_templates/773ef894-290d-4ab7-ab40-c53eaa47237f/",
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Name",
    "event": "create",
    "recipient": "account",
    "via_sms": true,
    "via_email": false,
    "via_app": false,
    "is_active": false,
    "message": "message",
    "created_at": "2016-10-25T07:18:33.672215Z",
    "updated_at": "2016-10-25T07:18:33.672239Z"
}

POST https://gsmtasks.com/api/tasks/notification_templates/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
name String Yes Name of the notification template
event String Yes
recipient String Yes
via_sms Boolean No
via_email Boolean No
via_app Boolean No
is_active Boolean No
message String Yes

Update Notification Template

Request to update a notification template. We will change the name, via_sms status and via_email status as an example.

Example PUT request JSON data:

{
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Notification template",
    "via_sms": false,
    "via_email": true,
    "message": "important"
}

The request returns JSON of the updated Order structured like this:

{
    "id": "773ef894-290d-4ab7-ab40-c53eaa47237f",
    "url": "https://gsmtasks.com/api/tasks/notification_templates/773ef894-290d-4ab7-ab40-c53eaa47237f/",
    "account": "https://gsmtasks.com/api/tasks/accounts/798d8fda-43d1-497a-b63b-1ad784afc117/",
    "name": "Notification template",
    "event": "create",
    "recipient": "account",
    "via_sms": false,
    "via_email": true,
    "via_app": false,
    "is_active": false,
    "message": "important",
    "created_at": "2016-10-25T07:18:33.672215Z",
    "updated_at": "2016-10-25T07:27:59.460450Z"
}

PUT https://gsmtasks.com/api/tasks/notification_templates/773ef894-290d-4ab7-ab40-c53eaa47237f/

Request parameters

Parameter Type Required Description
account String Yes URL of the account resource
name String Yes Name of the notification template
event String No
recipient String No
via_sms Boolean No
via_email Boolean No
via_app Boolean No
is_active Boolean No
message String Yes

Time Locations

List Time Locations

Returns a array of time locations that the user has access to.

The request returns JSON structured like this:

[
    {
        "id": "78d0c5d7-974c-415d-a884-7458aa1e5a5f",
        "url": "https://gsmtasks.com/api/tasks/time_locations/78d0c5d7-974c-415d-a884-7458aa1e5a5f/",
        "user": "https://gsmtasks.com/api/tasks/users/04a01121-c95c-40d5-9910-d55c803533bb/",
        "time": "2016-03-04T06:28:52.926000Z",
        "location": {
            "type": "Point",
            "coordinates": [
                24.7294207,
                59.4398418
            ]
        },
        "registration": "",
        "state": "unknown",
        "heading": 0,
        "speed": 0,
        "altitude": 0,
        "accuracy": 30,
        "battery_level": "0.980",
        "created_at": "2016-10-19T13:01:15.456895Z",
        "updated_at": "2016-10-19T13:01:15.456956Z"
    }
]

GET https://gsmtasks.com/api/tasks/time_locations/

Attributes

Attribute Type Description
id String Time location unique identifier
url String Unique URL for the resource
user String URL of the user who created time location
time String Time when the time location was created
location Object A GeoJSON object ????
registration String Car number plate
state String unknown, stopped or moving.
heading Integer Where the car was heading
speed Integer Speed of the car
altitude Integer Altitude of the car
accuracy Integer Accuracy
battery_level Battery level
created_at String The time when the order was created
updated_at String The time when the order was updated

Retrieve a specific Time Location

GET https://gsmtasks.com/api/tasks/time_locations/78d0c5d7-974c-415d-a884-7458aa1e5a5f/

Create Time Location

Request to create a new time location with the parameters provided.

Example POST request JSON data:

{
    "time": "2016-01-14T14:33:00Z",
    "location": {
        "type": "Point",
        "coordinates": [
            24.7297895322,
            59.439981842
        ]
    },
    "registration": "123AAA",
    "state": "stopped",
    "heading": null,
    "speed": null,
    "altitude": null,
    "accuracy": null,
    "battery_level": null
}

The request returns JSON of the created Order structured like this:

{
    "id": "dea56300-382d-4a0b-8424-cbc6e1941bbb",
    "url": "http://127.0.0.1:8000/api/tasks/time_locations/dea56300-382d-4a0b-8424-cbc6e1941bbb/",
    "user": "http://127.0.0.1:8000/api/tasks/users/adba000d-9f1b-4469-a2b7-7dfb7977f57b/",
    "time": "2016-01-14T14:33:00Z",
    "location": {
        "type": "Point",
        "coordinates": [
            24.7297895322,
            59.439981842
        ]
    },
    "registration": "123AAA",
    "state": "stopped",
    "heading": null,
    "speed": null,
    "altitude": null,
    "accuracy": null,
    "battery_level": null,
    "created_at": "2016-10-25T07:59:18.510722Z",
    "updated_at": "2016-10-25T07:59:18.510795Z"
}

POST https://gsmtasks.com/api/tasks/time_locations/

Request parameters

Attribute Type Required Description
time String Yes Time when the time location was created
location Object Yes A GeoJSON object
registration String No Car number plate
state String Yes Unknown, stopped or moving.
heading Integer No Where the car was heading
speed Integer No Speed of the car
altitude Integer No Altitude of the car
accuracy Integer No Accuracy
battery_level No Battery level