.NET Agent API Client

Description

ABSTRACT
Native .NET C# client library for accessing the Symphony Agent's REST-like API.

PROPOSAL
To implement a shared client library, published on the NuGet gallery, that will ease .NET development against the Symphony Agent API by handling the certificate-based authentication and management of tokens using best practices, and by providing native methods and data types to access the Agent's REST-like API as defined by its Swagger spec files.

BACKGROUND
The Agent API is a REST-like API, served by an Agent API process, allowing for the programmatic sending and receiving of messages in a Symphony pod. Authentication is certificate-based and performed against the pod and the key manager. After authenticating, session and key manager tokens are used when invoking API methods via the Agent. Certain API functions can be invoked directly on the pod, bypassing the Agent, but when doing so the key manager token should not be included in the request. The Agent itself contains functionality to remove the key manager token when invoking pod API functions.

The library will be built as a shared library enabling .NET applications to interact natively with the API. It will handle the process of authentication and token management, and provide native .NET methods and data types in front of the REST-like API. Whenever possible, native code will be generated directly from the published Swagger definitions. The library should be compatible with .NET Core.

The library will aim to support new versions of the Agent API as they are released while maintaining backwards-compatibility with older versions, according to the versioning method used by Symphony (sprints). Provided there is backend support for it, it will also have some method of enumerating the functionality available, so that a consumer of the library can act according to what version of the Agent API it is connecting to.

RATIONALE
Several Symphony API consumers are in the process of developing client applications on the .NET platform. Symphony are developing "hello world" type examples in different languages, including C#. A client library relieves API consumers from the need to manage authentication, implement service requests, and write other boilerplate code, and get up and running with the Symphony Agent API quicker. By also publishing the library to the NuGet gallery, developing .NET applications against an evolving API will be even easier.

CORE DEVELOPERS
Owner: Johan Forsell
Committers: Johan Sandersson, Malay Shah, Joao Figueiras (FactSet)

INITIAL GOALS

  • Library name consistent with conventions used by Symphony and other .NET libraries

  • Roadmap

  • Decide on how to generate .NET code from Symphony's Swagger definitions

  • Interface definition

Activity

Show:
Gabriele Columbro
May 12, 2016, 3:09 AM

Thanks and . Heads down with next week Members / boD meeting but will act on this ASAP.

Gabriele Columbro
May 12, 2016, 5:46 AM

What do you want the project name to be in Github? Since you mention as a goal

"Library name consistent with conventions used by Symphony and other .NET libraries"

can you provide a name?

Gabriele Columbro
May 17, 2016, 1:02 AM

Ping! Give a name, so we can create our first repository!

Gabriele Columbro
May 17, 2016, 1:15 AM

I went on and created https://github.com/symphonyoss/AgentClient , our very first project in the Open! Kudos !

You should all have access to repo now and I granted you write access. I added apache2 as license on the root, but make sure you follow the https://symphonyoss.atlassian.net/wiki/display/FM/Code+Contribution+Process adding proper Apache headers in each source file.

Thanks again for this, let me know if you want me to rename the repo! Closing this issue for now!

Gabriele Columbro
May 17, 2016, 1:16 AM

Project approved by ESCo. Proper ICLA / CCLA filed.

Repository created at https://github.com/symphonyoss/AgentClient and gave access to initial committers.

Assignee

Gabriele Columbro

Reporter

Johan Forsell

Due date

None

Priority

Medium
Configure