Limble's API Documentation

Connect, Integrate and Synchronize

Getting Started

About Limble CMMS and how to get started with our API.
DOCS
Request Help | Suggest Edit

Welcome to Limble CMMS's API documentation.

You can use this documentation to configure connections to the Limble CMMS API over https using RESTful standards.

Using the API you can get information about the following portions of your system:

  • Assets
  • Tasks (Work Orders, Preventive Maintenance, Work Requests, etc.)
  • Parts (Current quantities and Usage)
  • Invoices
  • Locations
  • Users

If you come across anything you think can be improved or find you need functions that are not listed please feel free to reach out to us!

Authentication Request Help | Suggest Edit

To protect your information the Limble CMMS API uses BASIC authorization standards.

Every call to the API must include an authorization header with your base 64 encoded id and secret.

Example Header

Authorization: Basic [BASE64 ENCODED YOUR_CLIENT_ID:YOUR_CLIENT_SECRET]

Client ID Request Help | Suggest Edit

Your Client ID is your unique customer identification and will control which data elements you will have access to. For example a Client ID can be restricted to only allow Assets to be accessed.

Client Secret Request Help | Suggest Edit

Your Client Secret is used to authenticate the Client ID on each API call. This is something that must be kept secret.

How do I get my Client ID and Client Secret?

To obtain your Client ID and Client Secret simply contact your dedicated CMMS advisor or send us an email at mail@limblecmms.com.

Samples Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/assets \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic

//cURL defaults to basic authorization. Using the -u parameter curl will create the header for you. You may add the --basic option to ensure it is treated correctly
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/assets");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr); 
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/assets',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Query Parameters Request Help | Suggest Edit

Most query parameters are optional and do not need to be used, but using them can be extremely helpful.

Here are some general guidelines for their use:

- All parameters must be URL-encoded.
  -ie: string%20paramaters%20must%20be%20written%20like%20this%2E

- Dates: All dates are to be in epoch time, otherwise known as a unix timestamp
  -ie: 1518826177 = GMT: Saturday, February 17, 2018 12:09:37 AM

- Id Numbers: All id numbers can be provided in a comma separated fashion, ie:
  - ?assets=1
  - ?assets=1,4,6

Handling Response Data Request Help | Suggest Edit

All data from Limble API calls include:
  - success: true/false
All data from GET calls also include:
  - data:
   - columns: Array list of all column names
   - rows: Array list of all data for the columns

This method drastically reduces download times as the name of the columns are only sent once.

Depending on your use of the data you can create a csv as-is to port to other systems or you can map it to be used programatically.

Here are some sample methods for achieving this in PHP and NodeJS:

Sample Handling Response Data Functions Request Help | Suggest Edit

$res = //Response From Limble API
$arr = [];

foreach($res['data']['rows'] as $row){
    $tmp = [];
    foreach($res['data']['columns'] as $key => $column){
        $tmp[$column] = $row[$key];
    }
    $arr[] = $tmp; 
}
											
var res = //Response From Limble API;

var data = res.data.rows.map(row => {
    let obj = {};

    res.data.columns.forEach((column, index) => {
        obj[column] = row[index];
    });

    return obj;
});
											

Call Limit Request Help | Suggest Edit

To help protect against run-away scripts, clients who make an inordinate number of calls over a period of time may be temporarily blocked from accessing the service. The limits are defined in the table below. If you receive an error indicating that you have exceeded the call limit, please wait and try again later.

If you feel that you need a higher call limit, or you would like assistance for any other reason, click the "Request Help" button on the right.

Method Limit
GET 1000 calls per hour.
POST 50 calls per hour.
PUT 50 calls per hour.
DELETE 10 calls per hour.


- Can't find what you want?

Need to accomplish something with the API that you can't? Send us an email and we will see if we can get that added for you.

Get Assets

