Skip to main content

Python SDK for the Aqtos project management API

Project description

Aqtos

aqtos-sdk

Python SDK for the Aqtos project management API.

Installation

pip install aqtos-sdk

Quick start

from aqtos import AqtosClient

with AqtosClient(domain="mycompany", api_key="ak_live_xxx") as client:
    task_id = client.tasks.create(
        project_id="proj-123",
        title="Deploy v2.0",
    )

domain is your Aqtos subdomain — e.g. "mycompany" for mycompany.aqtos.io.
Your API key is sent automatically as the X-API-KEY header on every request.

Tasks

Create

from aqtos import AqtosClient, Priority
from datetime import datetime

with AqtosClient(domain="mycompany", api_key="ak_live_xxx") as client:
    task_id = client.tasks.create(
        project_id="proj-123",
        title="Set up CI pipeline",
        # all keyword arguments below are optional
        description="Configure GitHub Actions for automated deploys.",
        priority=Priority.HIGH,
        status_id="status-todo",
        category_id="cat-engineering",
        assignees=["person-456", "person-789"],
        due_date=datetime(2026, 5, 1),
        start_date=datetime(2026, 4, 15),
        tags=["devops", "automation"],
        milestone_id="milestone-q2",
        estimated_duration_days=5,
        budget_type="HOURS",
        estimated_value=40,
    )

Returns the new task ID as a string.

Retrieve

task = client.tasks.get("task-uuid-001")

task.id          
task.title        
task.priority     
task.done         
task.tags         
task.assignee_ids 
task.raw          

List

tasks = client.tasks.list()

# with filters
tasks = client.tasks.list(projectId="proj-123", page=0, size=20)

Update status

client.tasks.update_status("task-uuid-001", status_id="status-in-review")


client.tasks.update_status("task-uuid-001", status_id="status-done", update_dependencies=True)

Update description

client.tasks.update_description(
    task_id="task-uuid-001",
    project_id="proj-123",
    description="Updated scope: include staging and production.",
)

Bulk update

Only fields you explicitly pass are updated — the SDK sets the underlying CQRS update flags automatically.

client.tasks.update(
    task_ids=["task-uuid-001", "task-uuid-002"],
    priority=Priority.CRITICAL,
    due_date=datetime(2026, 4, 30),
    status_id="status-in-progress",
    category_id="cat-backend",
)

Assign

client.tasks.assign("task-uuid-001", person_id="person-456")

Mark done / cancel

client.tasks.mark_done("task-uuid-001")

client.tasks.cancel("task-uuid-001")
client.tasks.cancel("task-uuid-001", update_dependencies=True)

Checklist items

# add
client.tasks.add_item("task-uuid-001", title="Write unit tests", assignees=["person-456"])

# edit
client.tasks.edit_item(
    "task-uuid-001",
    item_id="item-uuid-001",
    title="Write unit + integration tests",
    assignees=["person-789"],
)

Async client

Every method has an async counterpart via AsyncAqtosClient:

import asyncio
from aqtos import AsyncAqtosClient, Priority

async def main():
    async with AsyncAqtosClient(domain="mycompany", api_key="ak_live_xxx") as client:
        task_id = await client.tasks.create(
            project_id="proj-123",
            title="Async task",
            priority=Priority.MEDIUM,
        )
        await client.tasks.mark_done(task_id)

asyncio.run(main())

Error handling

from aqtos import (
    AqtosAuthError,
    AqtosNotFoundError,
    AqtosValidationError,
    AqtosServerError,
    AqtosAPIError,
)

try:
    task = client.tasks.get("nonexistent-id")
except AqtosAuthError:
    # 401 / 403 — invalid or missing API key
    ...
except AqtosNotFoundError:
    # 404 — resource does not exist
    ...
except AqtosValidationError as e:
    # 400 / 422 — bad request payload
    print(e.response_body)
except AqtosServerError as e:
    # 5xx — upstream server error
    print(e.status_code)
except AqtosAPIError as e:
    # catch-all for any other HTTP error
    print(e.status_code, e.response_body)

All exceptions expose status_code (int) and response_body (parsed JSON or raw text).

Reference

AqtosClient(domain, api_key, *, timeout=30, http_client=None)

Parameter Type Description
domain str Aqtos subdomain (e.g. "mycompany")
api_key str API key sent as X-API-KEY
timeout float Request timeout in seconds
http_client httpx.Client Optional pre-configured client

AsyncAqtosClient accepts the same parameters with an optional httpx.AsyncClient.

Priority

LOW · MEDIUM · HIGH · CRITICAL

BudgetType

MONEY · HOURS · DAYS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aqtos-0.1.3.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aqtos-0.1.3-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file aqtos-0.1.3.tar.gz.

File metadata

  • Download URL: aqtos-0.1.3.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aqtos-0.1.3.tar.gz
Algorithm Hash digest
SHA256 bf7eed5667863bd42f0b70a500e3e2cf36fa08c09e5ded35c4cc8724c740c927
MD5 f043138ce453e63b0b86235a3b0530c7
BLAKE2b-256 30f228913a6bc6980240b970c69529bb00b2d00a89a3d551fbe190428cd4dc90

See more details on using hashes here.

Provenance

The following attestation bundles were made for aqtos-0.1.3.tar.gz:

Publisher: release.yml on Aqtos/aqtos-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aqtos-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: aqtos-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aqtos-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d52afdac7690ed842a71da8272cea38030fe0b6c916af84696d46a1ac470752e
MD5 204d584ef92f1d489ead72805ee038be
BLAKE2b-256 4e9433a72fcc53202a3826aff721bd86d86f0ef89386f42fd0b847d7352ea9d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for aqtos-0.1.3-py3-none-any.whl:

Publisher: release.yml on Aqtos/aqtos-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page