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

# Add Multiple Gallery Photos

> Adds multiple photos to an artist's gallery in a batch transaction



## OpenAPI

````yaml POST /gallery/add-photos
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:
  /gallery/add-photos:
    post:
      summary: Add Multiple Gallery Photos
      description: Adds multiple photos to an artist's gallery in a batch transaction
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAddPhotosRequest'
      responses:
        '201':
          description: Photos added successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchAddPhotosResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    BatchAddPhotosRequest:
      type: object
      required:
        - photos
      properties:
        photos:
          type: array
          items:
            $ref: '#/components/schemas/AddPhotoRequest'
          maxItems: 50
    BatchAddPhotosResponse:
      type: object
      required:
        - success
        - addedPhotos
        - photos
      properties:
        success:
          type: boolean
          description: Whether the operation was successful
        addedPhotos:
          type: number
          description: Number of photos successfully added
        photos:
          type: array
          items:
            $ref: '#/components/schemas/GalleryPhoto'
          description: Array of added gallery photos
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
    AddPhotoRequest:
      type: object
      required:
        - source
        - url
        - fileId
      properties:
        source:
          type: string
          enum:
            - instagram
            - upload
            - url
          description: Source of the photo
        url:
          type: string
          description: URL of the photo
        thumbnailUrl:
          type: string
          description: Thumbnail URL
        fileId:
          type: string
          description: Unique file identifier
        tags:
          type: array
          items:
            type: string
          description: Photo tags
        sourceData:
          type: object
          description: Additional source-specific metadata
    GalleryPhoto:
      type: object
      required:
        - id
        - artistId
        - artistName
        - url
        - source
        - order
        - uploadedAt
        - isVisible
      properties:
        id:
          type: string
          description: Unique identifier for the photo
        artistId:
          type: string
          description: Reference to artist who owns this photo
        artistName:
          type: string
          description: Denormalized artist name for performance
        artistUsername:
          type: string
          description: Denormalized artist username for discovery feeds
        url:
          type: string
          description: Primary image URL (Instagram CDN, Firebase Storage, etc.)
        thumbnailUrl:
          type: string
          description: Optional thumbnail URL for performance
        source:
          type: string
          enum:
            - instagram
            - upload
            - url
          description: Source of the photo
        sourceData:
          $ref: '#/components/schemas/GalleryPhotoSourceData'
          description: Additional data specific to the photo source
        order:
          type: number
          description: Display order (higher numbers = newer photos = displayed first)
        uploadedAt:
          type: number
          description: Timestamp when photo was added to gallery
        isVisible:
          type: boolean
          description: Whether the photo is visible in the gallery
        tags:
          type: array
          items:
            type: string
          description: Optional tags for discovery/filtering
    GalleryPhotoSourceData:
      type: object
      properties:
        instagramId:
          type: string
          description: Instagram media ID (when source is 'instagram')
        permalink:
          type: string
          description: Instagram permalink URL (when source is 'instagram')
        caption:
          type: string
          description: Instagram media caption (when source is 'instagram')
        mediaType:
          type: string
          enum:
            - IMAGE
            - VIDEO
            - CAROUSEL_ALBUM
          description: Instagram media type (when source is 'instagram')
        urlRefreshedAt:
          type: number
          description: >-
            Timestamp when Instagram URL was last refreshed (when source is
            'instagram')
        originalFileName:
          type: string
          description: Original file name (when source is 'upload')
        fileSize:
          type: number
          description: Size in bytes (for instagram and upload sources)
        storageRef:
          type: string
          description: Firebase Storage reference (for instagram and upload sources)
        originalUrl:
          type: string
          description: Original URL (when source is 'url')

````