NAV
cURL

Introduction

Welcome! The Appia API provides the tools needed for developing integrations between the Appia service and other software applications. You can use this API to access Appia resources programmatically using standard HTTP requests in a RESTful manner.

All requests should be made over SSL. All request and response bodies, including errors, are encoded in JSON.

Authentication

To authorize, use this code:

curl "api_endpoint_here"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The Appia service uses API keys to allow access to the API.

To prevent misuse, tokens need to be protected from disclosure in storage and in transport. The Appia service expects for the token to be included in all authenticated requests to the server as part of the Authorization request header field:

Authorization: Bearer a8de477316013a267ecee639aa7e4c9a

Projects

Get All Projects

curl "https://appia.net/api/v1/projects"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "projects": [
    {
      "id": "0632d565-be61-4944-9c49-fc38453292eb",
      "name": "Main Street Resurfacing Project",
      "description": "project description",
      "notice_to_proceed_date": "2019-11-01",
      "status": "construction",
      "awarded_amount": "523282.45",
      "authorized_amount": "443282.45"
    }, {
      "id": "d51d04aa-8df1-4021-8589-6b5a7e0f9ac7",
      "name": "I-75 Lane Reconfiguration",
      "description": "project description",
      "notice_to_proceed_date": "2017-12-04",
      "status": "construction",
      "awarded_amount": "233082.50",
      "authorized_amount": "283952.76"
    }
  ]
}

This endpoint retrieves all projects.

HTTP Request

GET https://appia.net/api/v1/projects

Get Project Attachments

curl "https://appia.net/api/v1/projects/<ID>/attachments"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "a1d5be86-4597-48b2-953a-88e3d51ed0dd",
      "name": "Bridge's blueprint",
      "description": "Detailed blueprint of bridge.",
      "attachment_group": null,
      "filename": "blueprint.pdf"
    }
  ]
}

This endpoint retrieves a specific project's attachments.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve attachments for

Get Project Change Orders

curl "https://appia.net/api/v1/projects/<ID>/change_orders"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{ 
  "change_orders": [
    {
      "id": "2d5a244e-b5c1-4ecb-b310-ee615a045ea8",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "status": "approved",
      "order_type": "Changed Conditions",
      "summary": null,
      "effective_date": "2019-01-01",
      "number": 1,
      "amount": "1050.0"
    }
  ]
}

This endpoint retrieves a specific project's change orders.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/change_orders

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve change orders for

Get Project Contractors

curl "https://appia.net/api/v1/projects/<ID>/contractors"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "contractors": [
    {
      "id": "e37a96c2-8b32-475b-93ef-3200cd1a8f4e",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "awarded_amount": "123.0",
      "prime": true,
      "created_at": "2020-07-26T22:25:29.885-04:00",
      "contractor_type": "DBE",
      "name": "Bob's Contractors, LLC.",
      "code": "12-3456"
    }
  ]
}

This endpoint retrieves a specific project's contractors.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/contractors

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve contractors for

Get Project Daily Diaries

curl "https://appia.net/api/v1/projects/<ID>/diaries"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "diaries": [
    {
      "id": "6418385f-daa1-4610-9c4d-b3023cc92528",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "diary_at": "2020-01-09",
      "complete": true
    }
  ]
}

This endpoint retrieves a specific project's daily diaries.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/diaries

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve diaries for

Get Project Daily Reports

curl "https://appia.net/api/v1/projects/<ID>/daily_reports"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "daily_reports": [
    {
      "id": "7970e650-94c6-4483-a15b-b8585ad91840",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "daily_report_at": "2020-07-24",
      "status": "draft"
    }
  ]
}

This endpoint retrieves a specific project's daily reports.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/daily_reports

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve daily reports for

Get Project Fund Packages

curl "https://appia.net/api/v1/projects/<ID>/fund_packages"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "fund_packages": [
    {
      "id": "772f1a5d-8388-41c7-b6df-9aa134ee4ba5",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "name": "Fund Package"
    }
  ]
}

This endpoint retrieves a specific project's fund packages.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/fund_packages

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve fund packages for

Get Project Fund Sources

curl "https://appia.net/api/v1/projects/<ID>/fund_sources"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "fund_sources": [
    {
      "id": "041aae09-0e8d-4d0c-9ade-1924927d5ac8",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "name": "Fund Source"
    }
  ]
}

This endpoint retrieves a specific project's fund sources.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/fund_sources

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve fund sources for

Get Project Items

curl "https://appia.net/api/v1/projects/<ID>/items"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "items": [
    {
      "id": "2be0f5d7-d6fe-4200-82a5-cf0497600e0e",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "line_number": "0010",
      "code": "201.06",
      "description": "select fill",
      "section_id": "d0629c7e-e420-45c3-866f-3a9b97a0e6fd",
      "unit": "CY",
      "quantity": "200.0",
      "unit_price": "15.0",
      "extension": "3000.0",
      "lump_sum": null
    }
  ]
}

This endpoint retrieves a specific project's items.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/items

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve items for

Get Project Materials

curl "https://appia.net/api/v1/projects/<ID>/materials"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "materials": [
    {
      "id": "ea68eca6-34af-4438-a664-5605b70bfb42",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "code": "713C",
      "description": "202.001 turf",
      "unit": "SY"
    }
  ]
}

This endpoint retrieves a specific project's materials.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/materials

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve materials for

Get Project Overview Data