Get information such as Asset IDs, Asset Names, etc.
GET
https://api.limblecmms.com/assets?start=1518826177&end=1518971169&locations=74,153&assets=75,20,1111,23

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Assets that were last edited after the unix timestamp passed into the start parameter. For example, all Assets that were last edited after April 18th, 2018. start=1518826177
end Int Optional This parameter is used to only get Assets that were last edited before the unix timestamp passed into the end parameter. end=1518971169
locations Comma-Separated Ints Optional This parameter is used to only get Assets at a specific group of Locations. This parameter accepts a comma delimited list of Location IDs. locations=74,153
assets Comma-Separated Ints Optional This parameter is used to only get specific Assets. This parameter expects a comma delimited list of Asset IDs. assets=75,20,1111,23

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/assets \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/assets");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr); 
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/assets',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Asset ID", //The Asset's internal Limble Asset ID
            "Asset Name", //the Asset's name
            "Location ID", //the Location ID of the Asset
            "Asset Started On", //When the Asset started running
            "Last Edited", //The last time this Asset was edited
            "Status", //If the Asset is Active or Deleted
            "Hours Per Week"  //the number of hours per week an Asset runs
        ],
        "rows": [
            [
                14,
                "DAIKIN GOODMAN R410A",
                73,
                1457478077,
                1518826313,
                "Active",
                40
            ],
            [
                15,
                "Goodman Commercial 15 Ton 3 - 025",
                73,
                1457478077,
                1518826313,
                "Active",
                40
            ],
            [
                58,
                "Heat Pump 003",
                73,
                1457478077,
                1518826313,
                "Active",
                40
            ],
            [
                115,
                "Chiller 1",
                73,
                1508440044,
                1518826313,
                "Deleted",
                40
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Assets Fields

Get detailed information about Asset Fields such as Make, Model and any other custom set field.
GET
https://api.limblecmms.com/assets/fields?start=1518826177&end=1518971169&assets=45,103,5756

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Assets Fields that were last edited after the unix timestamp passed into the start parameter. For example, all Assets Fields that were last edited after April 18th, 2018. start=1518826177
end Int Optional This parameter is used to only get Assets Fields that were last edited before the unix timestamp passed into the end parameter. end=1518971169
assets Comma-Separated Ints Optional This parameter is used to only get Asset Fields for specific Assets. This parameter expects a comma delimited list of Asset IDs. assets=45,103,5756

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/assets/fields \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/assets/fields");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr); 
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/assets/fields',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Asset ID",  //The ID of the Asset this field belongs to
            "Field", //The Name of the field.  e.g Make, Model, etc.
            "Value", //The value stored in that field.  e.g. Goodman
            "Field Type", //The type of the field such as Text (1), Date (2), Pictures (3), Documents (4), Number (5), Currency (6).
            "Files", //Name of the files uploaded 
            "Asset Last Edited"  //The last time the Asset this field belongs to was edited
        ],
        "rows": [
            [
                45,
                "Make",
                "Volvo",
                "Text",
                "",
                1518974309
            ],
            [
                45,
                "Model",
                "L180G",
                "Text",
                "",
                1518974309
            ],
            [
                45,
                "Hours Ran",
                "3",
                "Number",
                "",
                1518974309
            ],
            [
                45,
                "Cost",
                "25000",
                "Currency",
                "",
                1518974309
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Tasks (WOs, PMs, etc.)

Get information about Tasks such as task type, completed date, time spent (labor cost), etc.
GET
https://api.limblecmms.com/tasks?start=1489747783&end=1495581331&locations=73,74&tasks=40,81,116

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Tasks that were last edited after the unix timestamp passed into the start parameter. E.g. all Tasks that were last edited after April 18th, 2018. start=1489747783
end Int Optional This parameter is used to only get Tasks that were last edited before the unix timestamp passed into the end parameter. end=1495581331
locations Comma-Separated Ints Optional This parameter is used to only get Tasks at a specific group of locations. This parameter accepts a comma delimited list of Location IDs. locations=73,74
tasks Comma-Separated Ints Optional This parameter is used to only get specific Tasks. This parameter accepts a comma delimited list of task IDs. tasks=40,81,116
taskType Comma-Separated Ints Optional This parameter is used to only get Tasks of a specific type. This parameter accepts a comma delimited list of task types according to this key:

2 = Unplanned Work Order (WO);
4 = Planned Work Order (WO);
5 = Preventative Maintanance (PM).

Task types not listed here are not currently supported.
If you would like another task type to be supported, please contact us.
taskType=2,4

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/tasks \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/tasks");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr); 
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/tasks',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Task ID", //The unique ID for tasks
            "Task Name", //The Task's Name
            "Owner", //The user who this Task was assigned to
            "Team", //The team this task was assigned to
            "Location ID", //The location this Task belongs to
            "Created Date", //The unix timestamp this Task was created
            "Date Due", //The unix timestamp this Task was due
            "Date Completed", //The unix timestamp when this Task was Completed
            "Last Edited", //The unix timestamp when this Task was last edited
            "Completed By User", //The user that completed this Task
            "Asset ID", //The Asset this task belongs to
            "Time Spent - User Provided Duration (in seconds)", //How long this Task took to complete (in seconds) recorded by a User 
            "Completed User Wage", //The wage per hour of the User that completed this Task at the time the Task was completed
            "Priority", //The priority of the Task
            "Downtime (in seconds)", //How many seconds of Downtime this Task caused
            "Task Type" //The Type of Task.  E.g Unplanned WO Instance
        ],
        "rows": [
            [
                26,
                "Quarterly Maintenance",
                0,
                0,
                73,
                "0",
                "0",
                "0",
                1518559856,
                0,
                16,
                0,
                15,
                0,
                0,
                "PM Template"
            ],
            [
                40,
                "Quarterly Maintenance",
                0,
                438,
                73,
                "1458231353",
                "1459391400",
                "1459391400",
                1489747783,
                341,
                16,
                3600,
                15,
                1,
                0,
                "PM Instance"
            ],
            [
                81,
                "Fix the test player's screen",
                0,
                436,
                74,
                "1484261846",
                "1484213400",
                "1484213400",
                1494083876,
                341,
                20,
                4800,
                15,
                0,
                0,
                "Unplanned WO Instance"
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Parts

Get information about your current parts inventory such as current quantity, price, quantity threshold, etc.
GET
https://api.limblecmms.com/parts?start=1518816773&end=1518825264&parts=215,217

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Parts that were last edited after the unix timestamp passed into the start parameter. For example, all Parts that were last edited after April 18th, 2018. start=1518816773
end Int Optional This parameter is used to only get Parts that were last edited before the unix timestamp passed into the start parameter. end=1518825264
locations Comma-Separated Ints Optional This parameter is used to only get Parts at a specific group of Locations. This parameter accepts a comma delimited list of Location IDs. locations=73
parts Comma-Separated Ints Optional This parameter is used to only get specific Parts. This parameter expects a comma delimited list of Part IDs. parts=215,217

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/parts \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/parts");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr); 
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/parts',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
  "success": true,
  "data": {
    "columns": [
      "Part ID", //The unique identifier for this Part
      "Number", //The Part's Number.  THIS IS NOT stock levels.  Parts often have numbers associated with them for identification purposes
      "Name", //The Part's Name
      "Quantity", //How many of this Part is currently in stock
      "Price", //The price of the Part
      "Note", //Notes associated with the Part
      "Category", //The Category the Part is associated with
      "Location ID", //The location this Part belongs to
      "Stale Hit", //If the stale threshold is hit.  0 = false, 1 = true
      "Part Quantity Hit", //If the Part Quantity Threshold is Hit. 0 = false, 1 = true
      "Stale Threshold", //The number of days for a Part to have not been used before it goes Stale.  -1 means this feature is disabled.
      "Part Quantity Threshold", //The minimum number of parts we want to keep in inventory.  -1 means this feature is disabled.
      "Last Edited", //The last time this Part was edited
      "Owner", //Who Tasks will be assigned to if a Threshold is triggered. If both Owner and Team set to 0 it will default to Manager
      "Team" //Who Tasks will be assigned to if a Threshold is triggered. If both Owner and Team set to 0 it will default to Manager
    ],
    "rows": [
      [
        1,
        "01XB",
        "Digital Multimeter",
        1,
        2,
        "",
        "Electronics",
        73,
        1,
        1,
        30,
        30,
        1520467427,
        0,
        0
      ],
      [
        11,
        "2f996",
        "Switch",
        33,
        84,
        "",
        "",
        163,
        1,
        0,
        30,
        10,
        1519148927,
        0,
        0
      ],
      [
        19,
        "8831",
        "Oil Filter",
        24,
        15,
        "",
        "Gas Filters",
        205,
        1,
        0,
        -1,
        -1,
        1518826313,
        0,
        437
      ],
    ]
  }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Parts Usage

Get information about your Parts Usage, such as what Parts were used when and for how much.
GET
https://api.limblecmms.com/parts/usage?tasks=88,5&parts=1,3&start=1518826177&end=1518971169

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Parts Usage that were last edited after the unix timestamp passed into the start parameter. For example, all Parts Usage that were last edited after April 18th, 2018. start=1518826177
end Int Optional This parameter is used to only get Parts Usage last edited before the unix timestamp passed into the end parameter. end=1518971169
parts Comma-Separated Ints Optional This parameter is used to only get Parts Usage for specific Parts. This parameter accepts a comma delimited list of Part IDs. parts=1,3
tasks Comma-Separated Ints Optional This parameter is used to only get Parts Usage for specific Tasks. This parameter accepts a comma delimited list of Task IDs. tasks=88,5

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/parts/usage \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/parts/usage");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr);
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/parts/usage',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Task ID", //The Task where this Part was used
            "Part ID", //The Part that was used
            "Suggested Count", //The suggested number of Parts that should have been used
            "Used Count", //How many Parts were actually used
            "Used Price", //The price of the Part at the time it was used
            "Used On" //The completed time of the Task where this Part was used 
        ],
        "rows": [
            [
                1548,
                112,
                1,
                1,
                25,
                "1520347973"
            ],
            [
                1566,
                6,
                1,
                0,
                0,
                "0"
            ],
            [
                1717,
                145,
                1,
                3,
                9.99,
                "1521240685"
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Invoices

Get information about Invoices such as their cost and when they occurred.
GET
https://api.limblecmms.com/invoices?start=1518817773&end=1518817777&invoices=5,6,7&tasks=50,94

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
start Int Optional This parameter is used to only get Invoices that were last edited after the unix timestamp passed into the start parameter. For example, all Invoices that were last edited after April 18th, 2018. start=1518826177
end Int Optional This parameter is used to only get Invoices that were last edited before the unix timestamp passed into the end parameter. end=1518817777
invoices Comma-Separated Ints Optional This parameter is used to only get specific Invoices. This parameter expects a comma delimited list of Invoice IDs. invoices=5,6,7
tasks Comma-Separated Ints Optional This parameter is used to only get Invoices for specific Tasks. This parameter expects a comma delimited list of Task IDs. tasks=50,94

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/invoices \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/invoices");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr);
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/invoices',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Invoice ID", //The unique ID for an Invoice
            "File", //The File Name of the Invoice
            "Cost", //The cost associated with the Invoice
            "Task ID", //The Task this Invoice belongs to
            "Last Edited", //The last time this Invoice was edited
            "Used On" //The completed time of the Task where this Invoice was used.  
        ],
        "rows": [

            [
                77,
                "14325 Status Report - 2017-08-01.pdf",
                500,
                548,
                1518826313,
                "1503951848"
            ],
            [
                81,
                "",
                50,
                643,
                1518826313,
                "1506108327"
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Locations

Get information about locations such as Location Name, Timezone etc.
GET
https://api.limblecmms.com/locations?locations=541,232

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
locations Comma-Separated Ints Optional This parameter is used to only get specific Locations. This parameter expects a comma delimited list of Location IDs. locations=541,232

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/locations \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/locations");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr);
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/locations',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "Location ID", //The unique ID for each location
            "Location Name", //The locations name
            "Timezone", //The timezone this location is at
            "Weekly Operation Hours" //Default weekly Operation Hours.  Used when calculating hours an asset is ran if the hours an asset run isn't explicitly set
        ],
        "rows": [
            [
                541,
                "NY - Facility 1",
                "MST",
                40
            ],
            [
                232,
                "SLC - Facility 2",
                "MST",
                40
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Get Users

Get information about Users such as User Login, User Email etc.
GET
https://api.limblecmms.com/users?userID=2366,8971

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
users Comma-Separated Ints Optional This parameter is used to only get specific Users. This parameter expects a comma delimited list of User IDs. userID=2366,8971

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/users \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://api.limblecmms.com/users");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr);
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

const options = {
    hostname: 'api.limblecmms.com',
    path: '/users',
    method: 'GET',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{
    "success": true,
    "data": {
        "columns": [
            "User ID", //Unique ID for a User
            "User Login", //The User's username
            "Email", //The email associated with the User
            "Phone", //The User's phone number
            "First Name", //The User's first name
            "Last Name", //The User's Last Name
            "Wage", //The Wage set for a User
            "Active", //Is the User active.  0 = inactive, 1 = active
            "Login Count", //The number of times a User has logged in
            "Email Notification Active", //If email notifications are turned on for the User. 0 = off, 1 = on
            "Push Notification Active", //If push notifications are turned on for the User. 0 = off, 1 = on
            "Workday Hours", //How many hours a day the User works
            "Date Added" //The date the User was added
        ],
        "rows": [
            [
                341,
                "testing@tester.com",
                "testing@tester.com",
                "987-654-3210",
                "Nathan",
                "Washburn",
                15,
                1,
                4724,
                1,
                1,
                8,
                1519721024
            ],
            [
                342,
                "test@test.com",
                "test@test.com",
                "987-654-3210",
                "Bryan",
                "Christiansen",
                15,
                1,
                49,
                1,
                1,
                8,
                1519740024
            ]
        ]
    }
}
											
SAMPLE ERROR MESSAGE GOES HERE
											

Create Tasks

Create a work order or PM, add detailed instructions and feedback requirements, assign to a user or team, and more.
Post
https://api.limblecmms.com/tasks/createTask/?name=Example%20Work%20Order&due=1532217600&taskType=4&location=205

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
name String Required The name of the task. Limited to 150 characters. name=Replace%20the%20smoke%20detector%27s%20batteries%2E
location Int Required The location to which the task is assigned. Must be the location's unique ID number. location=9871
due Int Required The time at which the task is due for completion. Must be a unix timestamp. due=1533242941
taskType Int Required The type of task according to this legend:

2 = Unplanned Work Order (WO);
4 = Planned Work Order (WO);
5 = Preventative Maintanance (PM).
6 = Work Request (WR).

Task types not listed here are not currently supported.
If you would like another task type to be supported, please contact us.

A taskType of 5 or 6 prevents the user from assigning a batchID to the task.
taskType=4
asset Int Optional The asset that the task will be attached to, if any. Must be the unique ID number of the asset. Omitting this parameter or setting it to zero will not attach the task to any asset. asset=6722
checklistItems Comma-Separated Strings Optional. Required if 'checklistItemTypes' is used. The items that must be resolved before the task can be marked as completed. The number of comma-separated strings in this parameter must match the number of comma-separated integers in checklistItemTypes. Limited to 50 comma-separated strings. checklistItems=Do%20this,Then%20do%20this,And%20finally%20do%20this%third%20thing
checklistItemTypes Comma-Separated Ints Optional. Required if 'checklistItems' is used. The type of each checklist item (see the 'Parameter Legends' section below for details).

1 = Check Box;
3 = Text Box;
5 = Date Picker;
7 = Label;
9 = File or Picture Attachment;
11 = Deadline Date Picker;
13 = Number;
14 = Start WO;
15 = Capture Signature.

Item types not listed here are not currently supported.
If you would like another item type to be supported, please contact us.

The number of comma-separated integers in this parameter must match the number of comma-separated strings in checklistItems. Limited to 50 comma-separated integers.
checklistItemTypes=7,1,15
batchID Int Optional The checklist batchID. Used to add the task to a specific batch (aka grouping or family) of tasks. batchID=153322364843882
assignment Int Optional. Required if 'assignmentType' is used. The user or team to which the task will be assigned. Must be a user or team that exists at the specified location. Must be the unique ID number of the user or team. If this parameter is set, the assignmentType parameter must also be set. assignment=268
assignmentType Enum Optional. Required if 'assignment' is used. Specifies wether this task will be assigned to a 'user' or a 'team'. Those two strings are the only accepted input. If this parameter is set, the assignment parameter must also be set. assignmentType=user
checklistInstructions String Optional The optional instructions that appear at the top of the task. Limited to 500 characters. checklistInstructions="This%20task%20must%20be%20done%20on%20time%20no%20matter%20what%21
priority Int Optional Specifies the priority of the task. Must be between 0 and 6 inclusive: 0 = lowest priority, 5 = highest priority, 6 = "On Hold". priority=3

Example Calls Request Help | Suggest Edit

A very simple call:

curl https://api.limblecmms.com/tasks/createTask/?name=Example%20Work%20Order&due=1532217600&taskType=4&location=205 \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											

A call using all of the available parameters:

curl https://api.limblecmms.com/tasks/createTask/?name=Example%20Work%20Order&due=1532217600&taskType=4&location=205 \
&checklistItems=Do%20This,Type%20something,Then%20sign%20this&checklistItemTypes=1,3,15&asset=5277 \
&checklistInstructions=This%20is%20your%20instruction&assignment=342&assignmentType=user \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$path = '/tasks/createTask/?name=DerekWO9&due=1533237544&taskType=4&location=205' //Required portion
$path = $path . '&checklistItems=Do%20This,Type%20something,Then%20sign%20this&checklistItemTypes=1,3,15&asset=5277' //Optional portion
$path = $path . '&checklistInstructions=This%20is%20your%20instruction&assignment=342&assignmentType=user' //Optional portion

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '.$auth_token.'')); 
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($ch);

curl_close($ch);

//the repsonse in an object
$obj = json_decode($response);

//the responce in an array
$arr = json_decode($response, true);

echo var_export($arr);
											
var https = require('https');

const id = "YOUR_CLIENT_ID";
const secret = "YOUR_CLIENT_SECRET";

var path = '/tasks/createTask/?name=DerekWO9&due=1533237544&taskType=4&location=205' //Required portion
path += '&checklistItems=Do%20This,Type%20something,Then%20sign%20this&checklistItemTypes=1,3,15&asset=5277' //Optional portion
path += '&checklistInstructions=This%20is%20your%20instruction&assignment=342&assignmentType=user' //Optional portion

const options = {
    hostname: 'api.limblecmms.com',
    path: path,
    method: 'POST',
    auth: `${id}:${secret}`
};

const req = https.request(options, (res) => {
    res.setEncoding('utf8');
    let data = '';

    res.on('data', (chunk) => {
        data += chunk;
    });

    res.on('end', () => {
        if(res.statusCode == 200){
            let response = JSON.parse(data);
            console.log(response);
        }else{
            //error handling
        }
    });
});

req.on('error', (e) => {
    //error handling
});

req.end();
											

Example Results Request Help | Suggest Edit

{"success":true}
											
400 Errors return a Json containing an error number, an error message describing the error, and an indication that the post was not successful.
Below is just one example error json.

{"error":3,"msg":"The number of 'checklistItems' and 'checklistItemTypeIDs' paramaters do not match.","success":false}