openapi: 3.2.0 info: title: Lokki Offline API description: The main API powering the Lokki Dashboard and Online Store version: '2.0' contact: {} servers: [] security: - x-access-token: [] tags: - name: Offline paths: /v2/offline/syncData: post: operationId: syncOfflineData parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SyncOfflineDataDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/SyncOfflineDataAnomaliesResultDto' tags: - Offline components: schemas: Status: type: object properties: category: type: string name: type: string color: type: string id: type: string statusId: type: string required: - category - name - color - id - statusId AttachedFile: type: object properties: name: type: string key: type: string size: type: number type: type: string uid: type: string required: - name - key - size - type PointSchema: type: object properties: type: type: string coordinates: type: array items: type: number required: - type - coordinates PromoCodeCreateOrderDto: type: object properties: code: type: string source: type: string enum: - COMPANY - LOKKI discountAmount: type: number discountType: type: string applyOnDelivery: type: boolean limitToNewCustomers: type: boolean limitToVerticales: type: array items: type: string limitToCompanies: type: array items: type: string appliedDiscountAmount: type: number required: - code - source - discountAmount - discountType - applyOnDelivery Delivery: type: object properties: status: type: boolean departureAddress: allOf: - $ref: '#/components/schemas/DeliveryAddress' departurePrice: type: number departureReferencePrice: type: number departureDeliveredDate: format: date-time type: string arrivalAddress: allOf: - $ref: '#/components/schemas/DeliveryAddress' arrivalPrice: type: number arrivalReferencePrice: type: number arrivalDeliveredDate: format: date-time type: string price: type: number required: - status - departureAddress - departurePrice - departureReferencePrice - departureDeliveredDate - arrivalAddress - arrivalPrice - arrivalReferencePrice - arrivalDeliveredDate WarrantedProducts: type: object properties: productId: type: string subProductId: type: string serialNumber: type: string margin: type: number pricePerDay: type: number tulipProductId: type: string tulipContractOptionType: type: string enum: - OPTION - INCLUSION - HIDDEN_INCLUSION packId: type: string required: - productId - subProductId - serialNumber - margin - pricePerDay - tulipProductId - tulipContractOptionType ServiceCreateUpdateOrderDto: type: object properties: id: type: string numberSelected: type: number name: type: string rentalType: type: string enum: - LCD - LLD onlineStoreName: $ref: '#/components/schemas/LocalizedContent' onlineStoreDescription: $ref: '#/components/schemas/LocalizedContent' price: type: number isAssuranceTulip: type: boolean priceLabelToDisplay: type: string serviceImage: type: array items: type: string vat: type: number initialUnitPrice: type: number discount: $ref: '#/components/schemas/ItemDiscount' surveyId: type: string answers: type: object required: - id - numberSelected - name - rentalType - onlineStoreName - onlineStoreDescription - price - isAssuranceTulip - priceLabelToDisplay - serviceImage - vat - initialUnitPrice - discount - answers PackCreateUpdateOrderDto: type: object properties: id: type: string depositAmount: type: number rentalType: type: string enum: - LCD - LLD name: type: string onlineStoreName: $ref: '#/components/schemas/LocalizedContent' onlineStoreDescription: $ref: '#/components/schemas/LocalizedContent' numberSelected: type: number packId: type: string packImage: type: array items: type: string products: type: array items: $ref: '#/components/schemas/PackProductCreateUpdateOrderDto' price: type: number vat: type: number categories: type: array items: $ref: '#/components/schemas/PackCategoryCreateOrderDto' type: type: string enum: - PRODUCT - CATEGORY initialUnitPrice: type: number discount: $ref: '#/components/schemas/ItemDiscount' surveyId: type: string answers: type: object required: - id - depositAmount - rentalType - name - onlineStoreName - onlineStoreDescription - numberSelected - packId - packImage - products - price - vat - categories - type - initialUnitPrice - discount - answers CustomerFieldDto: type: object properties: label: $ref: '#/components/schemas/LocalizedContent' value: type: string id: type: string required: - label - value - id TulipInfos: type: object properties: address: type: string zipcode: type: string city: type: string managerFirstName: type: string managerLastName: type: string sirenNumber: type: string required: - address - zipcode - city - managerFirstName - managerLastName - sirenNumber PackCategoryCreateOrderDto: type: object properties: id: type: string value: type: string required: - id - value PackProductCreateUpdateOrderDto: type: object properties: depositAmount: type: number rentalType: type: string enum: - LCD - LLD id: type: string name: type: string onlineStoreName: $ref: '#/components/schemas/LocalizedContent' onlineStoreDescription: $ref: '#/components/schemas/LocalizedContent' subProducts: type: array items: $ref: '#/components/schemas/SubProductCreateUpdateOrderDto' productImage: type: array items: type: string uuid: type: string vat: type: number type: type: string enum: - product - service surveyId: type: string required: - depositAmount - id - name - onlineStoreName - onlineStoreDescription - subProducts - productImage - uuid - vat - type DeliveryAddress: type: object properties: streetNumber: type: string streetName: type: string additional: type: string postalCode: type: string city: type: string country: type: string location: $ref: '#/components/schemas/PointSchema' fullAddress: type: string required: - streetNumber - streetName - additional - postalCode - city - country - location - fullAddress SyncOfflineDataDto: type: object properties: orders: type: array items: $ref: '#/components/schemas/CreateUpdateOrderBodyDto' required: - orders ProductPriceRule: type: object properties: id: type: string title: type: string rules: type: array items: $ref: '#/components/schemas/PriceRule' required: - id - title - rules CustomItemCreateUpdateOrderDto: type: object properties: id: type: string name: type: string numberSelected: type: number price: type: number required: - id - name - numberSelected - price ProductCreateUpdateOrderDto: type: object properties: id: type: string productImage: type: array items: type: string name: type: string rentalType: type: string enum: - LCD - LLD onlineStoreName: $ref: '#/components/schemas/LocalizedContent' onlineStoreDescription: $ref: '#/components/schemas/LocalizedContent' subProducts: type: array items: $ref: '#/components/schemas/SubProductCreateUpdateOrderDto' numberSelected: type: number price: type: number depositAmount: type: number priceLabelToDisplay: type: string vat: type: number surveyId: type: string initialUnitPrice: type: number priceRuleVariation: allOf: - $ref: '#/components/schemas/PriceRuleVariation' discount: $ref: '#/components/schemas/ItemDiscount' insurance: $ref: '#/components/schemas/ProductInsurance' isDeleted: type: boolean requestAnswers: type: object required: - id - productImage - name - rentalType - onlineStoreName - onlineStoreDescription - subProducts - numberSelected - price - depositAmount - priceLabelToDisplay - vat - initialUnitPrice - priceRuleVariation - discount CreateUpdateOrderCustomer: type: object properties: id: type: string lastName: type: string firstName: type: string email: type: string phone: type: string zipCode: type: string companyName: type: string isNewsletterSubscribe: type: boolean isLokkiNewsletterSubscribe: type: boolean fields: type: array items: $ref: '#/components/schemas/CustomerFieldDto' tulipInfos: $ref: '#/components/schemas/TulipInfos' customerRpId: type: string hidden: type: boolean required: - lastName SyncOfflineDataAnomaliesResultDto: type: object properties: csvData: type: array items: type: array items: type: string required: - csvData PriceRuleVariation: type: object properties: rule: allOf: - $ref: '#/components/schemas/ProductPriceRule' deltaAmount: type: number price: type: number required: - rule - deltaAmount - price PriceRule: type: object properties: _id: type: string startDate: $ref: '#/components/schemas/PriceRuleDate' endDate: $ref: '#/components/schemas/PriceRuleDate' type: type: string enum: - in - include - overlap variation: type: number required: - startDate - endDate - type - variation CreateUpdateOrderBodyDto: type: object properties: id: type: string isRequest: type: boolean startDate: format: date-time type: string endDate: format: date-time type: string browserTimezone: type: string packs: type: array items: $ref: '#/components/schemas/PackCreateUpdateOrderDto' products: type: array items: $ref: '#/components/schemas/ProductCreateUpdateOrderDto' services: type: array items: $ref: '#/components/schemas/ServiceCreateUpdateOrderDto' warrantedProducts: type: array items: $ref: '#/components/schemas/WarrantedProducts' customInputs: type: array items: $ref: '#/components/schemas/CustomItemCreateUpdateOrderDto' customer: $ref: '#/components/schemas/CreateUpdateOrderCustomer' remark: type: string attachedFiles: type: array items: $ref: '#/components/schemas/AttachedFile' status: type: array items: $ref: '#/components/schemas/Status' arrivalPoint: type: string departurePoint: type: string delivery: $ref: '#/components/schemas/Delivery' totalTTC: type: number totalHT: type: number depositPrice: type: number isDepositManuallyEdited: type: boolean promoCode: $ref: '#/components/schemas/PromoCodeCreateOrderDto' discount: type: number createdFrom: enum: - DASHBOARD - QUICK_ORDER - ONLINE_STORE - RENTAL_PLACE_B2B - RENTAL_PLACE_LOKKI - BORNE - SKISET - SKIMIUM - UNKNOWN - TEST - ADMIN_IMPORT type: string lang: enum: - fr - en - es - pt - it - pl - de - nl type: string orderStatus: enum: - TO_COME - IN_PROGRESS - ENDED type: string type: enum: - ORDER - PRE_BOOKING - PRE_BOOKING_ADMIN - CANCELED type: string additionalTimeBeforeOrder: type: number additionalTimeAfterOrder: type: number orderRequestId: type: string quoteRequestId: type: string requestDate: format: date-time type: string requestId: type: string requestToOrderDate: format: date-time type: string colorCalendar: type: string offlineId: type: string required: - isRequest - startDate - endDate - packs - products - services - customInputs - customer - totalTTC - totalHT - discount - createdFrom - lang - additionalTimeBeforeOrder - additionalTimeAfterOrder LocalizedContent: type: object additionalProperties: type: string PriceRuleDate: type: object properties: day: type: number time: type: string required: - day - time SubProductCreateUpdateOrderDto: type: object properties: _id: type: string serialNumber: type: string archive: type: boolean available: type: boolean status: type: string enum: - WAITING - USED - ENDED externalQrCode: type: string answers: type: object printed: type: boolean returnDate: format: date-time type: string required: - _id - serialNumber - archive - available - status - externalQrCode - answers ProductInsurance: type: object properties: isActivated: type: boolean tulipProductId: type: string averagePurchasePrice: type: number margin: type: number sum: type: number contractType: type: string enum: - OPTION - INCLUSION - HIDDEN_INCLUSION required: - isActivated - tulipProductId - averagePurchasePrice - margin - sum ItemDiscount: type: object properties: discountType: type: string enum: - AMOUNT - PERCENTAGE amount: type: number required: - discountType - amount securitySchemes: x-access-token: scheme: bearer bearerFormat: JWT type: apiKey in: header name: x-access-token