// Copyright 2020 Siemens Digital Industries Software
// ==================================================
// Copyright 2014.
// Siemens Product Lifecycle Management Software Inc.
// All Rights Reserved.
// ==================================================
// Copyright 2020 Siemens Digital Industries Software

/**
    @file

    This file contains the common structures and types for Lifecycle Interoperability Services Framework

*/

#ifndef LIS0LISFMWRK_LIS0SERVICEDEF_HXX
#define LIS0LISFMWRK_LIS0SERVICEDEF_HXX

#include <string>
#include <vector>
#include <unidefs.h>

/**
    @defgroup LIS0LISFMWRK Lifecycle Interoperability Services Framework
    @ingroup TC
    
    This file contains the definition of structures.

    @{
*/

/**
 * Service provider catalog information
 */
typedef struct ServiceProviderCatalogInfo
{
    std::string url;        /**< URL of catalog */
    std::string domain;     /**< Domain of catalog */

} LIS_service_catalog_info_t;

/**
 * OAuth information
 */
typedef struct LIS_Oauth_info_s
{
    std::string requestTokenUrl;        /**< URL of request token */
    std::string userAuthorizationUrl;   /**< URL of user authorization */
    std::string accessTokenUrl;         /**< URL of access token */

} LIS_Oauth_info_t;

/**
 * Root services response information
 */
typedef struct RootServiceResponseInfo
{
    std::vector<LIS_service_catalog_info_t> catalogList;   /**< Array of catalogs */
    LIS_Oauth_info_s oauthInfo;                            /**< OAuth information */
} LIS_rootservice_response_info_t;

/**
 * Delegated UI information
 */
typedef struct LIS_delegated_dialog_info_s
{
    std::string name;             /**< Name of the delegated dialog */
    std::string url;              /**< URL of the delegated dialog */
    std::string hintHeight;       /**< Hint height of the delegated dialog */
    std::string hintWidth;        /**< Hint width of the delegated dialog */
    logical isDefault;            /**< Flag if it is primary or default */
    std::string serviceType;
} LIS_delegated_dialog_info_t;

/**
 * Factory Service information
 */
typedef struct LIS_factory_service_info_s
{
    std::string name;             /**< Name of the factory  */
    std::string url;              /**< URL of the factory */
    logical isDefault;            /**< Flag if it is primary or default */
    std::string serviceType;      /**< Type of the service */
} LIS_factory_service_info_t;

/**
 * Service response information
 */
typedef struct ServiceResponseInfo
{
    std::vector<LIS_delegated_dialog_info_t> dialogList;            /**< Array of creation dialogs */
    std::vector<LIS_factory_service_info_t> factoryServiceList;    /**<Array of factory service >*/
} LIS_service_info_t;

/**
 * The remote resource information
 */
typedef struct ResourceInfo
{
    std::string previewUrl;         /**< URL for the small preview delegated dialog */
    std::string largePreviewUrl;    /**< URL for the large preview delegated dialog */
} LIS_resource_info_t;

/**
    @}
*/
#endif
