@bisondesk/core-sdk 1.0.353 → 1.0.355

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/lib/apis/crm.d.ts.map +1 -1
  2. package/lib/apis/crm.js +60 -32
  3. package/lib/apis/crm.js.map +1 -1
  4. package/lib/apis/debtors.d.ts.map +1 -1
  5. package/lib/apis/debtors.js +7 -3
  6. package/lib/apis/debtors.js.map +1 -1
  7. package/lib/apis/internet-vehicles.d.ts.map +1 -1
  8. package/lib/apis/internet-vehicles.js +5 -3
  9. package/lib/apis/internet-vehicles.js.map +1 -1
  10. package/lib/apis/leasing-administration.d.ts.map +1 -1
  11. package/lib/apis/leasing-administration.js +10 -6
  12. package/lib/apis/leasing-administration.js.map +1 -1
  13. package/lib/apis/leasing.d.ts.map +1 -1
  14. package/lib/apis/leasing.js +39 -25
  15. package/lib/apis/leasing.js.map +1 -1
  16. package/lib/apis/tenants.d.ts.map +1 -1
  17. package/lib/apis/tenants.js +15 -10
  18. package/lib/apis/tenants.js.map +1 -1
  19. package/lib/apis/users.d.ts.map +1 -1
  20. package/lib/apis/users.js +9 -7
  21. package/lib/apis/users.js.map +1 -1
  22. package/lib/apis/vehicles.d.ts.map +1 -1
  23. package/lib/apis/vehicles.js +38 -24
  24. package/lib/apis/vehicles.js.map +1 -1
  25. package/lib/constants.d.ts +1 -0
  26. package/lib/constants.d.ts.map +1 -1
  27. package/lib/constants.js +1 -0
  28. package/lib/constants.js.map +1 -1
  29. package/lib/types/crm.d.ts +1 -0
  30. package/lib/types/crm.d.ts.map +1 -1
  31. package/lib/types/crm.js.map +1 -1
  32. package/lib/types/quotes.d.ts +1 -0
  33. package/lib/types/quotes.d.ts.map +1 -1
  34. package/lib/types/quotes.js.map +1 -1
  35. package/lib/types/vehicles.d.ts +2 -8
  36. package/lib/types/vehicles.d.ts.map +1 -1
  37. package/lib/types/vehicles.js.map +1 -1
  38. package/package.json +2 -2
  39. package/src/apis/crm.ts +128 -130
  40. package/src/apis/debtors.ts +13 -12
  41. package/src/apis/internet-vehicles.ts +5 -3
  42. package/src/apis/leasing-administration.ts +26 -28
  43. package/src/apis/leasing.ts +88 -101
  44. package/src/apis/tenants.ts +31 -38
  45. package/src/apis/users.ts +9 -7
  46. package/src/apis/vehicles.ts +90 -103
  47. package/src/constants.ts +1 -0
  48. package/src/types/crm.ts +1 -0
  49. package/src/types/quotes.ts +1 -0
  50. package/src/types/vehicles.ts +2 -7
  51. package/tsconfig.tsbuildinfo +1 -1
  52. package/tsconfig.deploy.json +0 -5
  53. package/tsconfig.deploy.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"vehicles.js","sourceRoot":"/","sources":["types/vehicles.ts"],"names":[],"mappings":"AAueA,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,mDAA0B,CAAA;IAC1B,wEAA+C,CAAA;IAC/C,sEAA6C,CAAA;IAC7C,6CAAoB,CAAA;AACtB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,MAAM,CAAN,IAAY,yBAOX;AAPD,WAAY,yBAAyB;IACnC,uEAA0C,CAAA;IAC1C,+DAAkC,CAAA;IAClC,0EAA6C,CAAA;IAC7C,oEAAuC,CAAA;IACvC,wEAA2C,CAAA;IAC3C,kEAAqC,CAAA;AACvC,CAAC,EAPW,yBAAyB,KAAzB,yBAAyB,QAOpC;AAED,MAAM,CAAN,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,oDAAsB,CAAA;IACtB,qDAAuB,CAAA;AACzB,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,QAGrC;AAED,MAAM,CAAN,IAAY,8BAIX;AAJD,WAAY,8BAA8B;IACxC,wDAAsB,CAAA;IACtB,qDAAmB,CAAA;IACnB,0DAAwB,CAAA;AAC1B,CAAC,EAJW,8BAA8B,KAA9B,8BAA8B,QAIzC;AAED,MAAM,CAAN,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,iDAAkB,CAAA;IAClB,mDAAoB,CAAA;AACtB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,QAGtC;AAyGD,MAAM,CAAN,IAAY,cAeX;AAfD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,+DAA6C,CAAA;IAC7C,kDAAgC,CAAA;IAChC,0CAAwB,CAAA;IACxB,gDAA8B,CAAA;IAC9B,4CAA0B,CAAA;IAC1B,yDAAuC,CAAA;IACvC,mEAAiD,CAAA;IACjD,0CAAwB,CAAA;IACxB,4CAA0B,CAAA;IAC1B,0CAAwB,CAAA;IACxB,2DAAyC,CAAA;IACzC,gDAA8B,CAAA;IAC9B,yDAAuC,CAAA;AACzC,CAAC,EAfW,cAAc,KAAd,cAAc,QAezB;AAED,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,0EAAuD,CAAA;IACvD,+CAA4B,CAAA;IAC5B,0DAAuC,CAAA;IACvC,4DAAyC,CAAA;IACzC,8DAA2C,CAAA;IAC3C,kEAA+C,CAAA;AACjD,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B","sourcesContent":["import { EmailDestination } from '@bisondesk/commons-sdk/messages';\nimport {\n AttachmentValue,\n Document,\n LocationValue,\n MultiLangValue,\n SearchPermissions,\n} from '@bisondesk/commons-sdk/types';\nimport { OpportunityReservation } from './reservations.js';\n\ntype BaseVehicleEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\ntype VehicleSuperstructure = {\n carCapacity?: number;\n compartmentCount?: number;\n counter?: boolean;\n crane?: {\n make?: string;\n model?: string;\n position?: 'Behind the cabin' | 'Rear';\n present?: boolean;\n year?: number;\n };\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n extended?: string; // L1, L2, ...\n heightened?: string; // H1, H2, ...\n };\n baseVehicle?: SuperstructureBaseVehicle;\n extendable?: boolean;\n highPressurePump?: boolean;\n loadingPlatformHeight?: number;\n pump?: boolean;\n slidingRoof?: boolean;\n tailgate?: {\n capacity?: number;\n make?: string;\n model?: string;\n present?: boolean;\n type?: 'slider_lift' | 'cantilever' | 'column_lift';\n };\n tank?: {\n capacity: number;\n };\n temperatureControl?: {\n engineType?: 'diesel' | 'electric' | 'diesel+electric' | 'engine';\n make?: string;\n runningHours?: {\n diesel?: number;\n electric?: number;\n };\n };\n tipper?: {\n tipsBack?: boolean;\n tipsLeft?: boolean;\n tipsRight?: boolean;\n };\n};\nexport type NewVehicleRequest = {\n branch: string;\n count: number;\n specs: VehicleExternalInfo;\n description: {\n remarks?: string;\n technicalRemarks?: string;\n };\n logistics: {\n parking: string;\n deliveryType: VehiclePurchaseDeliveryType;\n pickupAddress?: LocationValue;\n checkedInAt?: string;\n checkedInBy?: string;\n arrivedAt?: string;\n arrivedBy?: string;\n };\n prices: {\n minimum?: string;\n premium?: string;\n internet?: string;\n };\n media: {\n internalPictures: AttachmentValue[];\n pictures: AttachmentValue[];\n videos: AttachmentValue[];\n docs: Document[];\n engineeringDocs: Document[];\n };\n vinList?: string;\n deal: {\n stockNumber?: string;\n contactId: string;\n orgId: string;\n purchasedBy: string;\n dealStatus:\n | VehiclePurchaseDealStatus.PurchaseEvaluation\n | VehiclePurchaseDealStatus.PurchaseAgreed;\n costs: {\n purchase: string;\n purchaseVatPercentage: string;\n commission?: string;\n externalTransport?: string;\n internalTransport?: string;\n externalGarage?: string;\n internalGarage?: string;\n other?: string;\n };\n logistics: {\n availableDate: string;\n vehicleRole: VehicleInternalInfo['role'];\n };\n };\n};\n\nexport type VehicleCreateEvent = BaseVehicleEvent & {\n action: 'create';\n vehicle: Vehicle;\n previousVehicle?: undefined;\n};\n\nexport type VehicleUpdateEvent = BaseVehicleEvent & {\n action: 'update';\n vehicle: Vehicle;\n previousVehicle: Vehicle;\n};\n\nexport type VehicleDeleteEvent = BaseVehicleEvent & {\n action: 'delete';\n vehicle?: undefined;\n previousVehicle: Vehicle;\n};\n\nexport type VehicleEvent = VehicleCreateEvent | VehicleUpdateEvent | VehicleDeleteEvent;\n\nexport type VehicleMarketingEvent = {\n actionAt: string;\n data: VehicleMarketing;\n tenantId: string;\n userId: string;\n vehicleId: string;\n};\n\ntype BaseVehiclePurchaseEvent = {\n actionAt: string;\n userId: string;\n tenantId: string;\n branchId: string;\n vehicleId: string;\n};\n\nexport type VehiclePurchaseCreateEvent = BaseVehiclePurchaseEvent & {\n action: 'create';\n data: VehiclePurchase;\n previousData?: undefined;\n};\n\nexport type VehiclePurchaseUpdateEvent = BaseVehiclePurchaseEvent & {\n action: 'update';\n data: VehiclePurchase;\n previousData: VehiclePurchase;\n};\n\nexport type VehiclePurchaseEvent = VehiclePurchaseCreateEvent | VehiclePurchaseUpdateEvent;\n\nexport type UpdateVehiclesPricesEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n priceList: AttachmentValue;\n};\n\nexport type PublicVehicle = Pick<Vehicle, 'external' | 'id'>;\n\nexport type PublicSearchVehicle = {\n vehicle: PublicVehicle;\n};\n\nexport type SearchVehicle = {\n custom: {\n features: string[];\n isReserved: boolean;\n hasPayments: boolean;\n };\n purchase?: {\n supplierStockNumber?: string;\n };\n reservation?: Pick<OpportunityReservation, 'expiresAt' | 'opportunityId' | 'createdBy'>;\n vehicle: Vehicle;\n};\n\nexport type InputSearchVehicle = SearchVehicle & {\n permissions?: SearchPermissions;\n};\n\nexport type VehiclePricingHistory = {\n pricing: VehiclePricingHistoryInput;\n createdAt: string;\n createdBy: string;\n};\n\nexport type VehiclePricingHistoryInput = VehiclePricing & { internet?: string };\n\nexport type VehiclePricing = {\n premium?: string;\n minimum?: string;\n currency?: string;\n};\n\nexport type RelatedVehicle = {\n vehicleId: string;\n description: string;\n stockNumber: string;\n};\n\nexport type VehicleInternalInfo = {\n createdAt: string;\n description: {\n title: string;\n remarks?: string;\n technicalRemarks?: string;\n };\n parkingName?: string;\n identification: {\n administrativeNumber?: string;\n stockNumber: string;\n branch: string;\n\n /**\n * This ID is used to link different vehicle objects that represent the same real world asset.\n * Ideally the chassis number could be used, but in some cases it is not available yet.\n */\n metaId: string;\n };\n documents: Document[];\n pictures: AttachmentValue[];\n engineeringDocs: Document[];\n pricing: VehiclePricing;\n role: 'SALE' | 'OWN_USE' | 'RENTAL' | 'BUILD' | 'UNKNOWN';\n status: VehicleStatus;\n updatedAt: string;\n /* use this property to store additional terms that you want the vehicle to be found with when doing a full text search */\n keywords?: string[];\n relatedVehicles: RelatedVehicle[];\n};\n\nexport type VehicleOriginalInfo = {\n tenantId: string;\n identification: {\n id: string;\n stockNumber: string;\n hyperdmsTenantId?: string;\n metaId?: string;\n };\n salesConditions: {\n leasing?: boolean;\n expected?: boolean;\n reserved?: boolean;\n price?: string;\n currency?: string;\n };\n};\n\nexport type VehicleAxlesInfo = {\n details: VehicleAxle[];\n configuration?: string;\n count?: number;\n poweredAxlesCount?: number;\n wheelbase?: number;\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n};\n\nexport type SuperstructureBaseVehicle = {\n category: string;\n make: string;\n model?: string;\n type?: string;\n axlesConfiguration?: string;\n emissionsClass?: string;\n transmissionType?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n vin?: string;\n currentRegistration?: {\n country?: string;\n };\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n constructionYear?: number;\n firstRegistration?: string;\n odometerKm?: number;\n powerHp?: number;\n bodystyle?: string;\n accessories: VehicleExternalInfo['accessories'];\n superstructure?: Pick<VehicleSuperstructure, 'crane' | 'tailgate'>;\n};\n\n// mostly inspired by the Hexon data model\nexport type VehicleExternalInfo = {\n body?: {\n cabin?: {\n type: 'Day' | 'Sleep / Small' | 'Sleep / Medium' | 'Sleep / Large';\n model?: string;\n };\n colour?: string;\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n };\n doorCount?: number;\n interior?: {\n bedCount?: number;\n seatCount?: number;\n };\n };\n mainPicture?: AttachmentValue;\n pictures?: AttachmentValue[];\n videos?: AttachmentValue[];\n condition?: {\n damaged?: boolean;\n odometer?: {\n km?: number;\n };\n used?: boolean;\n };\n general: {\n bodystyle?: string;\n category: string;\n make?: string;\n model?: string;\n modelName?: string;\n type?: string;\n typeName?: string;\n };\n history?: {\n advertisingYear?: number;\n constructionYear?: number;\n currentRegistration?: {\n country?: string;\n technicalInspectionEndDate?: string;\n };\n firstRegistration?: string;\n cocPvg?: string;\n };\n identification: {\n licensePlate?: string;\n stockNumber?: string;\n vin?: string;\n buildStockNumber?: string;\n engineNumber?: string;\n };\n powertrain?: {\n axles?: VehicleAxlesInfo;\n emissions?: {\n class?: string;\n };\n engine?: {\n cylinderCount?: number;\n energy?: string;\n power?: {\n hp?: number;\n };\n displacement?: number;\n };\n transmission?: {\n gearCount?: number;\n make?: string;\n model?: string;\n type?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n };\n };\n salesConditions: {\n leasing?: boolean;\n expected?: boolean;\n price?: string | undefined;\n currency?: string | undefined;\n };\n superstructure?: VehicleSuperstructure;\n weights?: {\n gvw?: number;\n massEmpty?: number;\n };\n accessories: {\n abs?: boolean;\n adr?: boolean;\n airco?: boolean;\n alloyWheels?: boolean;\n aluminiumFuelTank?: boolean;\n cdPlayer?: boolean;\n centralLocking?: boolean;\n centralLubrication?: boolean;\n cruiseControl?: boolean;\n electricDoorMirrors?: boolean;\n electricWindows?: boolean;\n engineBrake?: boolean;\n forklift?: boolean;\n navigationSystem?: boolean;\n hydraulicTipperKit?: boolean;\n lowDeck?: boolean;\n lowNoise?: boolean;\n parkingHeater?: boolean;\n particleFilter?: boolean;\n powerTakeOff?: boolean;\n refrigerator?: boolean;\n retarderIntarder?: boolean;\n reversingCamera?: boolean;\n roofSpoiler?: boolean;\n sideSkirts?: boolean;\n spareKey?: boolean;\n spareWheel?: boolean;\n speedLimiter?: boolean;\n spoilers?: boolean;\n spotlights?: boolean;\n stabilityControl?: boolean;\n standardAirco?: boolean;\n television?: boolean;\n toolbox?: boolean;\n trailerCoupling?: boolean;\n twinFuelTank?: boolean;\n visor?: boolean;\n xenonLights?: boolean;\n };\n publicLink?: string;\n};\n\ntype BaseVehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = {\n internal: I;\n external: E;\n original?: VehicleOriginalInfo;\n};\n\nexport type NewVehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = BaseVehicle<I, E> & {\n id?: undefined;\n};\n\nexport type Vehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = BaseVehicle<I, E> & {\n id: string;\n};\n\nexport type VehiclesByChassisNumberRequest = {\n tenantIds: string[];\n chassisNumber: string;\n};\n\nexport type VehiclesByMetaIdRequest = {\n tenantIds: string[];\n metaId: string;\n};\n\nexport type VehicleAxle = {\n make?: string;\n alloyWheels?: boolean;\n brakes?: 'Disc' | 'Drum';\n differentialLock?: boolean;\n liftAxle?: boolean;\n maxLoad?: number;\n nr: number;\n position?: string;\n powered?: boolean;\n reduction?: string;\n steering?: boolean;\n suspension?: 'Steel' | 'Air' | 'Hydraulic';\n twinWheels?: boolean;\n tyreConditionPercLeftInside?: number;\n tyreConditionPercLeftOutside?: number;\n tyreConditionPercRightInside?: number;\n tyreConditionPercRightOutside?: number;\n tyreSize?: string;\n};\n\nexport type VehicleMarketing = {\n titles: MultiLangValue;\n remarks?: MultiLangValue;\n marketingPlatforms: string[];\n videos: AttachmentValue[];\n overrides?: {\n marketingPlatforms?: boolean;\n remarks?: boolean;\n titles?: boolean;\n videos?: boolean;\n };\n};\n\nexport enum VehicleSaleDealStatus {\n SaleAgreed = 'SALE_AGREED',\n FirstPaymentReceived = 'FIRST_PAYMENT_RECEIVED',\n FullPaymentReceived = 'FULL_PAYMENT_RECEIVED',\n NotSold = 'NOT_SOLD',\n}\n\nexport enum VehiclePurchaseDealStatus {\n PurchaseEvaluation = 'PURCHASE_EVALUATION', // used for vehicle consignation\n PurchaseAgreed = 'PURCHASE_AGREED',\n FirstPaymentAllowed = 'FIRST_PAYMENT_ALLOWED',\n FirstPaymentSent = 'FIRST_PAYMENT_SENT',\n FullPaymentAllowed = 'FULL_PAYMENT_ALLOWED',\n FullPaymentSent = 'FULL_PAYMENT_SENT',\n}\n\nexport enum VehicleSaleLogisticsStatus {\n AtOrigin = 'AT_ORIGIN',\n Delivered = 'DELIVERED',\n}\n\nexport enum VehiclePurchaseLogisticsStatus {\n AtOrigin = 'AT_ORIGIN',\n Arrived = 'ARRIVED',\n CheckedIn = 'CHECKED_IN',\n}\n\nexport enum VehiclePurchaseDeliveryType {\n PickUp = 'PICK_UP',\n DropOff = 'DROP_OFF',\n}\n\nexport type VehicleStatus = {\n deleted?: boolean;\n sale: {\n id?: string;\n dealStatus: VehicleSaleDealStatus;\n logisticsStatus?: VehicleSaleLogisticsStatus;\n };\n purchase: {\n purchasedBy?: string;\n dealStatus: VehiclePurchaseDealStatus;\n logisticsStatus: VehiclePurchaseLogisticsStatus;\n };\n};\n\nexport type VehiclePriceList = {\n uploadedAt: string;\n uploadedBy: string;\n priceList: AttachmentValue;\n id: string;\n};\n\nexport type UpdateVehiclesPricesRequest = {\n priceList: AttachmentValue;\n};\n\nexport type VehiclePriceListLine = {\n reference: string;\n internet?: string;\n premium?: string;\n minimum?: string;\n};\n\nexport type VehiclePriceUpdateError = {\n data: VehiclePriceListLine;\n line: number;\n error: {\n fieldId: keyof VehiclePriceListLine;\n msg: string;\n };\n};\n\nexport type VehiclePriceUpdateResponse =\n | {\n success: true;\n }\n | {\n success: false;\n errors: VehiclePriceUpdateError[];\n };\n\nexport type VehiclePurchase = {\n organizationId: string;\n contactId: string;\n supplierStockNumber?: string;\n purchasedBy: string;\n\n log: {\n evaluationStartedAt?: string;\n evaluationStartedBy?: string;\n\n purchaseAgreedAt?: string;\n purchaseAgreedBy?: string;\n\n firstPaymentAllowedAt?: string;\n firstPaymentAllowedBy?: string;\n firstPaymentSentAt?: string;\n firstPaymentSentBy?: string;\n\n fullPaymentAllowedAt?: string;\n fullPaymentAllowedBy?: string;\n fullPaymentSentAt?: string;\n fullPaymentSentBy?: string;\n\n arrivedAt?: string;\n arrivedBy?: string;\n checkedInAt?: string;\n checkedInBy?: string;\n };\n\n deal: {\n status: VehiclePurchaseDealStatus;\n\n askingPrice?: string;\n purchaseVatRate?: string;\n purchase?: string; // exclusive VAT\n\n commission?: string;\n externalTransport?: string;\n internalTransport?: string;\n externalGarage?: string;\n internalGarage?: string;\n other?: string;\n };\n\n logistics: {\n parkingName?: string;\n status: VehiclePurchaseLogisticsStatus;\n deliveryType?: VehiclePurchaseDeliveryType;\n pickupAddress?: LocationValue;\n availableWeek?: string; // ISOWEEK, e.g. 2016-W02\n };\n};\n\nexport enum VehicleActions {\n EditAdminDocs = 'edit_admin_docs',\n EditEngineeringDocs = 'edit_engineering_docs',\n EditMarketing = 'edit_marketing',\n EditMedia = 'edit_media',\n EditPictures = 'edit_pictures',\n EditPrices = 'edit_prices',\n EditPurchaseDeal = 'edit_purchase_deal',\n EditPurchaseLogistics = 'edit_purchase_logistics',\n EditSpecs = 'edit_specs',\n EditVideos = 'edit_videos',\n ViewLeads = 'view_leads',\n ViewSimilarOnline = 'view_similar_online',\n ViewPurchase = 'view_purchase',\n ViewPriceHistory = 'view_price_history',\n}\n\nexport enum PurchaseActions {\n ViewDeal = 'view_deal',\n ViewSupplierOrganization = 'view_supplier_organization',\n ViewContact = 'view_contact',\n ViewLegalAddress = 'view_legal_address',\n ViewPickupAddress = 'view_pickup_address',\n ViewEstimatedCosts = 'view_estimated_costs',\n ViewFinanceDocuments = 'view_finance_documents',\n}\n\nexport type VehicleShareEmailRequest = {\n country: string; // Lowercase ISO 3166-1 alpha-2 code, e.g. 'be'\n to: EmailDestination[];\n message: string;\n subject: string;\n pictures: AttachmentValue[];\n attachments?: AttachmentValue[];\n};\n"]}
