> ## Documentation Index
> Fetch the complete documentation index at: https://docs.traza.com.au/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Booking

> Creates a new booking request for an artist



## OpenAPI

````yaml POST /bookings/create-booking
openapi: 3.1.0
info:
  title: Tatu API
  description: API documentation for Tatu's booking and artist management system
  version: 1.0.0
servers:
  - url: http://localhost:3000/api
    description: Development server
security: []
paths:
  /bookings/create-booking:
    post:
      summary: Create a new booking
      description: Creates a new booking request for an artist
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBookingRequest'
      responses:
        '200':
          description: Booking created successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                properties:
                  success:
                    type: boolean
                    description: Whether the operation was successful
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreateBookingRequest:
      type: object
      description: >-
        Request to create a booking. Can be either Flash or Custom type.
        Required fields vary by requestType.
      required:
        - userId
        - artistUserId
        - requestType
        - preferredLocationIds
        - isCoverUp
        - tattooPlacement
        - selectedDates
        - desiredTimeOfDay
        - isOver18
        - isPolicyAccepted
      properties:
        userId:
          type: string
          description: ID of the user making the booking
        artistUserId:
          type: string
          description: ID of the artist being booked
        requestType:
          type: string
          enum:
            - Flash
            - Custom
          description: >-
            Type of booking request. Determines which additional fields are
            required.
        preferredLocationIds:
          type: array
          items:
            type: string
          minItems: 1
          description: IDs of preferred locations for the booking
        description:
          type: string
          maxLength: 1000
          description: >-
            Description of the tattoo request. Optional for Flash bookings (max
            1000 chars), required for Custom bookings (min 30 chars).
        isCoverUp:
          type: boolean
          description: Whether this is a cover-up tattoo
        color:
          type: string
          description: Color preference for the tattoo. Required for Custom bookings only.
        length:
          type: string
          description: >-
            Length of the tattoo in appropriate units (optional, must be a
            positive number if provided). For Custom bookings only.
        width:
          type: string
          description: >-
            Width of the tattoo in appropriate units (optional, must be a
            positive number if provided). For Custom bookings only.
        tattooPlacement:
          type: array
          items:
            type: string
          description: Selected placement areas for the tattoo
        otherTattooPlacement:
          type: string
          description: Custom placement description if not in standard options
        tattooStyle:
          type: array
          items:
            type: string
          description: Selected tattoo styles (optional, for Custom bookings only)
        images:
          type: array
          items:
            type: string
          description: Array of image URLs for reference (optional)
        links:
          type: array
          items:
            type: string
            format: uri
          description: Reference links for the tattoo design (optional)
        selectedDates:
          type: array
          items:
            type: string
            format: date
          description: Preferred dates for the tattoo session
        desiredTimeOfDay:
          type: string
          enum:
            - Morning
            - Afternoon
            - Either
          description: Preferred time of day for the session
        additionalDateComments:
          type: string
          description: Additional comments about date preferences
        medicalConditions:
          type: string
          description: Any relevant medical conditions
        isOver18:
          type: boolean
          description: Confirmation that the client is over 18 (must be true)
        isPolicyAccepted:
          type: boolean
          description: Confirmation that the client accepts the policy (must be true)
        flashIds:
          type: array
          items:
            type: string
          description: >-
            Array of flash listing IDs (for Flash booking type only, can be
            empty array)
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string

````