Skip to main content

Hakai Api Python Client

This project exports a single Python class that can be used to make HTTP requests to the Hakai API resource server. The exported Client class extends the functionality of the Python requests library to supply Hakai OAuth2 credentials with url requests.

PyPI tests License: MIT

Table of Contents

Installation

Quickstart

Methods

API endpoints

Advanced usage

Contributing

Installation

Python 3.11 or higher is required. Install with pip:

pip install hakai-api

Quickstart

from hakai_api import Client

# Get the api request client
client = Client()  # Follow stdout prompts to get an API token

# Make a data request for chlorophyll data (using relative endpoint)
response = client.get('/eims/views/output/chlorophyll?limit=50')

print(response.json())
# [{'action': '', 'event_pk': 7064, 'rn': '1', 'date': '2012-05-17', 'work_area': 'CALVERT'...

Desktop OAuth Flow

For native applications and automated scripts, use the desktop OAuth flow with PKCE:

from hakai_api import Client

# Use desktop OAuth flow (opens browser, more secure)
client = Client(auth_flow="desktop")

# Or use the factory method
client = Client.create_desktop_client()

# Make requests using relative endpoints
response = client.get('/eims/views/output/stations')
print(response.json())

User Agent Configuration

Important: Set a descriptive user agent to help identify your application on the backend. Often the repository url is a good way to identify yourself:

from hakai_api import Client
import os

# Set user agent during initialization
client = Client(user_agent="MyApp/1.0 (contact@example.com)")

# Or set via environment variable
os.environ['HAKAI_API_USER_AGENT'] = "MyApp/1.0 (contact@example.com)"
client = Client()

Methods

This library exports a single client name Client. Instantiating this class produces a requests.Session client from the Python requests library. The Hakai API Python Client inherits directly from requests.Session thus all methods available on that parent class are available. For details see the requests documentation.

The hakai_api Client class also contains a property api_root which is useful for constructing urls to access data from the API. The above Quickstart example demonstrates using this property to construct a url to access project names.

API endpoints

For details about the API, including available endpoints where data can be requested from, see the Hakai API documentation.

Advanced usage

Custom API Endpoints

You can specify which API to access when instantiating the Client. By default, the API uses https://portal.hakai.org/api as the API root. It may be useful to use this library to access a locally running API instance or to access the Goose API for testing purposes. If you are always going to be accessing data from a locally running API instance, you are better off using the requests.py library directly since Authorization is not required for local requests.

from hakai_api import Client

# Get a client for a locally running API instance
client = Client("http://localhost:8666")
print(client.api_root)  # http://localhost:8666

Relative Endpoint Support

The client supports relative endpoints that automatically prepend the API root:

from hakai_api import Client

client = Client()

# These are equivalent:
response1 = client.get('/eims/views/output/stations')
response2 = client.get('https://portal.hakai.org/api/eims/views/output/stations')

Credentials Configuration

Direct Credentials

You can pass in the credentials string retrieved from the hakai API login page while initiating the Client class.

from hakai_api import Client

# Pass a credentials token as the Client Class is initiated
client = Client(credentials="CREDENTIAL_TOKEN")

Environment Variables

Set credentials using the HAKAI_API_CREDENTIALS environment variable. This is useful for e.g. setting credentials in a docker container. The value of the environment variable should be the credentials token retrieved from the Hakai API login page.

export HAKAI_API_CREDENTIALS="your_credential_token_here"

Custom Credentials File Location

By default, credentials are saved to ~/.hakai-api-auth. You can customize this location:

from hakai_api import Client

# Set custom credentials file path
client = Client(credentials_file="/path/to/my/credentials")

# Or use environment variable
# export HAKAI_API_CREDENTIALS="/path/to/my/credentials"
client = Client()

Contributing

See CONTRIBUTING

License

See LICENSE

Metadata

Release files for hakai_api 2.0.2

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

Source distribution (sdist)

Source distribution for hakai_api 2.0.2
File Size Uploaded Provenance
hakai_api-2.0.2.tar.gz 43.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for hakai_api 2.0.2
File Interpreter ABI Platform
hakai_api-2.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 60.4 kB

Release files / hakai_api-2.0.2.tar.gz

Download URL hakai_api-2.0.2.tar.gz
Size 43.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4532a035821be8e11810fa8ee92faed4633ae723760518e91160f243e1c73534
BLAKE2b-256 checksum
How to use checksums
453bddd799ed11a352f3bbbf0dade8ed15b57eda8ff96643a2250bae13b2b29b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / hakai_api-2.0.2-py3-none-any.whl

Download URL hakai_api-2.0.2-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45b8abf1ff827057f75b97fec171d22f606519ac389201aacf350edd32c1a76c
BLAKE2b-256 checksum
How to use checksums
2611fd5ded0561800d790475ff5504af7f653953a4cb778c97a6e4e865949c89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for hakai_api 2.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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