fsm-sdk
Version:
Node.JS sdk to interface with SAP Field Service Management APIs.
115 lines • 6.94 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActivityBulkAPI = void 0;
const polyfills_1 = require("../../polyfills");
const request_options_factory_1 = require("../request-options.factory");
class ActivityBulkAPI {
constructor(_config, _http, _auth) {
this._config = _config;
this._http = _http;
this._auth = _auth;
}
/**
* Constructs the API URL for activity bulk operations.
*
* @param {string} path - Path to append to the base URL.
* @returns {string} The complete API URL.
* @see https://api.sap.com/api/service_management_ext/resource/Service_API_V2
*/
getApiUrl(path = '') {
return `${this._config.baseUrl}/service-management/v2/bulk/activities/${path}`;
}
/**
* Cancels multiple activities in bulk.
*
* @param {Array} activities - Array of activity objects to cancel.
* @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
* @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
* @param {boolean} activities[].cancelServiceCallConfirmed - Whether service call cancellation is confirmed.
* @param {string} activities[].cancellationReason - Reason for cancellation.
* @param {UdfValue[]} activities[].udfValues - User-defined field values.
* @param {object} params - Optional query parameters.
* @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
* @param {string} params.fields - Comma-separated list of fields.
* @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
*/
cancel(activities, params = {}) {
return __awaiter(this, void 0, void 0, function* () {
const token = yield this._auth.ensureToken(this._config);
return this._http.request(this.getApiUrl(`actions/cancel${(Object.keys(params || {}).length ? `?${new polyfills_1.URLSearchParams(params)}` : '')}`), {
method: 'POST',
headers: request_options_factory_1.RequestOptionsFactory.getRequestHeaders(token, this._config),
body: JSON.stringify(activities)
});
});
}
/**
* Duplicates multiple activities in bulk.
*
* @param {Array} activities - Array of activity objects to duplicate.
* @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
* @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
* @param {object} activities[].duplicateActivityRequest - Duplication request parameters.
* @param {string} activities[].duplicateActivityRequest.crew - Crew identifier.
* @param {string[]} activities[].duplicateActivityRequest.responsibles - Array of responsible persons.
* @param {string} activities[].duplicateActivityRequest.startDateTime - Start date/time in ISO 8601 format.
* @param {string} activities[].duplicateActivityRequest.unit - Unit identifier.
* @param {UdfValue[]} activities[].duplicateActivityRequest.udfValues - User-defined field values.
* @param {object} params - Optional query parameters.
* @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
* @param {string} params.fields - Comma-separated list of fields.
* @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
*/
duplicate(activities, params = {}) {
return __awaiter(this, void 0, void 0, function* () {
const token = yield this._auth.ensureToken(this._config);
return this._http.request(this.getApiUrl(`actions/duplicate${(Object.keys(params || {}).length ? `?${new polyfills_1.URLSearchParams(params)}` : '')}`), {
method: 'POST',
headers: request_options_factory_1.RequestOptionsFactory.getRequestHeaders(token, this._config),
body: JSON.stringify(activities)
});
});
}
/**
* Plans multiple activities in bulk.
*
* @param {Array} activities - Array of activity objects to plan.
* @param {UnifiedIdentifier | string} activities[].activityId - Activity identifier.
* @param {UnifiedIdentifier | string} activities[].id - Alternative activity identifier.
* @param {string} activities[].crew - Crew identifier.
* @param {UnifiedIdentifier | string} activities[].technician - Technician identifier.
* @param {string} activities[].startDateTime - Start date/time in ISO 8601 format.
* @param {boolean} activities[].startDateTimeFixed - Whether start date/time is fixed.
* @param {number} activities[].plannedDurationInMinutes - Planned duration in minutes.
* @param {number} activities[].travelTimeFromInMinutes - Travel time from in minutes.
* @param {number} activities[].travelTimeToInMinutes - Travel time to in minutes.
* @param {string} activities[].endDateTime - End date/time in ISO 8601 format.
* @param {boolean} activities[].endDateTimeFixed - Whether end date/time is fixed.
* @param {UdfValue[]} activities[].udfValues - User-defined field values.
* @param {object} params - Optional query parameters.
* @param {string} params.fieldsMode - Fields mode: 'INCLUDE', 'EXCLUDE', or 'ADD'.
* @param {string} params.fields - Comma-separated list of fields.
* @returns {Promise<BulkResponse<{ newActivity: Activity }>>} A promise resolving to bulk operation response.
*/
plan(activities, params = {}) {
return __awaiter(this, void 0, void 0, function* () {
const token = yield this._auth.ensureToken(this._config);
return this._http.request(this.getApiUrl(`actions/plan${(Object.keys(params || {}).length ? `?${new polyfills_1.URLSearchParams(params)}` : '')}`), {
method: 'POST',
headers: request_options_factory_1.RequestOptionsFactory.getRequestHeaders(token, this._config),
body: JSON.stringify(activities)
});
});
}
}
exports.ActivityBulkAPI = ActivityBulkAPI;
//# sourceMappingURL=activity-bulk-api.service.js.map