curl "https://appia.net/api/v1/projects/<ID>"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "975b834f-1f43-40a2-98e1-02fcddea135d",
  "name": "Main Street Resurfacing Project",
  "description": "<table>\r\n<tbody>\r\n<tr>\r\n<td style=\"display:table-cell !important;border-style:solid;border-width:0px 0px 1px 1px;padding:0.4em 0.6em;overflow:hidden;line-height:2em;vertical-align:middle;border-color:#cccccc;\">I-4 AT SR 559 INTERCHANGE..</td>\r\n</tr>\r\n</tbody>\r\n</table>",
  "notice_to_proceed_date": "2017-08-15",
  "dbe_goal": "0.0",
  "location": null,
  "work_type": "",
  "status": "construction",
  "construction_date": "2017-09-15",
  "project_manager": null,
  "managing_office": null,
  "mbe_goal": "0.0",
  "wbe_goal": "0.0",
  "created_by": "John Doe",
  "awarded_amount": "523282.45",
  "completion_date": null,
  "asphalt_index_price": "0.0",
  "fuel_index_price": "0.0",
  "items_type": "project",
  "prime_contractor": {
    "reference_contractor_id": "72151710-7259-45df-afe5-adca6b1feb3a"
  },
  "coordinates": [
    -82.35243191064104,
    29.815243058323965
  ],
  "amount_posted_to_date": "25475.0",
  "authorized_amount": "45820.0",
  "approved_changes": "0.0",
  "paid_total_to_date": "0.0",
  "approved_payments_to_date": "0.0",
  "awarded_paid_percent": 0.0,
  "authorized_paid_percent": 0.0,
  "awarded_posted_percent": 55.59799214316892,
  "authorized_posted_percent": 55.59799214316892,
  "retainage_amount_to_date": "0.0",
  "retainage_released_to_date": "0.0",
  "liquidated_damages_to_date": "0.0"
}

This endpoint retrieves a specific project's overview data. Coordinates are displayed as longitude (X), latitude (Y).

HTTP Request

GET https://appia.net/api/v1/projects/<ID>

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve overview data for

Get Project Payments

curl "https://appia.net/api/v1/projects/<ID>/payments"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "payments": [
    {
      "id": "7ae5c16b-cade-4ee5-be43-edde6d13c316",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "status": "paid",
      "start_at": "2019-11-01",
      "end_at": "2019-11-06",
      "final": null,
      "total": "31685.0",
      "total_to_date": "31685.0"
    }, {
      "id": "8bd3c16b-wade-bee5-be43-edde6d13c316",
      "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
      "status": "paid",
      "start_at": "2019-11-07",
      "end_at": "2019-12-06",
      "final": true,
      "total": "3000.0",
      "total_to_date": "34685.0"
    }
  ]
}

This endpoint retrieves a specific project's payments.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/payments

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve payments for

Get Project Sections

curl "https://appia.net/api/v1/projects/<ID>/sections"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "sections": [
    {
      "id": "79cdd236-5d66-4d61-863d-5ee3f334fb70",
      "number": "1",
      "description": "Description 1",
      "project_id": "a0bf91a5-6270-4a88-a891-c4e65db886d0"
    },
    {
      "id": "d2eacc4c-b53e-44c8-83a9-a1b8e218f22b",
      "number": "2",
      "description": "Description 2",
      "project_id": "a0bf91a5-6270-4a88-a891-c4e65db886d0"
    },
    {
      "id": "aa53f008-a847-46ed-a963-76e33f574ced",
      "number": "10",
      "description": "Description 10",
      "project_id": "a0bf91a5-6270-4a88-a891-c4e65db886d0"
    }
  ]
}

This endpoint retrieves a specific project's sections.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/sections

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve sections for

Get Project Stockpiles

curl "https://appia.net/api/v1/projects/<ID>/stockpiles"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{ 
  "stockpiles": [
    {
      "id": "7f094848-69b9-4328-9ea5-ba2c9aaf617d",
      "item_id": "e22e9b04-b75d-4bba-b5a1-6998e900ad71",
      "fund_package_id": "15dc02af-6275-487b-98ff-de975bb57462",
      "value": "6175.0",
      "recovery": "1098.5",
      "value_remaining": "5076.5",
      "item": {
        "description": "TOPSOIL, FURNISH & SPREAD"
      },
      "stockpile_number": 1,
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ]
}

This endpoint retrieves a specific project's stockpiles.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/stockpiles

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve stockpiles for

Get Project Time Limits

curl "https://appia.net/api/v1/projects/<ID>/time_limits"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "calendar_days": [
    {
      "id": "e48a650b-fea0-4def-a6d6-e10fea5504ce",
      "description": "Calendar Day Time Limit",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "category": "calendar_days",
      "is_primary": true,
      "liquidated_damages": "500.0",
      "completeness_percentage": "101.136363636363636364",
      "start_date": "2018-01-01",
      "expected_end_date": "2018-03-30",
      "days_charged": 89,
      "days_remaining": "-1.0",
      "original_deadline": "344.0",
      "deadline": "88.0",
      "liquidated_damages_total": "500.0",
      "completed": true
    }, 
    {
      "id": "53884ee0-d758-4c01-93fb-882feb708571",
      "description": "New Calendar Day Time Limit",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "category": "calendar_days",
      "is_primary": false,
      "liquidated_damages": "50.0",
      "completeness_percentage": 0,
      "start_date": null,
      "expected_end_date": null,
      "days_charged": 0,
      "days_remaining": "20.0",
      "original_deadline": "20.0",
      "deadline": "20.0",
      "liquidated_damages_total": 0,
      "completed": false
    }
  ],
  "working_days": [
    {
      "id": "1162848a-dbe8-42ad-b011-5ba817dc6860",
      "description": "Working Day Time Limit",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "category": "working_days",
      "is_primary": false,
      "liquidated_damages": "250.0",
      "completeness_percentage": "5.0",
      "start_date": "2020-11-02",
      "expected_end_date": "2020-11-06",
      "days_charged": 5,
      "days_remaining": "95.0",
      "original_deadline": "100.0",
      "deadline": "100.0",
      "liquidated_damages_total": 0,
      "completed": false
    }
  ],
  "completion_date": [
    {
      "id": "048e5460-0a3e-41b8-b5fd-134f747e011b",
      "description": "Completion Date Time Limit",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "category": "completion_date",
      "is_primary": false,
      "liquidated_damages": "350.0",
      "completeness_percentage": 100.54200542005421,
      "days_remaining": -2,
      "original_deadline": "2019-01-05",
      "deadline": "2019-01-05",
      "liquidated_damages_total": "700.0",
      "completed": true
    }, 
    {
      "id": "e9b275d1-1408-4f1e-99b6-37c4df03829f",
      "description": "Project Completion",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
      "category": "completion_date",
      "is_primary": false,
      "liquidated_damages": "250.0",
      "completeness_percentage": 284.8484848484849,
      "days_remaining": -732,
      "original_deadline": "2019-02-01",
      "deadline": "2019-02-01",
      "liquidated_damages_total": "183000.0",
      "completed": false
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 5
  }
}

This endpoint retrieves a specific project's time limits.

HTTP Request

GET https://appia.net/api/v1/projects/<ID>/time_limits

URL Parameters

Parameter Description
ID The ID of the project you would like to retrieve time limits for

Fund Packages

Get a Specific Fund Package

curl "https://appia.net/api/v1/fund_packages/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "995a3abd-eb6a-468c-b018-6a3629a86724",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "name": "Federal",
  "created_at": "2020-07-26T22:31:08.872-04:00",
  "fund_package_sources": [
    {
      "id": "728e5cfe-0bc7-4f10-ad0e-a3fa932be9f8",
      "fund_source_id": "e4ec30b3-c6cb-4820-84ae-bd0676e078e4",
      "extension": "24935.0",
      "percent": "100.0",
      "created_at": "2020-07-26T22:31:08.879-04:00"
    }, {
      "id": "27411c02-5bf5-48ed-b687-83df9b2b2540",
      "fund_source_id": "52c21229-fd86-4306-acc3-c4cdf57e70ee",
      "extension": "0.0",
      "percent": "0.0",
      "created_at": "2020-07-26T22:31:08.900-04:00"
    }
  ]
}

