Skip to main content

API Watchdog

Usage

api-watchdog discover path/to/test/files

Will output the abbreviated result of the tests to stdout.

api-watchdog discover --email path/to/test/files

Will email the results of the tests to the relevant addresses (as determined by the email_to= field of the test. Test results are grouped so that only one email per address is sent per run.

Whjen using the CLI, these environment variables must be set to email results

  • MAILGUN_API_URL
  • MAILGUN_API_TOKEN
  • MAILGUN_FROM
api-watchdog discover -o results_file.json path/to/test/files

Will serialize the WatchdogResultGroup object to the path specified by the -o flag.

Installation

API watchdog handles validation support through extra requirements. This means that to install it with TRAPI validation you invoke

pip install api-watchdog[TRAPI]

If you are using zsh you will run affoul of bracket globbing and should use

pip install 'api-watchdog[TRAPI]'

See this stackoverflow question for context.

Available extensions are:

  • TRAPI

If you do not want any validation support you can use the bare pip install api-watchdog command.

WatchdogTest format

The main way you'll interface with API Watchdog is through WatchdogTests. Each WatchdogTest has

  • name (str): The name of the test
  • target (url): The endpoint that the test targets
  • expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass.
  • payload (object): The json passed to the endpoint.

Expectation format

An Expectation describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass. Each Expectation has

  • selector (jq program): A string describing a jq program that selects the one or more elements to test against
  • value (Any): a value to test equality against
  • validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float.
  • level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical"

ExpectationLevel

One of the strings:

  • critical
  • warning
  • info Only "critical" expectations affect the success or failure of a WatchdogTest.

The selector format is a string that is a jq program. This allows for rich selection capabilities. For example:

    {
      "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name",
      "value": "type 2 diabetes mellitus",
      "validation_type": "string"
    },

Is an Expectation that checks if a node is present in the knowledge graph of a TRAPI response.

The possible validation types are

  • "string",
  • "int",
  • "float",
  • "object",
  • "bool",
  • "null",
  • "trapi.knowledge_graph",
  • "trapi.node",
  • "trapi.edge",
  • "trapi.query_graph",
  • "trapi.q_node",
  • "trapi.q_edge",
  • "trapi.query_constraint",
  • "trapi.result",
  • "trapi.node_binding",
  • "trapi.edge_binding",
  • "trapi.message",
  • "trapi.query",
  • "trapi.response",
  • "trapi.async_query",
  • "trapi.operation",
  • "trapi.workflow",
  • "trapi.attribute",
  • "trapi.biolink_entity",
  • "trapi.biolink_predicate",
  • "trapi.curie",
  • "trapi.log_entry",
  • "trapi.log_level",
  • "trapi.meta_edge",
  • "trapi.meta_node",
  • "trapi.meta_knowledge_graph",
  • "trapi.meta_attribute"

What it is

An API monitoring utility that aspires to support:

  • Validation
  • Continuous Integration
  • Multiple input and output formats
  • Test discovery / minimal configuration

What it is not

Metadata

Release files for api-watchdog 0.6.0

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

Source distribution (sdist)

Source distribution for api-watchdog 0.6.0
File Size Uploaded
api_watchdog-0.6.0.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for api-watchdog 0.6.0
File Interpreter ABI Platform
api_watchdog-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.4 kB

Release files / api_watchdog-0.6.0.tar.gz

Download URL api_watchdog-0.6.0.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a648fc6a6847f4d6a6aa7b7e8f3f56a706a9fe99ec3006efeb2d08d9fa07b27e
BLAKE2b-256 checksum
How to use checksums
3610998688ce6ea7b1f8ee50771e831395ed978f47484cb8044d9fdfc0cc15fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release files / api_watchdog-0.6.0-py3-none-any.whl

Download URL api_watchdog-0.6.0-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8a3bfe567d54d4ffa5cd1402b36adca65506138b5a437f5f0b8c08646ec93854
BLAKE2b-256 checksum
How to use checksums
ab826f3c3d446f866dab913721c7855f6f6d3d0675ae61f24f8c6d8373432d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

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