Native .NET C# client library for accessing the Symphony Agent's REST-like API.
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.
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.
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.
Owner: Johan Forsell
Committers: Johan Sandersson, Malay Shah, Joao Figueiras (FactSet)
Library name consistent with conventions used by Symphony and other .NET libraries
Decide on how to generate .NET code from Symphony's Swagger definitions
Thanks and . Heads down with next week Members / boD meeting but will act on this ASAP.
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?
Ping! Give a name, so we can create our first repository!
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!