Skip to main content

LSST Data Management SQuaRE microservice tools

Project description

Build Status


LSST DM SQuaRE microservice convenience tools.


In order to create a microservice hosted behind, a service will need to provide a route on /metadata and /v{{api_version}}/metadata. That route must serve appropriate metadata about the service.

Metadata format

The metadata served must be a JSON object, and must contain the following fields:

name: str

version: str

repository: str

description: str

api_version: str

auth: str

The fields name, version, api_version, and description are arbitrary, although semantic versioning is strongly encouraged, and the API version should reflect the version of the API in use (currently 1.0, documentation pending).

Auth must be one of none, basic, or bitly-proxy. It represents the way in which the microservice will authenticate to GitHub: either it doesn't need to, it uses HTTP Basic Auth with a username and service token, or it uses the Bitly OAuth2 Proxy with a username, a password, and the proxy starting-OAuth2 endpoint.

Provided Functionality

sqre-apikit provides one module, apikit, which contains three functions, set_flask_metadata, add_metadata_route, and return_metadata, and a class, APIFlask.

The set_flask_metadata sets metadata on an existing Flask app and adds metadata routes. add_metadata_route is designed to add routing for each component in the route list to an existing Flask app. return_metadata returns the JSON representation of the metadata for the service.

The APIFlask class creates an instance of a subclass of flask.Flask which has the metadata added and the route(s) already baked into it.

The class comes with a method, add_route_prefix, which adds the metadata route underneath another route. This is useful, for instance, if wiring the microservice up through Kubernetes and its Ingress resources, which provide routing but not rewriting.


sqre-apikit runs on Python 2.7 or 3.5. You can install it with

pip install sqre-apikit

This will also install the dependency Flask.

Example usage


import apikit
import flask

app = flask.Flask("Hello")
                          description="Hello World App")


import apikit

app = apikit.APIFlask(name="Hello",
                      description="Hello World App")


To develop apikit, create a Python virtual environment, and

git clone
cd sqre-apikit
virtualenv venv
. venv/bin/activate
pip install -r requirements.txt
python develop

Tests can be run with pytest:

py.test tests

Project details

Download files

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

Source Distribution

sqre-apikit-0.1.3.tar.gz (9.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page