Get Project Announcements Modified After a Specific Date

Returns all announcements for a specific project that were modified after a particular date

get https://api.constructiononline.com/api/Announcements?fromDate={date}&projectID={id}

This endpoint returns all announcements for a specific project that were recently modified, using the entered date and current date to create a specific date range. All project announcements that were modified on or beyond the entered date will be returned. An announcement's modification date is stored in the property 'LMOD', while the property 'PRJ_ID' contains the ID of the specific project.

Requests

REQUIRED PARAMETERS

fromDate: date

  • Oldest modification date. All announcements modified on or after the date will be returned.
  • Should be entered in YYYY-MM-DD format. For example: January 1, 2024 would be 2024-01-01.

projectID: integer

  • Unique identifier for the project.
  • A full list of projects, which will contain their IDs, can be returned by calling this endpoint. We recommend for users to store these entries in a collection or data table for future reference.

Sample URL request:

  • https://api.constructiononline.com/api/Announcements?fromDate=2024-01-01&projectID=123456

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
# {date} with the oldest modification date
# {id} with the project's ID


curl https://api.constructiononline.com/api/Announcements?fromDate={date}&projectID={id} -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
{date} with the oldest modification date
          {id} with the project's ID */

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/Announcements?fromDate={date}&projectID={id}"));

Python

#replace {username} with the email address for your ConstructionOnline account
#{password} with your ConstructionOnline password
#{apikey} with your provided API key
#{date} with the oldest modification date
#{id} with the project's ID

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/Announcements?fromDate={date}&projectID={id}"))

JavaScript

/* replace {username} with the email address for your ConstructionOnline account
{password} with your ConstructionOnline password
{apikey} with your provided API key
{date} with the oldest modification date
          {id} with the project's ID */

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/Announcements?fromDate={date}&projectID={id}");

Responses

green 200: Success

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

{
      "ID": 62700,
      "PRJ_ID": 1261234,
        "TITLE": "No Work Friday 1/21",
      "MESSAGE": "<p>Work is canceled all day Friday 1/21 due to a campus event </p>",
        "PRIORITY": 3,
      "LMOD": "2024-01-07T17:22:16.77",
      "LMOD_USER": 999999,
      "DATE_CREATED": "2024-01-07T17:22:16.77",
      "CREATED_BY": 999999,
        "PINNED": false,
      "PROJECT_NAME": "Auburn University - Shelby Renovation",
        "ATTACHIDS": null,
        "ATTACHMENTS": null
}

red 404: Error

The server was not able to locate the resource specified in the request. The date may have been entered in a non-acceptable format. Alternatively, the project ID may have been entered incorrectly or a project with the entered ID does not exist.

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: Jan 9, 2024