Introduction

The ARGO Messaging Service API implements the Google PubSub specification and thus supports HTTP RPC-style methods in the form of:

https://messaging.argo.grnet.gr/api/projects/METHOD

All methods must be called using HTTPS. Arguments can be passed as GET or POST params, or a mix. The response contains a 200 OK for a successful request and a JSON object in case of an error. For failure results, the error property will contain a short machine-readable error code. In the case of problematic calls, during handling user’s request the API responds using a predefined schema (described in chapter Errors), that contains a short machine-readable warning code, an error code and an error description (or list of them, in the case of multiple errors).

Each user is authenticated by adding the url parameter ?key=T0K3N in each API request Users can also authenticate using the header x-api-key.

Configuration file: config.json

The first step for using the messaging API is to edit the main configuration file.

The ARGO Messaging Service main configuration file is config.json. An example configuration is listed below:

{
  "bind_ip":"",
  "port":8080,
  "zookeeper_hosts":["localhost"],
  "kafka_znode":"",
  "store_host":"localhost",
  "store_db":"argo_msg",
  "certificate":"/etc/pki/tls/certs/localhost.crt",
  "certificate_key":"/etc/pki/tls/private/localhost.key",
  "per_resource_auth":true,
  "service_token":"S0M3T0K3N",
  "log_level":"INFO",
  "log_facilities": ["syslog", "console"]
}

Explanation of config parameters:

Parameter Description
bind_ip the ip address to listen to.
port The port where the API will listen to
zookeeper_hosts List of zookeeper instances that are used to sync kafka
kafka_znode The znode under which Kafka writes its data on Zookeeper. Default is "" meaning the root node
store_host Address:port of the datastore server
store_db Database name used on the datastore server
certificate path to the node's TLS certificate file
certificate_key path to the certificate's private key
per_resource_auth enable authorization per resource (topic/subscription)
service_token (optional) If set, enables full service-wide access to the api to initialize projects,users and resources
log_level set the desired log level (defaults to "INFO")
log_facilities logging output, if left empty, it defaults to console)

Location of config.json: API will look first for config.json locally in the folder where the executable runs and then in the /etc/argo-messaging/ location.

Command line parameters

Apart from configuration file, argo-messaging service accepts configuration parameters in the command line. The list of the available command line parameters is displayed if the user issues

./argo-messaging-service --help

The available command line parameters are listed as follows:

--bind-ip string           ip address to listen to (default "localhost")
--certificate string       certificate file *.crt (default "/etc/pki/tls/certs/localhost.crt")
--certificate-key string   certificate key file *.key (default "/etc/pki/tls/private/localhost.key")
--config-dir string        directory path to an alternative json config file
--kafka-znode string       kafka zookeeper node name
--log-level string         set the desired log level
--per-resource-auth        enable per resource authentication (default true)
--port int                 port number to listen to (default 8080)
--service-key string       service token definition for immediate full api access
--store-db string          datastore (mongodb) database name (default "argo_msg")
--store-host string        datastore (mongodb) host (default "localhost")
--zookeeper-hosts value    list of zookeeper hosts to connect to (default [localhost])

User can optionally specifiy an alternative configuration file directory with the use of the --config-dir parameter For example:

./argo-messaging-service --config-dir=/root/alternative/config/

The /root/alternative/config/config.json must exist