Package: api-watchdog
API WatchdogUsageapi-watchdog discover path/to/test/filesWill output the abbreviated result of the tests to stdout.api-watchdog discover --email path/to/test/filesWill email the results of the tests to the relevant addresses
(as determined by theemail_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 resultsMAILGUN_API_URLMAILGUN_API_TOKENMAILGUN_FROMapi-watchdog discover -o results_file.json path/to/test/filesWill serialize theWatchdogResultGroupobject to the path specified
by the-oflag.InstallationAPI watchdog handles validation support through extra requirements.
This means that to install it with TRAPI validation you invokepip install api-watchdog[TRAPI]If you are usingzshyou will run affoul of bracket globbing and should usepip install 'api-watchdog[TRAPI]'See thisstackoverflow questionfor context.Available extensions are:TRAPIIf you do not want any validation support you can use the barepip install api-watchdogcommand.WatchdogTest formatThe main way you'll interface with API Watchdog is throughWatchdogTests.
EachWatchdogTesthasname (str): The name of the testtarget (url): The endpoint that the test targetsexpectations (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 formatAnExpectationdescribes 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.
EachExpectationhasselector (jq program): A string describing a jq program that selects the one or more elements to test againstvalue (Any): a value to test equality againstvalidation_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"ExpectationLevelOne of the strings:criticalwarninginfo
Only "critical" expectations affect the success or failure of aWatchdogTest.The selector format is a string that is ajq 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 anExpectationthat 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 isAn API monitoring utility that aspires to support:ValidationContinuous IntegrationMultiple input and output formatsTest discovery / minimal configurationWhat it is notA way to regularly schedule tests against an endpoint, eg.cron,celeryA way to specify api schemas eg.marshmallow,pydantic