UNPKG

fsm-sdk

Version:

Node.JS sdk to interface with SAP Field Service Management APIs.

130 lines (129 loc) 6.31 kB
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; }>>; }