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": "John",
    "last_name": "Smith",
    ...
  },
  ...
]

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.6.tar.gz (48.4 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.6-py3-none-any.whl (68.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ajera-0.1.6.tar.gz
  • Upload date:
  • Size: 48.4 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.6.tar.gz
Algorithm Hash digest
SHA256 c20b5facfe8389bf6cf021c45b6a8a477aa868a4ec7a138f50465007452db434
MD5 b85a9ab589b13afd96e86aa5ce028189
BLAKE2b-256 15e9f965d1ac6e7a6ff6da25d63ba9bd2067417cf8f648a6b405c435b521ef7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ajera-0.1.6.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.6-py3-none-any.whl.

File metadata

  • Download URL: ajera-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 68.5 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 352cc4190ce13f112842b07b3eea7e32b07d6abf2f1d8221b4e2c03c711630cf
MD5 379e2f10cccc4195e5029d891f3242e6
BLAKE2b-256 1bd009f6a3aeb10c95e2ea1660460be409cca36accb091aae3c885fe005ff87b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ajera-0.1.6-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