{"openapi":"3.0.0","info":{"title":"Droplinked Core API","description":"Complete API documentation for Droplinked’s eCommerce infrastructure.\n\nThe Core API provides all essential endpoints to build and manage modern online stores — including merchant authentication, product and collection management, carts, orders, payments, and more.\nUse these APIs to create fully integrated Web2 and Web3 commerce experiences powered by Droplinked.","version":"2.0.1"},"servers":[{"url":"https://api.io.droplinked.com","description":"Primary production API server"}],"paths":{"/merchant/register":{"post":{"summary":"Register a new merchant account","description":"Route: MerchantAuthV2Service.registerMerchant","tags":["Merchant"],"operationId":"register-merchant","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/merchant/login":{"post":{"summary":"Login merchant with email and password","description":"Route: MerchantAuthV2Service.loginMerchant","tags":["Merchant"],"operationId":"login-merchant","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/merchant/forgot-password":{"post":{"summary":"Request password reset for merchant account","description":"Route: MerchantAuthV2Service.forgotPassword","tags":["Merchant"],"operationId":"forgot-password","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/merchant/verify-reset-code":{"post":{"summary":"Verify password reset code","description":"Route: MerchantAuthV2Service.verifyResetCode","tags":["Merchant"],"operationId":"verify-reset-code","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/merchant/reset-password":{"post":{"summary":"Reset merchant password with reset token","description":"Route: MerchantAuthV2Service.resetPassword","tags":["Merchant"],"operationId":"reset-password","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/merchant/refresh":{"post":{"summary":"Refresh access token using refresh token","description":"Route: MerchantAuthV2Service.refreshToken","tags":["Merchant"],"operationId":"refresh-token","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}}}},"/merchant/logout":{"post":{"summary":"Logout merchant and invalidate tokens","description":"Route: MerchantAuthV2Service.logoutMerchant","tags":["Merchant"],"operationId":"logout-merchant","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"BearerAuth":[]}]}},"/customer/shop":{"get":{"summary":"Get all customers for a shop (merchant only)","description":"Route: CustomerV2Service.getCustomersByShop","tags":["Customer"],"operationId":"get-customers-by-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/customer/create":{"post":{"summary":"Create a new customer account","description":"Route: CustomerV2Service.createCustomerFromDto","tags":["Customer"],"operationId":"create-customer","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/customer/by-email":{"get":{"summary":"Get customer by email address","description":"Route: CustomerV2Service.getCustomerByEmailFromDto","tags":["Customer"],"operationId":"get-customer-by-email","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]}]}},"/customer/by-wallet":{"get":{"summary":"Get customer by wallet address","description":"Route: CustomerV2Service.getCustomerByWalletFromDto","tags":["Customer"],"operationId":"get-customer-by-wallet","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]}]}},"/customer/{customerId}":{"get":{"summary":"Get customer by ID","description":"Route: CustomerV2Service.getCustomerById","tags":["Customer"],"operationId":"get-customer-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/customer/{customerId}/order-ids":{"get":{"summary":"Get customer order IDs","description":"Route: CustomerV2Service.getCustomerOrderIds","tags":["Customer"],"operationId":"get-customer-order-ids","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/customer/{customerId}/addresses":{"get":{"summary":"Get all addresses for a customer","description":"Route: CustomerAddressV2Service.getCustomerAddressesWithFormatting","tags":["Customer"],"operationId":"get-customer-addresses","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]},"post":{"summary":"Create a new address for a customer","description":"Route: CustomerAddressV2Service.createCustomerAddressFromDto","tags":["Customer"],"operationId":"create-customer-address","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/customer/{customerId}/addresses/{addressId}":{"put":{"summary":"Update a customer address","description":"Route: CustomerAddressV2Service.updateCustomerAddressFromDto","tags":["Customer"],"operationId":"update-customer-address","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}},{"name":"addressId","in":"path","required":true,"description":"addressId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"summary":"Delete a customer address","description":"Route: CustomerAddressV2Service.deleteCustomerAddressWithResponse","tags":["Customer"],"operationId":"delete-customer-address","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}},{"name":"addressId","in":"path","required":true,"description":"addressId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/customer/{customerId}/addresses/add":{"post":{"summary":"Add an existing address to a customer","description":"Route: CustomerAddressV2Service.addAddressToCustomerFromDto","tags":["Customer"],"operationId":"add-address-to-customer","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"customerId","in":"path","required":true,"description":"customerId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/shops/v2":{"get":{"summary":"Get shop by ID (JWT required)","description":"Route: ShopService.getShopById","tags":["Shop"],"operationId":"get-shop-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"patch":{"summary":"Update shop settings (JWT required)","description":"Route: ShopService.updateShop","tags":["Shop"],"operationId":"update-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete shop (JWT required)","description":"Route: ShopService.deleteShop","tags":["Shop"],"operationId":"delete-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/check-url":{"get":{"summary":"Check if a shop URL is available","description":"Route: ShopService.checkShopUrlAvailability","tags":["Shop"],"operationId":"check-shop-url-availability","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]}]}},"/shops/v2/payment-methods":{"get":{"summary":"Get shop payment methods (JWT required)","description":"Route: ShopService.getPaymentMethods","tags":["Shop"],"operationId":"get-shop-payment-methods","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"summary":"Update shop payment methods (JWT required)","description":"Route: ShopService.updatePaymentMethods","tags":["Shop"],"operationId":"update-shop-payment-methods","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/public/{id}":{"get":{"summary":"Get public shop by ID","description":"Route: ShopService.getPublicShop","tags":["Shop"],"operationId":"get-public-shop-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/shops/v2/public/name/{name}":{"get":{"summary":"Get public shop by name","description":"Route: ShopService.getPublicShopByName","tags":["Shop"],"operationId":"get-public-shop-by-name","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"name","in":"path","required":true,"description":"name parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/shops/v2/setup":{"post":{"summary":"Setup shop (JWT required)","description":"Route: ShopService.setupShop","tags":["Shop"],"operationId":"setup-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/domain/{domain}":{"get":{"summary":"Get shop by domain","description":"Route: ShopService.getShopByDomain","tags":["Shop"],"operationId":"get-shop-by-domain","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"domain","in":"path","required":true,"description":"domain parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/shops/v2/private-key":{"get":{"summary":"Get shop private key (JWT required)","description":"Route: ShopService.getShopById","tags":["Shop"],"operationId":"get-shop-private-key","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/circle/wallet":{"post":{"summary":"Create Circle wallet for shop (JWT required)","description":"Route: ShopService.createCircleWallet","tags":["Shop"],"operationId":"create-circle-wallet","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/available/payment-methods":{"get":{"summary":"Get available payment methods (JWT required)","description":"Route: ShopService.getAvailablePaymentMethodsV2","tags":["Shop"],"operationId":"get-available-payment-methods","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shops/v2/login-methods":{"get":{"summary":"Get available login methods","description":"Route: ShopService.getLoginMethods","tags":["Shop"],"operationId":"get-login-methods","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]}]}},"/shops/v2/wallets":{"post":{"summary":"Add wallet to shop (JWT required)","description":"Route: ShopService.addWalletToShop","tags":["Shop"],"operationId":"add-wallet-to-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2":{"post":{"summary":"Create a new product (JWT required, PRODUCER role)","description":"Route: ProductV2Service.createProduct","tags":["Product"],"operationId":"create-product-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Get all products for the authenticated shop (JWT required, PRODUCER role)","description":"Route: ProductV2Service.listProducts","tags":["Product"],"operationId":"get-all-products-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/public/shop/{shopName}":{"get":{"summary":"Get products by shop name (public)","description":"Route: ProductV2Service.getProductsByShopName","tags":["Product"],"operationId":"get-products-by-shop-name-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"shopName","in":"path","required":true,"description":"shopName parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/product-v2/public/by-slug/{slug}":{"get":{"summary":"Get product by slug (public)","description":"Route: ProductV2Service.getProductBySlug","tags":["Product"],"operationId":"get-product-by-slug-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"slug","in":"path","required":true,"description":"slug parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/product-v2/public/{id}":{"get":{"summary":"Get product by ID (public)","description":"Route: ProductV2Service.getProduct","tags":["Product"],"operationId":"get-public-product-by-id-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/product-v2/{id}":{"get":{"summary":"Get product by ID (JWT required, PRODUCER role)","description":"Route: ProductV2Service.getProduct","tags":["Product"],"operationId":"get-product-by-id-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete product by ID (JWT required, PRODUCER role)","description":"Route: ProductV2Service.deleteProduct","tags":["Product"],"operationId":"delete-product-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"patch":{"summary":"Patch product by ID (JWT required, PRODUCER role)","description":"Route: ProductV2Service.patchProduct","tags":["Product"],"operationId":"patch-product-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/{id}/duplicate":{"post":{"summary":"Duplicate product by ID (JWT required, PRODUCER role)","description":"Route: ProductV2Service.duplicateProduct","tags":["Product"],"operationId":"duplicate-product-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/upload/external/images":{"post":{"summary":"Upload external images (JWT required, PRODUCER/ADMIN role)","description":"Route: ProductV2Service.uploadExternalImages","tags":["Product"],"operationId":"upload-external-images-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/shop/all":{"get":{"summary":"Get all products without pagination (JWT required)","description":"Route: ProductV2Service.listAllProducts","tags":["Product"],"operationId":"get-all-products-no-pagination-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/reorder":{"post":{"summary":"Reorder products (JWT required, PRODUCER role)","description":"Route: ProductV2Service.reorderProducts","tags":["Product"],"operationId":"reorder-products-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/product-v2/available/filters/{shopName}":{"get":{"summary":"Get available filters for a shop (public)","description":"Route: ProductV2Service.getAvailableFilters","tags":["Product"],"operationId":"get-available-filters-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"shopName","in":"path","required":true,"description":"shopName parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/collection-v2":{"post":{"summary":"Create a new collection (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.create","tags":["Collection"],"operationId":"create-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Get all collections for the authenticated shop (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.findAll","tags":["Collection"],"operationId":"get-all-collections-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/{id}":{"get":{"summary":"Get collection by ID (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.findOne","tags":["Collection"],"operationId":"get-collection-by-id-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"summary":"Update collection by ID (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.update","tags":["Collection"],"operationId":"update-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete collection by ID (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.remove","tags":["Collection"],"operationId":"delete-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/reorder":{"patch":{"summary":"Reorder collections (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.reorder","tags":["Collection"],"operationId":"reorder-collections-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/{id}/publish":{"patch":{"summary":"Publish collection (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.publish","tags":["Collection"],"operationId":"publish-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/{id}/unpublish":{"patch":{"summary":"Unpublish collection (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.unpublish","tags":["Collection"],"operationId":"unpublish-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/{id}/add-product":{"patch":{"summary":"Add product to collection (JWT required, PRODUCER role)","description":"Route: CollectionV2Service.addProductToCollection","tags":["Collection"],"operationId":"add-product-to-collection-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/collection-v2/published/{shopName}":{"get":{"summary":"Get published collections by shop name (public)","description":"Route: CollectionV2Service.getPublishedCollectionsByShopName","tags":["Collection"],"operationId":"get-published-collections-by-shop-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"shopName","in":"path","required":true,"description":"shopName parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/collection-v2/by-shop-name":{"get":{"summary":"Get collections by shop name (public)","description":"Route: CollectionV2Service.getCollectionByShopName","tags":["Collection"],"operationId":"get-collections-by-shop-name-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]}]}},"/collection-v2/my-collections":{"get":{"summary":"Get collections for authenticated user (JWT required)","description":"Route: CollectionV2Service.getCollectionByAuth","tags":["Collection"],"operationId":"get-my-collections-v2","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/sku-v2":{"get":{"summary":"Get all SKUs for the authenticated shop","description":"Route: SkuV2Service.findSkusByShopId","tags":["SKU"],"operationId":"sku-v2-list","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"BearerAuth":[]}]}},"/sku-v2/{id}":{"get":{"summary":"Get a specific SKU by ID with shop validation","description":"Route: SkuV2Service.findSkuByIdWithShopValidation","tags":["SKU"],"operationId":"sku-v2-get-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"BearerAuth":[]}]}},"/sku-v2/{id}/with-product":{"get":{"summary":"Get a specific SKU by ID with product information","description":"Route: SkuV2Service.getSkuWithProductByIdWithShopValidation","tags":["SKU"],"operationId":"sku-v2-get-with-product","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"BearerAuth":[]}]}},"/shippings/v2/providers":{"get":{"summary":"Get available shipping providers","description":"Route: ShippingService.getProviders","tags":["Shipping"],"operationId":"shipping-v2-get-providers","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shippings/v2":{"post":{"summary":"Create a new shipping model","description":"Route: ShippingService.create","tags":["Shipping"],"operationId":"shipping-v2-create","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Get all shipping models for the authenticated shop","description":"Route: ShippingService.findAllByShopId","tags":["Shipping"],"operationId":"shipping-v2-find-all","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/shippings/v2/{id}":{"get":{"summary":"Get a specific shipping model by ID","description":"Route: ShippingService.findOne","tags":["Shipping"],"operationId":"shipping-v2-find-one","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"summary":"Update an existing shipping model","description":"Route: ShippingService.updateShippingModel","tags":["Shipping"],"operationId":"shipping-v2-update","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete a shipping model (only if no products are using it)","description":"Route: ShippingService.deleteShippingModel","tags":["Shipping"],"operationId":"shipping-v2-delete","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/create":{"post":{"summary":"Create a new gift card","description":"Route: GiftCardService.createGiftCard","tags":["Gift Card"],"operationId":"giftcard-create","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/apply/{code}":{"patch":{"summary":"Apply gift card to cart (authenticated user) — DISABLED, see #1036","description":"Route: GiftCardService.applyGiftCard","tags":["Gift Card"],"operationId":"giftcard-apply","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"code","in":"path","required":true,"description":"code parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/public/apply/{code}/{cartId}":{"patch":{"summary":"Apply gift card to cart (anonymous user) — DISABLED, see #1036","description":"Route: GiftCardService.applyGiftCard","tags":["Gift Card"],"operationId":"giftcard-apply-public","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"code","in":"path","required":true,"description":"code parameter","schema":{"type":"string","example":"example-value"}},{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}]}},"/giftcard/remove":{"patch":{"summary":"Remove gift card from cart (authenticated user)","description":"Route: GiftCardService.removeGiftCard","tags":["Gift Card"],"operationId":"giftcard-remove","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/public/remove/{cartId}":{"patch":{"summary":"Remove gift card from cart (anonymous user)","description":"Route: GiftCardService.removeGiftCard","tags":["Gift Card"],"operationId":"giftcard-remove-public","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}}}},"/giftcard":{"get":{"summary":"Get all gift cards with pagination","description":"Route: GiftCardService.getAllGiftCards","tags":["Gift Card"],"operationId":"giftcard-list","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/expire/{id}":{"patch":{"summary":"Update gift card expiration date","description":"Route: GiftCardService.updateExpireDate","tags":["Gift Card"],"operationId":"giftcard-update-expire","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/giftcard/{giftCardId}/report/export/excel":{"get":{"summary":"Export gift cards to Excel file","description":"Route: GiftCardService.giftCardsExcelReport","tags":["Gift Card"],"operationId":"giftcard-export-excel","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"giftCardId","in":"path","required":true,"description":"giftCardId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/blogs":{"post":{"summary":"Create a new blog post for shop","description":"Route: BlogService.createBlog","tags":["Blog"],"operationId":"blog-create","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Get all blogs of a shop with pagination and search","description":"Route: BlogService.getBlogsOfShop","tags":["Blog"],"operationId":"blog-get-shop-blogs","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/blogs/{id}":{"get":{"summary":"Get a blog by ID with all details","description":"Route: BlogService.getBlogById","tags":["Blog"],"operationId":"blog-get-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"summary":"Update a blog by ID with the provided data","description":"Route: BlogService.updateBlogById","tags":["Blog"],"operationId":"blog-update-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete a blog by ID","description":"Route: BlogService.deleteBlogById","tags":["Blog"],"operationId":"blog-delete-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"BearerAuth":[]}]}},"/blogs/public/shops/{shopName}":{"get":{"summary":"Get public blogs of a shop by name","description":"Route: BlogService.getPublicBlogsByShopName","tags":["Blog"],"operationId":"blog-public-by-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"shopName","in":"path","required":true,"description":"shopName parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/blogs/public/{slug}":{"get":{"summary":"Get a public blog by slug with all details","description":"Route: BlogService.getPublicBlogBySlug","tags":["Blog"],"operationId":"blog-public-by-slug","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"slug","in":"path","required":true,"description":"slug parameter","schema":{"type":"string","example":"example-value"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/carts":{"post":{"summary":"Create a new cart","description":"Route: CartServiceV2.createCart","tags":["Cart"],"operationId":"cart-create","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}":{"get":{"summary":"Get cart by ID","description":"Route: CartServiceV2.getCart","tags":["Cart"],"operationId":"cart-get","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]},"delete":{"summary":"Delete cart by ID","description":"Route: CartServiceV2.deleteCart","tags":["Cart"],"operationId":"cart-delete","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Service response"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/products":{"post":{"summary":"Add product to cart","description":"Route: CartServiceV2.addProductToCart","tags":["Cart"],"operationId":"cart-add-product","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/products/{skuId}":{"patch":{"summary":"Update product quantity in cart","description":"Route: CartServiceV2.updateProductQuantity","tags":["Cart"],"operationId":"cart-update-product-quantity","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}},{"name":"skuId","in":"path","required":true,"description":"skuId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"summary":"Remove product from cart","description":"Route: CartServiceV2.removeProductFromCart","tags":["Cart"],"operationId":"cart-remove-product","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}},{"name":"skuId","in":"path","required":true,"description":"skuId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/customer":{"patch":{"summary":"Update cart customer information","description":"Route: CartServiceV2.updateCartCustomer","tags":["Cart"],"operationId":"cart-update-customer","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/details":{"patch":{"summary":"Update cart details","description":"Route: CartServiceV2.updateCartDetails","tags":["Cart"],"operationId":"cart-update-details","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/shipping":{"get":{"summary":"Get available shipping rates for cart","description":"Route: CartServiceV2.getAvailableShippingRates","tags":["Cart"],"operationId":"cart-get-shipping-rates","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]},"post":{"summary":"Select shipping rate for cart","description":"Route: CartServiceV2.selectShippingRate","tags":["Cart"],"operationId":"cart-select-shipping-rate","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/payment-methods":{"get":{"summary":"Get available payment methods for cart","description":"Route: CartServiceV2.getCartPaymentMethods","tags":["Cart"],"operationId":"cart-get-payment-methods","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/carts/{cartId}/coupon":{"post":{"summary":"Apply coupon to cart","description":"Route: CartServiceV2.applyCoupon","tags":["Cart"],"operationId":"cart-apply-coupon","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]},"delete":{"summary":"Remove coupon from cart","description":"Route: CartServiceV2.removeCoupon","tags":["Cart"],"operationId":"cart-remove-coupon","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"cartId","in":"path","required":true,"description":"cartId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/orders/{orderId}":{"get":{"summary":"Get order by ID","description":"Route: OrderServiceV2.getOrderById","tags":["Order"],"operationId":"order-get-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"orderId","in":"path","required":true,"description":"orderId identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]}]}},"/v2/orders":{"post":{"summary":"Initialize order from cart","description":"Route: OrderServiceV2.initOrder","tags":["Order"],"operationId":"order-init","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]},"get":{"summary":"Get shop orders with pagination (JWT required, PRODUCER role)","description":"Route: OrderServiceV2.getShopOrders","tags":["Order"],"operationId":"order-get-shop-orders","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/v2/orders/export":{"get":{"summary":"Export order report as Excel file (JWT required)","description":"Route: OrderServiceV2.exportOrderReport","tags":["Order"],"operationId":"order-export-report","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","description":"Service response"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/v2/orders/status":{"get":{"summary":"Get order status summary (JWT required)","description":"Route: OrderServiceV2.getOrdersStatus","tags":["Order"],"operationId":"order-get-status","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/address-book":{"post":{"summary":"Create a new address book entry (JWT required)","description":"Route: AddressBooksService.createAddressBook","tags":["Address Book"],"operationId":"address-book-create","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"get":{"summary":"Get all address books for authenticated user (JWT required)","description":"Route: AddressBooksService.getAddressBooks","tags":["Address Book"],"operationId":"address-book-get-all","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/address-book/shop":{"get":{"summary":"Get shop address books (JWT required, PRODUCER/ADMIN role)","description":"Route: AddressBooksService.getShopAddressBook","tags":["Address Book"],"operationId":"address-book-get-shop","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/address-book/shipping":{"get":{"summary":"Get shipping address books (JWT required)","description":"Route: AddressBooksService.getAddressBooks","tags":["Address Book"],"operationId":"address-book-get-shipping","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/address-book/{id}":{"get":{"summary":"Get address book by ID (JWT required)","description":"Route: AddressBooksService.getAddressBook","tags":["Address Book"],"operationId":"address-book-get-by-id","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"put":{"summary":"Update address book by ID (JWT required)","description":"Route: AddressBooksService.updateAddressBooks","tags":["Address Book"],"operationId":"address-book-update","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]},"delete":{"summary":"Delete address book by ID (JWT required)","description":"Route: AddressBooksService.deleteAddressBooks","tags":["Address Book"],"operationId":"address-book-delete","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"parameters":[{"name":"id","in":"path","required":true,"description":"id identifier","schema":{"type":"string","example":"507f1f77bcf86cd799439011"}}],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/address-book/public/anonymous-customer":{"post":{"summary":"Create address book for anonymous customer (public)","description":"Route: AddressBooksService.createAddressBook","tags":["Address Book"],"operationId":"address-book-create-anonymous","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object","description":"NestJS BadRequestException response","properties":{"statusCode":{"type":"number","example":400},"message":{"type":"string","example":"Bad Request"},"error":{"type":"string","example":"Invalid input data"}},"required":["statusCode","message"]}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","description":"NestJS NotFoundException response","properties":{"statusCode":{"type":"number","example":404},"message":{"type":"string","example":"Not Found"},"error":{"type":"string","example":"Resource not found"}},"required":["statusCode","message"]}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","description":"NestJS InternalServerErrorException response","properties":{"statusCode":{"type":"number","example":500},"message":{"type":"string","example":"Internal Server Error"},"error":{"type":"string","example":"An unexpected error occurred"}},"required":["statusCode","message"]}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{}}}},"security":[{"ApiKeyAuth":[]}]}}},"components":{"schemas":{"RegisterMerchantRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","example":"merchant@example.com"},"password":{"type":"string","minLength":8,"example":"SecurePass123!"},"referredCode":{"type":"string","example":"REF123"}}},"LoginMerchantRequest":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email","example":"merchant@example.com"},"password":{"type":"string","minLength":8,"example":"SecurePass123!"}}},"VerifyEmailRequest":{"type":"object","required":["email","verificationCode"],"properties":{"email":{"type":"string","format":"email","example":"merchant@example.com"},"verificationCode":{"type":"string","minLength":6,"maxLength":6,"example":"123456"}}},"ForgotPasswordRequest":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","example":"merchant@example.com"}}},"ResetPasswordRequest":{"type":"object","required":["email","resetCode","newPassword"],"properties":{"email":{"type":"string","format":"email","example":"merchant@example.com"},"resetCode":{"type":"string","minLength":6,"maxLength":6,"example":"123456"},"newPassword":{"type":"string","minLength":8,"example":"NewSecurePass123!"}}},"RegisterMerchantResponse":{"type":"object","properties":{"merchantId":{"type":"string","example":"507f1f77bcf86cd799439011"},"email":{"type":"string","format":"email","example":"merchant@example.com"},"status":{"type":"string","example":"PENDING_VERIFICATION"},"referredCode":{"type":"string","example":"REF123"},"shopInitialized":{"type":"boolean","example":true}}},"LoginMerchantResponse":{"type":"object","properties":{"accessToken":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"refreshToken":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"merchantId":{"type":"string","example":"507f1f77bcf86cd799439011"},"email":{"type":"string","format":"email","example":"merchant@example.com"},"status":{"type":"string","example":"ACTIVE"},"requiresVerification":{"type":"boolean","example":false}}},"StandardResponse":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Operation completed successfully"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-droplinked-api-key"},"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}