1
+ {"version":3,"file":"vehicles.js","sourceRoot":"/","sources":["types/vehicles.ts"],"names":[],"mappings":"AAueA,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,mDAA0B,CAAA;IAC1B,wEAA+C,CAAA;IAC/C,sEAA6C,CAAA;IAC7C,6CAAoB,CAAA;AACtB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,MAAM,CAAN,IAAY,yBAOX;AAPD,WAAY,yBAAyB;IACnC,uEAA0C,CAAA;IAC1C,+DAAkC,CAAA;IAClC,0EAA6C,CAAA;IAC7C,oEAAuC,CAAA;IACvC,wEAA2C,CAAA;IAC3C,kEAAqC,CAAA;AACvC,CAAC,EAPW,yBAAyB,KAAzB,yBAAyB,QAOpC;AAED,MAAM,CAAN,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,oDAAsB,CAAA;IACtB,qDAAuB,CAAA;AACzB,CAAC,EAHW,0BAA0B,KAA1B,0BAA0B,QAGrC;AAED,MAAM,CAAN,IAAY,8BAIX;AAJD,WAAY,8BAA8B;IACxC,wDAAsB,CAAA;IACtB,qDAAmB,CAAA;IACnB,0DAAwB,CAAA;AAC1B,CAAC,EAJW,8BAA8B,KAA9B,8BAA8B,QAIzC;AAED,MAAM,CAAN,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,iDAAkB,CAAA;IAClB,mDAAoB,CAAA;AACtB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,QAGtC;AAyGD,MAAM,CAAN,IAAY,cAeX;AAfD,WAAY,cAAc;IACxB,mDAAiC,CAAA;IACjC,+DAA6C,CAAA;IAC7C,kDAAgC,CAAA;IAChC,0CAAwB,CAAA;IACxB,gDAA8B,CAAA;IAC9B,4CAA0B,CAAA;IAC1B,yDAAuC,CAAA;IACvC,mEAAiD,CAAA;IACjD,0CAAwB,CAAA;IACxB,4CAA0B,CAAA;IAC1B,0CAAwB,CAAA;IACxB,2DAAyC,CAAA;IACzC,gDAA8B,CAAA;IAC9B,yDAAuC,CAAA;AACzC,CAAC,EAfW,cAAc,KAAd,cAAc,QAezB;AAED,MAAM,CAAN,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,0EAAuD,CAAA;IACvD,+CAA4B,CAAA;IAC5B,0DAAuC,CAAA;IACvC,4DAAyC,CAAA;IACzC,8DAA2C,CAAA;IAC3C,kEAA+C,CAAA;AACjD,CAAC,EARW,eAAe,KAAf,eAAe,QAQ1B","sourcesContent":["import {\n AttachmentValue,\n Document,\n LocationValue,\n MultiLangValue,\n SearchPermissions,\n ShareEmailRequest,\n} from '@bisondesk/commons-sdk/types';\nimport { OpportunityReservation } from './reservations.js';\n\ntype BaseVehicleEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n};\n\ntype VehicleSuperstructure = {\n carCapacity?: number;\n compartmentCount?: number;\n counter?: boolean;\n crane?: {\n make?: string;\n model?: string;\n position?: 'Behind the cabin' | 'Rear';\n present?: boolean;\n year?: number;\n };\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n extended?: string; // L1, L2, ...\n heightened?: string; // H1, H2, ...\n };\n baseVehicle?: SuperstructureBaseVehicle;\n extendable?: boolean;\n highPressurePump?: boolean;\n loadingPlatformHeight?: number;\n pump?: boolean;\n slidingRoof?: boolean;\n tailgate?: {\n capacity?: number;\n make?: string;\n model?: string;\n present?: boolean;\n type?: 'slider_lift' | 'cantilever' | 'column_lift';\n };\n tank?: {\n capacity: number;\n };\n temperatureControl?: {\n engineType?: 'diesel' | 'electric' | 'diesel+electric' | 'engine';\n make?: string;\n runningHours?: {\n diesel?: number;\n electric?: number;\n };\n };\n tipper?: {\n tipsBack?: boolean;\n tipsLeft?: boolean;\n tipsRight?: boolean;\n };\n};\nexport type NewVehicleRequest = {\n branch: string;\n count: number;\n specs: VehicleExternalInfo;\n description: {\n remarks?: string;\n technicalRemarks?: string;\n };\n logistics: {\n parking: string;\n deliveryType: VehiclePurchaseDeliveryType;\n pickupAddress?: LocationValue;\n checkedInAt?: string;\n checkedInBy?: string;\n arrivedAt?: string;\n arrivedBy?: string;\n };\n prices: {\n minimum?: string;\n premium?: string;\n internet?: string;\n };\n media: {\n internalPictures: AttachmentValue[];\n pictures: AttachmentValue[];\n videos: AttachmentValue[];\n docs: Document[];\n engineeringDocs: Document[];\n };\n vinList?: string;\n deal: {\n stockNumber?: string;\n contactId: string;\n orgId: string;\n purchasedBy: string;\n dealStatus:\n | VehiclePurchaseDealStatus.PurchaseEvaluation\n | VehiclePurchaseDealStatus.PurchaseAgreed;\n costs: {\n purchase: string;\n purchaseVatPercentage: string;\n commission?: string;\n externalTransport?: string;\n internalTransport?: string;\n externalGarage?: string;\n internalGarage?: string;\n other?: string;\n };\n logistics: {\n availableDate: string;\n vehicleRole: VehicleInternalInfo['role'];\n };\n };\n};\n\nexport type VehicleCreateEvent = BaseVehicleEvent & {\n action: 'create';\n vehicle: Vehicle;\n previousVehicle?: undefined;\n};\n\nexport type VehicleUpdateEvent = BaseVehicleEvent & {\n action: 'update';\n vehicle: Vehicle;\n previousVehicle: Vehicle;\n};\n\nexport type VehicleDeleteEvent = BaseVehicleEvent & {\n action: 'delete';\n vehicle?: undefined;\n previousVehicle: Vehicle;\n};\n\nexport type VehicleEvent = VehicleCreateEvent | VehicleUpdateEvent | VehicleDeleteEvent;\n\nexport type VehicleMarketingEvent = {\n actionAt: string;\n data: VehicleMarketing;\n tenantId: string;\n userId: string;\n vehicleId: string;\n};\n\ntype BaseVehiclePurchaseEvent = {\n actionAt: string;\n userId: string;\n tenantId: string;\n branchId: string;\n vehicleId: string;\n};\n\nexport type VehiclePurchaseCreateEvent = BaseVehiclePurchaseEvent & {\n action: 'create';\n data: VehiclePurchase;\n previousData?: undefined;\n};\n\nexport type VehiclePurchaseUpdateEvent = BaseVehiclePurchaseEvent & {\n action: 'update';\n data: VehiclePurchase;\n previousData: VehiclePurchase;\n};\n\nexport type VehiclePurchaseEvent = VehiclePurchaseCreateEvent | VehiclePurchaseUpdateEvent;\n\nexport type UpdateVehiclesPricesEvent = {\n id: string;\n actionAt: string;\n userId: string;\n tenantId: string;\n priceList: AttachmentValue;\n};\n\nexport type PublicVehicle = Pick<Vehicle, 'external' | 'id'>;\n\nexport type PublicSearchVehicle = {\n vehicle: PublicVehicle;\n};\n\nexport type SearchVehicle = {\n custom: {\n features: string[];\n isReserved: boolean;\n hasPayments: boolean;\n };\n purchase?: {\n supplierStockNumber?: string;\n };\n reservation?: Pick<OpportunityReservation, 'expiresAt' | 'opportunityId' | 'createdBy'>;\n vehicle: Vehicle;\n};\n\nexport type InputSearchVehicle = SearchVehicle & {\n permissions?: SearchPermissions;\n};\n\nexport type VehiclePricingHistory = {\n pricing: VehiclePricingHistoryInput;\n createdAt: string;\n createdBy: string;\n};\n\nexport type VehiclePricingHistoryInput = VehiclePricing & { internet?: string };\n\nexport type VehiclePricing = {\n premium?: string;\n minimum?: string;\n currency?: string;\n};\n\nexport type RelatedVehicle = {\n vehicleId: string;\n description: string;\n stockNumber: string;\n};\n\nexport type VehicleInternalInfo = {\n createdAt: string;\n description: {\n title: string;\n remarks?: string;\n technicalRemarks?: string;\n };\n parkingName?: string;\n identification: {\n administrativeNumber?: string;\n stockNumber: string;\n branch: string;\n\n /**\n * This ID is used to link different vehicle objects that represent the same real world asset.\n * Ideally the chassis number could be used, but in some cases it is not available yet.\n */\n metaId: string;\n };\n documents: Document[];\n pictures: AttachmentValue[];\n engineeringDocs: Document[];\n pricing: VehiclePricing;\n role: 'SALE' | 'OWN_USE' | 'RENTAL' | 'BUILD' | 'UNKNOWN';\n status: VehicleStatus;\n updatedAt: string;\n /* use this property to store additional terms that you want the vehicle to be found with when doing a full text search */\n keywords?: string[];\n relatedVehicles: RelatedVehicle[];\n};\n\nexport type VehicleOriginalInfo = {\n tenantId: string;\n identification: {\n id: string;\n stockNumber: string;\n hyperdmsTenantId?: string;\n metaId?: string;\n };\n salesConditions: {\n leasing?: boolean;\n expected?: boolean;\n reserved?: boolean;\n price?: string;\n currency?: string;\n };\n};\n\nexport type VehicleAxlesInfo = {\n details: VehicleAxle[];\n configuration?: string;\n count?: number;\n poweredAxlesCount?: number;\n wheelbase?: number;\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n};\n\nexport type SuperstructureBaseVehicle = {\n category: string;\n make: string;\n model?: string;\n type?: string;\n axlesConfiguration?: string;\n emissionsClass?: string;\n transmissionType?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n vin?: string;\n currentRegistration?: {\n country?: string;\n };\n suspension?: 'Air' | 'Air/Steel' | 'Steel';\n constructionYear?: number;\n firstRegistration?: string;\n odometerKm?: number;\n powerHp?: number;\n bodystyle?: string;\n accessories: VehicleExternalInfo['accessories'];\n superstructure?: Pick<VehicleSuperstructure, 'crane' | 'tailgate'>;\n};\n\n// mostly inspired by the Hexon data model\nexport type VehicleExternalInfo = {\n body?: {\n cabin?: {\n type: 'Day' | 'Sleep / Small' | 'Sleep / Medium' | 'Sleep / Large';\n model?: string;\n };\n colour?: string;\n dimensions?: {\n height?: number;\n length?: number;\n width?: number;\n };\n doorCount?: number;\n interior?: {\n bedCount?: number;\n seatCount?: number;\n };\n };\n mainPicture?: AttachmentValue;\n pictures?: AttachmentValue[];\n videos?: AttachmentValue[];\n condition?: {\n damaged?: boolean;\n odometer?: {\n km?: number;\n };\n used?: boolean;\n };\n general: {\n bodystyle?: string;\n category: string;\n make?: string;\n model?: string;\n modelName?: string;\n type?: string;\n typeName?: string;\n };\n history?: {\n advertisingYear?: number;\n constructionYear?: number;\n currentRegistration?: {\n country?: string;\n technicalInspectionEndDate?: string;\n };\n firstRegistration?: string;\n cocPvg?: string;\n };\n identification: {\n licensePlate?: string;\n stockNumber?: string;\n vin?: string;\n buildStockNumber?: string;\n engineNumber?: string;\n };\n powertrain?: {\n axles?: VehicleAxlesInfo;\n emissions?: {\n class?: string;\n };\n engine?: {\n cylinderCount?: number;\n energy?: string;\n power?: {\n hp?: number;\n };\n displacement?: number;\n };\n transmission?: {\n gearCount?: number;\n make?: string;\n model?: string;\n type?: 'Automatic' | 'Manual' | 'Semi-Automatic';\n };\n };\n salesConditions: {\n leasing?: boolean;\n expected?: boolean;\n price?: string | undefined;\n currency?: string | undefined;\n };\n superstructure?: VehicleSuperstructure;\n weights?: {\n gvw?: number;\n massEmpty?: number;\n };\n accessories: {\n abs?: boolean;\n adr?: boolean;\n airco?: boolean;\n alloyWheels?: boolean;\n aluminiumFuelTank?: boolean;\n cdPlayer?: boolean;\n centralLocking?: boolean;\n centralLubrication?: boolean;\n cruiseControl?: boolean;\n electricDoorMirrors?: boolean;\n electricWindows?: boolean;\n engineBrake?: boolean;\n forklift?: boolean;\n navigationSystem?: boolean;\n hydraulicTipperKit?: boolean;\n lowDeck?: boolean;\n lowNoise?: boolean;\n parkingHeater?: boolean;\n particleFilter?: boolean;\n powerTakeOff?: boolean;\n refrigerator?: boolean;\n retarderIntarder?: boolean;\n reversingCamera?: boolean;\n roofSpoiler?: boolean;\n sideSkirts?: boolean;\n spareKey?: boolean;\n spareWheel?: boolean;\n speedLimiter?: boolean;\n spoilers?: boolean;\n spotlights?: boolean;\n stabilityControl?: boolean;\n standardAirco?: boolean;\n television?: boolean;\n toolbox?: boolean;\n trailerCoupling?: boolean;\n twinFuelTank?: boolean;\n visor?: boolean;\n xenonLights?: boolean;\n };\n publicLink?: string;\n};\n\ntype BaseVehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = {\n internal: I;\n external: E;\n original?: VehicleOriginalInfo;\n};\n\nexport type NewVehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = BaseVehicle<I, E> & {\n id?: undefined;\n};\n\nexport type Vehicle<I = VehicleInternalInfo, E = VehicleExternalInfo> = BaseVehicle<I, E> & {\n id: string;\n};\n\nexport type VehiclesByChassisNumberRequest = {\n tenantIds: string[];\n chassisNumber: string;\n};\n\nexport type VehiclesByMetaIdRequest = {\n tenantIds: string[];\n metaId: string;\n};\n\nexport type VehicleAxle = {\n make?: string;\n alloyWheels?: boolean;\n brakes?: 'Disc' | 'Drum';\n differentialLock?: boolean;\n liftAxle?: boolean;\n maxLoad?: number;\n nr: number;\n position?: string;\n powered?: boolean;\n reduction?: string;\n steering?: boolean;\n suspension?: 'Steel' | 'Air' | 'Hydraulic';\n twinWheels?: boolean;\n tyreConditionPercLeftInside?: number;\n tyreConditionPercLeftOutside?: number;\n tyreConditionPercRightInside?: number;\n tyreConditionPercRightOutside?: number;\n tyreSize?: string;\n};\n\nexport type VehicleMarketing = {\n titles: MultiLangValue;\n remarks?: MultiLangValue;\n marketingPlatforms: string[];\n videos: AttachmentValue[];\n overrides?: {\n marketingPlatforms?: boolean;\n remarks?: boolean;\n titles?: boolean;\n videos?: boolean;\n };\n};\n\nexport enum VehicleSaleDealStatus {\n SaleAgreed = 'SALE_AGREED',\n FirstPaymentReceived = 'FIRST_PAYMENT_RECEIVED',\n FullPaymentReceived = 'FULL_PAYMENT_RECEIVED',\n NotSold = 'NOT_SOLD',\n}\n\nexport enum VehiclePurchaseDealStatus {\n PurchaseEvaluation = 'PURCHASE_EVALUATION', // used for vehicle consignation\n PurchaseAgreed = 'PURCHASE_AGREED',\n FirstPaymentAllowed = 'FIRST_PAYMENT_ALLOWED',\n FirstPaymentSent = 'FIRST_PAYMENT_SENT',\n FullPaymentAllowed = 'FULL_PAYMENT_ALLOWED',\n FullPaymentSent = 'FULL_PAYMENT_SENT',\n}\n\nexport enum VehicleSaleLogisticsStatus {\n AtOrigin = 'AT_ORIGIN',\n Delivered = 'DELIVERED',\n}\n\nexport enum VehiclePurchaseLogisticsStatus {\n AtOrigin = 'AT_ORIGIN',\n Arrived = 'ARRIVED',\n CheckedIn = 'CHECKED_IN',\n}\n\nexport enum VehiclePurchaseDeliveryType {\n PickUp = 'PICK_UP',\n DropOff = 'DROP_OFF',\n}\n\nexport type VehicleStatus = {\n deleted?: boolean;\n sale: {\n id?: string;\n dealStatus: VehicleSaleDealStatus;\n logisticsStatus?: VehicleSaleLogisticsStatus;\n };\n purchase: {\n purchasedBy?: string;\n dealStatus: VehiclePurchaseDealStatus;\n logisticsStatus: VehiclePurchaseLogisticsStatus;\n };\n};\n\nexport type VehiclePriceList = {\n uploadedAt: string;\n uploadedBy: string;\n priceList: AttachmentValue;\n id: string;\n};\n\nexport type UpdateVehiclesPricesRequest = {\n priceList: AttachmentValue;\n};\n\nexport type VehiclePriceListLine = {\n reference: string;\n internet?: string;\n premium?: string;\n minimum?: string;\n};\n\nexport type VehiclePriceUpdateError = {\n data: VehiclePriceListLine;\n line: number;\n error: {\n fieldId: keyof VehiclePriceListLine;\n msg: string;\n };\n};\n\nexport type VehiclePriceUpdateResponse =\n | {\n success: true;\n }\n | {\n success: false;\n errors: VehiclePriceUpdateError[];\n };\n\nexport type VehiclePurchase = {\n organizationId: string;\n contactId: string;\n supplierStockNumber?: string;\n purchasedBy: string;\n\n log: {\n evaluationStartedAt?: string;\n evaluationStartedBy?: string;\n\n purchaseAgreedAt?: string;\n purchaseAgreedBy?: string;\n\n firstPaymentAllowedAt?: string;\n firstPaymentAllowedBy?: string;\n firstPaymentSentAt?: string;\n firstPaymentSentBy?: string;\n\n fullPaymentAllowedAt?: string;\n fullPaymentAllowedBy?: string;\n fullPaymentSentAt?: string;\n fullPaymentSentBy?: string;\n\n arrivedAt?: string;\n arrivedBy?: string;\n checkedInAt?: string;\n checkedInBy?: string;\n };\n\n deal: {\n status: VehiclePurchaseDealStatus;\n\n askingPrice?: string;\n purchaseVatRate?: string;\n purchase?: string; // exclusive VAT\n\n commission?: string;\n externalTransport?: string;\n internalTransport?: string;\n externalGarage?: string;\n internalGarage?: string;\n other?: string;\n };\n\n logistics: {\n parkingName?: string;\n status: VehiclePurchaseLogisticsStatus;\n deliveryType?: VehiclePurchaseDeliveryType;\n pickupAddress?: LocationValue;\n availableWeek?: string; // ISOWEEK, e.g. 2016-W02\n };\n};\n\nexport enum VehicleActions {\n EditAdminDocs = 'edit_admin_docs',\n EditEngineeringDocs = 'edit_engineering_docs',\n EditMarketing = 'edit_marketing',\n EditMedia = 'edit_media',\n EditPictures = 'edit_pictures',\n EditPrices = 'edit_prices',\n EditPurchaseDeal = 'edit_purchase_deal',\n EditPurchaseLogistics = 'edit_purchase_logistics',\n EditSpecs = 'edit_specs',\n EditVideos = 'edit_videos',\n ViewLeads = 'view_leads',\n ViewSimilarOnline = 'view_similar_online',\n ViewPurchase = 'view_purchase',\n ViewPriceHistory = 'view_price_history',\n}\n\nexport enum PurchaseActions {\n ViewDeal = 'view_deal',\n ViewSupplierOrganization = 'view_supplier_organization',\n ViewContact = 'view_contact',\n ViewLegalAddress = 'view_legal_address',\n ViewPickupAddress = 'view_pickup_address',\n ViewEstimatedCosts = 'view_estimated_costs',\n ViewFinanceDocuments = 'view_finance_documents',\n}\n\nexport type VehicleShareEmailRequest = ShareEmailRequest & {\n pictures: AttachmentValue[];\n};\n"]}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@bisondesk/core-sdk",
3
- "version": "1.0.353",
3
+ "version": "1.0.355",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "rm -rf build dist lib *.tsbuildinfo",
8
8
  "unittest": "echo \"No test specified\"",