This endpoint retrieves a specific fund package.

HTTP Request

GET https://appia.net/api/v1/fund_packages/<ID>

URL Parameters

Parameter Description
ID The ID of the fund package to retrieve

Fund Sources

Get a Specific Fund Source

curl "https://appia.net/api/v1/fund_sources/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "3ccc045a-e2a2-4b5a-899d-f7aed7932932",
  "name": "Fund Source 1",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "created_at": "2020-07-26T22:33:07.362-04:00",
  "fund_package_sources": [
    {
      "id": "b58ddcc2-ed9b-4fde-a66a-1c8a2d6be7d5",
      "percent": "0.0",
      "extension": "0.0",
      "fund_package_id": "b09d6ab9-fed2-4a47-b3d5-a8d47b044ccb",
      "created_at": "2020-07-26T22:33:07.363-04:00"
    }, {
      "id": "ed1e6805-2ebb-4957-9fff-83bef360d8a5",
      "percent": "65.0",
      "extension": "13575.25",
      "fund_package_id": "76819980-de0d-461f-bcc4-1791129ff228",
      "created_at": "2020-07-26T22:33:07.385-04:00"
    }
  ]
}

This endpoint retrieves a specific fund source.

HTTP Request

GET https://appia.net/api/v1/fund_sources/<ID>

URL Parameters

Parameter Description
ID The ID of the fund source to retrieve

Daily Reports

Get a Specific Daily Report

curl "https://appia.net/api/v1/daily_reports/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "60d014db-e1c1-4551-bcfd-b6e41b53ee70",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "user_id": 1,
  "daily_report_at": "2020-06-27",
  "status": "pending",
  "weather": "Snowing",
  "low_temperature": 30,
  "high_temperature": 35,
  "weather_day": true,
  "remarks": "<b>Severe</b> weather.",
  "created_at": "2020-07-26T22:28:55.031-04:00",
  "payment_id": null
}

This endpoint retrieves a specific daily report.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>

URL Parameters

Parameter Description
ID The ID of the daily report to retrieve

Get Daily Report Attachments

curl "https://appia.net/api/v1/daily_reports/<ID>/attachments"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "a1d5be86-4597-48b2-953a-88e3d51ed0dd",
      "name": "Bridge's blueprint",
      "description": "Detailed blueprint of bridge.",
      "attachment_group": null,
      "filename": "blueprint.pdf"
    }
  ]
}

This endpoint retrieves a specific daily report's attachments.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the daily report you would like to retrieve attachments for

Get Daily Report Custom Fields

curl "https://appia.net/api/v1/daily_reports/<ID>/custom_fields"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "custom_fields": [
    {
      "id": "10af5b48-af58-488c-ae36-b9090c89795a",
      "label": "Special Remarks",
      "value": "All went well today."
    }
  ]
}

This endpoint retrieves a specific daily report's custom fields.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>/custom_fields

URL Parameters

Parameter Description
ID The ID of the daily report you would like to retrieve custom fields for

Get Daily Report Equipment

curl "https://appia.net/api/v1/daily_reports/<ID>/equipment_postings"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "equipment_postings": [
    {
      "id": "69f61453-d929-4044-bcbd-9114e4883244",
      "daily_report_id": "60d014db-e1c1-4551-bcfd-b6e41b53ee70",
      "contractor_id": "6c9f2458-5421-4c6e-8bb4-b474c7b83f9d",
      "active_count": 1,
      "active_hours": "6.0",
      "idle_count": 1,
      "idle_hours": "1.5",
      "comments": null,
      "created_at": "2020-07-26T22:29:44.275-04:00",
      "description": "Bobcat"
    }
  ]
}

This endpoint retrieves a specific daily report's equipment.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>/equipment_postings

URL Parameters

Parameter Description
ID The ID of the daily report you would like to retrieve equipment for

Get Daily Report Item Postings

