Metadata-Version: 2.4
Name: jazzhq-cli
Version: 0.2.0
Summary: Command-line tool for managing customer and partner data using the JazzHQ APIs
Author-email: vijayaraj <vijay@jazzhq.ai>
License-Expression: MIT
Project-URL: Homepage, https://jazzhq.ai
Keywords: jazzhq,saas22,partners,cli,api
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: license-file

# jazzhq-cli

Command-line tool for managing customer and partner data using the [JazzHQ](https://jazzhq.ai) APIs.

## Install

```bash
uv tool install jazzhq-cli
# or
pipx install jazzhq-cli
# or, inside a virtual environment
pip install jazzhq-cli
```

This puts a `jazzhq-cli` command on your PATH.

## Configure

`jazzhq-cli` authenticates with a vendor API key, sent as the `X-API-KEY` header on
every request. Set it, along with the API host, as environment variables:

```bash
export JAZZHQ_API_KEY="your-vendor-api-key"
export JAZZHQ_API_BASE_URL="https://api.jazzhq.ai"
```

Or override either one per-command with `--api-key` / `--base-url`, which take
precedence over the environment variables:

```bash
jazzhq-cli partner list --api-key "your-vendor-api-key" --base-url "https://api.jazzhq.ai"
```

If neither the environment variable nor the flag is set, the command exits with a
configuration error before making any request.

## Commands

Every command prints the raw JSON API response body to stdout on success. Errors go
to stderr, including any field-level validation errors returned by the API.

All commands accept `--api-key` and `--base-url` as described above.

### `partner invite`

Invite a new partner.

| Flag | Required | Description |
| ---- | -------- | ----------- |
| `--company-name` | yes | Partner's company name |
| `--contact-name` | yes | Primary contact's full name |
| `--contact-email-address` | yes | Primary contact's email address |
| `--contact-phone` | no | Primary contact's phone number |
| `--type` | no | One of `REFERRAL_PARTNER`, `AFFILIATE_PARTNER`, `RESELLER`, `DISTRIBUTOR` |
| `--user` | no | A person to invite inside the partner company, as comma-separated `key=value` pairs. Repeatable. |
| `--users-json` | no | A JSON array of user objects, instead of `--user` |

```bash
jazzhq-cli partner invite \
  --company-name "Acme Inc" \
  --contact-name "Jane Doe" \
  --contact-email-address "jane@acme.com" \
  --type RESELLER
```

To invite several people at once, repeat `--user`. Valid keys are `firstName`,
`lastName`, `emailAddress`, `phoneNumber`, and `jobTitle`; `firstName` and
`emailAddress` are required on each.

```bash
jazzhq-cli partner invite \
  --company-name "Acme Inc" \
  --contact-name "Jane Doe" \
  --contact-email-address "jane@acme.com" \
  --user "firstName=Jane,lastName=Doe,emailAddress=jane@acme.com,jobTitle=VP Sales" \
  --user "firstName=Raj,emailAddress=raj@acme.com"
```

Omit `--user` entirely and a single user is created from the contact fields, exactly as
before.

The table above covers the commonly used fields. Run `jazzhq-cli partner invite --help`
for the full set of accepted options.

### `partner reinvite`

Resend an invite email to an existing partner.

| Argument / Flag | Required | Description |
| --------------- | -------- | ----------- |
| `partner_id` (positional) | yes | The partner's ID |
| `--email-address` | yes | Email address to resend the invite to |

```bash
jazzhq-cli partner reinvite 1001 --email-address "jane@acme.com"
```

### `partner list`

List partners connected to your vendor account.

| Flag | Required | Default | Description |
| ---- | -------- | ------- | ----------- |
| `--page` | no | `0` | Page number |
| `--per-page` | no | `20` | Results per page |
| `--sort-by` | no | `id` | Field to sort by |

```bash
jazzhq-cli partner list --page 0 --per-page 20
```

### `partner add-users`

Invite more people into a partner company already connected to your vendor account.

| Argument / Flag | Required | Description |
| --------------- | -------- | ----------- |
| `partner_id` (positional) | yes | The partner's ID |
| `--user` | yes* | A person to invite, as comma-separated `key=value` pairs. Repeatable. |
| `--users-json` | yes* | A JSON array of user objects, instead of `--user` |

\* Provide one of `--user` or `--users-json`, not both.

```bash
jazzhq-cli partner add-users 1001 \
  --user "firstName=Raj,emailAddress=raj@acme.com,jobTitle=Account Executive" \
  --user "firstName=Mia,emailAddress=mia@acme.com"
```

This is all-or-nothing. If any email address already belongs to a user, or the same
address appears twice in one request, nothing is created and the command exits 1 with a
`DUPLICATE_ENTRY` error naming the address.

Use `--users-json` when a value contains a comma, since `--user` splits on it:

```bash
jazzhq-cli partner add-users 1001 \
  --users-json '[{"firstName":"Ann","emailAddress":"ann@acme.com","jobTitle":"VP, Sales"}]'
```

### `partner list-users`

List the people inside a partner company.

| Argument / Flag | Required | Default | Description |
| --------------- | -------- | ------- | ----------- |
| `partner_id` (positional) | yes | | The partner's ID |
| `--page` | no | `0` | Page number |
| `--per-page` | no | `20` | Results per page |
| `--sort-by` | no | `id` | One of `id`, `firstName`, `lastName`, `emailAddress`, `jobTitle`, `createdAt` |

```bash
jazzhq-cli partner list-users 1001 --per-page 50
```

Each user includes `lastActiveAt`, which is `null` until they first sign in to the
partner portal — useful for telling an outstanding invite from an active user.

## Exit codes

| Code | Meaning |
| ---- | ------- |
| `0`  | Success |
| `1`  | API error (e.g. duplicate entry, validation failure) or network error |
| `2`  | Usage or configuration error (missing arg, missing API key/base URL) |

## License

MIT
