openapi: 3.0.3 info: title: 'Laravel API Documentation' description: '' version: 1.0.0 servers: - url: 'http://localhost' tags: - name: Endpoints description: '' components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' security: - default: [] paths: /api/v1/auth/send-otp: post: summary: '' operationId: postApiV1AuthSendOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: 'Must be at least 10 characters. Must not be greater than 15 characters.' example: b user_type: type: string description: '' example: customer enum: - customer - rider required: - phone - user_type security: [] /api/v1/auth/verify-otp: post: summary: '' operationId: postApiV1AuthVerifyOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: phone: type: string description: 'Must be at least 10 characters. Must not be greater than 15 characters.' example: b otp: type: string description: 'Must be 6 characters.' example: ngzmiy user_type: type: string description: '' example: customer enum: - customer - rider required: - phone - otp - user_type security: [] /api/v1/auth/register: post: summary: '' operationId: postApiV1AuthRegister description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 100 characters.' example: b email: type: string description: 'Must be a valid email address. Must not be greater than 150 characters.' example: zbailey@example.net nullable: true required: - name security: [] /api/v1/auth/logout: post: summary: '' operationId: postApiV1AuthLogout description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/v1/auth/me: get: summary: '' operationId: getApiV1AuthMe description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/auth/fcm-token: post: summary: '' operationId: postApiV1AuthFcmToken description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: fcm_token: type: string description: 'Must not be greater than 255 characters.' example: b required: - fcm_token security: [] /api/v1/baker/login: post: summary: '' operationId: postApiV1BakerLogin description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: gbailey@example.net password: type: string description: '' example: '|]|{+-' required: - email - password security: [] /api/v1/customer/home: get: summary: '' operationId: getApiV1CustomerHome description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/customer/categories: get: summary: '' operationId: getApiV1CustomerCategories description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/customer/categories/{slug}/products': get: summary: '' operationId: getApiV1CustomerCategoriesSlugProducts description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: slug description: 'The slug of the category.' example: architecto required: true schema: type: string /api/v1/customer/products/search: get: summary: '' operationId: getApiV1CustomerProductsSearch description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/customer/products/{slug}': get: summary: '' operationId: getApiV1CustomerProductsSlug description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: slug description: 'The slug of the product.' example: architecto required: true schema: type: string /api/v1/customer/flavors: get: summary: '' operationId: getApiV1CustomerFlavors description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/customer/cart: get: summary: '' operationId: getApiV1CustomerCart description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/customer/cart/items: post: summary: '' operationId: postApiV1CustomerCartItems description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: product_id: type: integer description: 'The id of an existing record in the products table.' example: 16 weight: type: string description: 'Must not be greater than 10 characters.' example: ngzmiy nullable: true flavor: type: string description: 'Must not be greater than 80 characters.' example: v nullable: true is_eggless: type: boolean description: '' example: true quantity: type: integer description: 'Must be at least 1.' example: 26 message_on_cake: type: string description: 'Must not be greater than 100 characters.' example: l nullable: true special_instructions: type: string description: 'Must not be greater than 2000 characters.' example: j nullable: true custom_photo_path: type: string description: 'Must not be greater than 255 characters.' example: 'n' nullable: true required: - product_id security: [] '/api/v1/customer/cart/items/{id}': put: summary: '' operationId: putApiV1CustomerCartItemsId description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: quantity: type: integer description: 'Must be at least 1.' example: 16 weight: type: string description: 'Must not be greater than 10 characters.' example: ngzmiy flavor: type: string description: 'Must not be greater than 80 characters.' example: v nullable: true message_on_cake: type: string description: 'Must not be greater than 100 characters.' example: d nullable: true special_instructions: type: string description: 'Must not be greater than 2000 characters.' example: l nullable: true security: [] delete: summary: '' operationId: deleteApiV1CustomerCartItemsId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the item.' example: architecto required: true schema: type: string /api/v1/customer/cart/apply-coupon: post: summary: '' operationId: postApiV1CustomerCartApplyCoupon description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: code: type: string description: 'Must not be greater than 30 characters.' example: b required: - code security: [] /api/v1/customer/cart/validate-pincode: post: summary: '' operationId: postApiV1CustomerCartValidatePincode description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: pincode: type: string description: 'Must be 6 digits.' example: '569775' required: - pincode security: [] /api/v1/customer/cart/delivery-slots: get: summary: '' operationId: getApiV1CustomerCartDeliverySlots description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/customer/custom-cakes/upload-photo: post: summary: '' operationId: postApiV1CustomerCustomCakesUploadPhoto description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: multipart/form-data: schema: type: object properties: photo: type: string format: binary description: 'Must be an image. Must not be greater than 5120 kilobytes.' required: - photo security: [] /api/v1/customer/orders: post: summary: '' operationId: postApiV1CustomerOrders description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: delivery_type: type: string description: '' example: delivery enum: - pickup - delivery address_id: type: integer description: 'The id of an existing record in the addresses table.' example: 16 nullable: true delivery_date: type: string description: 'Must be a valid date.' example: '2026-04-17T12:24:45' delivery_slot: type: string description: 'Must not be greater than 20 characters.' example: ngzmiyvdljnikhwa payment_method: type: string description: '' example: razorpay enum: - razorpay - cod coupon_code: type: string description: 'Must not be greater than 30 characters.' example: 'y' nullable: true required: - delivery_type - delivery_date - delivery_slot - payment_method security: [] get: summary: '' operationId: getApiV1CustomerOrders description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/customer/orders/{id}/verify-payment': post: summary: '' operationId: postApiV1CustomerOrdersIdVerifyPayment description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: razorpay_order_id: type: string description: '' example: architecto razorpay_payment_id: type: string description: '' example: architecto razorpay_signature: type: string description: '' example: architecto required: - razorpay_order_id - razorpay_payment_id - razorpay_signature security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/customer/orders/{id}': get: summary: '' operationId: getApiV1CustomerOrdersId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/customer/orders/{id}/tracking': get: summary: '' operationId: getApiV1CustomerOrdersIdTracking description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/customer/orders/{id}/cancel': post: summary: '' operationId: postApiV1CustomerOrdersIdCancel description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/customer/orders/{id}/invoice': get: summary: '' operationId: getApiV1CustomerOrdersIdInvoice description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/customer/orders/{id}/review': post: summary: '' operationId: postApiV1CustomerOrdersIdReview description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: product_id: type: integer description: 'The id of an existing record in the products table.' example: 16 product_rating: type: integer description: 'Must be at least 1. Must not be greater than 5.' example: 2 rider_rating: type: integer description: 'Must be at least 1. Must not be greater than 5.' example: 2 nullable: true comment: type: string description: 'Must not be greater than 2000 characters.' example: z nullable: true image_path: type: string description: 'Must not be greater than 255 characters.' example: m nullable: true required: - product_id - product_rating security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string /api/v1/customer/addresses: get: summary: '' operationId: getApiV1CustomerAddresses description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] post: summary: '' operationId: postApiV1CustomerAddresses description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: label: type: string description: 'Must not be greater than 30 characters.' example: b address_line1: type: string description: 'Must not be greater than 255 characters.' example: 'n' address_line2: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true landmark: type: string description: 'Must not be greater than 150 characters.' example: z nullable: true city: type: string description: 'Must not be greater than 100 characters.' example: m nullable: true pincode: type: string description: 'Must be 6 digits.' example: '569775' latitude: type: number description: '' example: 4326.41688 nullable: true longitude: type: number description: '' example: 4326.41688 nullable: true is_default: type: boolean description: '' example: true required: - label - address_line1 - pincode security: [] '/api/v1/customer/addresses/{id}': put: summary: '' operationId: putApiV1CustomerAddressesId description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: label: type: string description: 'Must not be greater than 30 characters.' example: b address_line1: type: string description: 'Must not be greater than 255 characters.' example: 'n' address_line2: type: string description: 'Must not be greater than 255 characters.' example: g nullable: true landmark: type: string description: 'Must not be greater than 150 characters.' example: z nullable: true city: type: string description: 'Must not be greater than 100 characters.' example: m nullable: true pincode: type: string description: 'Must be 6 digits.' example: '569775' latitude: type: number description: '' example: 4326.41688 nullable: true longitude: type: number description: '' example: 4326.41688 nullable: true is_default: type: boolean description: '' example: true security: [] delete: summary: '' operationId: deleteApiV1CustomerAddressesId description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the address.' example: architecto required: true schema: type: string /api/v1/customer/profile: put: summary: '' operationId: putApiV1CustomerProfile description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 100 characters.' example: b email: type: string description: 'Must be a valid email address. Must not be greater than 150 characters.' example: zbailey@example.net nullable: true security: [] /api/v1/baker/orders/queue: get: summary: '' operationId: getApiV1BakerOrdersQueue description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/baker/orders/{id}': get: summary: '' operationId: getApiV1BakerOrdersId description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/baker/orders/{id}/start': post: summary: '' operationId: postApiV1BakerOrdersIdStart description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/baker/orders/{id}/items/{itemId}/status': post: summary: '' operationId: postApiV1BakerOrdersIdItemsItemIdStatus description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: preparation_status: type: string description: '' example: not_started enum: - not_started - in_progress - done required: - preparation_status security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string - in: path name: itemId description: '' example: architecto required: true schema: type: string '/api/v1/baker/orders/{id}/ready': post: summary: '' operationId: postApiV1BakerOrdersIdReady description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string /api/v1/baker/shift/start: post: summary: '' operationId: postApiV1BakerShiftStart description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/v1/baker/shift/end: post: summary: '' operationId: postApiV1BakerShiftEnd description: '' parameters: [] responses: { } tags: - Endpoints security: [] /api/v1/baker/history: get: summary: '' operationId: getApiV1BakerHistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/baker/orders/{id}/help': post: summary: '' operationId: postApiV1BakerOrdersIdHelp description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string /api/v1/delivery/toggle-online: post: summary: '' operationId: postApiV1DeliveryToggleOnline description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: is_online: type: boolean description: '' example: true required: - is_online security: [] /api/v1/delivery/dashboard: get: summary: '' operationId: getApiV1DeliveryDashboard description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/delivery/assigned-orders: get: summary: '' operationId: getApiV1DeliveryAssignedOrders description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] '/api/v1/delivery/orders/{id}/accept': post: summary: '' operationId: postApiV1DeliveryOrdersIdAccept description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/reject': post: summary: '' operationId: postApiV1DeliveryOrdersIdReject description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: reason: type: string description: 'Must not be greater than 255 characters.' example: b required: - reason security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/arrived-shop': post: summary: '' operationId: postApiV1DeliveryOrdersIdArrivedShop description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/picked-up': post: summary: '' operationId: postApiV1DeliveryOrdersIdPickedUp description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/arrived-customer': post: summary: '' operationId: postApiV1DeliveryOrdersIdArrivedCustomer description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/verify-otp': post: summary: '' operationId: postApiV1DeliveryOrdersIdVerifyOtp description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: otp: type: string description: 'Must not be greater than 6 characters.' example: bngz required: - otp security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/delivered': post: summary: '' operationId: postApiV1DeliveryOrdersIdDelivered description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/failed': post: summary: '' operationId: postApiV1DeliveryOrdersIdFailed description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: reason: type: string description: 'Must not be greater than 255 characters.' example: b required: - reason security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string '/api/v1/delivery/orders/{id}/cash-collected': post: summary: '' operationId: postApiV1DeliveryOrdersIdCashCollected description: '' parameters: [] responses: { } tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the order.' example: architecto required: true schema: type: string /api/v1/delivery/location: post: summary: '' operationId: postApiV1DeliveryLocation description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: latitude: type: number description: '' example: 4326.41688 longitude: type: number description: '' example: 4326.41688 speed: type: number description: '' example: 4326.41688 nullable: true heading: type: number description: '' example: 4326.41688 nullable: true accuracy: type: number description: '' example: 4326.41688 nullable: true order_id: type: integer description: 'The id of an existing record in the orders table.' example: 16 nullable: true required: - latitude - longitude security: [] /api/v1/delivery/earnings: get: summary: '' operationId: getApiV1DeliveryEarnings description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/delivery/earnings/history: get: summary: '' operationId: getApiV1DeliveryEarningsHistory description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /api/v1/delivery/profile: put: summary: '' operationId: putApiV1DeliveryProfile description: '' parameters: [] responses: { } tags: - Endpoints requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'Must not be greater than 100 characters.' example: b vehicle_number: type: string description: 'Must not be greater than 15 characters.' example: 'n' nullable: true upi_id: type: string description: 'Must not be greater than 100 characters.' example: g nullable: true profile_photo: type: string description: 'Must not be greater than 255 characters.' example: z nullable: true license_document: type: string description: 'Must not be greater than 255 characters.' example: m nullable: true security: [] /api/webhooks/razorpay: post: summary: '' operationId: postApiWebhooksRazorpay description: '' parameters: [] responses: { } tags: - Endpoints security: []