curl "https://appia.net/api/v1/daily_reports/<ID>/item_postings"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "item_postings": [
    {
      "id": "fa72fb66-79da-4ecf-8079-f56df9f07577",
      "item_id": "7bedaa96-ec85-4adf-8609-e34acc95f627",
      "daily_report_id": "e4cdfe48-432e-40cd-9b6a-7540dbecd92a",
      "created_at": "2020-07-29T13:13:17.459Z",
      "remarks": "Poor weather today.",
      "location": "Intersection of Green St",
      "contractor_id": "7b5c83ba-ace2-4d72-abda-e9d0392b2bce",
      "station_from_plus": "6.0",
      "station_to_plus": "7.0",
      "station_from": 3,
      "station_to": 4,
      "quantity": "2.0",
      "tag": null,
      "unit_price": "1300.0",
      "amount": "2600.0",
      "import_type": "TR",
      "geo_representation": "POINT (104.0 39.0 0.0)",
      "item_posting_package_splits": [
        {
          "id": "e0430f66-d185-4d82-bd92-07505fd0488e",
          "item_posting_id": "fa72fb66-79da-4ecf-8079-f56df9f07577",
          "fund_package_id": "7e49466b-edac-47c5-8394-e1a9d7e429cc",
          "quantity": "2.0",
          "created_at": "2020-07-29T13:13:17.461Z",
          "amount": "2600.0",
          "material_usages": [
            {
              "id": "aeb24770-a35e-4f14-b20c-5da7e8aca5b5",
              "usage_rate": "0.0",
              "quantity": "0.0",
              "item_material_id": "d6265e7b-0e61-4017-935c-07f99a1c2a9b",
              "created_at": "2020-07-29T13:13:17.464Z",
              "item_posting_package_split_id": "e0430f66-d185-4d82-bd92-07505fd0488e",
              "reviewed": true
            }
          ]
        },
        {
          "id": "85ecee2b-da87-4612-9e33-db9be9f3f2ff",
          "item_posting_id": "fa72fb66-79da-4ecf-8079-f56df9f07577",
          "fund_package_id": "e732d023-d7b2-4da9-8b66-cfe9a32d56db",
          "quantity": "0.0",
          "created_at": "2020-07-29T13:13:17.468Z",
          "amount": "0.0",
          "material_usages": []
        }
      ],
      "daily_report_at": "2020-07-06"
    }
  ]
}

This endpoint retrieves a specific daily report's item postings.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>/item_postings

URL Parameters

Parameter Description
ID The ID of the daily report you would like to retrieve item postings for

Get Daily Report Personnel

curl "https://appia.net/api/v1/daily_reports/<ID>/personnel"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "crews": [
    {
      "id": "8c7c6641-e96c-409e-a960-67889bd0772c",
      "daily_report_id": "60d014db-e1c1-4551-bcfd-b6e41b53ee70",
      "contractor_id": "0a312769-ce58-4ae8-81fc-c095bb955b66",
      "name": "Crew #1",
      "created_at": "2020-07-26T22:26:20.347-04:00",
      "crew_members":  [
        {
          "id": "14061308-3042-4e94-bbcc-9eee09d0c0c6",
          "crew_id": "8c7c6641-e96c-409e-a960-67889bd0772c",
          "worker_type_id": "13cccbff-40f6-4c14-8f80-b51920f979b4",
          "number": 0,
          "hours": "0.0",
          "created_at": "2020-07-26T22:26:20.350-04:00"
        }
      ]
    }
  ],
  "worker_types": [
    {
      "id": "cd66be5e-20fe-438b-a1b2-37f54f9c4192",
      "daily_report_id": "60d014db-e1c1-4551-bcfd-b6e41b53ee70",
      "name": "Worker Type #1",
      "created_at": "2020-07-26T22:45:09.167-04:00"
    }
  ]
}

This endpoint retrieves a specific daily report's personnel.

HTTP Request

GET https://appia.net/api/v1/daily_reports/<ID>/personnel

URL Parameters

Parameter Description
ID The ID of the daily report you would like to retrieve personnel for

Daily Diary

Get a Specific Daily Diary

curl "https://appia.net/api/v1/diaries/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "ac2b10ea-5f51-4589-9161-03528bb1c4b2",
  "diary_at": "2020-12-02",
  "remarks": "<p>Checking on both inspection reports in this diary.</p>",
  "complete": true,
  "project": {
    "id": "9dc06000-e733-4349-a9f3-78caf91686c3",
    "project_manager": null,
    "created_by": "Jane Doe",
    "prime_contractor": {
      "reference_contractor_id": "c58985ca-5066-4eea-9c72-018d62bdeacd"
    }
  }
}

This endpoint retrieves a specific daily diary.

HTTP Request

GET https://appia.net/api/v1/diaries/<ID>

URL Parameters

Parameter Description
ID The ID of the daily diary to retrieve

Get Daily Diary Custom Fields

curl "https://appia.net/api/v1/diaries/<ID>/custom_fields"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "custom_fields": [
    {
      "id": "af76d971-2b18-42b1-b536-1ec00b4c4430",
      "label": "1) Inspectors Name & Work Assignment",
      "value": "<p>John Doe</p>\r\n<p>Jen B</p>"
    },
    {
      "id": "d7b90e76-b1bf-43c3-a8cc-71a288ca0179",
      "label": "Comments for All Inspector Reports",
      "value": "<p>All inspection reports look good.&nbsp;</p>"
    },
    {
      "id": "656fb30e-0e7b-4435-b068-5f1a2f21816f",
      "label": "Maintenance and Protection of Traffic",
      "value": "<p>No traffic control on this day</p>"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 3
  }
}

This endpoint retrieves a specific daily diary's custom fields.

HTTP Request

GET https://appia.net/api/v1/diaries/<ID>/custom_fields

URL Parameters

Parameter Description
ID The ID of the daily diary to retrieve custom fields for

Get Daily Diary Attachments

curl "https://appia.net/api/v1/diaries/<ID>/attachments"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "f39116b7-5728-4634-9c18-5ed16bdb900b",
      "name": "photo.PNG",
      "description": "John Doe inspected",
      "attachment_group": null,
      "filename": "photo_1.PNG"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific daily diary's attachments.

HTTP Request

GET https://appia.net/api/v1/diaries/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the daily diary to retrieve attachments for

Item Materials

Get a Specific Item Material

curl "https://appia.net/api/v1/item_materials/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "3bca855c-0789-49ee-91c8-45732c9fee5a",
  "usage_rate": "0.9",
  "item_id": "a3db9315-aec0-41c5-8fc9-d20b7722a5eb",
  "material_id": "ec6027f8-8304-491c-8d62-def04751fcd0",
  "created_at": "2020-07-26T22:36:53.749-04:00"
}

This endpoint retrieves a specific item material.

HTTP Request

GET https://appia.net/api/v1/item_materials/<ID>

URL Parameters

Parameter Description
ID The ID of the item material to retrieve

Items

Get a Specific Item

curl "https://appia.net/api/v1/items/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "74da1cbf-eee3-41ff-ba6c-e3eaef8aec79",
  "line_number": "0010",
  "code": "201.06",
  "description": "select fill",
  "created_at": "2020-07-26T22:35:31.546-04:00",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "section_id": "4a332bd7-53e3-4e15-86e3-5f21c0f4862a",
  "unit": "CY",
  "quantity": "200.0",
  "unit_price": "15.0",
  "extension": "3000.0",
  "has_supplemental_description": null,
  "supplemental_description": null,
  "fuel_factor": "19.0",
  "asphalt_factor": "273.0",
  "complete": null,
  "unattached": null,
  "lump_sum": null,
  "pending_quantity": 0,
  "remaining_quantity": "115.0",
  "placed_quantity": "85.0",
  "authorized_quantity": "200.0",
  "authorized_extension": "3000.0",
  "item_package_splits": [
    {
      "id": "3902357a-7568-494a-bb70-39efe3f2e1b4",
      "quantity": "150.0",
      "extension": "2250.0",
      "fund_package_id": "8bbb5058-45e9-4b47-af07-0c4b7ec1e8a0",
      "created_at": "2020-07-26T22:35:31.548-04:00"
    }, {
      "id": "eacc39ff-a778-4bf2-bf3c-640c2419c5b4",
      "quantity": "50.0",
      "extension": "750.0",
      "fund_package_id": "96b00c36-7d9b-45e3-b126-7cec90dd2da1",
      "created_at": "2020-07-26T22:35:31.550-04:00"
    }
  ]
}

This endpoint retrieves a specific item.

HTTP Request

GET https://appia.net/api/v1/items/<ID>

URL Parameters

Parameter Description
ID The ID of the item to retrieve

Get Item's Materials

curl "https://appia.net/api/v1/items/<ID>/materials"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "item_materials": [
    {
      "id": "3bca855c-0789-49ee-91c8-45732c9fee5a",
      "usage_rate": "0.9",
      "item_id": "74da1cbf-eee3-41ff-ba6c-e3eaef8aec79",
      "material_id": "ec6027f8-8304-491c-8d62-def04751fcd0",
      "created_at": "2020-07-26T22:36:53.749-04:00"
    }
  ]
}

This endpoint retrieves a specific item's materials.

HTTP Request

GET https://appia.net/api/v1/items/<ID>/materials

URL Parameters

Parameter Description
ID The ID of the item you would like to retrieve item materials for

Materials

Get a Specific Material

curl "https://appia.net/api/v1/materials/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "ec6027f8-8304-491c-8d62-def04751fcd0",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "code": "713C",
  "description": "202.001 turf",
  "unit": "SY",
  "requirements": null,
  "created_at": "2020-07-26T22:41:13.209-04:00"
}

This endpoint retrieves a specific material.

HTTP Request

GET https://appia.net/api/v1/materials/<ID>

URL Parameters

Parameter Description
ID The ID of the material to retrieve

Get Material's Items

curl "https://appia.net/api/v1/materials/<ID>/items"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "item_materials": [
    {
      "id": "3bca855c-0789-49ee-91c8-45732c9fee5a",
      "usage_rate": "0.9",
      "item_id": "74da1cbf-eee3-41ff-ba6c-e3eaef8aec79",
      "material_id": "ec6027f8-8304-491c-8d62-def04751fcd0",
      "created_at": "2020-07-26T22:36:53.749-04:00"
    }
  ]
}

This endpoint retrieves a specific material's items.

HTTP Request

GET https://appia.net/api/v1/materials/<ID>/items

URL Parameters

Parameter Description
ID The ID of the material you would like to retrieve item materials for

Payments

Get a Specific Payment

curl "https://appia.net/api/v1/payments/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "7ae5c16b-cade-4ee5-be43-edde6d13c316",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "status": "paid",
  "start_at": "2019-11-01",
  "end_at": "2019-11-06",
  "approval_at": "2019-11-18",
  "payment_at": "2019-11-28",
  "retainage_percent": "5.0",
  "retainage_cap_percent": "0.0",
  "retainage_cap_amount": "0.0",
  "retainage_released": "0.0",
  "remarks": "<b>payment remarks</b>",
  "plain_remarks": "payment remarks",
  "adjustment": "0.0",
  "adjustment_remarks": "no payment adjustment needed",
  "retainage_amount": "887.5",
  "final": null,
  "retainage_cap_rule": "none",
  "retainage_amount_to_date": "887.5",
  "paid_amount": "17750.0",
  "paid_amount_to_date": "17750.0",
  "stockpile_advancement": "14822.5",
  "stockpile_recovery": "0.0",
  "liquidated_damages": "0.0",
  "total": "31685.0",
  "total_to_date": "31685.0"
}

This endpoint retrieves a specific payment.

HTTP Request

GET https://appia.net/api/v1/payments/<ID>

URL Parameters

Parameter Description
ID The ID of the payment to retrieve

Get Payment Item Splits

curl "https://appia.net/api/v1/payments/<ID>/payment_item_splits"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "payment_item_splits": [
    {
      "id": "109150ee-ae00-4120-a508-247a3ceebe74",
      "payment_id": "482722aa-83f6-4157-b6e8-2f79a41cb950",
      "item_package_split_id": "f11b2b7f-474f-4e85-82e3-7adafadfe05e",
      "item_id":"44fb2f8a-93cf-46e5-b22f-5095b7bba688",
      "fund_package_id":"8e26e64a-c052-4f70-a0f3-64e1a6d0c3eb",
      "placed_quantity_to_date": "4.0",
      "placed_amount_to_date": "8.0",
      "created_at": "2020-07-29T21:35:24.351-04:00",
      "authorized_quantity": "5.0",
      "authorized_extension": "10.0",
      "prev_placed_quantity_to_date": "0.0",
      "prev_placed_amount_to_date": "0.0",
      "prev_paid_quantity_to_date": "0.0",
      "prev_paid_amount_to_date": "0.0",
      "paid_quantity_to_date": "4.0",
      "paid_amount_to_date": "8.0",
      "prev_authorized_quantity_to_date": "0.0",
      "prev_authorized_extension_to_date": "0.0",
      "authorized_quantity_to_date": "4.0",
      "authorized_extension_to_date": "8.0",
      "payable_material_quantity": "0.0",
      "has_materials": false,
      "insufficient_materials": false,
      "witheld_quantity": "0.0",
      "paid_quantity": "4.0",
      "paid_amount": "8.0"
    }, {
      "id": "b74e9359-130d-4f56-b944-76e51bb48919",
      "payment_id": "482722aa-83f6-4157-b6e8-2f79a41cb950",
      "item_package_split_id": "0b1c46ac-a45b-4734-b5ff-b3900c8ec4ac",
      "item_id":"5fd19a29-dcdf-4d36-b991-88d386e6a4ae",
      "fund_package_id":"8e26e64a-c052-4f70-a0f3-64e1a6d0c3eb",
      "placed_quantity_to_date": "6.0",
      "placed_amount_to_date": "12.0",
      "created_at": "2020-07-29T21:35:24.354-04:00",
      "authorized_quantity": "6.0",
      "authorized_extension": "12.0",
      "prev_placed_quantity_to_date": "0.0",
      "prev_placed_amount_to_date": "0.0",
      "prev_paid_quantity_to_date": "0.0",
      "prev_paid_amount_to_date": "0.0",
      "paid_quantity_to_date": "6.0",
      "paid_amount_to_date": "12.0",
      "prev_authorized_quantity_to_date": "0.0",
      "prev_authorized_extension_to_date": "0.0",
      "authorized_quantity_to_date": "6.0",
      "authorized_extension_to_date": "12.0",
      "payable_material_quantity": "0.0",
      "has_materials": false,
      "insufficient_materials": false,
      "witheld_quantity": "0.0",
      "paid_quantity": "6.0",
      "paid_amount": "12.0"
    }
  ]
}

This endpoint retrieves a specific payment's item splits.

HTTP Request

GET https://appia.net/api/v1/payments/<ID>/payment_item_splits

URL Parameters

Parameter Description
ID The ID of the payment you would like to retrieve item splits for

Get Payment Attachments

curl "https://appia.net/api/v1/payments/<ID>/attachments"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "030960ae-7707-4288-b74f-83991e1a690c",
      "name": "eTicket",
      "description": "Proof of delivery for stockpile",
      "attachment_group": null,
      "filename": "dnp-61400083-32195894.pdf",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific payment's attachments.

HTTP Request

GET https://appia.net/api/v1/payments/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the payment to retrieve attachments for

Stockpiles

Get a Specific Stockpile

curl "https://appia.net/api/v1/stockpiles/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "7f094848-69b9-4328-9ea5-ba2c9aaf617d",
  "item_id": "e22e9b04-b75d-4bba-b5a1-6998e900ad71",
  "fund_package_id": "15dc02af-6275-487b-98ff-de975bb57462",
  "recovery_rate": "6.5",
  "value": "6175.0",
  "value_remaining": "5076.5",
  "begin_recovery_on": "2020-12-01",
  "description": "",
  "payment_stockpiles": [
    {
      "recovery_amount": "1098.5"
    },
    {
      "recovery_amount": "0.0"
    }
  ]
}

This endpoint retrieves a specific stockpile.

HTTP Request

GET https://appia.net/api/v1/stockpiles/<ID>

URL Parameters

Parameter Description
ID The ID of the stockpile to retrieve

Get Stockpile Events

curl "https://appia.net/api/v1/stockpiles/<ID>/events"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "stockpile_events": [
    {
      "effective_date": "2020-06-03",
      "quantity_change": null,
      "value_change": null,
      "quantity_remaining": null,
      "value_remaining": null,
      "action": "Payment #3",
      "note": "Advancement: $6,175.00"
    }
  ]
}

This endpoint retrieves a specific stockpile's events.

HTTP Request

GET https://appia.net/api/v1/stockpiles/<ID>/events

URL Parameters

Parameter Description
ID The ID of the stockpile to retrieve events for

Get Stockpile Attachments

curl "https://appia.net/api/v1/stockpiles/<ID>/attachments"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "577fe48a-c262-4713-a9db-d074c16672c0",
      "name": "Top soil",
      "description": "Picture of delivery",
      "attachment_group": null,
      "filename": "20170623_130138.jpg"
    }
  ]
}

This endpoint retrieves a specific stockpile's attachments.

HTTP Request

GET https://appia.net/api/v1/stockpiles/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the stockpile to retrieve attachments for

Time Limits

Get a Specific Time Limit

curl "https://appia.net/api/v1/time_limits/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

Working or Calendar Day Time Limit

{
    "id": "d72994d7-a295-44ea-aaa5-2335759ba67d",
    "description": "Primary",
    "project_id": "975b834f-1f43-40a2-98e1-02fcddea135d",
    "category": "working_days",
    "is_primary": false,
    "liquidated_damages": "112.0",
    "completeness_percentage": "450.0",
    "start_date": "2021-04-01",
    "expected_end_date": "2021-04-08",
    "days_charged": 4.5,
    "days_remaining": "-3.5",
    "original_deadline": "1.0",
    "deadline": "1.0",
    "liquidated_damages_total": "392.0",
    "completed": false
}

