Limble's API Documentation - Version 1

Connect, Integrate and Synchronize

- New Version!

We have released a new version of our API. Please use version 2 of Limble's API for any future development.

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 2000 calls per hour.
PATCH 2000 calls per hour.
POST 500 calls per hour.
DELETE 100 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.

Webhooks

Receive data on certain events such as Tasks being completed.
DOCS
Request Help | Suggest Edit

Limble's webhooks allow you to receive Data whenever certain events occur. For example, you may need to run your own script whenever a Task is completed.

Limble does this by sending an HTTP to a URL endpoint you configured. This URL can be set under Advanced Settings > Configuration in the Limble Web App.

All data returned is JSON encoded and validation fields (signature, timestamp, and token) are in the header of the POST. Multiple webhooks can be set on the same type of event.

Note: Your server must respond within 5 seconds, if it fails to the webhook will go into "Retry" mode.

For Webhook POSTs, Limble CMMS listens for the following codes from your server and reacts accordingly:

  • If Limble CMMS receives a 200 (Success) code it will determine the webhook POST is successful and not retry.
  • If Limble CMMS receives a 406 (Not Acceptable) it will determine the webhook POST was successful but no action was taken on it and not retry.

If your application is unable to process the webhook request but you do not return a 406 status code, Limble CMMS will retry four times at the following intervals before we stop trying and disabling your webhook: 10 minutes, 1 hour, 2 hour, and 4 hour.

Below is an example payload you might be sent:

{   
    "taskID": 8203, //the ID for the item the webhook event describes
    "status":"COMPLETE", //The status (i.e. task created, task complete, etc) see below for a full list of possible statuses
    "category":"task", //the category of item that casued the webhook to fire. i.e. task, location, user
    "user":"bryan@limblecmms.com" //the user the caused the webhook to fire.
}
											


Once the Payload is received you can use the Get Tasks API call to get the most recent Task data.

The following is a list of all the possible statuses that a webhook might be set to:

Status Description
CREATED A Task was created
DELETED A Task was deleted
CHANGED DUE DATE A Task changed due date
CHANGED ASSIGNMENT A Task changed assignment
COMPLETE A Task was completed.

Securing Webhooks

To ensure the authenticity and integrity of webhook events each webhook is signed with a signature as well as some other data described below:

Parameter Type Description
timestamp int A standard unix time stamp
token string randomly generated string that's an integrity check of the payload.
signature String A string generated by the HMAC algorithm

    To verify the webhook is originating from LimbleCMMS you will need to:

  • Concatenate the timestamp and token
  • Encode your private API key with the SHA256 algorithm
  • Encode the timestamp and token value with the HMAC algorithm using your hashed private key and the SHA256 method.
  • Compare the resulting digest to the signature provided in your webhook header


Validation Code Examples

function verify($timestamp, $signature, $apiKey, $token)
{
    //hash private key
    $apiKey = hash('sha256', $apiKey);

    $generated_signature = hash_hmac('sha256', $timestamp . $token, $apiKey);

    if($generated_signature === $signature) {
        return true;
    }else {
        return false;
    }
}
											
var crypto  = require('crypto');

const verify = (apiKey, token, timestamp, signature) => {

   //hash private key
   const apiKey = crypto.createHash('sha256').update(apiKey).digest('hex');

   const value = timestamp+token;

   const generated_signature = crypto.createHmac('sha256',
                                apiKey)
                                .update(value)
                                .digest('hex');

   if(signature === generated_signature){
      return true;
   } else {
      return false;
   }

};
											

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
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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
            "Value ID", //The valueID of the field value. e.g. 24056
            "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
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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:

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

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"
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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
      ],
    ]
  }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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"
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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"
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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
            ]
        ]
    }
}
											
{"error":1,"msg":"System unavailable at this time. Please try again later","success":false}
											

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/?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:

1 = Preventative Maintanance (PM).
2 = Unplanned Work Order (WO);
4 = Planned Work Order (WO);
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 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.

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
requestName string Optional Specifies the name of the work requestor. requestName=Bryan
requestEmail string Optional Specifies the email address of the work requestor. requestEmail=bryan@limblecmms.com
requestPhone string Optional Specifies the phone number of the work requestor. requestPhone=18018511218
requestDescription string Optional Specifies the description set by the work requestor. requestDescription=adding task to Bryan

