Repository navigation
Releases: YASS-Ltd/yama-python
Releases · YASS-Ltd/yama-python
Release list
0.2.0
Immutable
release. Only release title and notes can be modified.
Changed
- Breaking:
Yama()raisesValueErrorfor a plainhttp://base URL (argument orYAMA_API_BASE_URL) unless the host islocalhost,127.0.0.1or[::1], and then ignores proxies set in the environment, so your API key isn't sent unencrypted over a network. Usehttps://for any other host. If you pass your ownhttp_client, its proxy settings still apply. - The
ValueErrorfor a bad API key or base URL now says where the value came from: the argument (api_key,base_url) or the environment variable (YAMA_API_KEY,YAMA_API_BASE_URL).
Fixed
- A 429 with a malformed
Retry-Afterheader raisesRateLimitErroror retries as usual, instead of a bareValueError. - With your own
httpx.Clientwhose response hook callsraise_for_status(), an error status raises the matching error, such asNotFoundError, instead ofAPIConnectionError. - The fake API in
yama.testinganswers 400, instead of crashing, when a code'sunitisn't a string. - Passing your own
httpx.Clientthat hasauthset no longer replaces your API key, so requests no longer fail with 401. - A base URL with whitespace around it, such as a trailing space or newline from a
.envfile, now works instead of failing every request. - A base URL with a query or fragment raises
ValueErrorinstead of sending requests to the wrong path. - A
base_urlthat isn't a string raisesTypeError. - A pagination
nextlink or base URL with a malformed internationalised host name (such asxn--a-) raisesYamaErrororValueErroras other bad URLs do, instead of an error from theidnapackage.
Security
- An error for a response the client can't read no longer carries the response's values, so they can't reach logs or error trackers; it names the fields that failed instead.
- A base URL with a username or password (
https://user:pw@host) raisesValueError. Before, they were sent as Basic auth in place of your API key, andrepr()of the client showed them.
0.1.0
Immutable
release. Only release title and notes can be modified.
First release of the official Python client for the Yama v2 API. Install it with pip install yama-client (or uv add yama-client) and import it as yama. It needs Python 3.10 or newer.
Added
Yamaclient with methods for every v2 operation:api_key,buildings,units,contacts,codesandcalls, returning typed models fromyama.models.- Automatic pagination, timeouts, and retries that honour
Retry-After. Reads, replaces, updates and deletes are retried after a 5xx or network error. codes.createis safe to retry: it sends anIdempotency-Key, and a failed create's error carries the key asidempotency_key.- Request models that check codes (3 to 15 digits) and names (at most 255 characters) before anything is sent.
calls.listtakes timezone-awarestartandend, so you can ask for a local day in any time zone, and polling for recent calls takes one request.- Typed exceptions for every failure, each with the API's
request_idto quote to Yama support. Yama.with_options()for a shorter timeout or fewer retries at one call site.- Structured, key-free logging through the
yamalogger. yama.testing.fake_transport(), an in-memory Yama API for testing integrations without a network or a key.- Documentation with a guide and an API reference.