Projects

Projects are containers that group together your tests, agents, schedules, and other resources. They are simple organizational buckets with no behavior of their own.

Overview

A project is an organizational bucket. It groups tests, agents, schedules, and other resources together. Projects have no behavior of their own. They exist so you can scope your work in whatever way makes sense for your team: by environment (staging, production), by application, by team, or however you prefer.

Every agent must belong to a project. When you create a test or a schedule, you assign it to a project. The project's health board gives you an at-a-glance view of all tests and their current pass/fail state.

GET /api/v1/projects

List projects

Projects are returned in descending project ID order.

Parameters

ParameterTypeInRequiredDescription
limitintegerqueryNoMaximum number of projects to return.
cursoruuidqueryNoReturn projects with IDs lower than this project ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/projects" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Projects belonging to the authenticated tenant.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
projectsobject[]
projects[].iduuid
projects[].tenant_iduuid
projects[].namestring
projects[].descriptionstring
projects[].webhook_urluri
projects[].created_atdate-time
projects[].updated_atdate-time
next_cursoruuid
POST /api/v1/projects

Create a project

Request Body (application/json)

FieldTypeRequiredDescription
namestringYesProject name
descriptionstringNoProject description

Example Request

curl
curl -X POST "http://app.aiqaramba.com/api/v1/projects" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "<string>"
  }'

Status Codes

CodeDescription
201Project created.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
500The server could not complete the request.

Response Fields (201)

FieldTypeDescription
iduuid
tenant_iduuid
namestring
descriptionstring
webhook_urluri
created_atdate-time
updated_atdate-time
GET /api/v1/projects/{id}

Get a project

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/projects/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Project found.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
namestring
descriptionstring
webhook_urluri
created_atdate-time
updated_atdate-time
DELETE /api/v1/projects/{id}

Delete a project

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Example Request

curl
curl -X DELETE "http://app.aiqaramba.com/api/v1/projects/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
204Project deleted.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
409The request conflicts with the current resource state.
500The server could not complete the request.
PATCH /api/v1/projects/{id}

Update a project

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Request Body (application/json)

FieldTypeRequiredDescription
namestringNoNew project name
descriptionstringNoNew project description

Example Request

curl
curl -X PATCH "http://app.aiqaramba.com/api/v1/projects/<id>" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "<string>",
    "description": "<string>"
  }'

Status Codes

CodeDescription
200Project updated.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
iduuid
tenant_iduuid
namestring
descriptionstring
webhook_urluri
created_atdate-time
updated_atdate-time
GET /api/v1/projects/{id}/webhook

Get a project webhook

The webhook signing secret is never returned.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Example Request

curl
curl "http://app.aiqaramba.com/api/v1/projects/<id>/webhook" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
200Webhook configuration.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.

Response Fields (200)

FieldTypeDescription
has_webhookboolean
urluri
PUT /api/v1/projects/{id}/webhook

Configure a project webhook

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Request Body (application/json)

FieldTypeRequiredDescription
urlstringYesAbsolute HTTPS endpoint that receives project webhook requests.
secretstringNoOptional HMAC signing secret

Example Request

curl
curl -X PUT "http://app.aiqaramba.com/api/v1/projects/<id>/webhook" \
  -H "Authorization: Bearer $AIQA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "<string>"
  }'

Status Codes

CodeDescription
204Webhook configured.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.
DELETE /api/v1/projects/{id}/webhook

Delete a project webhook

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID.

Example Request

curl
curl -X DELETE "http://app.aiqaramba.com/api/v1/projects/<id>/webhook" \
  -H "Authorization: Bearer $AIQA_API_KEY"

Status Codes

CodeDescription
204Webhook removed.
400The request is malformed or failed validation.
401Authentication is missing or invalid.
404The requested resource does not exist.
500The server could not complete the request.