gRPC and Evans

Stream Machine is controlled via gRPC api definitions. The CLI is no more than an interface to this API, with an authorization token. The definitions are public on GitHub [1].

Playing with Evans

Evans is an API aware client for gRPC. It can interact with a server and via reflection see exactly what services the server offers.

$ strm auth refresh
$ export token=$(strm auth access-token  )
$ evans -r --host apis.streammachine.io --port 443 --tls \
  --header authorization="Bearer $token"

  ______
 |  ____|
 | |__    __   __   __ _   _ __    ___
 |  __|   \ \ / /  / _. | | '_ \  / __|
 | |____   \ V /  | (_| | | | | | \__ \
 |______|   \_/    \__,_| |_| |_| |___/

 more expressive universal gRPC client


apis.streammachine.io:443> package streammachine.api.schemas.v1

streammachine.api.schemas.v1@apis.streammachine.io:443> service SchemasService

streammachine.api.schemas.v1.SchemasService@apis.streammachine.io:443> call ListSchemas
billing_id (TYPE_STRING) => .....
filter (TYPE_STRING) =>
{
  "schemas": [
    {
      "ref": {
        "handle": "streammachine",
        "name": "clickstream",

1. will be published soon