export type ServiceChannelServicesMessagingWorkordersContractInfo = {SubscriberId: number, LocationId: number, StoreId?: string | undefined, ProviderId?: number | undefined, TradeName: string, TradeId?: number | undefined, IsTradeDeleted?: boolean | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequestIssueRequest = {AreaId: number, ExtendedAreaName?: string | undefined, ProblemType?: string | undefined, AssetType?: string | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequestDispatchSettings = {NotificationDisabled?: boolean | undefined, EmailHeader?: string | undefined, SendAlertToFM?: boolean | undefined, ShowLastServiceCall?: boolean | undefined, IsTest?: boolean | undefined, CcRecipients?: string | undefined, InvalidRecipients?: string | undefined}; export type ServiceChannelServicesMessagingWorkordersWorkorderStatus = {Primary: 'NotSet' | 'Open' | 'InProgress' | 'Completed' | 'Incomplete', Extended: string, PrimaryStatusValue?: string | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequestExtendedRequestInfo = {ExpirationDate?: string | undefined, GracePeriod?: number | undefined, Tax?: number | undefined, Tax2?: number | undefined, Tax2Type?: string | undefined, Price?: number | undefined, AutoInvoice?: boolean | undefined, CallerIdMatch?: boolean | undefined, AutoComplete?: boolean | undefined, AutoDispatch?: boolean | undefined, IsTransferAsset?: boolean | undefined, NewLocationIdForAssetTransfer?: number | undefined, AssetTransferCode?: number | undefined}; export type ServiceChannelServicesMessagingAttachmentsAddAttachmentRequest = {Name?: string | undefined, Description?: string | undefined, Path?: string | undefined, Type?: ('File' | 'RemoteStorage') | undefined, MediaType?: string | undefined, Visibility?: number | undefined, IsInvoiceDigitalCopy?: boolean | undefined, IsLocationAttachment?: boolean | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequestMaterial = {Quantity?: number | undefined, Description?: string | undefined, Price?: number | undefined, Reason?: string | undefined, SupplierPartId?: string | undefined, SupplierPartAuxiliaryId?: string | undefined, SupplierName?: string | undefined, NteMultiplier?: number | undefined, DefaultNte?: number | undefined}; export type ServiceChannelServicesMessagingRefrigerantTrackingRefrigerantUseReasonCode = {Id?: number | undefined, Order?: number | undefined, Purpose?: number | undefined, Name?: string | undefined, SubscriberId?: number | undefined, IsActive?: boolean | undefined}; export type ServiceChannelServicesMessagingRefrigerantTrackingAddWorkOrderPartRefrigerantItem = {AssetId?: number | undefined, RecId?: number | undefined, Quantity?: number | undefined, UnitCost?: number | undefined, IsRefrigerant?: boolean | undefined, IsInventoryPart?: boolean | undefined, InventorySource?: string | undefined, UseDate?: string | undefined, UseDateStr?: string | undefined, ReasonCode?: number | undefined, ReasonCodeId?: number | undefined, PartNumber?: string | undefined, PartName?: string | undefined, PartGroup?: string | undefined, PartGroupId?: number | undefined, SupplierName?: string | undefined, Description?: string | undefined, RefrigerantChargeOptionsId?: number | undefined, RefrigerantChargeVendor?: string | undefined, InventoryLocationId?: number | undefined, InventoryLocationGuid?: string | undefined, InventoryPartId?: number | undefined, RefrigerantUseReason?: ServiceChannelServicesMessagingRefrigerantTrackingRefrigerantUseReasonCode | undefined, RefrigerantRemovalStatus?: ('Destroyed' | 'Reused' | 'Reclaimed' | 'Banked' | 'ChargeLost' | 'Sold') | undefined, RefrigerantTypeId?: number | undefined, RefrigerantTypeName?: string | undefined, SubmitMoeQtyExceeded?: boolean | undefined, MoeNumber?: string | undefined, IsRetrofit?: string | undefined, RefrigerantSourceTypeId?: number | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequestAdditionalField = {Name?: string | undefined, Value?: string | undefined}; export type ServiceChannelApiModelWorkordersOverridePropertiesAnomaly = {TradeAnomalous?: boolean | undefined, TradeScore?: number | undefined, NTEAnomalous?: boolean | undefined, NTEScore?: number | undefined, FirstTimeFixAnomalous?: boolean | undefined, FirstTimeFixScore?: number | undefined, Top1PrimaryTrade?: string | undefined, InvoiceTotalWithoutProposal25?: number | undefined, InvoiceTotalWithoutProposalMedian?: number | undefined, InvoiceTotalWithProposal75?: number | undefined, IsAnomaly?: boolean | undefined}; export type DecisionAnswer = {Id?: string | undefined, Answer?: string | undefined}; export type ServiceChannelApiModelWorkordersContractRatesSaveWorkOrderContractServiceRateRequest = {ContractedServiceRateId?: number | undefined, Name?: string | undefined, BaseAmount?: number | undefined, VariableAmount?: number | undefined, CurrencyId?: number | undefined, UpdateSource?: string | undefined}; export type ServiceChannelServicesMessagingWorkordersCreateWoRequest = {Number?: string | undefined, PurchaseNumber?: string | undefined, HasTruncatedDescription?: boolean | undefined, ContractInfo: ServiceChannelServicesMessagingWorkordersContractInfo, Comment?: string | undefined, SetupId?: number | undefined, AssetId?: number | undefined, ReplaceAsset?: boolean | undefined, CallerName?: string | undefined, Category: string, CategoryId?: number | undefined, Priority?: string | undefined, PriorityId?: number | undefined, Nte?: number | undefined, CallDate: string, CallDateDto?: string | undefined, ScheduledDate?: string | undefined, ScheduledDateDto?: string | undefined, CompletedDate?: string | undefined, ProblemSource?: string | undefined, Description: string, ProblemCode: string, RecallWorkOrder?: number | undefined, ServiceNowId?: string | undefined, CurrencyId?: number | undefined, FollowupWorkOrder?: number | undefined, ApprovalCode?: string | undefined, IssueRequestInfo?: ServiceChannelServicesMessagingWorkordersCreateWoRequestIssueRequest | undefined, DispatchSettingsInfo?: ServiceChannelServicesMessagingWorkordersCreateWoRequestDispatchSettings | undefined, Status?: ServiceChannelServicesMessagingWorkordersWorkorderStatus | undefined, ExtendedInfo?: ServiceChannelServicesMessagingWorkordersCreateWoRequestExtendedRequestInfo | undefined, Attachments?: Array | undefined, IgnoreAttachmentsRequiredFlag?: boolean | undefined, ApiRequest?: boolean | undefined, Materials?: Array | undefined, MaterialsUsed?: Array | undefined, AdditionalFields?: Array | undefined, IssueListHeaderId?: number | undefined, ProposedNte?: number | undefined, NotifyProvider?: boolean | undefined, IsDashboardRequest?: boolean | undefined, FloorPlansImagePath?: string | undefined, AssigneeUserId?: number | undefined, SessionId?: string | undefined, ProjectId?: number | undefined, WeatherTypeId?: number | undefined, LabelId?: number | undefined, Labels?: Array | undefined, AdditionalApprovalCodesList?: {[key: string]: string} | undefined, LeaseNote?: string | undefined, UserName?: string | undefined, UserId?: number | undefined, WorkFlowTypeId?: number | undefined, EstimatedCompletionDate?: string | undefined, IsAnomalyProviderOverwritten?: boolean | undefined, Anomaly?: ServiceChannelApiModelWorkordersOverridePropertiesAnomaly | undefined, DecisionAnswers?: Array | undefined, AssetNotListed?: boolean | undefined, SpaceId?: number | undefined, LocationPath?: string | undefined, ContractServiceRate?: ServiceChannelApiModelWorkordersContractRatesSaveWorkOrderContractServiceRateRequest | undefined}; export type CreateApiWorkordersArgs = {body: ServiceChannelServicesMessagingWorkordersCreateWoRequest}; export type CreateApiWorkordersOptions = {baseUrl?: string | undefined, oauth2?: string | undefined, fetch?: typeof fetch | undefined}; /** * Create a Work order * * POST /workorders */ export const createApiWorkorders = async (args: CreateApiWorkordersArgs, options?: CreateApiWorkordersOptions) => { const {baseUrl = "https://sb2api.servicechannel.com/v3", fetch: fetchFn = fetch, oauth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (oauth2 !== undefined) headers.set('authorization', `Bearer ${oauth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/workorders${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };