Skip to main content

API Endpoints

Christina Hill avatar
Written by Christina Hill
Updated over 2 weeks ago

Some account have access to CONQA's API as part of their subscription. If you are not sure whether this applies to your company, please contact your account manager, or reach out to our support ream via support@conqahq.com, or via Live Chat.

This is the public API for CONQA.

Getting Started with the API

The Public API is available at:

https://api-oceania.con.qa/api-v1

To get started, you'll need to:

  1. Generate an API token from your user settings in CONQA Console

  2. Include your API token in the Authorization header for all API requests

Endpoints

Get Projects for User

Retrieves a list of all projects that you have access to in licensed accounts.

GET https://api-oceania.con.qa/api-v1/projects
Authorization: your-api-token-here

Example Response

{
  "projects": [
    {
      "projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "projectName": "CONQA Apartments"
    },
    {
      "projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "projectName": "CONQA Office Upgrade"
    }
  ]
}

Get Project Summary

Retrieves the summary information for a specific project that you have access to, including the project name and statistics for Issues and Milestones.

GET https://api-oceania.con.qa/api-v1/project/{projectId}/summary
Authorization: your-api-token-here

Parameters

  • projectId (path parameter): The unique identifier of the project

Example Response

{
"data": {
"name": "CONQA Apartments",
"issues": {
"total": 300,
"statuses": [
{
"name": "open",
"issueCount": 45
},
{
"name": "closed",
"issueCount": 33
},
{
"name": "disputed",
"issueCount": 3
},
{
"name": "ready-to-inspect",
"issueCount": 4
},
{
"name": "work-completed",
"issueCount": 12
}
]
},
"milestones": {
"total": 101,
"statuses": [
{
"status": "open",
"count": 52,
"percentage": 51.49
},
{
"status": "work-in-progress",
"count": 21,
"percentage": 20.79
},
{
"status": "closed",
"count": 1,
"percentage": 0.99
},
{
"status": "physical-works-complete",
"count": 22,
"percentage": 21.78
}
]
}
}
}

Get Project Issues

Retrieves a list of issues for a specific project that you have access to, with pagination support.

GET https://api-oceania.con.qa/api-v1/project/{projectId}/issues
Authorization: your-api-token-here

Parameters

  • projectId (path parameter): The unique identifier of the project

  • page (query parameter, optional): The page number to retrieve (default: 1)

  • limit (query parameter, optional): The number of issues per page (default: 300)

Example Response

{
  "data": {
    "paging": {
      "total_records": 112,
      "page_size": 10,
      "page_number": 1
    },
    "issues": [
      {
        "issueId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "assignedTo": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "checklistId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "checkpointId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "description": "Test issue description",
        "dueDate": "2023-12-30T11:00:00.000Z",
        "issueNumber": "ISS-22",
        "lastUpdatedAt": "2024-10-21T12:38:02.959Z",
        "lastUpdatedBy": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "raisedAt": "2024-10-21T12:38:02.959Z",
        "raisedBy": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "raisedByName": "John Doe",
        "responsiblePerson": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "responsiblePersonName": "Jane Smith",
        "status": "open",
        "title": "Test issue",
        "daysAtStatus": 3,
        "ballInCourtUser": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "ballInCourtUserName": "John Doe",
        "numberOfAttachments": 2
      }
    ]
  }
}

Get Project Milestones

Retrieves a list of milestones for a specific project that you have access to, with pagination support.. This will vary depending on your milestone configuration.

GET https://api-oceania.con.qa/api-v1/project/{projectId}/milestones Authorization: your-api-token-here

Parameters

  • projectId (path parameter, required): The unique identifier of the project

  • page (query parameter, optional): The page number to retrieve (default: 1)

  • limit (query parameter, optional): The number of milestones per page (default: 300)

  • orderBy (query parameter, optional): The field name to order by.

  • orderDirection (query parameter, optional): Can be one of asc or desc

Example Response

This response has sample fields and measures configured; your project will likely be configured with different fields, measures and statuses.

{
"data": {
"paging": {
"total_records": 102,
"page_size": 300,
"page_number": 1
},
"milestones": [
{
"milestoneId": "ms:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Lot A",
"externalId": "RAN-A1-ITP-0001-001",
"status": {
"value": "physical-works-complete",
"display": "Physical Works Complete",
"lastUpdatedAt": "2025-07-15T03:42:08.394Z",
"lastUpdatedBy": "63bf2356-ee24-48f8-baab-62c97bd8946b",
"lastUpdatedByUser": "John Doe"
},
"fields": {
"openedDate": {
"value": "2024-02-11"
},
"itp": {
"value": "ITP-0002",
"display": "ITP 0002 - Excavation"
},
"area": {
"value": "A1",
"display": "Area 1"
},
"zone": {
"value": "2",
"display": "2"
},
"lotType": {
"value": "EAL",
"display": "EAL - Earthworks Lot"
},
"workCommencedDate": {
"value": "2024-03-06"
},
"workCompletedDate": {
"value": "2024-05-16"
},
"holdpointsReleased": {
"value": "no",
"display": "No"
},
"testResultsAttached": {
"value": "no",
"display": "No"
},
"ncrRaised": {
"value": "yes",
"display": "Yes"
},
"ncrNumber": {
"value": "2"
},
"ncrRaisedDate": {
"value": "2024-03-20"
},
"ncrClosed": {
"value": null,
"display": null
},
"ncrClosedDate": {
"value": "2024-04-11"
},
"comments": {
"value": "Test comment"
},
"submittedDate": {
"value": "2025-06-30"
},
"closedDate": {
"value": null
}
},
"measures": {
"timeToSubmittedFromPhysicalWorksComplete": {
"days": 410,
"threshold": "overdue"
},
"timeToCloseFromPhysicalWorksComplete": {
"days": 453,
"threshold": "overdue"
},
"notClosedBecause": {
"holdPointsOutstanding": true,
"testResultsOutstanding": true,
"ncRsOutstanding": true
}
}
}
]
}
}

Error Responses

The API uses standard HTTP status codes to indicate success or failure:

200: Success

400: Bad Request

401: Unauthorized (invalid or missing API token)

403: Forbidden

404: Not Found

500: Internal Server Error

Did this answer your question?