Skip to main content

Deltek Ajera Python API Client

Project description

CI

Deltek Ajera Python client

A typed Python client and command-line interface for the Deltek Ajera API.

Ajera exposes a single JSON-RPC style endpoint; this package wraps it in an ergonomic, fully type-hinted client built on Pydantic models, plus an ajera CLI for quick access from the terminal. Responses are validated and normalized into predictable Python objects so you can work with employees, projects, vendors, invoices, and general-ledger data without hand-rolling request payloads.

Features

  • Typed models - every response is parsed into Pydantic models with descriptive fields.
  • Python client and CLI - use it as a library or straight from the shell via ajera.
  • Sensible defaults - handles session tokens and per-method API versions for you.
  • Read and write - list, get, update, and create across the supported APIs.

Installation

pip install ajera
# or, with uv:
uv add ajera

Requires Python 3.12+.

Configuration

Credentials are read from environment variables (or can be passed directly to AjeraClient):

Variable Description
AJERA_API_URL The Ajera API endpoint URL for your tenant.
AJERA_API_USERNAME API username.
AJERA_API_PASSWORD API password.
export AJERA_API_URL="https://ajera.com/V0000000/AjeraAPI.ashx?..."
export AJERA_API_USERNAME="your-username"
export AJERA_API_PASSWORD="your-password"

For setting up an API user and generating credentials, see the Deltek Ajera Learning Hub API docs.

Quick start

Python

from ajera import AjeraClient

# Reads AJERA_API_URL / AJERA_API_USERNAME / AJERA_API_PASSWORD from the
# environment, or pass url=, username=, password= explicitly.
client = AjeraClient()

for employee in client.list_employees():
    print(employee.employee_key, employee.first_name, employee.last_name)

CLI

$ ajera employees list
[
  {
    "employee_key": 42,
    "first_name": "Ada",
    "last_name": "Lovelace",
    ...
  },
  ...
]

Note: List commands backed by an active/inactive status return only active records by default. Pass --status to override - e.g. --status Inactive, or --status Active --status Inactive to include both.

Reference Documentation

This client adheres (to the extent possible) to the API documentation provided by Deltek Ajera, which can be found at:

https://help.deltek.com/product/Ajera/api/index.html

API reference

Each section below maps a CLI command group to the Ajera API(s) it is built on. The Python client exposes the same operations as client.<method>() (e.g. client.list_employees(), client.get_projects(...)).

Employees

Docs: Employees API · List Methods API

pays, payroll-taxes, and wage-tables come from the List Methods API; the rest come from the Employees API.

Command Description
ajera employees list List employees.
ajera employees get <id>... Get one or more employees by ID.
ajera employees update <key> [options] Update simple fields on one employee.
ajera employees types List employee types.
ajera employees deductions List deductions.
ajera employees fringes List fringes.
ajera employees pays List pay types.
ajera employees payroll-taxes List payroll taxes.
ajera employees wage-tables List wage tables.

Clients

Docs: Clients API

Command Description
ajera clients list List clients.
ajera clients get <id>... Get one or more clients by ID.
ajera clients update <key> [options] Update simple fields on one client.
ajera clients types List client types.

Contacts

Docs: Contacts API

Command Description
ajera contacts list List contacts.
ajera contacts get <id>... Get one or more contacts by ID.
ajera contacts update <key> [options] Update simple fields on one contact.
ajera contacts types List contact types.

Vendors

Docs: Vendors API · Vendor Invoices API (v2)

The invoices subcommands come from the Vendor Invoices (v2) API; the rest come from the Vendors API.

Command Description
ajera vendors list List vendors.
ajera vendors get <id>... Get one or more vendors by ID.
ajera vendors update <key> [options] Update simple fields on one vendor.
ajera vendors types List vendor types.
ajera vendors invoices list List vendor invoices, optionally filtered.
ajera vendors invoices get <key>... Get one or more vendor invoices, with their line items.
ajera vendors invoices create [options] Create a vendor invoice with a single line item.

Projects

Docs: Projects API (v2) · Projects API (v1) · List Methods API

list, get, update, and create use the v2 Projects API; totals, types, and templates use the v1 Projects API; chargeable-phases comes from the List Methods API.

Command Description
ajera projects list List projects, optionally filtered.
ajera projects get <id>... Get one or more projects by ID.
ajera projects create <description> [options] Create a new project.
ajera projects update <key> [options] Update simple fields on one project.
ajera projects totals <id> Get a project's financial totals.
ajera projects types List project types.
ajera projects templates list List project templates, optionally filtered.
ajera projects templates get <id>... Get one or more project templates by ID.
ajera projects chargeable-phases <project-key> List the chargeable phases of a project.

General Ledger

Docs: GL Accounts API · List Methods API

account-groups comes from the List Methods API; list and get come from the GL Accounts API.

Command Description
ajera ledger list List general ledger accounts.
ajera ledger get [id]... Get general ledger account details, with calculated amounts.
ajera ledger account-groups List general ledger account groups.

Reference lists

Docs: List Methods API

Lightweight lookup lists. (Other List Methods endpoints are grouped with their domain - see employees, ledger, and projects above.)

Command Description
ajera activities List activities.
ajera bank-accounts List bank accounts.
ajera companies List companies.
ajera departments List departments.
ajera invoice-formats List invoice formats.
ajera rate-tables List rate tables.

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

ajera-0.1.3.tar.gz (46.8 kB view details)

Uploaded Source

Built Distribution

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

ajera-0.1.3-py3-none-any.whl (66.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ajera-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b0ffa4cc573e53821897a224ef7e977da82798b8f4b37252e19cce691aade0b0
MD5 e71077297b7b9aa1408c7563ecea4002
BLAKE2b-256 b041757aea07be7718c18f1e7ce0a62663a7ad58e389d38fd7010cc4cbc1df72

See more details on using hashes here.

Provenance

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

Publisher: publish.yaml on sbo-inc/ajera

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

File details

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

File metadata

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

File hashes

Hashes for ajera-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c7fe60170ed5ac5a8ce7001a81660926100578109c93fd0c1dba134c55ac9a2d
MD5 5494d61dbabd0fc622e230b2cdb01c13
BLAKE2b-256 5b40ca79abbab41f67ba1aed1a6d783a0b0f761012ddefc069ac8df6686ebd30

See more details on using hashes here.

Provenance

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

Publisher: publish.yaml on sbo-inc/ajera

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