> ## 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.

# Update User Profile

> Updates the authenticated user's profile information



## OpenAPI

````yaml PUT /auth/update-profile
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:
  /auth/update-profile:
    put:
      summary: Update User Profile
      description: Updates the authenticated user's profile information
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProfileRequest'
      responses:
        '200':
          description: Profile updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  profile:
                    $ref: '#/components/schemas/UserProfile'
        '400':
          description: Bad request - validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    UpdateProfileRequest:
      type: object
      properties:
        id:
          type: string
          description: The user's unique identifier
        email:
          type: string
          description: The user's email address
        displayName:
          type: string
          description: The user's display name
        firstName:
          type: string
          description: The user's first name
        lastName:
          type: string
          description: The user's last name
        pronouns:
          type: string
          enum:
            - Don't Specify
            - He/Him
            - She/Her
            - They/Them
            - Other
          description: The user's preferred pronouns
        otherPronouns:
          type: string
          description: Custom pronouns when pronouns is 'Other'
        phoneNumber:
          type:
            - string
            - 'null'
          description: The user's phone number
        photoURL:
          type: string
          description: URL to the user's profile photo
        userType:
          type: string
          enum:
            - artist
            - client
            - studio
          description: The type of user account
        howDidYouHearAboutUs:
          type: string
          description: How the user discovered the platform
        preferences:
          $ref: '#/components/schemas/UserPreferences'
          description: User preferences
        artistInfo:
          $ref: '#/components/schemas/ArtistInfo'
          description: Artist-specific information if userType is 'artist'
        clientInfo:
          $ref: '#/components/schemas/ClientInfo'
          description: Client-specific information if userType is 'client'
        studioInfo:
          $ref: '#/components/schemas/StudioInfo'
          description: Studio-specific information if userType is 'studio'
        isSetupFlow:
          type: boolean
          description: >-
            Indicates if this update is part of the initial setup flow. Used to
            trigger additional setup actions like importing Instagram photos.
    UserProfile:
      type: object
      required:
        - id
        - email
        - displayName
        - firstName
        - lastName
        - pronouns
        - createdAt
        - photoURL
        - preferences
      properties:
        id:
          type: string
          description: The user's unique identifier
        email:
          type: string
          description: The user's email address
        displayName:
          type: string
          description: The user's display name
        firstName:
          type: string
          description: The user's first name
        lastName:
          type: string
          description: The user's last name
        pronouns:
          type: string
          enum:
            - Don't Specify
            - He/Him
            - She/Her
            - They/Them
            - Other
          description: The user's preferred pronouns
        otherPronouns:
          type: string
          description: Custom pronouns when pronouns is 'Other'
        phoneNumber:
          type:
            - string
            - 'null'
          description: The user's phone number
        photoURL:
          type: string
          description: URL to the user's profile photo
        createdAt:
          type: number
          description: Timestamp when the user was created
        userType:
          type: string
          enum:
            - artist
            - client
            - studio
          description: The type of user account
        howDidYouHearAboutUs:
          type: string
          description: How the user discovered the platform
        preferences:
          $ref: '#/components/schemas/UserPreferences'
          description: User preferences merged with defaults
        integrations:
          type: object
          properties:
            instagram:
              type: object
              properties:
                userId:
                  type: string
                  description: Instagram user ID
                username:
                  type: string
                  description: Instagram username
                connectedAt:
                  type: number
                  description: Timestamp when Instagram was connected
          description: Connected third-party services (public info only)
        artistInfo:
          $ref: '#/components/schemas/ArtistInfo'
          description: Artist-specific information if userType is 'artist'
        clientInfo:
          $ref: '#/components/schemas/ClientInfo'
          description: Client-specific information if userType is 'client'
        studioInfo:
          $ref: '#/components/schemas/StudioInfo'
          description: Studio-specific information if userType is 'studio'
        isEmailVerified:
          type: boolean
          description: Whether the user's email is verified
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
    UserPreferences:
      type: object
      required:
        - notifications
        - integrations
      properties:
        notifications:
          $ref: '#/components/schemas/NotificationPreferences'
          description: Notification preferences
        integrations:
          $ref: '#/components/schemas/IntegrationPreferences'
          description: Integration preferences
    ArtistInfo:
      type: object
      required:
        - username
        - workLocations
        - tattooStyles
      properties:
        username:
          type: string
          description: Artist's unique username for profile URL
        bio:
          type: string
          description: Artist's biography
        workLocations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
          description: List of locations where the artist works
        tattooStyles:
          type: array
          items:
            type: string
          description: List of tattoo styles the artist specializes in
        links:
          type: array
          items:
            type: object
            required:
              - url
              - order
            properties:
              url:
                type: string
                description: URL of the link
              order:
                type: number
                description: Display order of the link
          description: List of artist's social/portfolio links
        useCustomBookingFlow:
          type: boolean
          description: Whether to use custom booking flow
        customBookingType:
          type: string
          description: Type of custom booking (CustomURL | Email | Instagram)
        customBookingUrl:
          type: string
          description: URL for custom booking flow
        isVerified:
          type: boolean
          description: Whether the artist is verified by TRAZA
        bookingFaqs:
          type: array
          items:
            type: object
            required:
              - type
              - description
            properties:
              type:
                type: string
                enum:
                  - Cancellation/Rescheduling Policy
                  - Pricing Guide
                  - Deposit Policy
                  - Custom
                description: Type of FAQ
              title:
                type: string
                description: Custom title for FAQ (required for Custom type)
              description:
                type: string
                description: FAQ content
          description: List of booking FAQs for clients
        displayDailyAvailability:
          type: boolean
          description: Whether to show hourly indicators on calendar
    ClientInfo:
      type: object
      required:
        - preferredStyles
      properties:
        homeLocation:
          $ref: '#/components/schemas/Location'
          description: Client's location for map defaults
        preferredStyles:
          type: array
          items:
            type: string
          description: List of tattoo styles the client is interested in
    StudioInfo:
      type: object
      required:
        - studioName
        - studioLocation
        - studioStyles
        - email
        - phoneNumber
      properties:
        studioName:
          type: string
          description: Name of the studio
        studioLocation:
          $ref: '#/components/schemas/Location'
          description: Location of the studio
        studioStyles:
          type: array
          items:
            type: string
          description: List of tattoo styles offered at the studio
        artistEmailInvites:
          type: array
          items:
            type: string
          description: List of email addresses for artist invites
        email:
          type: string
          description: Studio contact email
        phoneNumber:
          type: string
          description: Studio contact phone number
    NotificationPreferences:
      type: object
      required:
        - bookings
        - marketing
      properties:
        bookings:
          type: object
          required:
            - newRequests
            - bookingUpdates
            - payments
            - conversations
          properties:
            newRequests:
              type: boolean
              description: Receive notifications for new booking requests
            bookingUpdates:
              type: boolean
              description: Receive notifications for booking status updates
            payments:
              type: boolean
              description: Receive notifications for payment events
            conversations:
              type: boolean
              description: Receive notifications for new messages
        marketing:
          type: boolean
          description: Receive marketing communications
    IntegrationPreferences:
      type: object
      required:
        - stripe
      properties:
        stripe:
          $ref: '#/components/schemas/StripeIntegrationPreferences'
          description: Stripe integration preferences
    Location:
      type: object
      required:
        - address
        - city
        - state
        - country
        - latitude
        - longitude
      properties:
        address:
          type: string
          description: Street address
        city:
          type: string
          description: City name
        state:
          type: string
          description: State/province
        country:
          type: string
          description: Country
        latitude:
          type: number
          description: Location latitude
        longitude:
          type: number
          description: Location longitude
    StripeIntegrationPreferences:
      type: object
      required:
        - isEnabled
        - accountId
        - isChargesEnabled
        - isPayoutsEnabled
      properties:
        isEnabled:
          type: boolean
          description: Whether Stripe integration is enabled
        accountId:
          type: string
          description: Stripe Connect account ID
        isChargesEnabled:
          type: boolean
          description: Whether the account can accept charges
        isPayoutsEnabled:
          type: boolean
          description: Whether the account can receive payouts

````