fsm-sdk
Version:
Node.JS sdk to interface with SAP Field Service Management APIs.
130 lines (129 loc) • 6.31 kB
TypeScript
import { ClientConfig } from '../client-config.model';
import { HttpService } from '../http/http-service';
import { OAuthService } from '../oauth/oauth.service';
import { Activity, UdfValue, UnifiedIdentifier } from './service-management.model';
export declare type BulkResponse<T> = {
hasErrors: boolean;
results: Array<T & Partial<{
status: number;
id: string;
error: {
type: string;
title: string;
detail: string;
};
}>>;
};
export declare class ActivityBulkAPI {
private _config;
private _http;
private _auth;
constructor(_config: Readonly<ClientConfig>, _http: Readonly<HttpService>, _auth: Readonly<OAuthService>);
/**
* 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?: string): string;
/**
* 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: Array<Partial<{
activityId: UnifiedIdentifier | string;
id: UnifiedIdentifier | string;
cancelServiceCallConfirmed: boolean;
cancellationReason: string;
udfValues: UdfValue[];
}>>, params?: Partial<{
fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
fields: string;
}>): Promise<BulkResponse<{
newActivity: Activity;
}>>;
/**
* 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: Array<Partial<{
activityId: UnifiedIdentifier | string;
id: UnifiedIdentifier | string;
duplicateActivityRequest: Partial<{
crew: string;
responsibles: string[];
startDateTime: string;
unit: string;
udfValues: UdfValue[];
}>;
}>>, params?: Partial<{
fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
fields: string;
}>): Promise<BulkResponse<{
newActivity: Activity;
}>>;
/**
* 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: Array<Partial<{
activityId: UnifiedIdentifier | string;
id: UnifiedIdentifier | string;
crew: string;
technician: UnifiedIdentifier | string;
startDateTime: string;
startDateTimeFixed: boolean;
plannedDurationInMinutes: number;
travelTimeFromInMinutes: number;
travelTimeToInMinutes: number;
endDateTime: string;
endDateTimeFixed: boolean;
udfValues: UdfValue[];
}>>, params?: Partial<{
fieldsMode: 'INCLUDE' | 'EXCLUDE' | 'ADD';
fields: string;
}>): Promise<BulkResponse<{
newActivity: Activity;
}>>;
}