Skip to main content

aceapi-v2-client

A Python client library for the ACE (Analysis Correlation Engine) API v2.

The client is generated from the API's OpenAPI schema with openapi-python-client, so every endpoint and model is fully typed. A small hand-written auth module adds convenience helpers for ACE's API-key authentication.

Installation

pip install aceapi-v2-client

Or install from a checkout of this directory:

pip install .

Requires Python 3.9+.

Quickstart (API key)

ACE's primary machine-to-machine authentication is an API key sent in the x-ace-auth header. Use the authenticated_client helper to build a client with that header pre-populated:

from aceapi_v2_client.auth import authenticated_client
from aceapi_v2_client.api.common import ping_common_ping_get
from aceapi_v2_client.api.observables import (
    list_observable_types_observable_types_get,
)

client = authenticated_client(
    base_url="https://localhost:8443/api/v2",
    api_key="YOUR-API-KEY",
    verify_ssl=False,  # development instances use a self-signed certificate
)

# a simple authenticated health check
pong = ping_common_ping_get.sync(client=client)
print(pong.result)  # "pong"

# call a data endpoint — responses are parsed into typed models
types = list_observable_types_observable_types_get.sync(client=client)
print(types)

Every endpoint module under aceapi_v2_client.api.* exposes four functions:

function returns
sync(...) the parsed body (or None)
sync_detailed(...) a Response with status + parsed body
asyncio(...) the parsed body, async
asyncio_detailed(...) a Response, async

All take client= as a keyword argument plus any path/query/body parameters the operation defines.

Async usage

import asyncio
from aceapi_v2_client.auth import authenticated_client
from aceapi_v2_client.api.common import ping_common_ping_get

client = authenticated_client("https://localhost:8443/api/v2", "YOUR-API-KEY",
                              verify_ssl=False)

async def main():
    async with client as c:
        print(await ping_common_ping_get.asyncio(client=c))

asyncio.run(main())

Authentication with a JWT token

ACE also supports user login via OAuth2 password flow. Obtain a token from the /auth/token endpoint, then use the token_client helper:

from aceapi_v2_client.auth import token_client

client = token_client(
    base_url="https://localhost:8443/api/v2",
    access_token="eyJhbGci...",   # from POST /auth/token
    verify_ssl=False,
)

token_client sends the token as Authorization: Bearer <token>.

Base URL and TLS notes

  • The base URL must include the /api/v2 prefix. The generated client appends operation paths (e.g. /common/ping) directly to base_url.
    • From inside the docker compose network: https://ace-http/api/v2
    • From the docker host: https://localhost:8443/api/v2
  • Development instances serve a self-signed certificate. Pass verify_ssl=False (as above) or point verify_ssl at a CA bundle path for production.

Keeping the client up to date

The generated code is committed to this repository. When the ACE API v2 changes, regenerate it from the live schema:

# against the default instance (https://ace-http/api/v2/openapi.json)
scripts/regenerate.sh

# or against a specific instance
scripts/regenerate.sh https://localhost:8443/api/v2/openapi.json

The script:

  1. fetches the latest openapi.json into this directory (the build-time source of truth),
  2. installs openapi-python-client into a throwaway virtualenv (so it never touches your main environment),
  3. regenerates the package, preserving the hand-maintained files (aceapi_v2_client/auth.py and aceapi_v2_client/py.typed).

After running it:

  1. Review the diff: git diff aceapi_v2_client/
  2. Bump the version if the API changed — update version in pyproject.toml and package_version_override in openapi-python-client-config.yaml. The client version mirrors the API's major version (2.x.y); bump the patch/minor for client-only changes.
  3. Rebuild and verify (below).

Only auth.py and py.typed are hand-maintained. Do not add other custom code inside aceapi_v2_client/ — it would be overwritten on regeneration.

Building and publishing to PyPI

pip install -r requirements-dev.txt
python -m build              # produces dist/*.whl and dist/*.tar.gz
twine check dist/*           # validate metadata for PyPI
twine upload dist/*          # publish (requires PyPI credentials)

Running the smoke test

The smoke test only runs when pointed at a live instance:

ACE_API_BASE_URL=https://ace-http/api/v2 \
ACE_API_KEY=YOUR-API-KEY \
ACE_API_VERIFY_SSL=false \
pytest tests/test_smoke.py -v

License

Apache-2.0. See LICENSE.

Release files for aceapi-v2-client 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aceapi-v2-client 2.0.0
File Size Uploaded
aceapi_v2_client-2.0.0.tar.gz 31.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aceapi-v2-client 2.0.0
File Interpreter ABI Platform
aceapi_v2_client-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 115.0 kB

Release files / aceapi_v2_client-2.0.0.tar.gz

Download URL aceapi_v2_client-2.0.0.tar.gz
Size 31.9 kB
Tags Source
SHA-256 checksum
How to use checksums
84ff383f14a6c6804896be17e69540c7ffb800a59bb5c1cecebc5526d50cbc62
BLAKE2b-256 checksum
How to use checksums
0d52052721c09a467a59e3e9a23f7a6edb195aca72243c6b4fe50dfb731954a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release files / aceapi_v2_client-2.0.0-py3-none-any.whl

Download URL aceapi_v2_client-2.0.0-py3-none-any.whl
Size 83.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2497bcf530dc57ba2e3db06503daf0c9077787d595da62f787c8c491d078a394
BLAKE2b-256 checksum
How to use checksums
6e5e9fcc3d461a846004de9a64718b2c76ef68c0d228a7b2663f2977cee509c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page