Sample DLL file for Documentum integration

using System.Collections.Generic;
using System.IO;

namespace Oracle.Argus.Bridge.Service.Contracts
{
    /// <summary>
    /// Document adapter template that the integration hub will use to query the content management system.
    /// </summary>
    public interface IDocumentAdapter
    {
        /// <summary>
        /// Logger interface for debugging. Bridge API will provide a wrapper to existing Argus logging functionality.
        /// </summary>
        ILogger Logger { get; set; }

        /// <summary>
        /// Dictionary containing adapter configuration details to connect to content management system.
        /// </summary>
       string DictionaryConfig { set; }

        /// <summary>
        /// Checks if the adapter can connect to the third-party content management system.
        /// </summary>
        /// <returns></returns>
        bool IsAlive();

        /// <summary>
        /// Pushes the document object into the content management system.
        /// </summary>
        /// <param name="attributes">Special attributes that help describe the document</param>
        /// <param name="fileData">File byte array data</param>
        /// <param name="fileName">Complete title of a file and file extension</param>
        /// <returns>ID of newly created document object</returns>
        string PushDocAsync(IDictionary<string, object> attributes, byte[] fileData, string fileName);

        /// <summary>
        /// Fetches the file data from content management system.
        /// </summary>
        /// <param name="ecmId">ID of document object</param>
        /// <returns>Stream of file data of document object</returns>
        Stream RetrieveDoc(string ecmId);

        /// <summary>
        /// Fetches the file data from content management system.
        /// </summary>
        /// <param name="ecmIds">Array of IDs of document object</param>
        /// <returns>Byte array of file data of document objects</returns>
        IEnumerable<byte[]> RetrieveMultiDoc(string[] ecmIds);

        /// <summary>
        /// Updates the special attributes of a document object.
        /// </summary>
        /// <param name="ecmId">ID of document object</param>
        /// <param name="dictAttr">Any combination of special attributes</param>
        /// <returns></returns>
        string UpdateDocAsync(string ecmId, IDictionary<string, object> dictAttr);

        /// <summary>
        /// Searches document objects with search request.
        /// </summary>
        /// <param name="dictSearchAttr">Any combination of special attributes</param>
        /// <param name="lstDisplayAttr">List of document attributes to attach with search record</param>
        /// <returns>IDs and display attribute values of matching document objects</returns>
        IList<IDictionary<string, object>> SearchDoc(IDictionary<string, object> dictSearchAttr, IList<string> lstDisplayAttr);

        /// <summary>
        /// Deletes the document object from content management system.
        /// </summary>
        /// <param name="ecmId">ID of document object</param>
        /// <returns>Status of deletion</returns>
        string DeleteDocAsync(string ecmId);
    }
}