openapi: 3.0.3
info:
  title: 'Laravel API Documentation'
  description: ''
  version: 1.0.0
servers:
  -
    url: 'http://localhost'
tags:
  -
    name: Endpoints
    description: ''
paths:
  /api/v1/customer/bookings:
    post:
      summary: ''
      operationId: postApiV1CustomerBookings
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                occasion_id:
                  type: string
                  description: 'The <code>public_id</code> of an existing record in the occasions table.'
                  example: architecto
                event_starts_at:
                  type: string
                  description: 'Must be a valid date. Must be a date after <code>now</code>.'
                  example: '2052-05-26'
                event_ends_at:
                  type: string
                  description: 'Must be a valid date. Must be a date after <code>event_starts_at</code>.'
                  example: '2052-05-26'
                guest_count:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 22
                  nullable: true
                theme:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 120 characters.'
                      example: g
                      nullable: true
                    ar:
                      type: string
                      description: 'Must not be greater than 120 characters.'
                      example: z
                      nullable: true
                  nullable: true
                celebrant_name:
                  type: string
                  description: 'Must not be greater than 120 characters.'
                  example: m
                  nullable: true
                celebrant_dob:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-05-03T04:08:13'
                  nullable: true
                celebrant_gender:
                  type: string
                  description: ''
                  example: male
                  enum:
                    - male
                    - female
                    - other
                  nullable: true
                address:
                  type: object
                  description: ''
                  example: []
                  properties:
                    city_id:
                      type: string
                      description: 'The <code>public_id</code> of an existing record in the cities table.'
                      example: architecto
                    address_line:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: 'n'
                    building:
                      type: string
                      description: 'Must not be greater than 80 characters.'
                      example: g
                      nullable: true
                    floor:
                      type: string
                      description: 'Must not be greater than 20 characters.'
                      example: zmiyvdljnikhwayk
                      nullable: true
                    apartment:
                      type: string
                      description: 'Must not be greater than 20 characters.'
                      example: cmyuwpwlvqwrsitc
                      nullable: true
                    landmark:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: p
                      nullable: true
                    recipient_name:
                      type: string
                      description: 'Must not be greater than 120 characters.'
                      example: s
                    recipient_phone_e164:
                      type: string
                      description: 'Must match the regex /^\+[1-9]\d{7,14}$/.'
                      example: '+36425593142326'
                  required:
                    - city_id
                    - address_line
                    - recipient_name
                    - recipient_phone_e164
              required:
                - occasion_id
                - event_starts_at
                - event_ends_at
                - address
      security: []
  '/api/v1/customer/bookings/{bookingPublicId}':
    get:
      summary: ''
      operationId: getApiV1CustomerBookingsBookingPublicId
      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: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/items':
    post:
      summary: ''
      operationId: postApiV1CustomerBookingsBookingPublicIdItems
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                service_id:
                  type: string
                  description: 'The <code>public_id</code> of an existing record in the services table.'
                  example: architecto
                quantity:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 22
                effective_starts_at:
                  type: string
                  description: 'Must be a valid date.'
                  example: '2026-05-03T04:08:13'
                  nullable: true
                effective_ends_at:
                  type: string
                  description: 'Must be a valid date. Must be a date after <code>effective_starts_at</code>.'
                  example: '2052-05-26'
                  nullable: true
                customization_data:
                  type: object
                  description: ''
                  example: null
                  properties: {  }
                  nullable: true
              required:
                - service_id
                - quantity
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/items/{itemPublicId}':
    delete:
      summary: ''
      operationId: deleteApiV1CustomerBookingsBookingPublicIdItemsItemPublicId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
      -
        in: path
        name: itemPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/submit':
    post:
      summary: ''
      operationId: postApiV1CustomerBookingsBookingPublicIdSubmit
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/modifications':
    get:
      summary: ''
      operationId: getApiV1CustomerBookingsBookingPublicIdModifications
      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: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/modifications/{modificationPublicId}/decide':
    post:
      summary: ''
      operationId: postApiV1CustomerBookingsBookingPublicIdModificationsModificationPublicIdDecide
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                decision:
                  type: string
                  description: ''
                  example: accepted
                  enum:
                    - accepted
                    - rejected
              required:
                - decision
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
      -
        in: path
        name: modificationPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/vendor/booking-vendors:
    get:
      summary: ''
      operationId: getApiV1VendorBookingVendors
      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/vendor/booking-vendors/{bookingVendorPublicId}/accept':
    post:
      summary: ''
      operationId: postApiV1VendorBookingVendorsBookingVendorPublicIdAccept
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: bookingVendorPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/vendor/booking-vendors/{bookingVendorPublicId}/modify':
    post:
      summary: ''
      operationId: postApiV1VendorBookingVendorsBookingVendorPublicIdModify
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                proposal_kind:
                  type: string
                  description: ''
                  example: add_item
                  enum:
                    - add_item
                    - remove_item
                    - change_quantity
                    - change_price
                    - change_slot
                    - add_surcharge
                    - add_note
                vendor_explanation:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 500 characters.'
                      example: b
                      nullable: true
                    ar:
                      type: string
                      description: 'Must not be greater than 500 characters.'
                      example: 'n'
                      nullable: true
                  nullable: true
                changes:
                  type: array
                  description: 'Must have at least 1 items.'
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      change_kind:
                        type: string
                        description: ''
                        example: update
                        enum:
                          - add
                          - remove
                          - update
                      target_item_public_id:
                        type: string
                        description: ''
                        example: architecto
                        nullable: true
                      payload:
                        type: object
                        description: ''
                        example: null
                        properties: {  }
                        nullable: true
                    required:
                      - change_kind
              required:
                - proposal_kind
                - changes
      security: []
    parameters:
      -
        in: path
        name: bookingVendorPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/vendor/booking-vendors/{bookingVendorPublicId}/modifications':
    get:
      summary: ''
      operationId: getApiV1VendorBookingVendorsBookingVendorPublicIdModifications
      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: bookingVendorPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/vendor/booking-vendors/{bookingVendorPublicId}/reject':
    post:
      summary: ''
      operationId: postApiV1VendorBookingVendorsBookingVendorPublicIdReject
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                rejection_reason:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 500 characters.'
                      example: b
                      nullable: true
                    ar:
                      type: string
                      description: 'Must not be greater than 500 characters.'
                      example: 'n'
                      nullable: true
                  nullable: true
      security: []
    parameters:
      -
        in: path
        name: bookingVendorPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/customer/occasions:
    get:
      summary: ''
      operationId: getApiV1CustomerOccasions
      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/vendor/occasions:
    get:
      summary: ''
      operationId: getApiV1VendorOccasions
      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/vendor/categories:
    get:
      summary: ''
      operationId: getApiV1VendorCategories
      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/vendor/services/rental:
    post:
      summary: ''
      operationId: postApiV1VendorServicesRental
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Service name in English.'
                      example: '"Birthday Bounce House"'
                    ar:
                      type: string
                      description: 'Service name in Arabic.'
                      example: '"بيت الارتداد"'
                  required:
                    - en
                    - ar
                short_description:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'Short description in Arabic.'
                      example: architecto
                  required:
                    - en
                    - ar
                category_id:
                  type: integer
                  description: 'ID of the category.'
                  example: 1
                base_price_minor:
                  type: integer
                  description: 'Price in EGP piastres (100 = 1 EGP).'
                  example: 150000
                requires_electricity:
                  type: boolean
                  description: 'Whether requires electricity.'
                  example: true
                requires_outdoor_space:
                  type: boolean
                  description: 'Whether requires outdoor space.'
                  example: false
                default_rental_duration_hours:
                  type: integer
                  description: 'Default rental window in hours.'
                  example: 6
                setup_time_minutes:
                  type: integer
                  description: 'Setup time in minutes.'
                  example: 60
                teardown_time_minutes:
                  type: integer
                  description: 'Teardown time in minutes.'
                  example: 30
                security_deposit_minor:
                  type: integer
                  description: 'Refundable security deposit in piastres.'
                  example: 50000
                minimum_space_sqm:
                  type: integer
                  description: 'Minimum floor space required in square metres.'
                  example: 25
                  nullable: true
              required:
                - name
                - short_description
                - category_id
                - base_price_minor
                - default_rental_duration_hours
      security: []
  '/api/v1/vendor/services/rental/{publicId}':
    patch:
      summary: ''
      operationId: patchApiV1VendorServicesRentalPublicId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Service name in English.'
                      example: '"Birthday Bounce House"'
                    ar:
                      type: string
                      description: 'optional (partial update) Service name in Arabic.'
                      example: '"بيت الارتداد"'
                short_description:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'optional (partial update) Short description in Arabic.'
                      example: architecto
                category_id:
                  type: integer
                  description: 'optional (partial update) ID of the category.'
                  example: 1
                base_price_minor:
                  type: integer
                  description: 'optional (partial update) Price in EGP piastres (100 = 1 EGP).'
                  example: 150000
                requires_electricity:
                  type: boolean
                  description: 'optional (partial update) Whether requires electricity.'
                  example: true
                requires_outdoor_space:
                  type: boolean
                  description: 'optional (partial update) Whether requires outdoor space.'
                  example: false
                default_rental_duration_hours:
                  type: integer
                  description: 'optional (partial update) Default rental window in hours.'
                  example: 6
                setup_time_minutes:
                  type: integer
                  description: 'optional (partial update) Setup time in minutes.'
                  example: 60
                teardown_time_minutes:
                  type: integer
                  description: 'optional (partial update) Teardown time in minutes.'
                  example: 30
                security_deposit_minor:
                  type: integer
                  description: 'optional (partial update) Refundable security deposit in piastres.'
                  example: 50000
                minimum_space_sqm:
                  type: integer
                  description: 'optional (partial update) Minimum floor space required in square metres.'
                  example: 25
                  nullable: true
      security: []
    parameters:
      -
        in: path
        name: publicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/vendor/services/sale:
    post:
      summary: ''
      operationId: postApiV1VendorServicesSale
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Service name in English.'
                      example: '"Custom Birthday Cake"'
                    ar:
                      type: string
                      description: 'Service name in Arabic.'
                      example: '"كيكة عيد ميلاد"'
                  required:
                    - en
                    - ar
                short_description:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'Short description in Arabic.'
                      example: architecto
                  required:
                    - en
                    - ar
                category_id:
                  type: integer
                  description: 'ID of the category.'
                  example: 2
                base_price_minor:
                  type: integer
                  description: 'Price in EGP piastres (100 = 1 EGP).'
                  example: 80000
                is_perishable:
                  type: boolean
                  description: 'Whether the product is perishable.'
                  example: true
                is_made_to_order:
                  type: boolean
                  description: 'Whether the product is made to order.'
                  example: true
                lead_time_hours:
                  type: integer
                  description: 'if is_made_to_order is true. Lead time in hours.'
                  example: 48
                  nullable: true
                stock_quantity:
                  type: integer
                  description: 'Quantity in stock (null means unlimited).'
                  example: 10
                  nullable: true
                customization_fields:
                  type: array
                  description: 'nullable Array of customization field definitions.'
                  example:
                    - architecto
                  items:
                    type: string
              required:
                - name
                - short_description
                - category_id
                - base_price_minor
                - lead_time_hours
      security: []
  '/api/v1/vendor/services/sale/{publicId}':
    patch:
      summary: ''
      operationId: patchApiV1VendorServicesSalePublicId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Service name in English.'
                      example: '"Custom Birthday Cake"'
                    ar:
                      type: string
                      description: 'optional (partial update) Service name in Arabic.'
                      example: '"كيكة عيد ميلاد"'
                short_description:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'optional (partial update) Short description in Arabic.'
                      example: architecto
                category_id:
                  type: integer
                  description: 'optional (partial update) ID of the category.'
                  example: 2
                base_price_minor:
                  type: integer
                  description: 'optional (partial update) Price in EGP piastres (100 = 1 EGP).'
                  example: 80000
                is_perishable:
                  type: boolean
                  description: 'optional (partial update) Whether the product is perishable.'
                  example: true
                is_made_to_order:
                  type: boolean
                  description: 'optional (partial update) Whether the product is made to order.'
                  example: true
                lead_time_hours:
                  type: integer
                  description: 'optional (partial update) required if is_made_to_order is true. Lead time in hours.'
                  example: 48
                stock_quantity:
                  type: integer
                  description: 'optional (partial update) Quantity in stock (null means unlimited).'
                  example: 10
                  nullable: true
                customization_fields:
                  type: array
                  description: 'optional (partial update) Array of customization field definitions.'
                  example:
                    - architecto
                  items:
                    type: string
      security: []
    parameters:
      -
        in: path
        name: publicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/vendor/services/digital:
    post:
      summary: ''
      operationId: postApiV1VendorServicesDigital
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Service name in English.'
                      example: '"Digital Birthday Invitation"'
                    ar:
                      type: string
                      description: 'Service name in Arabic.'
                      example: '"دعوة عيد ميلاد رقمية"'
                  required:
                    - en
                    - ar
                short_description:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'Short description in Arabic.'
                      example: architecto
                  required:
                    - en
                    - ar
                category_id:
                  type: integer
                  description: 'ID of the category.'
                  example: 3
                base_price_minor:
                  type: integer
                  description: 'Price in EGP piastres (100 = 1 EGP).'
                  example: 5000
                delivery_method:
                  type: string
                  description: 'Delivery channel. Must be one of: email, sms, whatsapp, link.'
                  example: '"email"'
                has_expiry:
                  type: boolean
                  description: 'Whether the digital product expires.'
                  example: true
                expiry_days_after_purchase:
                  type: integer
                  description: 'if has_expiry is true. Days until expiry.'
                  example: 30
                  nullable: true
                is_refundable_after_delivery:
                  type: boolean
                  description: 'Whether refundable after delivery.'
                  example: false
                redemption_url_template:
                  type: string
                  description: 'nullable URL template for redemption.'
                  example: '"https://example.com/redeem/{code}"'
                  nullable: true
              required:
                - name
                - short_description
                - category_id
                - base_price_minor
                - delivery_method
                - expiry_days_after_purchase
      security: []
  '/api/v1/vendor/services/digital/{publicId}':
    patch:
      summary: ''
      operationId: patchApiV1VendorServicesDigitalPublicId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Service name in English.'
                      example: '"Digital Birthday Invitation"'
                    ar:
                      type: string
                      description: 'optional (partial update) Service name in Arabic.'
                      example: '"دعوة عيد ميلاد رقمية"'
                short_description:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'optional (partial update) Short description in English.'
                      example: architecto
                    ar:
                      type: string
                      description: 'optional (partial update) Short description in Arabic.'
                      example: architecto
                category_id:
                  type: integer
                  description: 'optional (partial update) ID of the category.'
                  example: 3
                base_price_minor:
                  type: integer
                  description: 'optional (partial update) Price in EGP piastres (100 = 1 EGP).'
                  example: 5000
                delivery_method:
                  type: string
                  description: 'optional (partial update) Delivery channel. Must be one of: email, sms, whatsapp, link.'
                  example: '"email"'
                has_expiry:
                  type: boolean
                  description: 'optional (partial update) Whether the digital product expires.'
                  example: true
                expiry_days_after_purchase:
                  type: integer
                  description: 'optional (partial update) required if has_expiry is true. Days until expiry.'
                  example: 30
                is_refundable_after_delivery:
                  type: boolean
                  description: 'optional (partial update) Whether refundable after delivery.'
                  example: false
                redemption_url_template:
                  type: string
                  description: 'optional (partial update) URL template for redemption.'
                  example: '"https://example.com/redeem/{code}"'
                  nullable: true
      security: []
    parameters:
      -
        in: path
        name: publicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/customer/services:
    get:
      summary: ''
      operationId: getApiV1CustomerServices
      description: ''
      parameters: []
      responses:
        500:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: 'Server Error'
                properties:
                  message:
                    type: string
                    example: 'Server Error'
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                q:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                  nullable: true
                type:
                  type: string
                  description: ''
                  example: rental
                  enum:
                    - rental
                    - sale
                    - digital
                  nullable: true
                category:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                occasion:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                vendor:
                  type: string
                  description: ''
                  example: architecto
                  nullable: true
                price_max:
                  type: integer
                  description: 'Must be at least 0.'
                  example: 39
                  nullable: true
                sort:
                  type: string
                  description: ''
                  example: price_desc
                  enum:
                    - price_asc
                    - price_desc
                    - rating
                    - newest
                  nullable: true
                page:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 67
                  nullable: true
                per_page:
                  type: integer
                  description: 'Must be at least 1. Must not be greater than 50.'
                  example: 16
                  nullable: true
      security: []
  /api/v1/customer/wishlist:
    get:
      summary: ''
      operationId: getApiV1CustomerWishlist
      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/wishlist/items:
    post:
      summary: ''
      operationId: postApiV1CustomerWishlistItems
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                service_id:
                  type: string
                  description: 'The <code>public_id</code> of an existing record in the services table.'
                  example: architecto
              required:
                - service_id
      security: []
  '/api/v1/customer/wishlist/items/{servicePublicId}':
    delete:
      summary: ''
      operationId: deleteApiV1CustomerWishlistItemsServicePublicId
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: servicePublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/admin/vendor-profiles:
    get:
      summary: ''
      operationId: getApiV1AdminVendorProfiles
      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/admin/vendor-profiles/{vendorProfile_public_id}/approve':
    post:
      summary: ''
      operationId: postApiV1AdminVendorProfilesVendorProfile_public_idApprove
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: vendorProfile_public_id
        description: 'The ID of the vendorProfile public.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/admin/vendor-profiles/{vendorProfile_public_id}/reject':
    post:
      summary: ''
      operationId: postApiV1AdminVendorProfilesVendorProfile_public_idReject
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                rejection_reason:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'This field is required when <code>rejection_reason</code> is present. Must not be greater than 1000 characters.'
                      example: b
                    ar:
                      type: string
                      description: 'Must not be greater than 1000 characters.'
                      example: 'n'
                      nullable: true
                  nullable: true
      security: []
    parameters:
      -
        in: path
        name: vendorProfile_public_id
        description: 'The ID of the vendorProfile public.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/admin/vendor-profiles/{vendorProfile_public_id}/approve-for-type':
    post:
      summary: ''
      operationId: postApiV1AdminVendorProfilesVendorProfile_public_idApproveForType
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_type:
                  type: string
                  description: ''
                  example: rental
                  enum:
                    - rental
                    - sale
                    - digital
              required:
                - product_type
      security: []
    parameters:
      -
        in: path
        name: vendorProfile_public_id
        description: 'The ID of the vendorProfile public.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/admin/vendor-profiles/{vendorProfile_public_id}/revoke-type':
    post:
      summary: ''
      operationId: postApiV1AdminVendorProfilesVendorProfile_public_idRevokeType
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product_type:
                  type: string
                  description: ''
                  example: rental
                  enum:
                    - rental
                    - sale
                    - digital
                revoke_reason:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 1000 characters.'
                      example: b
                      nullable: true
                    ar:
                      type: string
                      description: 'Must not be greater than 1000 characters.'
                      example: 'n'
                      nullable: true
                  nullable: true
              required:
                - product_type
      security: []
    parameters:
      -
        in: path
        name: vendorProfile_public_id
        description: 'The ID of the vendorProfile public.'
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/admin/vendor-profiles/{vendorProfile_public_id}/suspend':
    post:
      summary: ''
      operationId: postApiV1AdminVendorProfilesVendorProfile_public_idSuspend
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: vendorProfile_public_id
        description: 'The ID of the vendorProfile public.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/register/customer:
    post:
      summary: ''
      operationId: postApiV1RegisterCustomer
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                phone_e164:
                  type: string
                  description: 'Must match the regex /^\+\d{8,15}$/.'
                  example: '+56425593142326'
                email:
                  type: string
                  description: 'Must be a valid email address. Must not be greater than 255 characters.'
                  example: breitenberg.gilbert@example.com
                  nullable: true
                password:
                  type: string
                  description: 'Must be at least 8 characters.'
                  example: kXaz<m
                preferred_locale:
                  type: string
                  description: ''
                  example: en
                  enum:
                    - en
                    - ar
                  nullable: true
              required:
                - name
                - phone_e164
                - password
      security: []
  /api/v1/phone/otp/send:
    post:
      summary: ''
      operationId: postApiV1PhoneOtpSend
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_e164:
                  type: string
                  description: 'Must match the regex /^\+\d{8,15}$/.'
                  example: '+56425593142326'
              required:
                - phone_e164
      security: []
  /api/v1/phone/verify:
    post:
      summary: ''
      operationId: postApiV1PhoneVerify
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phone_e164:
                  type: string
                  description: 'Must match the regex /^\+\d{8,15}$/.'
                  example: '+56425593142326'
                code:
                  type: string
                  description: 'Must match the regex /^\d{6}$/.'
                  example: '564255'
              required:
                - phone_e164
                - code
      security: []
  /api/v1/login:
    post:
      summary: ''
      operationId: postApiV1Login
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                login:
                  type: string
                  description: ''
                  example: architecto
                password:
                  type: string
                  description: ''
                  example: '|]|{+-'
                device_name:
                  type: string
                  description: 'Must not be greater than 60 characters.'
                  example: v
              required:
                - login
                - password
      security: []
  /api/v1/logout:
    post:
      summary: ''
      operationId: postApiV1Logout
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
  /api/v1/customer/profile:
    get:
      summary: ''
      operationId: getApiV1CustomerProfile
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Endpoints
      security: []
    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 255 characters.'
                  example: b
                preferred_locale:
                  type: string
                  description: ''
                  example: ar
                  enum:
                    - en
                    - ar
                date_of_birth:
                  type: string
                  description: 'Must be a valid date. Must be a date before <code>today</code>.'
                  example: '2022-05-27'
                  nullable: true
                gender:
                  type: string
                  description: ''
                  example: male
                  enum:
                    - male
                    - female
                    - prefer_not_to_say
                  nullable: true
                accepts_marketing:
                  type: boolean
                  description: ''
                  example: false
      security: []
  /api/v1/customer/addresses:
    post:
      summary: ''
      operationId: postApiV1CustomerAddresses
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                city_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the cities table.'
                  example: 16
                label:
                  type: string
                  description: 'Must not be greater than 60 characters.'
                  example: 'n'
                address_line:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: g
                building:
                  type: string
                  description: 'Must not be greater than 50 characters.'
                  example: z
                  nullable: true
                floor:
                  type: string
                  description: 'Must not be greater than 20 characters.'
                  example: miyvdljnikhwaykc
                  nullable: true
                apartment:
                  type: string
                  description: 'Must not be greater than 20 characters.'
                  example: myuwpwlvqwrsitcp
                  nullable: true
                landmark:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: s
                  nullable: true
                latitude:
                  type: number
                  description: 'Must be between -90 and 90.'
                  example: -90
                  nullable: true
                longitude:
                  type: number
                  description: 'Must be between -180 and 180.'
                  example: -180
                  nullable: true
                recipient_name:
                  type: string
                  description: 'Must not be greater than 120 characters.'
                  example: l
                recipient_phone_e164:
                  type: string
                  description: 'Must match the regex /^\+[1-9]\d{1,14}$/. Must not be greater than 20 characters.'
                  example: dzsnrwtujwvlxjkl
                is_default:
                  type: boolean
                  description: ''
                  example: true
              required:
                - city_id
                - label
                - address_line
                - recipient_name
                - recipient_phone_e164
      security: []
  '/api/v1/customer/addresses/{customerAddress_public_id}':
    delete:
      summary: ''
      operationId: deleteApiV1CustomerAddressesCustomerAddress_public_id
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      security: []
    parameters:
      -
        in: path
        name: customerAddress_public_id
        description: 'The ID of the customerAddress public.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/register/vendor:
    post:
      summary: ''
      operationId: postApiV1RegisterVendor
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: 'Must not be greater than 255 characters.'
                  example: b
                phone_e164:
                  type: string
                  description: 'Must match the regex /^\+\d{8,15}$/.'
                  example: '+56425593142326'
                email:
                  type: string
                  description: 'Must be a valid email address. Must not be greater than 255 characters.'
                  example: breitenberg.gilbert@example.com
                  nullable: true
                password:
                  type: string
                  description: 'Must be at least 8 characters.'
                  example: kXaz<m
                business_name:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: b
                    ar:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: 'n'
                  required:
                    - en
                    - ar
                business_type:
                  type: string
                  description: ''
                  example: establishment
                  enum:
                    - individual
                    - company
                    - establishment
                primary_governorate_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the governorates table.'
                  example: 16
                primary_city_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the cities table.'
                  example: 16
                preferred_locale:
                  type: string
                  description: ''
                  example: ar
                  enum:
                    - en
                    - ar
                  nullable: true
              required:
                - name
                - phone_e164
                - password
                - business_name
                - business_type
                - primary_governorate_id
                - primary_city_id
      security: []
  /api/v1/vendor/profile:
    get:
      summary: ''
      operationId: getApiV1VendorProfile
      description: ''
      parameters: []
      responses:
        401:
          description: ''
          content:
            application/json:
              schema:
                type: object
                example:
                  message: Unauthenticated.
                properties:
                  message:
                    type: string
                    example: Unauthenticated.
      tags:
        - Endpoints
      security: []
    put:
      summary: ''
      operationId: putApiV1VendorProfile
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                business_name:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: b
                    ar:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: 'n'
                bio:
                  type: object
                  description: ''
                  example: null
                  properties:
                    en:
                      type: string
                      description: 'Must not be greater than 2000 characters.'
                      example: g
                    ar:
                      type: string
                      description: 'Must not be greater than 2000 characters.'
                      example: z
                business_type:
                  type: string
                  description: ''
                  example: individual
                  enum:
                    - individual
                    - company
                    - establishment
                bank_name:
                  type: string
                  description: 'Must not be greater than 120 characters.'
                  example: m
                  nullable: true
                bank_account_holder:
                  type: string
                  description: 'Must not be greater than 160 characters.'
                  example: i
                  nullable: true
                bank_iban:
                  type: string
                  description: 'Must not be greater than 34 characters.'
                  example: 'y'
                  nullable: true
                bank_swift_bic:
                  type: string
                  description: 'Must not be greater than 11 characters.'
                  example: vdljni
                  nullable: true
                bank_branch:
                  type: string
                  description: 'Must not be greater than 120 characters.'
                  example: k
                  nullable: true
                preferred_locale:
                  type: string
                  description: ''
                  example: ar
                  enum:
                    - en
                    - ar
      security: []
  /api/v1/vendor/documents:
    get:
      summary: ''
      operationId: getApiV1VendorDocuments
      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: postApiV1VendorDocuments
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                doc_type:
                  type: string
                  description: ''
                  example: national_id
                  enum:
                    - cr
                    - tax_card
                    - national_id
                    - iban_proof
                    - other
                file:
                  type: string
                  format: binary
                  description: 'Must be a file. Must not be greater than 10240 kilobytes.'
              required:
                - doc_type
                - file
      security: []
  '/api/v1/vendor/documents/{publicId}/signed-url':
    get:
      summary: ''
      operationId: getApiV1VendorDocumentsPublicIdSignedUrl
      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: publicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/vendor/coverage-areas:
    post:
      summary: ''
      operationId: postApiV1VendorCoverageAreas
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                city_id:
                  type: integer
                  description: 'The <code>id</code> of an existing record in the cities table.'
                  example: 16
                delivery_fee_minor:
                  type: integer
                  description: 'Must be at least 0.'
                  example: 39
                  nullable: true
                delivery_fee_currency:
                  type: string
                  description: 'Must be 3 characters.'
                  example: gzm
                  nullable: true
                min_order_minor:
                  type: integer
                  description: 'Must be at least 0.'
                  example: 8
                  nullable: true
                min_order_currency:
                  type: string
                  description: 'Must be 3 characters.'
                  example: yvd
                  nullable: true
              required:
                - city_id
      security: []
  /api/v1/vendor/business-hours:
    put:
      summary: ''
      operationId: putApiV1VendorBusinessHours
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                hours:
                  type: array
                  description: 'Must have at least 1 items. Must not have more than 7 items.'
                  example:
                    - []
                  items:
                    type: object
                    properties:
                      day_of_week:
                        type: integer
                        description: 'Must be between 0 and 6.'
                        example: 1
                      opens_at:
                        type: string
                        description: 'Must be a valid date in the format <code>H:i</code>.'
                        example: '04:08'
                        nullable: true
                      closes_at:
                        type: string
                        description: 'Must be a valid date in the format <code>H:i</code>. Must be a date after <code>hours.*.opens_at</code>.'
                        example: '2052-05-26'
                        nullable: true
                    required:
                      - day_of_week
              required:
                - hours
      security: []
  '/api/v1/admin/bookings/{bookingPublicId}/refunds':
    post:
      summary: ''
      operationId: postApiV1AdminBookingsBookingPublicIdRefunds
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reason_code:
                  type: string
                  description: ''
                  example: service_unavailable
                  enum:
                    - customer_request
                    - vendor_cancellation
                    - service_unavailable
                    - duplicate_charge
                    - admin_discretion
                reason_notes:
                  type: object
                  description: ''
                  example: []
                  properties:
                    en:
                      type: string
                      description: 'Must be at least 1 character.'
                      example: bngzmiyvdljnikhw
                    ar:
                      type: string
                      description: 'Must be at least 1 character.'
                      example: aykcmyuwpwlvqwrs
                  required:
                    - en
                    - ar
                amount_minor:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 75
              required:
                - reason_code
                - reason_notes
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/admin/refunds/{refundPublicId}':
    get:
      summary: ''
      operationId: getApiV1AdminRefundsRefundPublicId
      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: refundPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/bookings/{bookingPublicId}/payments':
    post:
      summary: ''
      operationId: postApiV1CustomerBookingsBookingPublicIdPayments
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  description: ''
                  example: card
                  enum:
                    - card
              required:
                - method
      security: []
    parameters:
      -
        in: path
        name: bookingPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  '/api/v1/customer/payments/{paymentPublicId}':
    get:
      summary: ''
      operationId: getApiV1CustomerPaymentsPaymentPublicId
      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: paymentPublicId
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/webhooks/paymob:
    post:
      summary: ''
      operationId: postApiV1WebhooksPaymob
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                obj:
                  type: object
                  description: ''
                  example: []
                  properties: {  }
              required:
                - obj
      security: []
  /api/v1/vendor/wallet:
    get:
      summary: ''
      operationId: getApiV1VendorWallet
      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/vendor/wallet/ledger:
    get:
      summary: ''
      operationId: getApiV1VendorWalletLedger
      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/vendor/withdrawals:
    get:
      summary: ''
      operationId: getApiV1VendorWithdrawals
      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: postApiV1VendorWithdrawals
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount_minor:
                  type: integer
                  description: 'Must be at least 1.'
                  example: 16
                currency:
                  type: string
                  description: 'Must be 3 characters.'
                  example: ngz
                bank_account:
                  type: object
                  description: ''
                  example: []
                  properties:
                    account_holder:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: b
                    iban:
                      type: string
                      description: 'Must be at least 4 characters. Must not be greater than 34 characters.'
                      example: 'n'
                    bank_name:
                      type: string
                      description: 'Must not be greater than 255 characters.'
                      example: g
                    swift_bic:
                      type: string
                      description: 'Must not be greater than 11 characters.'
                      example: zmiyvd
                  required:
                    - account_holder
                    - iban
                    - bank_name
                    - swift_bic
              required:
                - amount_minor
                - currency
                - bank_account
      security: []
  '/api/v1/vendor/withdrawals/{public_id}':
    get:
      summary: ''
      operationId: getApiV1VendorWithdrawalsPublic_id
      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: public_id
        description: 'The ID of the public.'
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/customer/notification-preferences:
    get:
      summary: ''
      operationId: getApiV1CustomerNotificationPreferences
      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/notification-preferences/{channel}/{event_category}':
    put:
      summary: ''
      operationId: putApiV1CustomerNotificationPreferencesChannelEvent_category
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                is_enabled:
                  type: boolean
                  description: ''
                  example: false
                quiet_hours_start:
                  type: string
                  description: 'Must match the regex /^\d{2}:\d{2}$/.'
                  example: '64:25'
                  nullable: true
                quiet_hours_end:
                  type: string
                  description: 'This field is required when <code>quiet_hours_start</code> is present. Must match the regex /^\d{2}:\d{2}$/.'
                  example: '64:25'
                  nullable: true
                timezone:
                  type: string
                  description: 'Must not be greater than 60 characters.'
                  example: Asia/Anadyr
                  nullable: true
              required:
                - is_enabled
      security: []
    parameters:
      -
        in: path
        name: channel
        description: ''
        example: architecto
        required: true
        schema:
          type: string
      -
        in: path
        name: event_category
        description: ''
        example: architecto
        required: true
        schema:
          type: string
  /api/v1/vendor/notification-preferences:
    get:
      summary: ''
      operationId: getApiV1VendorNotificationPreferences
      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/vendor/notification-preferences/{channel}/{event_category}':
    put:
      summary: ''
      operationId: putApiV1VendorNotificationPreferencesChannelEvent_category
      description: ''
      parameters: []
      responses: {  }
      tags:
        - Endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                is_enabled:
                  type: boolean
                  description: ''
                  example: true
                quiet_hours_start:
                  type: string
                  description: 'Must match the regex /^\d{2}:\d{2}$/.'
                  example: '64:25'
                  nullable: true
                quiet_hours_end:
                  type: string
                  description: 'This field is required when <code>quiet_hours_start</code> is present. Must match the regex /^\d{2}:\d{2}$/.'
                  example: '64:25'
                  nullable: true
                timezone:
                  type: string
                  description: 'Must not be greater than 60 characters.'
                  example: Asia/Anadyr
                  nullable: true
              required:
                - is_enabled
      security: []
    parameters:
      -
        in: path
        name: channel
        description: ''
        example: architecto
        required: true
        schema:
          type: string
      -
        in: path
        name: event_category
        description: ''
        example: architecto
        required: true
        schema:
          type: string