9
9
  "integrationtest": "echo \"No test specified\"",
10
- "build": "npx tsc --build tsconfig.deploy.json",
10
+ "build": "npx tsc --build tsconfig.json",
11
11
  "watch": "npx tsc --build --watch"
12
12
  },
13
13
  "author": "TheTruckCompany",
package/src/apis/crm.ts CHANGED
@@ -21,16 +21,14 @@ export const getCrmOrganization = async (
21
21
  opts?: { serviceId: string }
22
22
  ): Promise<Organization | undefined> => {
23
23
  const auth = await getAdminAuth();
24
- const response: Response = await fetch(
25
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${organizationId}`,
26
- {
27
- headers: cleanHeaders({
28
- Authorization: auth,
29
- [TENANT_ID_ADMIN_HEADER]: tenantId,
30
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
31
- }),
32
- }
33
- );
24
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${organizationId}`;
25
+ const response: Response = await fetch(url, {
26
+ headers: cleanHeaders({
27
+ Authorization: auth,
28
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
29
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
30
+ }),
31
+ });
34
32
 
35
33
  if (response.ok) {
36
34
  return (response.status === 200 ? response.json() : undefined) as Promise<
@@ -39,7 +37,7 @@ export const getCrmOrganization = async (
39
37
  }
40
38
 
41
39
  const body = await response.text();
42
- throw new XError(response.statusText, { body, tenantId, organizationId, opts });
40
+ throw new XError(response.statusText, { url, body, tenantId, organizationId, opts });
43
41
  };
44
42
 
45
43
  export const getCrmOrganizationByExternalId = async (
@@ -48,16 +46,14 @@ export const getCrmOrganizationByExternalId = async (
48
46
  opts?: { serviceId: string }
49
47
  ): Promise<Organization | undefined> => {
50
48
  const auth = await getAdminAuth();
51
- const response: Response = await fetch(
52
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/external-id/${externalId}`,
53
- {
54
- headers: cleanHeaders({
55
- Authorization: auth,
56
- [TENANT_ID_ADMIN_HEADER]: tenantId,
57
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
58
- }),
59
- }
60
- );
49
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/external-id/${externalId}`;
50
+ const response: Response = await fetch(url, {
51
+ headers: cleanHeaders({
52
+ Authorization: auth,
53
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
54
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
55
+ }),
56
+ });
61
57
 
62
58
  if (response.ok) {
63
59
  return (response.status === 200 ? response.json() : undefined) as Promise<
@@ -66,7 +62,7 @@ export const getCrmOrganizationByExternalId = async (
66
62
  }
67
63
 
68
64
  const body = await response.text();
69
- throw new XError(response.statusText, { body, tenantId, externalId, opts });
65
+ throw new XError(response.statusText, { url, body, tenantId, externalId, opts });
70
66
  };
71
67
 
72
68
  export const saveCrmOrganization = async (
@@ -75,8 +71,10 @@ export const saveCrmOrganization = async (
75
71
  opts?: { serviceId: string }
76
72
  ): Promise<Organization> => {
77
73
  const auth = await getAdminAuth();
78
- const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/crm/organizations`, {
79
- method: 'POST',
74
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations`;
75
+ const method = 'POST';
76
+ const response: Response = await fetch(url, {
77
+ method,
80
78
  headers: cleanHeaders({
81
79
  Authorization: auth,
82
80
  'Content-Type': 'application/json',
@@ -91,7 +89,7 @@ export const saveCrmOrganization = async (
91
89
  }
92
90
 
93
91
  const body = await response.text();
94
- throw new XError(response.statusText, { body, tenantId, org, opts });
92
+ throw new XError(response.statusText, { method, url, body, tenantId, org, opts });
95
93
  };
96
94
 
97
95
  export const patchCrmOrganization = async (
@@ -101,26 +99,33 @@ export const patchCrmOrganization = async (
101
99
  opts?: { serviceId: string }
102
100
  ): Promise<Organization> => {
103
101
  const auth = await getAdminAuth();
104
- const response: Response = await fetch(
105
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${organizationId}`,
106
- {
107
- method: 'PATCH',
108
- headers: cleanHeaders({
109
- Authorization: auth,
110
- 'Content-Type': 'application/json',
111
- [TENANT_ID_ADMIN_HEADER]: tenantId,
112
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
113
- }),
114
- body: JSON.stringify(changes),
115
- }
116
- );
102
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${organizationId}`;
103
+ const method = 'PATCH';
104
+ const response: Response = await fetch(url, {
105
+ method,
106
+ headers: cleanHeaders({
107
+ Authorization: auth,
108
+ 'Content-Type': 'application/json',
109
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
110
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
111
+ }),
112
+ body: JSON.stringify(changes),
113
+ });
117
114
 
118
115
  if (response.ok) {
119
116
  return response.json() as Promise<Organization>;
120
117
  }
121
118
 
122
119
  const body = await response.text();
123
- throw new XError(response.statusText, { tenantId, organizationId, changes, body, opts });
120
+ throw new XError(response.statusText, {
121
+ method,
122
+ url,
123
+ tenantId,
124
+ organizationId,
125
+ changes,
126
+ body,
127
+ opts,
128
+ });
124
129
  };
125
130
 
126
131
  export const searchCrmOrganizations = async (
@@ -129,26 +134,25 @@ export const searchCrmOrganizations = async (
129
134
  opts?: { serviceId: string }
130
135
  ): Promise<PaginatedList<SearchOrganization, ReferenceData>> => {
131
136
  const auth = await getAdminAuth();
132
- const response: Response = await fetch(
133
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/search/results`,
134
- {
135
- method: 'POST',
136
- headers: cleanHeaders({
137
- Authorization: auth,
138
- [TENANT_ID_ADMIN_HEADER]: tenantId,
139
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
140
- 'Content-Type': 'application/json',
141
- }),
142
- body: JSON.stringify(req),
143
- }
144
- );
137
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/search/results`;
138
+ const method = 'POST';
139
+ const response: Response = await fetch(url, {
140
+ method,
141
+ headers: cleanHeaders({
142
+ Authorization: auth,
143
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
144
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
145
+ 'Content-Type': 'application/json',
146
+ }),
147
+ body: JSON.stringify(req),
148
+ });
145
149
 
146
150
  if (response.ok) {
147
151
  return response.status === 200 ? (response.json() as any) : undefined;
148
152
  }
149
153
 
150
154
  const body = await response.text();
151
- throw new XError(response.statusText, { body, tenantId, req, opts });
155
+ throw new XError(response.statusText, { method, url, body, tenantId, req, opts });
152
156
  };
153
157
 
154
158
  export const searchCrmContacts = async (
@@ -157,26 +161,25 @@ export const searchCrmContacts = async (
157
161
  opts?: { serviceId: string }
158
162
  ): Promise<PaginatedList<SearchContact, ReferenceData>> => {
159
163
  const auth = await getAdminAuth();
160
- const response: Response = await fetch(
161
- `${process.env.CORE_API_ORIGIN}/api/crm/contacts/search/results`,
162
- {
163
- method: 'POST',
164
- headers: cleanHeaders({
165
- Authorization: auth,
166
- 'Content-Type': 'application/json',
167
- [TENANT_ID_ADMIN_HEADER]: tenantId,
168
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
169
- }),
170
- body: JSON.stringify(req),
171
- }
172
- );
164
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/contacts/search/results`;
165
+ const method = 'POST';
166
+ const response: Response = await fetch(url, {
167
+ method,
168
+ headers: cleanHeaders({
169
+ Authorization: auth,
170
+ 'Content-Type': 'application/json',
171
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
172
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
173
+ }),
174
+ body: JSON.stringify(req),
175
+ });
173
176
 
174
177
  if (response.ok) {
175
178
  return response.status === 200 ? (response.json() as any) : undefined;
176
179
  }
177
180
 
178
181
  const body = await response.text();
179
- throw new XError(response.statusText, { body, tenantId, req, opts });
182
+ throw new XError(response.statusText, { method, url, body, tenantId, req, opts });
180
183
  };
181
184
 
182
185
  export const deleteCrmOrganization = async (
@@ -185,21 +188,20 @@ export const deleteCrmOrganization = async (
185
188
  opts?: { serviceId: string }
186
189
  ): Promise<void> => {
187
190
  const auth = await getAdminAuth();
188
- const response: Response = await fetch(
189
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${orgId}`,
190
- {
191
- method: 'DELETE',
192
- headers: cleanHeaders({
193
- Authorization: auth,
194
- [TENANT_ID_ADMIN_HEADER]: tenantId,
195
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
196
- }),
197
- }
198
- );
191
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/${orgId}`;
192
+ const method = 'DELETE';
193
+ const response: Response = await fetch(url, {
194
+ method,
195
+ headers: cleanHeaders({
196
+ Authorization: auth,
197
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
198
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
199
+ }),
200
+ });
199
201
 
200
202
  if (!response.ok) {
201
203
  const body = await response.text();
202
- throw new XError(response.statusText, { body, tenantId, orgId, opts });
204
+ throw new XError(response.statusText, { method, url, body, tenantId, orgId, opts });
203
205
  }
204
206
  };
205
207
 
@@ -209,23 +211,21 @@ export const listCrmContacts = async (
209
211
  opts?: { serviceId: string }
210
212
  ): Promise<Contact[]> => {
211
213
  const auth = await getAdminAuth();
212
- const response: Response = await fetch(
213
- `${process.env.CORE_API_ORIGIN}/admin/crm/organizations/${organizationId}/contacts`,
214
- {
215
- headers: cleanHeaders({
216
- Authorization: auth,
217
- [TENANT_ID_ADMIN_HEADER]: tenantId,
218
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
219
- }),
220
- }
221
- );
214
+ const url = `${process.env.CORE_API_ORIGIN}/admin/crm/organizations/${organizationId}/contacts`;
215
+ const response: Response = await fetch(url, {
216
+ headers: cleanHeaders({
217
+ Authorization: auth,
218
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
219
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
220
+ }),
221
+ });
222
222
 
223
223
  if (response.ok) {
224
224
  return response.status === 200 ? (response.json() as any) : undefined;
225
225
  }
226
226
 
227
227
  const body = await response.text();
228
- throw new XError(response.statusText, { body, tenantId, organizationId, opts });
228
+ throw new XError(response.statusText, { url, body, tenantId, organizationId, opts });
229
229
  };
230
230
 
231
231
  export const listPotentialDuplicateOrgs = async (
@@ -236,26 +236,25 @@ export const listPotentialDuplicateOrgs = async (
236
236
  const auth = await getAdminAuth();
237
237
  const limit = opts?.limit ?? '';
238
238
  const offset = opts?.offset ?? '';
239
- const response: Response = await fetch(
240
- `${process.env.CORE_API_ORIGIN}/api/crm/organizations/duplicate-check?limit=${limit}&offset=${offset}`,
241
- {
242
- method: 'POST',
243
- headers: cleanHeaders({
244
- 'Content-Type': 'application/json',
245
- Authorization: auth,
246
- [TENANT_ID_ADMIN_HEADER]: tenantId,
247
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
248
- }),
249
- body: JSON.stringify(org),
250
- }
251
- );
239
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/organizations/duplicate-check?limit=${limit}&offset=${offset}`;
240
+ const method = 'POST';
241
+ const response: Response = await fetch(url, {
242
+ method,
243
+ headers: cleanHeaders({
244
+ 'Content-Type': 'application/json',
245
+ Authorization: auth,
246
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
247
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
248
+ }),
249
+ body: JSON.stringify(org),
250
+ });
252
251
 
253
252
  if (response.ok) {
254
253
  return response.status === 200 ? (response.json() as any) : undefined;
255
254
  }
256
255
 
257
256
  const body = await response.text();
258
- throw new XError(response.statusText, { body, tenantId, org, opts });
257
+ throw new XError(response.statusText, { method, url, body, tenantId, org, opts });
259
258
  };
260
259
 
261
260
  export const getCrmContact = async (
@@ -264,23 +263,21 @@ export const getCrmContact = async (
264
263
  opts?: { serviceId: string }
265
264
  ): Promise<Contact | undefined> => {
266
265
  const auth = await getAdminAuth();
267
- const response: Response = await fetch(
268
- `${process.env.CORE_API_ORIGIN}/api/crm/contacts/${contactId}`,
269
- {
270
- headers: cleanHeaders({
271
- Authorization: auth,
272
- [TENANT_ID_ADMIN_HEADER]: tenantId,
273
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
274
- }),
275
- }
276
- );
266
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/contacts/${contactId}`;
267
+ const response: Response = await fetch(url, {
268
+ headers: cleanHeaders({
269
+ Authorization: auth,
270
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
271
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
272
+ }),
273
+ });
277
274
 
278
275
  if (response.ok) {
279
276
  return response.status === 200 ? (response.json() as any) : undefined;
280
277
  }
281
278
 
282
279
  const body = await response.text();
283
- throw new XError(response.statusText, { body, tenantId, contactId, opts });
280
+ throw new XError(response.statusText, { url, body, tenantId, contactId, opts });
284
281
  };
285
282
 
286
283
  export const saveCrmContact = async (
@@ -289,8 +286,10 @@ export const saveCrmContact = async (
289
286
  opts?: { serviceId: string }
290
287
  ): Promise<Contact> => {
291
288
  const auth = await getAdminAuth();
292
- const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/crm/contacts`, {
293
- method: 'POST',
289
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/contacts`;
290
+ const method = 'POST';
291
+ const response: Response = await fetch(url, {
292
+ method,
294
293
  headers: cleanHeaders({
295
294
  Authorization: auth,
296
295
  'Content-Type': 'application/json',
@@ -305,7 +304,7 @@ export const saveCrmContact = async (
305
304
  }
306
305
 
307
306
  const body = await response.text();
308
- throw new XError(response.statusText, { body, contact, tenantId, opts });
307
+ throw new XError(response.statusText, { method, url, body, contact, tenantId, opts });
309
308
  };
310
309
 
311
310
  export const deleteCrmContact = async (
@@ -315,20 +314,19 @@ export const deleteCrmContact = async (
315
314
  opts?: { serviceId: string }
316
315
  ): Promise<void> => {
317
316
  const auth = await getAdminAuth();
318
- const response: Response = await fetch(
319
- `${process.env.CORE_API_ORIGIN}/api/crm/contacts/${contactId}?orgId=${orgId}`,
320
- {
321
- method: 'DELETE',
322
- headers: cleanHeaders({
323
- Authorization: auth,
324
- [TENANT_ID_ADMIN_HEADER]: tenantId,
325
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
326
- }),
327
- }
328
- );
317
+ const url = `${process.env.CORE_API_ORIGIN}/api/crm/contacts/${contactId}?orgId=${orgId}`;
318
+ const method = 'DELETE';
319
+ const response: Response = await fetch(url, {
320
+ method,
321
+ headers: cleanHeaders({
322
+ Authorization: auth,
323
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
324
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
325
+ }),
326
+ });
329
327
 
330
328
  if (!response.ok) {
331
329
  const body = await response.text();
332
- throw new XError(response.statusText, { body, tenantId, contactId, orgId, opts });
330
+ throw new XError(response.statusText, { method, url, body, tenantId, contactId, orgId, opts });
333
331
  }
334
332
  };
@@ -11,17 +11,16 @@ export const searchDebtorsInfo = async (
11
11
  request: SearchRequest
12
12
  ): Promise<PaginatedList<SearchDebtorInfo, ReferenceData> | undefined> => {
13
13
  const auth = await getAdminAuth();
14
- const response: Response = await fetch(
15
- `${process.env.CORE_API_ORIGIN}/api/leasing/debtors/search/results`,
16
- {
17
- method: 'POST',
18
- headers: {
19
- Authorization: auth,
20
- [TENANT_ID_ADMIN_HEADER]: tenantId,
21
- },
22
- body: JSON.stringify(request),
23
- }
24
- );
14
+ const method = 'POST';
15
+ const url = `${process.env.CORE_API_ORIGIN}/api/leasing/debtors/search/results`;
16
+ const response: Response = await fetch(url, {
17
+ method,
18
+ headers: {
19
+ Authorization: auth,
20
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
21
+ },
22
+ body: JSON.stringify(request),
23
+ });
25
24
 
26
25
  if (response.status === 200) {
27
26
  return response.json() as any;
@@ -29,9 +28,11 @@ export const searchDebtorsInfo = async (
29
28
 
30
29
  const body = await response.text();
31
30
  throw new XError('core-sdk.search-debtors-info', {
31
+ method,
32
+ url,
32
33
  tenantId,
33
34
  request,
34
- response: body,
35
+ body,
35
36
  status: response.status,
36
37
  });
37
38
  };
@@ -5,8 +5,10 @@ import { SearchInternetVehicle } from '../types/internet-vehicles.js';
5
5
 
6
6
  export const upsertInternetVehicles = async (vehicles: SearchInternetVehicle[]): Promise<void> => {
7
7
  const auth = await getAdminAuth();
8
- const response: Response = await fetch(`${process.env.CORE_API_ORIGIN}/api/internet-vehicles`, {
9
- method: 'POST',
8
+ const url = `${process.env.CORE_API_ORIGIN}/api/internet-vehicles`;
9
+ const method = 'POST';
10
+ const response: Response = await fetch(url, {
11
+ method,
10
12
  headers: {
11
13
  'Content-Type': 'application/json',
12
14
  Authorization: auth,
@@ -19,5 +21,5 @@ export const upsertInternetVehicles = async (vehicles: SearchInternetVehicle[]):
19
21
  }
20
22
 
21
23
  const body = await response.text();
22
- throw new XError(response.statusText, { body });
24
+ throw new XError(response.statusText, { method, url, body });
23
25
  };
@@ -14,26 +14,25 @@ export const createLeasingAdminUpload = async (
14
14
  opts?: { serviceId: string }
15
15
  ): Promise<LeasingAdminUpload> => {
16
16
  const auth = await getAdminAuth();
17
- const response: Response = await fetch(
18
- `${process.env.CORE_API_ORIGIN}/api/leasing/administration/uploads`,
19
- {
20
- method: 'POST',
21
- headers: cleanHeaders({
22
- Authorization: auth,
23
- 'Content-Type': 'application/json',
24
- [TENANT_ID_ADMIN_HEADER]: tenantId,
25
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
26
- }),
27
- body: JSON.stringify(data),
28
- }
29
- );
17
+ const url = `${process.env.CORE_API_ORIGIN}/api/leasing/administration/uploads`;
18
+ const method = 'POST';
19
+ const response: Response = await fetch(url, {
20
+ method,
21
+ headers: cleanHeaders({
22
+ Authorization: auth,
23
+ 'Content-Type': 'application/json',
24
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
25
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
26
+ }),
27
+ body: JSON.stringify(data),
28
+ });
30
29
 
31
30
  if (response.ok) {
32
31
  return response.json() as Promise<LeasingAdminUpload>;
33
32
  }
34
33
 
35
34
  const body = await response.text();
36
- throw new XError(response.statusText, { body, data, opts });
35
+ throw new XError(response.statusText, { method, url, body, data, opts });
37
36
  };
38
37
 
39
38
  export const updateLeasingAdminUploadStatus = async (
@@ -44,24 +43,23 @@ export const updateLeasingAdminUploadStatus = async (
44
43
  opts?: { serviceId: string }
45
44
  ): Promise<LeasingAdminUpload> => {
46
45
  const auth = await getAdminAuth();
47
- const response: Response = await fetch(
48
- `${process.env.CORE_API_ORIGIN}/api/leasing/administration/uploads/${handlerId}/${uploadId}/status`,
49
- {
50
- method: 'PUT',
51
- headers: cleanHeaders({
52
- Authorization: auth,
53
- 'Content-Type': 'application/json',
54
- [TENANT_ID_ADMIN_HEADER]: tenantId,
55
- [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
56
- }),
57
- body: JSON.stringify({ status: newStatus }),
58
- }
59
- );
46
+ const url = `${process.env.CORE_API_ORIGIN}/api/leasing/administration/uploads/${handlerId}/${uploadId}/status`;
47
+ const method = 'PUT';
48
+ const response: Response = await fetch(url, {
49
+ method,
50
+ headers: cleanHeaders({
51
+ Authorization: auth,
52
+ 'Content-Type': 'application/json',
53
+ [TENANT_ID_ADMIN_HEADER]: tenantId,
54
+ [SERVICE_ID_ADMIN_HEADER]: opts?.serviceId,
55
+ }),
56
+ body: JSON.stringify({ status: newStatus }),
57
+ });
60
58
 
61
59
  if (response.ok) {
62
60
  return response.json() as Promise<LeasingAdminUpload>;
63
61
  }
64
62
 
65
63
  const body = await response.text();
66
- throw new XError(response.statusText, { body, tenantId, handlerId, uploadId, opts });
64
+ throw new XError(response.statusText, { method, url, body, tenantId, handlerId, uploadId, opts });
67
65
  };