API Docs for: 2.0.20133.2
Show:

File: src\internal\api\caseManagement\CaseManagementApi.ts

/// <reference path="../../utils/http.ts"/>
/// <reference path="../../ui/caseManagement/constants.ts" /> 
/// <reference path="../../ui/caseManagement/caseconfig.ts" /> 

/**
 * @module API
 * @submodule API Case Management
 * @namespace api
 */
namespace internal.api.caseManagement {

    export interface GetCaseConfig extends internal.ui.caseManagement.CaseConfig {
        caseNumber: string;
    }

    /**
     * Case Management API
     * @class caseManagement
     * @static
     */
    export class CaseManagementApi {
        /**
         * Gets a case
         * @method getCase
         * @static
         * @param {object} config A config object to get a case.
         * @param {string} config.locale. Locale to render the workflow in, such as en-us, fr-fr
         * @param {string} config.preview. Use compass unpublished data in workflow
         * @param {string} config.environment. A value from {{#crossLink "ui.caseManagement.Environment"}}{{/crossLink}} (default is ui.caseManagement.Environment.PRODUCTION)
         * @return {Promise | object}.
         */
        static getCase(config: GetCaseConfig): JQueryPromise<any> {
            CaseManagementApi.validateConfig(config);
            let apiUrl = CaseManagementApi.calculateApiUrl(config);

            let requestOptions: HttpRequestOptions = {
                operationName: "api.caseManagement.getCase",
                url: apiUrl,
                dependencyName: "SelfAssistWeb",
                dependencyOperationName: "Get case details",
                additionalHeaders: {
                    "x-requst-secured-context-token": config.authInfo.token
                }
            };

            return utils.httpRequest.get(requestOptions);
        }

        static calculateApiUrl(config: GetCaseConfig) {
            let baseUrl = internal.ui.caseManagement.getCaseBaseUrl(config);
            return `https://${baseUrl}/api/cases/${config.caseNumber}`;
        }

        static validateConfig(config: GetCaseConfig) {
            if (!utils.isString(config.caseNumber)) {
                throw "getCase requires a case number";
            }
            if (!(config.authInfo && config.authInfo.token && config.authInfo.type)) {
                throw "getCase requires authInfo with valid token and type";
            }
            if (config.authInfo.type !== ui.AuthType.DELEGATED) {
                throw "getCase only supports delegated authentication type";
            }
        }
    }
}