openapi: 3.2.0 info: title: Lokki Payment V2 API description: The main API powering the Lokki Dashboard and Online Store version: '2.0' contact: {} servers: [] security: - x-access-token: [] tags: - name: Payment V2 paths: /v2/payment-v2: get: operationId: getManyPayments parameters: - name: skip required: false in: query description: Number of documents to skip schema: minimum: 0 default: 0 type: number - name: limit required: false in: query description: Maximum number of documents to return schema: minimum: 1 type: number - name: sort required: false in: query schema: oneOf: - type: array items: type: string - type: string description: 'Sort order for the results. Use ''__asc'' or ''__desc'' suffix to specify ascending or descending order respectively. Example: ''name__asc''' - name: fields required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Fields to include in the response - name: id.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: id.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: id.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: id.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: id.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: id.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: id.contains required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that contain the specified substring - name: id.regex required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match the specified regular expression - name: createdAt.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: createdAt.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: createdAt.equals required: false in: query description: Filter entries that match a specific date schema: type: string - name: createdAt.notEquals required: false in: query description: Filter entries that do not match a specific date schema: type: string - name: createdAt.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified dates - name: createdAt.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified dates - name: createdAt.gt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than the specified date - name: createdAt.lt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than the specified date - name: createdAt.gte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than or equal to the specified date - name: createdAt.lte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than or equal to the specified date - name: paymentDate.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: paymentDate.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: paymentDate.equals required: false in: query description: Filter entries that match a specific date schema: type: string - name: paymentDate.notEquals required: false in: query description: Filter entries that do not match a specific date schema: type: string - name: paymentDate.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified dates - name: paymentDate.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified dates - name: paymentDate.gt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than the specified date - name: paymentDate.lt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than the specified date - name: paymentDate.gte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than or equal to the specified date - name: paymentDate.lte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than or equal to the specified date - name: captureDate.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: captureDate.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: captureDate.equals required: false in: query description: Filter entries that match a specific date schema: type: string - name: captureDate.notEquals required: false in: query description: Filter entries that do not match a specific date schema: type: string - name: captureDate.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified dates - name: captureDate.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified dates - name: captureDate.gt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than the specified date - name: captureDate.lt required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than the specified date - name: captureDate.gte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date greater than or equal to the specified date - name: captureDate.lte required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries with a date less than or equal to the specified date - name: orderId.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: orderId.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: orderId.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: orderId.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: orderId.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: orderId.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: orderId.contains required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that contain the specified substring - name: orderId.regex required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match the specified regular expression - name: orderType.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: orderType.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: orderType.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: orderType.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: orderType.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: orderType.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: provider.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: provider.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: provider.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: provider.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: provider.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: provider.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: paymentType.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: paymentType.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: paymentType.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: paymentType.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: paymentType.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: paymentType.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: status.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: status.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: status.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: status.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: status.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: status.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: customerId.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: customerId.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: customerId.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: customerId.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: customerId.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: customerId.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: customerId.contains required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that contain the specified substring - name: customerId.regex required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match the specified regular expression - name: customerRef__email.isNull required: false in: query description: Filter entries that have the field as null schema: type: boolean - name: customerRef__email.exists required: false in: query description: Filter entries that have the field not null schema: type: boolean - name: customerRef__email.equals required: false in: query description: Filter entries that have a specific value schema: type: string - name: customerRef__email.notEquals required: false in: query description: Filter entries that do not have a specific value schema: type: string - name: customerRef__email.in required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match any of the specified values - name: customerRef__email.notIn required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that do not match any of the specified values - name: customerRef__email.contains required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that contain the specified substring - name: customerRef__email.regex required: false in: query schema: oneOf: - type: array items: type: string - type: string description: Filter entries that match the specified regular expression responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetManyPaymentsResponseDto' tags: - Payment V2 post: operationId: createPaymentV2 parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePaymentBodyDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/PaymentV2' tags: - Payment V2 /v2/payment-v2/optimized: get: operationId: getPaymentV2Optimized parameters: - name: captureDate.start required: false in: query schema: format: date-time type: string - name: captureDate.end required: false in: query schema: format: date-time type: string - name: orderIds required: false in: query schema: type: array items: type: string - name: status required: false in: query schema: type: array items: type: string enum: - CANCELED - WAITING - PROCESSING - REQUIRES_CAPTURE - SUCCEEDED - FAILED - name: orderType required: false in: query schema: type: array items: type: string enum: - ORDER_LCD - ORDER_LLD - ORDER_EVENT - name: withPayoutInfo required: false in: query schema: type: boolean responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/EnrichedPaymentV2' tags: - Payment V2 /v2/payment-v2/{id}: get: operationId: getPaymentV2 parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PaymentV2' tags: - Payment V2 delete: operationId: deletePaymentV2 parameters: - name: id required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Payment V2 /v2/payment-v2/bulk: post: operationId: createManyPaymentV2 parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateManyPaymentV2BodyDto' responses: '201': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/PaymentV2' tags: - Payment V2 /v2/payment-v2/sendReceipt/{paymentId}: post: operationId: sendPaymentV2Receipt parameters: - name: paymentId required: true in: path schema: type: string responses: '201': description: '' content: application/json: schema: type: boolean tags: - Payment V2 /v2/payment-v2/receipt-url/{paymentId}: get: operationId: getPaymentReceiptUrl parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: object tags: - Payment V2 /v2/payment-v2/deposit/capture/{id}: post: operationId: captureDepositPaymentV2 parameters: - name: id required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CapturePaymentV2DepositDto' responses: '201': description: '' tags: - Payment V2 /v2/payment-v2/deposit-link: post: operationId: createDepositLink parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDepositLinkDto' responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/PaymentV2' tags: - Payment V2 /v2/payment-v2/status/{paymentId}: get: operationId: getPaymentStatus parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetPaymentStatusResponseDto' tags: - Payment V2 /v2/payment-v2/stripe/subscription/portal/{paymentId}: get: operationId: getStripeSubscriptionPortalSession parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: string tags: - Payment V2 /v2/payment-v2/stripe/subscription/checkout/{paymentId}: get: operationId: getStripeSubscriptionCheckoutSession parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: type: string tags: - Payment V2 /v2/payment-v2/stripe/payment/checkout/{paymentId}: post: operationId: loadStripePaymentLinkCheckout parameters: - name: paymentId required: true in: path schema: type: string - name: reload required: false in: query schema: type: boolean - name: context required: false in: query schema: enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE type: string responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/StripePaymentResultDto' tags: - Payment V2 /v2/payment-v2/stripe/deposit/checkout/{paymentId}: post: operationId: loadStripeDepositLinkCheckout parameters: - name: paymentId required: true in: path schema: type: string - name: reload required: false in: query schema: type: boolean - name: context required: false in: query schema: enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE type: string responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/StripePaymentResultDto' tags: - Payment V2 /v2/payment-v2/ancv/payment/checkout/{paymentId}: post: operationId: loadAncvPaymentLinkCheckout parameters: - name: paymentId required: true in: path schema: type: string - name: reload required: true in: query schema: type: boolean responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/AncvConnectPaymentCheckoutDto' tags: - Payment V2 /v2/payment-v2/ancv/qr-code-payment/status/{paymentId}: get: operationId: getAncvQrCodePaymentStatus parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/GetQrCodePaymentStatusResponseDto' tags: - Payment V2 /v2/payment-v2/ancv/regularize-status/{paymentId}: put: operationId: regularizeAncvPaymentStatus parameters: - name: paymentId required: true in: path schema: type: string responses: '200': description: '' tags: - Payment V2 /v2/payment-v2/square/manualSync: post: operationId: addPaymentToSquareManually parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateSquarePaymentV2Dto' responses: '201': description: '' tags: - Payment V2 components: schemas: AncvConnectFees: type: object properties: amountTTC: type: number amountHT: type: number tva: type: number required: - amountTTC - amountHT - tva StripePaymentResultDto: type: object properties: clientSecret: type: string ref: type: string errorStatus: enum: - requires_action - requires_confirmation - requires_payment_method type: string required: - clientSecret - ref StripePaymentLokkiTransfer: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferType' details: oneOf: - $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCode' allOf: - $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCode' transferId: type: string required: - type - details - transferId OfflinePayment: type: object properties: type: $ref: '#/components/schemas/OfflinePaymentProvider' method: enum: - CARD - CASH - CHECK - CHECK_VACANCES - TRANSFER - SQUARE_TERMINAL - OTHER type: string refundedPaymentId: type: string refundReason: enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - OTHER type: string required: - type - method CreateStripePaymentBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentProvider' details: oneOf: - $ref: '#/components/schemas/CreateStripePaymentPaymentBodyDto' - $ref: '#/components/schemas/CreateStripePaymentRefundBodyDto' - $ref: '#/components/schemas/CreateStripePaymentLongTermDepositBodyDto' - $ref: '#/components/schemas/CreateStripePaymentShortTermDepositBodyDto' - $ref: '#/components/schemas/CreateStripePaymentSubscriptionBodyDto' - $ref: '#/components/schemas/CreateStripePaymentLokkiTransferDto' - $ref: '#/components/schemas/CreateStripePaymentLokkiTransferRefundDto' paymentMethodDetails: allOf: - $ref: '#/components/schemas/StripeExpressPaymentMethodDetail' required: - type - details AncvConnectPaymentDetail: type: object properties: preTransactionId: type: string qrCodeTransactionId: type: string transactionId: type: string method: enum: - QR_CODE - AUTHENTIFICATION type: string StripePaymentShortTermDepositType: type: string enum: - SHORT_TERM_DEPOSIT StripePaymentLongTermDeposit: type: object properties: type: $ref: '#/components/schemas/StripePaymentLongTermDepositType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' stripeCustomerId: type: string paymentIntentId: type: - string - 'null' reason: type: - string - 'null' required: - type - origin - stripeCustomerId - paymentIntentId - reason StripePaymentErrorStatus: type: string enum: - requires_action - requires_confirmation - requires_payment_method EnrichedPaymentV2: type: object properties: providerDetails: oneOf: - $ref: '#/components/schemas/OfflinePayment' - $ref: '#/components/schemas/StripePayment' - $ref: '#/components/schemas/AncvConnectPayment' id: type: string companyId: type: string customerId: type: string customerRef: $ref: '#/components/schemas/CustomerRef' orderRef: $ref: '#/components/schemas/OrderRef' paymentType: enum: - PAYMENT - SHORT_TERM_DEPOSIT - LONG_TERM_DEPOSIT - REFUND - SUBSCRIPTION - LOKKI_TRANSFER - LOKKI_TRANSFER_REFUND type: string status: enum: - CANCELED - WAITING - PROCESSING - REQUIRES_CAPTURE - SUCCEEDED - FAILED type: string amount: type: number amountCaptured: type: number currency: type: string orderId: type: string orderType: enum: - ORDER_LCD - ORDER_LLD - ORDER_EVENT type: string context: enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE type: string provider: enum: - OFFLINE - STRIPE - ANCV type: string squareRef: $ref: '#/components/schemas/PaymentSquareRef' createdAt: format: date-time type: string updatedAt: format: date-time type: string paymentDate: format: date-time type: - string - 'null' captureDate: format: date-time type: - string - 'null' cancelDate: format: date-time type: - string - 'null' expirationDate: format: date-time type: - string - 'null' receiptSent: type: boolean invoiceNumber: type: string payoutDate: format: date-time type: string required: - providerDetails - id - companyId - customerId - customerRef - orderRef - paymentType - status - amount - amountCaptured - currency - orderId - orderType - context - provider - createdAt - updatedAt - paymentDate - captureDate - cancelDate - expirationDate StripePaymentLokkiTransferRefundType: type: string enum: - LOKKI_TRANSFER_REFUND CreateStripePaymentLongTermDepositBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentLongTermDepositType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' stripeCustomerId: type: string required: - type - origin - stripeCustomerId CreateSquarePaymentV2Dto: type: object properties: paymentId: type: string required: - paymentId CreateStripePaymentLokkiTransferRefundDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferRefundType' refundedPaymentId: type: string required: - type - refundedPaymentId OfflinePaymentProvider: type: string enum: - OFFLINE CreateManyPaymentV2BodyDto: type: object properties: payments: type: array items: $ref: '#/components/schemas/CreatePaymentBodyDto' required: - payments PaymentSquareRef: type: object properties: squarePaymentId: type: string squareOrderId: type: string required: - squarePaymentId - squareOrderId CreatePaymentBodyDto: type: object properties: providerDetails: oneOf: - $ref: '#/components/schemas/CreateOfflinePaymentBodyDto' - $ref: '#/components/schemas/CreateStripePaymentBodyDto' - $ref: '#/components/schemas/CreateAncvConnectPaymentBodyDto' customerId: type: string customerRef: $ref: '#/components/schemas/CustomerRef' orderRef: $ref: '#/components/schemas/OrderRef' paymentType: type: string enum: - PAYMENT - SHORT_TERM_DEPOSIT - LONG_TERM_DEPOSIT - REFUND - SUBSCRIPTION - LOKKI_TRANSFER - LOKKI_TRANSFER_REFUND amount: type: number minimum: 0 currency: type: string orderId: type: string orderType: type: string enum: - ORDER_LCD - ORDER_LLD - ORDER_EVENT context: type: string enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE provider: type: string enum: - OFFLINE - STRIPE - ANCV status: type: string enum: - CANCELED - WAITING - PROCESSING - REQUIRES_CAPTURE - SUCCEEDED - FAILED paymentDate: format: date-time type: string paymentIntentId: type: string required: - providerDetails - customerId - customerRef - orderRef - paymentType - amount - currency - orderId - orderType - context - provider StripePaymentSubscription: type: object properties: type: $ref: '#/components/schemas/StripePaymentSubscriptionType' subscriptionId: type: string customerId: type: string subscriptionItemId: type: string subscriptionItemPriceId: type: string invoiceId: type: string paymentIntentId: type: string status: enum: - incomplete - incomplete_expired - trialing - active - past_due - canceled - unpaid - paused type: string required: - type - subscriptionId - customerId - subscriptionItemId - subscriptionItemPriceId - invoiceId - paymentIntentId - status StripePaymentLongTermDepositType: type: string enum: - LONG_TERM_DEPOSIT StripeExpressPaymentMethodDetail: type: object properties: cardType: type: string enum: - standard - premium type: type: string enum: - card - Google-Pay - Apple-Pay brand: type: string brandProduct: type: string countryCode: type: string used3DS: type: boolean feeValues: type: object required: - cardType - type - brand - brandProduct - countryCode - used3DS - feeValues AncvConnectPaymentCheckoutDto: type: object properties: preTransactionId: type: string transactionId: type: string required: - preTransactionId - transactionId StripePaymentProvider: type: string enum: - STRIPE CreateStripePaymentPaymentBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentPaymentType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' context: type: string enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE description: type: string required: - type - origin - context - description CreateOfflinePaymentBodyDto: type: object properties: type: $ref: '#/components/schemas/OfflinePaymentProvider' method: type: string enum: - CARD - CASH - CHECK - CHECK_VACANCES - TRANSFER - SQUARE_TERMINAL - OTHER refundedPaymentId: type: string refundReason: type: string enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - OTHER required: - type - method GetQrCodePaymentStatusResponseDto: type: object properties: status: enum: - PENDING - SUCCESS type: string restToPay: type: number required: - status - restToPay CapturePaymentV2DepositDto: type: object properties: amountToCapture: type: number reason: type: string required: - amountToCapture - reason CreateStripePaymentShortTermDepositBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentShortTermDepositType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' description: type: string stripeCustomerId: type: string required: - type - origin - description OrderRef: type: object properties: id: type: string startDate: format: date-time type: string endDate: format: date-time type: string totalTTC: type: number totalHT: type: number createdFrom: type: string enum: - DASHBOARD - QUICK_ORDER - ONLINE_STORE - RENTAL_PLACE_B2B - RENTAL_PLACE_LOKKI - BORNE - SKISET - SKIMIUM - UNKNOWN - TEST - ADMIN_IMPORT required: - id - startDate - endDate - totalTTC - totalHT - createdFrom StripePaymentRefundType: type: string enum: - REFUND StripePaymentRefund: type: object properties: type: $ref: '#/components/schemas/StripePaymentRefundType' refundId: type: string refundedPaymentId: type: string refundDate: format: date-time type: string refundReason: enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - OTHER type: string required: - type - refundId - refundedPaymentId - refundDate - refundReason GetPaymentV2StatusEnum: type: string enum: - FAILED - SUCCEEDED - WAITING AncvConnectPayment: type: object properties: type: $ref: '#/components/schemas/AncvPaymentProvider' fees: allOf: - $ref: '#/components/schemas/AncvConnectFees' origin: enum: - ONLINE_STORE - PAYMENT_LINK - LOKKI_TRANSFER - RENTAL_PLACE type: string details: $ref: '#/components/schemas/AncvConnectPaymentDetail' required: - type - fees - origin - details PaymentV2: type: object properties: providerDetails: oneOf: - $ref: '#/components/schemas/OfflinePayment' - $ref: '#/components/schemas/StripePayment' - $ref: '#/components/schemas/AncvConnectPayment' id: type: string companyId: type: string customerId: type: string customerRef: $ref: '#/components/schemas/CustomerRef' orderRef: $ref: '#/components/schemas/OrderRef' paymentType: enum: - PAYMENT - SHORT_TERM_DEPOSIT - LONG_TERM_DEPOSIT - REFUND - SUBSCRIPTION - LOKKI_TRANSFER - LOKKI_TRANSFER_REFUND type: string status: enum: - CANCELED - WAITING - PROCESSING - REQUIRES_CAPTURE - SUCCEEDED - FAILED type: string amount: type: number amountCaptured: type: number currency: type: string orderId: type: string orderType: enum: - ORDER_LCD - ORDER_LLD - ORDER_EVENT type: string context: enum: - ONLINE_STORE - PAYMENT_LINK - RENTAL_PLACE - LOKKI_TRANSFER - OFFLINE type: string provider: enum: - OFFLINE - STRIPE - ANCV type: string squareRef: $ref: '#/components/schemas/PaymentSquareRef' createdAt: format: date-time type: string updatedAt: format: date-time type: string paymentDate: format: date-time type: - string - 'null' captureDate: format: date-time type: - string - 'null' cancelDate: format: date-time type: - string - 'null' expirationDate: format: date-time type: - string - 'null' receiptSent: type: boolean required: - providerDetails - id - companyId - customerId - customerRef - orderRef - paymentType - status - amount - amountCaptured - currency - orderId - orderType - context - provider - createdAt - updatedAt - paymentDate - captureDate - cancelDate - expirationDate StripePaymentLokkiTransferRefund: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferRefundType' details: oneOf: - $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCode' allOf: - $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCode' transferReversalId: type: string transferId: type: string refundedPaymentId: type: string required: - type - details - transferReversalId - transferId - refundedPaymentId CreateStripePaymentRefundBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentRefundType' refundedPaymentId: type: string refundReason: type: string enum: - DUPLICATE - FRAUDULENT - REQUESTED_BY_CUSTOMER - OTHER required: - type - refundedPaymentId - refundReason StripePaymentSubscriptionType: type: string enum: - SUBSCRIPTION CreateStripePaymentLokkiTransferPromoCodeDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCodeType' promoCode: type: string discountAmount: type: number discountType: enum: - PERCENTAGE - AMOUNT type: string linkedStripePaymentId: type: string linkedAncvPaymentIds: type: array items: type: string required: - type - promoCode - discountAmount - discountType - linkedStripePaymentId - linkedAncvPaymentIds StripePaymentLokkiTransferType: type: string enum: - LOKKI_TRANSFER StripePaymentPayment: type: object properties: type: $ref: '#/components/schemas/StripePaymentPaymentType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' paymentIntentId: type: - string - 'null' description: type: string required: - type - origin - paymentIntentId - description StripePaymentLokkiTransferPromoCodeType: type: string enum: - PROMO_CODE CustomerRef: type: object properties: id: type: string firstName: type: string lastName: type: string email: type: string companyName: type: string phone: type: string createdFrom: type: string enum: - DASHBOARD - ONLINE_STORE - RENTAL_PLACE_LOKKI required: - id - firstName - lastName - email - companyName - phone - createdFrom GetManyPaymentsResponseDto: type: object properties: total: type: number description: Total number of documents matching the query minimum: 0 example: 150 docs: type: array items: $ref: '#/components/schemas/PaymentV2' required: - total - docs StripePaymentPaymentType: type: string enum: - PAYMENT StripePaymentPaymentOrigin: type: string enum: - PAYMENT_LINK - ONLINE_STORE PaymentFees: type: object properties: applicationFeeHT: type: number applicationFeeTVA: type: number applicationFee: type: number stripeFee: type: number required: - applicationFee - stripeFee CreateAncvConnectPaymentBodyDto: type: object properties: type: $ref: '#/components/schemas/AncvPaymentProvider' origin: type: string enum: - ONLINE_STORE - PAYMENT_LINK - LOKKI_TRANSFER - RENTAL_PLACE preTransactionId: type: string qrCodeTransactionId: type: string transactionId: type: string method: type: string enum: - QR_CODE - AUTHENTIFICATION required: - type - origin GetPaymentStatusResponseDto: type: object properties: status: $ref: '#/components/schemas/GetPaymentV2StatusEnum' failureReason: type: string description: Stable failure code when status is FAILED (e.g. "prepaid_card_not_accepted"). required: - status AncvPaymentProvider: type: string enum: - ANCV StripePaymentShortTermDeposit: type: object properties: type: $ref: '#/components/schemas/StripePaymentShortTermDepositType' origin: $ref: '#/components/schemas/StripePaymentPaymentOrigin' paymentIntentId: type: - string - 'null' stripeCustomerId: type: string description: type: string reason: type: - string - 'null' required: - type - origin - paymentIntentId - stripeCustomerId - description - reason CreateStripePaymentLokkiTransferDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferType' details: $ref: '#/components/schemas/CreateStripePaymentLokkiTransferPromoCodeDto' required: - type - details StripePayment: type: object properties: type: $ref: '#/components/schemas/StripePaymentProvider' details: oneOf: - $ref: '#/components/schemas/StripePaymentPayment' - $ref: '#/components/schemas/StripePaymentRefund' - $ref: '#/components/schemas/StripePaymentLongTermDeposit' - $ref: '#/components/schemas/StripePaymentShortTermDeposit' - $ref: '#/components/schemas/StripePaymentSubscription' - $ref: '#/components/schemas/StripePaymentLokkiTransfer' - $ref: '#/components/schemas/StripePaymentLokkiTransferRefund' errorStatus: $ref: '#/components/schemas/StripePaymentErrorStatus' fees: allOf: - $ref: '#/components/schemas/PaymentFees' paymentMethodDetails: allOf: - $ref: '#/components/schemas/StripeExpressPaymentMethodDetail' errorCode: type: object errorMessage: type: - string - 'null' required: - type - details - fees - paymentMethodDetails - errorCode - errorMessage CreateStripePaymentSubscriptionBodyDto: type: object properties: type: $ref: '#/components/schemas/StripePaymentSubscriptionType' required: - type StripePaymentLokkiTransferPromoCode: type: object properties: type: $ref: '#/components/schemas/StripePaymentLokkiTransferPromoCodeType' promoCode: type: string discountAmount: type: number discountType: enum: - PERCENTAGE - AMOUNT type: string linkedStripePaymentId: type: string linkedAncvPaymentIds: type: array items: type: string required: - type - promoCode - discountAmount - discountType - linkedStripePaymentId - linkedAncvPaymentIds CreateDepositLinkDto: type: object properties: orderId: type: string amount: type: number minimum: 1 orderType: type: string enum: - ORDER_LCD - ORDER_LLD - ORDER_EVENT description: type: string customerRef: $ref: '#/components/schemas/CustomerRef' orderRef: $ref: '#/components/schemas/OrderRef' required: - orderId - amount - orderType - description - customerRef - orderRef securitySchemes: x-access-token: scheme: bearer bearerFormat: JWT type: apiKey in: header name: x-access-token