This endpoint retrieves a specific time limit.

HTTP Request

GET https://appia.net/api/v1/time_limits/<ID>

URL Parameters

Parameter Description
ID The ID of the time limit to retrieve

Completion Date Time Limit

{
    "id": "931f3201-5d56-4945-a345-215ba9acd516",
    "description": "Bridge Completion",
    "project_id": "975b834f-1f43-40a2-98e1-02fcddea135d",
    "category": "completion_date",
    "is_primary": false,
    "liquidated_damages": "100.0",
    "completeness_percentage": 96.897,
    "days_remaining": 43,
    "original_deadline": "2021-06-01",
    "deadline": "2021-06-01",
    "liquidated_damages_total": 0,
    "completed": false
}

Get Working Day Charges

curl "https://appia.net/api/v1/time_limits/<ID>/charges"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "charges": [
    {
      "id": "ba5002b3-d3a2-4835-9d5f-b2189f5d43eb",
      "time_limit_id": "d72994d7-a295-44ea-aaa5-2335759ba67d",
      "charged_at": "2021-04-05",
      "remarks": null,
      "created_at": "2021-04-19T14:34:25.686Z",
      "updated_at": "2021-04-19T14:34:25.686Z",
      "charge": "full_day",
      "controlling_item_id": "1069e23d-5126-45b1-b924-a637367bf474",
      "contractor_working": true
    },
    {
      "id": "bd5125ad-1eed-483a-ac55-d827f54c4411",
      "time_limit_id": "d72994d7-a295-44ea-aaa5-2335759ba67d",
      "charged_at": "2021-04-06",
      "remarks": "Controlling item was 1.4. Issues: Delayed transport.",
      "created_at": "2021-04-19T14:34:25.688Z",
      "updated_at": "2021-04-19T15:15:33.552Z",
      "charge": "half_day",
      "controlling_item_id": "1069e23d-5126-45b1-b924-a637367bf474",
      "contractor_working": true
    },
    {
      "id": "3209edc0-f384-49a6-9494-ceeabc4011dd",
      "time_limit_id": "d72994d7-a295-44ea-aaa5-2335759ba67d",
      "charged_at": "2021-04-07",
      "remarks": null,
      "created_at": "2021-04-19T14:34:25.689Z",
      "updated_at": "2021-04-19T14:34:25.689Z",
      "charge": "half_day",
      "controlling_item_id": null,
      "contractor_working": false
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 3
  }
}

This endpoint retrieves a specific working day time limit's charges.

HTTP Request

GET https://appia.net/api/v1/time_limits/<ID>/charges

URL Parameters

Parameter Description
ID The ID of the working day time limit to retrieve charges for

Sections

Get a Specific Section

curl "https://appia.net/api/v1/sections/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "44d14c63-ddf1-4c9d-bdbb-0f0f22829a7f",
  "number": "1",
  "description": "Pavement",
  "project_id": "0632d565-be61-4944-9c49-fc38453292eb",
  "created_at": "2020-07-26T22:44:26.993-04:00"
}

This endpoint retrieves a specific section.

HTTP Request

GET https://appia.net/api/v1/sections/<ID>

URL Parameters

Parameter Description
ID The ID of the section to retrieve

Change Orders

Get a Specific Change Order

curl "https://appia.net/api/v1/change_orders/<ID>"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "id": "a9e2f527-43e7-4ad7-a916-b32bda8a907a",
  "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
  "status": "approved",
  "order_type": "Scope",
  "summary": "Scope Change",
  "description": "<p>scope change.&nbsp;</p>",
  "effective_date": "2021-01-04",
  "created_at": "2021-01-04T15:49:11.142Z",
  "number": 7,
  "project": {
    "pending_amount": "6177.0"
  }
}

This endpoint retrieves a specific change order.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>

URL Parameters

Parameter Description
ID The ID of the change order to retrieve

Get Quantity Changes

