Jira API
Programmatic management of the Jira integration itself: connecting it, reading it back, changing its settings, and disconnecting it. Requests share the same base URL and Bearer token authentication as the rest of the platform API.
- Base URL. Your deployment's platform host (for example,
https://<your-tenant>.qualytics.io/api). - Auth. Bearer token in the
Authorizationheader. See Access Tokens to create one. - Content type.
application/jsonon every request that carries a body.
Permissions
Every endpoint on this page requires the Manager role. See Permissions.
Complete API Reference
The endpoints below are illustrative. For the full request and response schemas, live examples, and every field that each endpoint accepts, see the interactive API reference at demo.qualytics.io/api/docs.
Looking for tickets and links?
Creating a ticket for an anomaly, searching tickets, and managing the links between anomalies and issues are anomaly operations, not integration ones. They live on the Anomalies API page.
Integration Endpoints
| Operation | Method | Endpoint | Description |
|---|---|---|---|
| Create Integration | POST | /api/integrations |
Connect Jira. The credentials are validated against the instance before the integration is stored. |
| List Integrations | GET | /api/integrations |
Return every connected integration, ticketing included. |
| Get Integration | GET | /api/integrations/{id} |
Return one integration. Credentials are never returned in plain text. |
| Update Integration | PUT | /api/integrations/{id} |
Change the URL, the credentials, the allowed projects, or the sync settings. |
| Get Integration History | GET | /api/integrations/{id}/history |
Return the change log of the integration, one entry per saved version, with the user who made each change. |
| Disconnect Integration | DELETE | /api/integrations/{id} |
Remove the integration and every anomaly-ticket link with it. The issues in Jira are untouched. |
Connection Form Endpoints
These are what the settings modal calls while you fill it in. The POST variants take the credentials being typed, so they work before anything is saved, while the GET variants read through a saved integration.
| Operation | Method | Endpoint | Description |
|---|---|---|---|
| Get Integration Specifications | GET | /api/integrations-specifications |
Return the field specification each integration type's form is built from. |
| List Projects (unsaved) | POST | /api/integrations/ticketing/projects |
List the projects reachable with the credentials in the request body. |
| List Projects (saved) | GET | /api/integrations/{id}/ticketing/projects |
List the projects reachable with a saved integration's credentials. |
| List Ticket Statuses (unsaved) | POST | /api/integrations/ticketing/statuses |
List the ticket statuses reachable with the credentials in the request body, used to build the status mapping. |
| List Ticket Statuses (saved) | GET | /api/integrations/{id}/ticketing/statuses |
The same list, through a saved integration. |
| Get Ticketing Webhook | GET | /api/integrations/ticketing/webhook |
Return the webhook URL to register in Jira so issue changes reach Qualytics immediately. The secret is minted on the first call. |
Request Fields
The create and update bodies share the same shape. Only type is create-only.
parameters is replaced, not merged
An update stores the parameters object exactly as sent, so any key you leave out is dropped. Send the whole object, including projects and default_project_key, even when you are only changing a sync setting. Omitting parameters entirely leaves the stored one untouched.
The credentials are only re-tested against Jira when the request changes api_url or sends a token, so a request that changes projects or sync settings alone is saved without a connection test. The same values are described as they appear in the interface on Add Jira Connection.
| Field | Type | Description |
|---|---|---|
type |
string |
jira. Required on create, and cannot be changed afterwards. |
api_url |
string |
The Jira instance URL. A trailing slash is stripped. |
api_access_token |
string |
The credentials, as email:api_token. Stored encrypted and never returned. |
parameters.projects |
array |
The projects Qualytics may create issues in, each { "id": ..., "key": ..., "name": ... }. At least one is required. |
parameters.default_project_key |
string |
The project used when a caller names none. It has to be one of parameters.projects. |
parameters.post_updates |
bool |
Two-way sync. Absent means on. When false the integration is read only and nothing is written to Jira. |
parameters.sync_statuses |
bool |
Whether anomaly and issue statuses move together. Defaults to off. |
parameters.status_mapping |
object |
Anomaly status to ticket status, for example {"Active": "To Do", "Resolved": "Done"}. A null value leaves that anomaly status unmapped. Required to be non-empty when sync_statuses is on. |
Sample Requests
Connect Jira
curl -X POST "https://<your-tenant>.qualytics.io/api/integrations" \
-H "Authorization: Bearer $QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "jira",
"api_url": "https://your-domain.atlassian.net",
"api_access_token": "user@example.com:your_api_token",
"parameters": {
"projects": [{ "id": "10001", "key": "DATAQ", "name": "Data Quality" }],
"default_project_key": "DATAQ"
}
}'
Returns the stored integration. The credentials are not echoed back.
Turn on status sync with a mapping
curl -X PUT "https://<your-tenant>.qualytics.io/api/integrations/2" \
-H "Authorization: Bearer $QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"parameters": {
"projects": [{ "id": "10001", "key": "DATAQ", "name": "Data Quality" }],
"default_project_key": "DATAQ",
"sync_statuses": true,
"status_mapping": {
"Active": "To Do",
"Acknowledged": "In Progress",
"Resolved": "Done"
}
}
}'
Turning sync_statuses on with nothing mapped is refused, so send the mapping in the same request.
Make the integration read only
curl -X PUT "https://<your-tenant>.qualytics.io/api/integrations/2" \
-H "Authorization: Bearer $QUALYTICS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"parameters": {
"post_updates": false,
"projects": [{ "id": "10001", "key": "DATAQ", "name": "Data Quality" }],
"default_project_key": "DATAQ"
}
}'
The projects are repeated because parameters is stored exactly as sent. Sending post_updates on its own would drop them, and the request is then refused with 422 because a Jira integration has to name at least one project. Read the integration first when you do not know what it currently holds.
Reading issues back continues. To silence a single issue instead, use the ticket link endpoint on the Anomalies API.
Read the webhook URL
curl -X GET "https://<your-tenant>.qualytics.io/api/integrations/ticketing/webhook" \
-H "Authorization: Bearer $QUALYTICS_TOKEN"
Returns { "url": "...", "supported": true }. The URL embeds a secret, so treat it as a credential. See Register the Jira Webhook.