smith-client: API client for < Smith>.

[ bsd3, library, security ] [ Propose Tags ]

This is an API client library for interacting with Smith.

[Skip to Readme]
Versions [faq] 0.0.1
Change log
Dependencies aeson (>=1.0 && <1.5), base (>=4.10 && <5), bytestring (==0.*), directory (==1.*), filepath (==1.*), http-client (==0.5.*), http-client-tls (>=0.2 && <0.4), http-types (==0.*), jose (==0.7.*), oauth2-jwt-bearer (==0.0.*), text (==1.*), transformers (>=0.4 && <0.6), transformers-bifunctors (==0.*) [details]
License BSD-3-Clause
Copyright (c) 2019, HotelKilo
Author Mark Hibberd
Category Security
Home page
Bug tracker
Source repo head: git clone
Uploaded by MarkHibberd at Fri Feb 8 08:29:19 UTC 2019
Distributions NixOS:0.0.1
Downloads 126 total (50 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-02-08 [all 1 reports]


[Index] [Quick Jump]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for smith-client-0.0.1

[back to package description]


This is a client-library for the Smith API.

The goal is to provide a convenient Haskell API for working with the API.


The default 'configure' function will source credentials configuration as follows:

  • It will check for an environment provided API key in '$SMITH_JWK'.
  • It will fall-back to looking for '$SMITH_HOME/credentials.json' if '$SMITH_HOME' is set.
  • It will fall-back to looking for '$HOME/.smith/credentials.json'.

The default 'configure' function will source endpoint configuration as follows:

  • It will check for an environment provided endpoint in '$SMITH_ENDPOINT'.
  • It will fall-back to the public production endpoint ''.


This library is new, and should have the disclaimers that normally comes with that. It is expected that most people will interact with smith-cli rather than directly with this library, however if you do use this library directly, please note that whilst compatibility won't be broken unless necessary there are a few parts of the library (for example error handling) that will be evolved and polished as an official release version of the API is available.


A crude example:

import qualified Data.Text.IO as Text

import qualified Smith.Client as Smith
import           Smith.Client.Data.User
import           Smith.Client.Error (SmithError (..))

example :: IO (Either SmithError UserInfo)
example =
  Smith.configure >>= \c -> case c of
    Left err ->
       Text.putStrLn . Smith.renderSmithConfigureError $ err
    Right smith ->
      Smith.runRequest smith Smith.userinfo


The simplest way to develop this library is working against the Pact stub server (depends on docker).

# Configures and starts a docker container with API stubs.