Source

forms.js

const common = require('./common');

/**
 * A module related to xMatters forms.<br><br>
 * {@link https://help.xmatters.com/xmapi/index.html#forms}
 *
 * @module forms
 */

/**
 * Get a form in a plan from xMatters<br><br>
 *
 * {@link https://help.xmatters.com/xmapi/index.html#get-a-form-in-a-plan}
 *
 * @param {module:environments.xMattersEnvironment} env The xmtoolbox representation of an xMatters instance.
 * @param {string} formId The unique identifier (id) or name (targetName) of the form you want to retrieve.
 * @param {Object} query A json object representing the query string parameters for this request.
 * @param {string} planId The unique identifier (id) or name (targetName) of the plan the forms belong to.
 * @returns {Promise<Form>} The Form Objects Requested
 */
async function get(env, formId, query, planId) {
  return common.get(env, `/api/xm/1/plans/${planId}/forms/`, formId, query, 'Form');
}

/**
 * Get all forms from xMatters matching the query. Please refer to the link below for the available query parameters.<br><br>
 *
 * {@link https://help.xmatters.com/xmapi/index.html#get-forms}
 *
 * @param {module:environments.xMattersEnvironment} env The xmtoolbox representation of an xMatters instance.
 * @param {Object} query A json object representing the query string parameters for this request.
 * @returns {Promise<Form[]>} Array of Form Objects Requested
 */
async function getMany(env, query) {
  return common.getMany(env, '/api/xm/1/forms', query, 'Forms');
}

/**
 * Get all forms from xMatters in a plan matching the query. Please refer to the link below for the available query parameters.<br><br>
 *
 * {@link https://help.xmatters.com/xmapi/index.html#get-forms-in-a-plan}
 *
 * @param {module:environments.xMattersEnvironment} env The xmtoolbox representation of an xMatters instance.
 * @param {Object} query A json object representing the query string parameters for this request.
 * @param {string} planId The unique identifier (uuid) or name (targetName) of the plan the forms belong to. Names must be URL-encoded.
 * @returns {Promise<Form[]>} Array of Form Objects Requested
 */
async function getManyInPlan(env, query, planId) {
  return common.getMany(env, `/api/xm/1/plans/${planId}/forms`, query, 'Forms In Plan');
}

/**
 * Get all response options from xMatters matching the query. Please refer to the link below for the available query parameters.<br><br>
 *
 * {@link https://help.xmatters.com/xmapi/index.html#get-form-response-options}
 *
 * @param {module:environments.xMattersEnvironment} env The xmtoolbox representation of an xMatters instance.
 * @param {Object} query A json object representing the query string parameters for this request.
 * @param {string} formId The unique identifier (uuid) or name (targetName) of the form you want to retrieve.
 * @param {string} planId The unique identifier (id) or name (targetName) of the plan the forms belong to.
 * @returns {Promise<ResponseOption[]>} Array of Response Option Objects Requested
 */
async function getResponseOptions(env, query, formId, planId) {
  return common.getMany(
    env,
    `/api/xm/1/plans/${planId}/forms/${formId}/response-options`,
    query,
    'Form Response Options'
  );
}

/**
 * Get all sections in a form from xMatters matching the query. Please refer to the link below for the available query parameters.<br><br>
 *
 * {@link https://help.xmatters.com/xmapi/index.html#get-form-sections}
 *
 * @param {module:environments.xMattersEnvironment} env The xmtoolbox representation of an xMatters instance.
 * @param {Object} query A json object representing the query string parameters for this request.
 * @param {string} formId The unique identifier (id) or name (targetName) of the form you want to retrieve.
 * @returns {Promise<FormSection[]>} Array of Form Section Objects Requested
 */
async function getFormSections(env, query, formId) {
  return common.getMany(env, `/api/xm/1/forms/${formId}/sections`, query, 'Sections of Form', false);
}

exports.get = get;
exports.getMany = getMany;
exports.getManyInPlan = getManyInPlan;
exports.getResponseOptions = getResponseOptions;
exports.getFormSections = getFormSections;