Request Body - Attach an Image Request Help | Suggest Edit

Optionally, you can send an image in the body of the request. The request body must be encoded as multipart/form-data.

The image will be attached to the first item in the task. Large images will be compressed.

Example Calls Request Help | Suggest Edit

A very simple call:

curl https://api.limblecmms.com/tasks/?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/?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/?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/?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, "taskID": 8121}
											
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}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}
                              

New Asset Field

Add a new Field to the list of Existing Fields that can later be attached to Assets.
POST
https://api.limblecmms.com/assets/addAssetField?locationID=68&name=Model&fieldType=1

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
locationID Int Required The location ID of the Asset to add the new Field to. locationID=68
name String Required The name of the new Field. name=Model
fieldType Int Required The type of the new Field. You can choose from Text (1), Date (2), Pictures (3), Documents (4), Number (5), Currency (6). fieldType=1

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/assets/addAssetField?locationID=68&name=Model&fieldType=1 \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);
$path = "https://api.limblecmms.com/assets/addAssetField?locationID=68&name=Model&fieldType=1";

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_POST, 1);
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/addAssetField?locationID=68&name=Model&fieldType=1',
    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,
    "fieldID": 636
}
											
{"error":2,"msg":"No field name provided. Must be non-empty.","success":false}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}
											

Existing Asset Field

Attach an existing field to an Asset.
POST
https://api.limblecmms.com/assets/addFieldToAsset?assetID=1&fieldID=120

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
assetID Int Required The ID of the Asset to add the existing Field to. assetID=1
fieldID Int Required The ID of the existing Field to add to the Asset. fieldID=120

Example Calls Request Help | Suggest Edit

curl https://api.limblecmms.com/assets/addFieldToAsset?assetID=1&fieldID=120 \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);
$path = "https://api.limblecmms.com/assets/addFieldToAsset?assetID=1&fieldID=120";

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_POST, 1);
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/addFieldToAsset?assetID=1&fieldID=120',
    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,
    "valueID": 45454
}
											
{"error": 1,"msg": "Asset field does not exist.","success": false}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}
											

Update Part

Update attributes for a Part.
PATCH
https://api.limblecmms.com/parts?partID=1&locationID=21&name=My%20new%20part%20name

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
partID Int Required The Part's unique ID number. id=1
locationID Int Required The location of the Part to be updated. Must be the Location's unique ID number. location=21
name String Optional The new name of the Part. name=My%20new%20part%20name
number String Optional The new number of the Part. number=PN-1221
quantity Int or Decimal (up to 3 places) Optional How many of this Part are now in stock. quantity=222.021
price Price (Currency symbol optional) Optional The new price of the Part. price=20.99
supplier String Optional The new supplier of the Part. supplier=Acme%20Supplier
newLocation String Optional The new location of the Part (i.e. bin). newLocation=Bin%20001
staleThreshold Int Optional The Stale Threshold setting allows you to set how many days need to go by without a Work Order or Task using this Part. For example, if the Stale Threshold is set at 30 and a Part does not get used by a Work Order or Task within 30 days, then the Part clock indicator will change color to red. If you wish to turn off this feature, assign a value of -1. staleThreshold=365
overstockedThreshold Int Optional The Minimum Part Qty Threshold setting allows you to set a limit on how low you want this Part's qty to get. For example, if a Part Qty is lower than the Part Qty Threshold, a Task will be assigned to the Manager of the location to order new Parts. If you wish to turn off this feature, assign a value of -1. overstockedThreshold=365
overstockedStatus Boolean Optional The new overstocked status for a Part. overstockedStatus=true

Example Calls Request Help | Suggest Edit

A simple call to update name only:

curl https://api.limblecmms.com/parts?partID=1&locationID=21name=My%20New%20Part%20Name \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											

A call updating all of the updateable attributes of a part:

curl https://api.limblecmms.com/parts?partID=1&locationID=21&name=My%20New%20Part%20Name&number=SN-1212&quantity=10&price=219.99 \
&supplier=Acme%20Supplier&newLocation=Bin%20001&staleThreshold=365&overstockedThreshold=365&overstockedStatus=true \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$path = '/parts?partID=1&locationID=21' //Required portion
$path = $path . '&name=My%20New%20Part%20Name&number=SN-1212&quantity=10&price=219.99&supplier=Acme%20Supplier&newLocation=Bin%20001&staleThreshold=365&overstockedThreshold=365&overstockedStatus=true' //Optional portion (not all attributes have to be updated at once)

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
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 response 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 = '/parts?partID=1&locationID=21' //Required portion
path += '&name=My%20New%20Part%20Name&number=SN-1212&quantity=10&price=219.99&supplier=Acme%20Supplier&newLocation=Bin%20001&staleThreshold=365&overstockedThreshold=365&overstockedStatus=true' //Optional portion

const options = {
    hostname: 'api.limblecmms.com',
    path: path,
    method: 'PATCH',
    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){
            //success
        }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 update was not successful.
Below is just one example error json.

{"error":4,"msg":"Missing or incorrectly provided part location","success":false}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}
											

Update Asset

Update attributes for an Asset.
PATCH
https://api.limblecmms.com/assets?assetID=1&name=My%20new%20asset%20name&hoursOfOperationPerWeek=30&creationDate=1541796014

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
assetID Int Required The Asset's unique ID number. id=1
name String Optional The new name of the Asset. name=My%20new%20asset%20name
hoursOfOperationPerWeek Integer Optional The new hours of operation per week for this Asset. Use -1 to disable this feature. hoursOfOperationPerWeek=30
creationDate Int Optional The new date this Asset was created. Must be a unix timestamp. creationDate=1541796014

Example Calls Request Help | Suggest Edit

A simple call to update name only:

curl https://api.limblecmms.com/assets?assetID=1&name=My%20New%20Asset%20Name
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											

A call updating all of the updateable attributes of an Asset:

curl https://api.limblecmms.com/assets?assetID=1&name=My%20new%20asset%20name&hoursOfOperationPerWeek=30&creationDate=1541796014
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$path = '/assets?assetID=1' //Required portion (location is only required if updating name)
$path = $path . '&name=My%20new%20asset%20name&hoursOfOperationPerWeek=30&creationDate=1541796014' //Optional portion (not all attributes have to be updated at once)

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
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 response 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 = '/assets?assetID=1' //Required portion (location is only required if updating name)
path += '&name=My%20new%20asset%20name&hoursOfOperationPerWeek=30&creationDate=1541796014' //Optional portion

const options = {
    hostname: 'api.limblecmms.com',
    path: path,
    method: 'PATCH',
    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){
            //success
        }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 update was not successful.
Below is just one example error json.

{"error":2,"msg":"No asset ID provided.","success":false}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}
											

Update Asset Field

Update the value of an Asset's info field.
PATCH
https://api.limblecmms.com/assets/updateFieldValue?valueID=3872&value=NewFieldValue

Path Parameters Request Help | Suggest Edit

Parameter Type Required? Description Example
valueID Int Required The value's unique identifier. Currently, only "Number" and "Text" fieldTypes can be updated with this call. valueID=3872
value Depends on fieldType Required The value that will be written to the field, overwriting the previous value and creating an entry in the field history. "value" must correspond to the fieldType of the field. For example, if the field is a "number" fieldType, then "value" must be a number. value=NewFieldValue

Example Calls Request Help | Suggest Edit

A call to update a text field of an Asset:

curl https://api.limblecmms.com/assets/updateFieldValue?valueID=3872&value=NewFieldValue \
-u YOUR_CLIENT_ID:YOUR_CLIENT_SECRET --basic
											
$id = 'YOUR_CLIENT_ID';
$secret = 'YOUR_CLIENT_SECRET';
$auth_token = base64_encode($id . ':' . $secret);

$path = 'api.limblecmms.com/assets/updateFieldValue?valueID=3872&value=NewFieldValue'

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $path);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
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 response 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 = '/assets/updateFieldValue?valueID=3872&value=NewFieldValue'

const options = {
    hostname: 'api.limblecmms.com',
    path: path,
    method: 'PATCH',
    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){
            //success
        }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 update was not successful.
Below is just one example error json.

{"error":31,"msg":"A required parameter is missing.","success":false}
											
500 Errors return a Json containing an error number, and an error message describing the error.
Below is just one example error json.

{"error":99,"msg":"An unexpected error occurred. Please contact Limble for assistance.","success":false}