curl "https://appia.net/api/v1/change_orders/<ID>/quantities"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "change_order_quantities": [
    {
      "change_order_id": "85a5c80f-2fb2-4248-a584-a690bd12b1b5",
      "item_id": "6745c850-07f8-4a11-8b92-5e26d60154a3",
      "extension_delta": "6177.0",
      "unit": "STA",
      "unit_price": "87.0",
      "prev_quantity": "71.0",
      "quantity_delta": "71.0",
      "description": "EPOXY PAVEMENT MARKINGS",
      "supplemental_description": null,
      "quantity": "142.0",
      "line_number": "0070",
      "section": {
        "id": "6f8dc2b3-071c-4582-bb64-3e771a341228",
        "number": "1",
        "description": "Description",
        "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
        "created_at": "2018-04-08T16:53:19.417Z",
        "updated_at": "2018-04-08T16:53:19.417Z",
        "number_sort": "              1"
      },
      "change_order_quantity_splits": [
        {
          "fund_package_id": "9fadf77f-79b1-4ba9-973d-d481a47f2fe6"
        },
        {
          "fund_package_id": "c70d155f-53a2-45e1-8856-eb156e2ea87b"
        },
        {
          "fund_package_id": "24b2d97d-3847-4049-a0ab-af8d66fe4162"
        },
        {
          "fund_package_id": "8aa5e6d9-a565-44bd-a859-a241d4905d23"
        },
        {
          "fund_package_id": "15dc02af-6275-487b-98ff-de975bb57462"
        }
      ],
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific change order's quantity changes.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>/quantities

URL Parameters

Parameter Description
ID The ID of the change order to retrieve quantities for

Get New Items Changes

curl "https://appia.net/api/v1/change_orders/<ID>/items"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "change_order_items": [
    {
      "change_order_id": "709f450a-5dd6-450f-8386-fca901f5db03",
      "item_id": "0bc1e9f2-1f31-4b27-aa8a-339656b37711",
      "reason": "Different Type",
      "line_number": "0620",
      "description": "SANITARY SEWER, PVC 8\"",
      "extension": "0.0",
      "supplemental_description": null,
      "section": {
        "id": "6f8dc2b3-071c-4582-bb64-3e771a341228",
        "number": "1",
        "description": "Description",
        "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3",
        "created_at": "2018-04-08T16:53:19.417Z",
        "updated_at": "2018-04-08T16:53:19.417Z",
        "number_sort": "              1"
      },
      "unit": "LF",
      "unit_price": "0.0",
      "quantity": "0.0",
      "change_order_item_splits": [
        {
          "fund_package_id": "9fadf77f-79b1-4ba9-973d-d481a47f2fe6"
        },
        {
          "fund_package_id": "c70d155f-53a2-45e1-8856-eb156e2ea87b"
        },
        {
          "fund_package_id": "24b2d97d-3847-4049-a0ab-af8d66fe4162"
        },
        {
          "fund_package_id": "8aa5e6d9-a565-44bd-a859-a241d4905d23"
        },
        {
          "fund_package_id": "15dc02af-6275-487b-98ff-de975bb57462"
        }
      ],
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific change order's new item changes.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>/items

URL Parameters

Parameter Description
ID The ID of the change order to retrieve new item changes for

Get Time Limit Changes

curl "https://appia.net/api/v1/change_orders/<ID>/times"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "change_order_times": [
    {
      "change_order_id": "61677fb7-8a4a-4d39-8b2f-ec0081389183",
      "original_deadline": "2019-02-01",
      "authorized_deadline": "2019-02-01",
      "proposed_extension": 705,
      "proposed_deadline": "2021-01-06",
      "time_limit": {
        "category": "completion_date"
      },
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific change order's time limit changes.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>/times

URL Parameters

Parameter Description
ID The ID of the change order to retrieve time limit changes for

Get New Time Limit Changes

curl "https://appia.net/api/v1/change_orders/<ID>/time_limits"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "change_order_time_limits": [
    {
      "change_order_id": "695ca307-79b1-4272-9533-88e9cc8ec289",
      "description": "Project Completion",
      "deadline_date": "2019-02-01",
      "liquidated_damages": "250.0",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 1
  }
}

This endpoint retrieves a specific change order's new time limit changes.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>/time_limits

URL Parameters

Parameter Description
ID The ID of the change order to retrieve new time limit changes for

Get Change Order Attachments

curl "https://appia.net/api/v1/change_orders/<ID>/attachments"
  -H "Authorization: a8de477316013a267ecee639aa7e4c9a"

The above command returns JSON structured like this:

{
  "attachments": [
    {
      "id": "80698a09-fdc4-46d1-a4b9-b9d396f47f3d",
      "name": "export download FG.PNG",
      "description": "attachment 1",
      "attachment_group": null,
      "filename": "export_download_FG.PNG",
      "change_order_id": "a9e2f527-43e7-4ad7-a916-b32bda8a907a",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    },
    {
      "id": "0602bdb7-2036-46d5-a60c-5a7f247681ce",
      "name": "export FG from Items.PNG",
      "description": "attachment 2",
      "attachment_group": null,
      "filename": "export_FG_from_Items.PNG",
      "change_order_id": "a9e2f527-43e7-4ad7-a916-b32bda8a907a",
      "project_id": "9dc06000-e733-4349-a9f3-78caf91686c3"
    }
  ],
  "meta": {
    "current_page": 1,
    "next_page": null,
    "prev_page": null,
    "total_pages": 1,
    "total_count": 2
  }
}

This endpoint retrieves a specific change order's attachments.

HTTP Request

GET https://appia.net/api/v1/change_orders/<ID>/attachments

URL Parameters

Parameter Description
ID The ID of the change order to retrieve attachments for

Pagination

Paginated json will include a meta key with pagination data like this:

curl "https://appia.net/api/v1/projects?page=2&per_page=10"
  -H "Authorization: Bearer a8de477316013a267ecee639aa7e4c9a"
{
  "meta": {
    "current_page": 2,
    "next_page": 3,
    "prev_page": 1,
    "total_pages": 5,
    "total_count": 52
  }
}

Responses are paginated to make large object list responses more manageable. You can control pagination with the page and per_page parameters. Pages start at 1 and the first page will be returned if no page is specified. The number of results per page can be any value between 0 and 100 and defaults to 30.

Query Parameters

Parameter Default Description
page 1 The page number to retrieve
per_page 30 The number of results per page

Errors

An example of a JSON error response

{ "title": "Not Found", "status": 404 }

The Appia service uses standard HTTP response codes to indicate success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information, and codes in the 5xx range indicate an error with the Appia service's servers. The Appia API uses the following error codes:

Error Code Meaning
400 Bad Request -- The request is malformed.
401 Unauthorized -- The API key is not valid.
403 Forbidden -- Not authorized to access the requested resource.
404 Not Found -- The specified resource could not be found.
429 Too Many Requests -- Recieved too many requests (see Rate Limiting).
500 Internal Server Error -- We had a problem with our server. Try again later.

Rate Limiting

Example of HTTP headers and JSON response when the rate limited has been exceeded.

X-Rate-Limit-Limit → 60
X-Rate-Limit-Remaining → 0
X-Rate-Limit-Reset → 2020-10-04 12:58:52 -0400
{
  "error": "You have surpassed the maximum number of requests. Please wait until your limit resets.",
  "retry_after": "2020-10-04 12:58:52 -0400"
}

Limits are placed on the number of API requests you may make using your API key. This is to prevent abuse that would degrade our ability to maintain consistent API performance for all users. These limits are applied across all Appia API requests for each API key. Exceeding these limits will lead to your API key being temporarily blocked from making further requests.

HTTP Headers and Response Codes

When the rate limit for a given API endpoint is exceeded, it will return an HTTP 429 “Too Many Requests” response code.

The following headers will be returned: