Get all active projects

Returns a list of all active projects within your ConstructionOnline company account

get https://api.constructiononline.com/api/Projects?archived={archived}

In ConstructionOnline, active projects are all ongoing projects being planned, executed, or actively managed within your company account. Active projects can be set as 'pending' or 'live', depending on their stage or phase. This endpoint allows users to obtain a record of all active projects, both live and pending, from ConstructionOnline. All archived projects will be excluded in the response.

Requests

REQUIRED PARAMETERS

archived: boolean
  • Use 'false' to return all active projects

Sample URL request:

  • https://api.constructiononline.com/api/Projects?archived=false

Example requests in cURL, C#, Python, and JavaScript can be found below:

cURL

# replace {email} with the email address for your ConstructionOnline account
# {password} with your ConstructionOnline password
# {apikey} with your provided API key
# {archived} with true or false


curl https://api.constructiononline.com/api/Projects?archived={archived} -u {email}:{password} -H 'APIKey:{apikey}'

C#

/* replace {username} with the email address for your ConstructionOnline account
{password} with your ConstructionOnline password
{apikey} with your provided API key
{archived} with true or false */

public string GetData(string endpoint) {
string username = "{username}";
string password = "{password}";
string apikey = "{apikey}";
HttpResponseMessage response = null;
HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.GZip };
    using (HttpClient client = new HttpClient(handler)) {
        client.Timeout = new TimeSpan(0, 0, 30);
        client.BaseAddress = new Uri("http://api.constructiononline.com");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)));
        client.DefaultRequestHeaders.Add("APIKey", apikey);
        client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip");
        response = client.GetAsync(endpoint).Result;
    }
    return response?.Content.ReadAsStringAsync().Result;
}
MessageBox.Show(GetData("api/Projects?archived={archived}"));

Python

#replace {username} with the email address for your ConstructionOnline account
#{password} with your ConstructionOnline password
#{apikey} with your provided API key
#{archived} with true or false

import base64, requests, json
apikey = "{apikey}"
username = "{username}"
password = "{password}"
def makeRequest(endpoint):
url = "https://api.constructiononline.com/" + endpoint
userPass = username + ":" + password
headers = {
"APIKey": apikey,
"Accept-Encoding": "gzip, deflate, br",
"Authorization": "Basic " + base64.b64encode(userPass.encode()).decode(),
}
response = requests.get(url, headers=headers)
return json.dumps(json.loads(response.text), indent=2)

#Main Program
print(makeRequest("api/Projects?archived={archived}"))

JavaScript

/* replace {username} with the email address for your ConstructionOnline account
{password} with your ConstructionOnline password
{apikey} with your provided API key
{archived} with true or false */

username = '{username}';
password = '{password}';
apikey = '{apikey}';
function makeRequest(endpoint) {
    auth = btoa('${username}:${password}');
    var myHeaders = new Headers();
    myHeaders.append("APIKey", apikey);
    myHeaders.append("Accept-Encoding", "gzip, deflate, br");
    myHeaders.append("Authorization", "Basic ${auth}");
    var requestOptions = {
        method: 'GET',
        headers: myHeaders,
        redirect: 'follow'
   };
    fetch("https://api.constructiononline.com/" + endpoint, requestOptions)
        .then(response => response.text())
        .then(result => console.log(result))
        .catch(error => console.log('error', error));
    return response;
};makeRequest("api/Projects?archived={archived}");

Responses

green 200: Success

A successful request will return a 200 response with the requested projects in the body, as seen below. Definitions for all returned properties can be found here

{
      "ID": 1265198,
        "NAME": "Downtown Restaurant Relocation",
      "CREATED_BY": 988889,
      "CREATOR_NAME": "Alice Conway",
        "LMOD": "2022-08-04T14:30:56.223",
      "ADDRESS": "1222 E Samford St",
        "CITY": "Auburn",
        "STATE": "AL",
        "ZIP": "36830",
        "PROJECT_NUMBER": "",
      "LMOD_CON_ID": 985313,
      "IS_ARCHIVED": true,
        "CURRENCY": 0,
        "IS_TEMPLATE": false,
        "COUNTRY_SETTING": 1,
        "CUSTOM_COLOR": "#f4a8de",
      "COMPANY_ID": 20000,
        "IS_INACTIVE": false,
        "LAT": 32.479692,
        "LON": -85.499419,
        "SCOPE_OF_WORK": "%3Cp%3ELooking%20for%20a%20new%20restaurant%20space%2C%20wanting%20to%20expand.%26nbsp%3B%3C%2Fp%3E",
        "IS_UNGROUPED": false,
        "TOTAL_TIME": 0,
        "TOTAL_MONEY": 0.0,
        "PROJECT_NOTES": "",
        "NUMBERFOLDERS": 2,
        "NUMBERIMAGES": 0,
        "NUMBERALBUMS": 0,
        "NUMBERFILES": 0,
      "DATE_CREATED": "2022-01-17T16:09:29.94",
      "PROJECT_TYPE_CUSTOM": 390,
        "PROJECT_TYPE": "Commercial",
        "ATTACH_FOLDER_ID": null,
        "PERMISSION_FILES": 65535,
        "PERMISSION_CALENDAR": 3,
        "PERMISSIONS_TIME": 3,
        "PERMISSIONS_TODOS": 3,
        "PERMISSIONS_SCHEDULING": 3,
        "PERMISSIONS_PUNCHLISTS": 3,
        "PERMISSIONS_CHANGEORDERS": 3,
        "PERMISSIONS_SELECTIONS": 3,
        "PERMISSIONS_LOGGING": 3,
        "PERMISSIONS_RFIS": 3,
        "PERMISSIONS_TRANSMITTAL": 3,
        "PERMISSIONS_SUBMITTAL": 3,
        "ESTIMATE_UNQUALIFIED_COMMITS": null,
        "ESTIMATE_UNQUALIFIED_ACTUALS": null,
        "ESTIMATE_UNQUALIFIED_EXPENSES": null,
        "SELECTION_UNQUALIFIED_COMMITS": null,
        "SELECTION_UNQUALIFIED_ACTUALS": null,
        "SELECTION_UNQUALIFIED_EXPENSES": null,
        "CHANGE_ORDER_UNQUALIFIED_COMMITS": null,
        "CHANGE_ORDER_UNQUALIFIED_ACTUALS": null,
        "CHANGE_ORDER_UNQUALIFIED_EXPENSES": null,
        "PRIMARY_SCHEDULE": null,
        "COST_CODE_SET": 2,
        "JOBSITE_INSTRUCTIONS": "",
        "PROJECT_GROUP": 0,
        "PROJECT_STAGE": 1616,
        "PROJECT_CATEGORY": 0,
        "PROJECT_OFFICE": 0,
        "PROJECT_DIVISION": 0,
        "PROJECT_REGION": 0,
        "PERMISSIONS_ESTIMATING": 3,
        "PERMISSIONS_CHECKLISTS": 3
  }

red 404: Error

The server was not able to locate the resource specified in the request. The value for 'archived' may have been entered incorrectly or a non-boolean value was entered.

red 429: Error

The user has surpassed the request rate limit for the hour, day, week, or month.

 red 500: Error

There was an internal server error and the server was unable to complete the request.

 

Last updated: Dec 27, 2023