Skip to main content

Python client for Directory API.

Project description

directory-api-client

code-climate-image circle-ci-image codecov-image pypi-image semver-image

Great API client.


Installation

$ pip install directory-api-client

The api client expects the following settings:

Setting Notes
DIRECTORY_API_CLIENT_BASE_URL
DIRECTORY_API_CLIENT_API_KEY Unique to client. Retrieved during the on-boarding process.
DIRECTORY_API_CLIENT_SENDER_ID Unique to client. Retrieved during the on-boarding process.
DIRECTORY_API_CLIENT_DEFAULT_TIMEOUT

The following directory client core settings also apply to directory cms client:

Setting Notes
DIRECTORY_CLIENT_CORE_CACHE_EXPIRE_SECONDS Duration to store the retrieved content in the cache.
DIRECTORY_CLIENT_CORE_CACHE_LOG_THROTTLING_SECONDS Duration to throttle log events for a given url for.

And the caching expects the following key in CACHES setting: api_fallback

Once that is done the API client can be used:

from directory_api_client.client import api_client

Development

$ git clone https://github.com/uktrade/directory-api-client
$ cd directory-api-client
$ [create virtual environment and activate]
$ make test_requirements

Use make checks to validate the codebase with black and isort, in dry-run mode Use make autoformat to run black and isort in file-updating mode

Fallback cache

Where feasible the response is cached to the client's fallback cache. This allows retrieval later if API returns non successful response or times out.

When enabling the fallback cache on a handler make sure that the request's querystring or url path are unique per user, otherwise the User B's details could be leaked User A.

For example, api_client.company.profile_retrieve looks up the company for the authenticated user. The authentication header is not used when generating the cache key for the response. This means for that endpoint the querystring and url are the same for all users, so the cache key would therefore also be the same for all users. This means if API was down then all users would see the company details for the last user to successfully retrieve their company.

Publish to PyPI

The package should be published to PyPI on merge to master. If you need to do it locally then get the credentials from rattic and add the environment variables to your host machine:

Setting
DIRECTORY_PYPI_USERNAME
DIRECTORY_PYPI_PASSWORD

Then run the following command:

$ make publish

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

directory_api_client-28.0.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file directory_api_client-28.0.0-py3-none-any.whl.

File metadata

  • Download URL: directory_api_client-28.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.12.1.2 readme-renderer/45.0 requests/2.34.2 requests-toolbelt/1.0.0 urllib3/2.7.0 tqdm/4.68.3 importlib-metadata/9.0.0 keyring/25.7.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.13.7

File hashes

Hashes for directory_api_client-28.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac718f3d5b992f57278f7bcfe8644eb3a9182446dcc86250ac1d94abe5a6ed5d
MD5 fc2459331673898b4f686136d20e08f4
BLAKE2b-256 c1963d0d67879f99e010510093b83e004ec66c734dc9ba1e9fc62baaa060064c

See more details on using hashes here.

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