Adobe Lightroom Albums API

CRUD operations on albums

OpenAPI Specification

lightroom-albums-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Adobe Lightroom Lightroom Album Assets Albums API
  description: API for creating and managing albums and collections within an Adobe Lightroom cloud catalog. Albums organize assets into user-defined collections. Supports listing, creating, updating, and deleting albums as well as managing the assets within each album.
  version: '2'
  contact:
    name: Adobe Lightroom Developer Support
    url: https://community.adobe.com/t5/lightroom/ct-p/ct-lightroom
  license:
    name: Adobe Terms of Service
    url: https://www.adobe.com/legal/terms.html
  termsOfService: https://www.adobe.com/legal/terms.html
servers:
- url: https://lr.adobe.io/v2
  description: Lightroom Services Production Server
security:
- oauth2:
  - lr_partner_apis
- apiKey: []
tags:
- name: Albums
  description: CRUD operations on albums
paths:
  /catalogs/{catalog_id}/albums:
    get:
      operationId: listAlbums
      summary: Adobe Lightroom List Albums in a Catalog
      description: Retrieves a paginated list of all albums in the specified catalog. Albums may be of subtype collection, collection_set, or project.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/XApiKey'
      - name: subtype
        in: query
        description: Filter albums by subtype
        schema:
          type: string
          enum:
          - collection
          - collection_set
          - project
        example: collection
      - name: limit
        in: query
        description: Maximum number of results
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 500
        example: 10
      - name: offset
        in: query
        description: Pagination offset
        schema:
          type: integer
          default: 0
        example: 10
      responses:
        '200':
          description: Albums retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumsListResponse'
              examples:
                Listalbums200Example:
                  summary: Default listAlbums 200 response
                  x-microcks-default: true
                  value:
                    base: example_value
                    resources:
                    - id: abc123
                      type: example_value
                      subtype: collection
                      created: '2026-01-15T10:30:00Z'
                      updated: '2026-01-15T10:30:00Z'
                    links: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /catalogs/{catalog_id}/albums/{album_id}:
    get:
      operationId: getAlbum
      summary: Adobe Lightroom Get Album Details
      description: Retrieves detailed metadata for a specific album including its name, subtype, cover asset reference, parent album reference, and timestamps.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AlbumId'
      - $ref: '#/components/parameters/XApiKey'
      responses:
        '200':
          description: Album retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponse'
              examples:
                Getalbum200Example:
                  summary: Default getAlbum 200 response
                  x-microcks-default: true
                  value:
                    base: example_value
                    id: abc123
                    type: example_value
                    subtype: example_value
                    created: '2026-01-15T10:30:00Z'
                    updated: '2026-01-15T10:30:00Z'
                    payload:
                      name: Example Title
                      userCreated: '2026-01-15T10:30:00Z'
                      userUpdated: '2026-01-15T10:30:00Z'
                      cover:
                        id: abc123
                      parent:
                        id: abc123
                    links: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: createOrUpdateAlbum
      summary: Adobe Lightroom Create or Update an Album
      description: Creates a new album or updates an existing album. The album_id should be a client-generated UUID for new albums. Set the subtype to collection for a regular album, collection_set for a folder that contains other albums, or project for a managed project.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AlbumId'
      - $ref: '#/components/parameters/XApiKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlbumCreateRequest'
            examples:
              CreateorupdatealbumRequestExample:
                summary: Default createOrUpdateAlbum request
                x-microcks-default: true
                value:
                  subtype: collection
                  payload:
                    name: Example Title
                    userCreated: '2026-01-15T10:30:00Z'
                    userUpdated: '2026-01-15T10:30:00Z'
                    cover:
                      id: abc123
                    parent:
                      id: abc123
      responses:
        '200':
          description: Album updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponse'
              examples:
                Createorupdatealbum200Example:
                  summary: Default createOrUpdateAlbum 200 response
                  x-microcks-default: true
                  value:
                    base: example_value
                    id: abc123
                    type: example_value
                    subtype: example_value
                    created: '2026-01-15T10:30:00Z'
                    updated: '2026-01-15T10:30:00Z'
                    payload:
                      name: Example Title
                      userCreated: '2026-01-15T10:30:00Z'
                      userUpdated: '2026-01-15T10:30:00Z'
                      cover:
                        id: abc123
                      parent:
                        id: abc123
                    links: {}
        '201':
          description: Album created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponse'
              examples:
                Createorupdatealbum201Example:
                  summary: Default createOrUpdateAlbum 201 response
                  x-microcks-default: true
                  value:
                    base: example_value
                    id: abc123
                    type: example_value
                    subtype: example_value
                    created: '2026-01-15T10:30:00Z'
                    updated: '2026-01-15T10:30:00Z'
                    payload:
                      name: Example Title
                      userCreated: '2026-01-15T10:30:00Z'
                      userUpdated: '2026-01-15T10:30:00Z'
                      cover:
                        id: abc123
                      parent:
                        id: abc123
                    links: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteAlbum
      summary: Adobe Lightroom Delete an Album
      description: Deletes the specified album from the catalog. Assets within the album are not deleted; they remain in the catalog.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AlbumId'
      - $ref: '#/components/parameters/XApiKey'
      responses:
        '204':
          description: Album deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /catalogs/{catalog_id}/albums/{album_id}/assets:
    get:
      operationId: listAlbumAssets
      summary: Adobe Lightroom List Assets in an Album
      description: Retrieves a paginated list of assets contained within the specified album.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AlbumId_2'
      - $ref: '#/components/parameters/XApiKey_2'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Album assets retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetsListResponse'
              examples:
                Listalbumassets200Example:
                  summary: Default listAlbumAssets 200 response
                  x-microcks-default: true
                  value:
                    base: example_value
                    resources:
                    - id: abc123
                      type: example_value
                      subtype: image
                      created: '2026-01-15T10:30:00Z'
                      updated: '2026-01-15T10:30:00Z'
                      revision_ids: {}
                      payload: {}
                    links: {}
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: addAssetsToAlbum
      summary: Adobe Lightroom Add Assets to an Album
      description: Adds one or more existing assets to the specified album. The assets must already exist in the catalog.
      tags:
      - Albums
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AlbumId_2'
      - $ref: '#/components/parameters/XApiKey_2'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlbumAssetsRequest'
            examples:
              AddassetstoalbumRequestExample:
                summary: Default addAssetsToAlbum request
                x-microcks-default: true
                value:
                  resources:
                  - id: abc123
                    payload:
                      order: example_value
      responses:
        '200':
          description: Assets added to album successfully
        '401':
          $ref: '#/components/responses/Unauthorized_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    Album:
      type: object
      properties:
        id:
          type: string
          description: Album unique identifier
          example: abc123
        type:
          type: string
          const: album
          example: example_value
        subtype:
          type: string
          description: Album subtype
          enum:
          - collection
          - collection_set
          - project
          example: collection
        created:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        updated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        payload:
          $ref: '#/components/schemas/AlbumPayload'
        links:
          $ref: '#/components/schemas/Links'
    Links_2:
      type: object
      description: HATEOAS links for resource navigation
      additionalProperties:
        type: object
        properties:
          href:
            type: string
            description: URL for the linked resource
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          example: 10
        description:
          type: string
          example: A sample description.
    Links:
      type: object
      additionalProperties:
        type: object
        properties:
          href:
            type: string
    AlbumPayload:
      type: object
      properties:
        name:
          type: string
          description: Display name of the album
          example: Example Title
        userCreated:
          type: string
          format: date-time
          description: When the user created the album
          example: '2026-01-15T10:30:00Z'
        userUpdated:
          type: string
          format: date-time
          description: When the user last modified the album
          example: '2026-01-15T10:30:00Z'
        cover:
          type: object
          description: Cover asset for the album
          properties:
            id:
              type: string
              description: Asset ID used as cover
          example: example_value
        parent:
          type: object
          description: Parent album reference for nested albums
          properties:
            id:
              type: string
              description: Parent album ID
          example: example_value
    AssetsListResponse:
      type: object
      properties:
        base:
          type: string
          description: Base URL for the API
          example: example_value
        resources:
          type: array
          description: List of asset resources
          items:
            $ref: '#/components/schemas/Asset'
          example: []
        links:
          $ref: '#/components/schemas/Links_2'
    AlbumsListResponse:
      type: object
      properties:
        base:
          type: string
          example: example_value
        resources:
          type: array
          items:
            $ref: '#/components/schemas/Album'
          example: []
        links:
          $ref: '#/components/schemas/Links'
    Asset:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the asset
          example: abc123
        type:
          type: string
          description: Resource type
          const: asset
          example: example_value
        subtype:
          type: string
          description: Asset subtype
          enum:
          - image
          - video
          example: image
        created:
          type: string
          format: date-time
          description: Asset creation timestamp
          example: '2026-01-15T10:30:00Z'
        updated:
          type: string
          format: date-time
          description: Asset last updated timestamp
          example: '2026-01-15T10:30:00Z'
        revision_ids:
          type: array
          description: List of revision identifiers
          items:
            type: string
          example: []
        payload:
          type: object
          description: Asset payload containing metadata
          properties:
            captureDate:
              type: string
              format: date-time
              description: Date and time the photo was captured
            userCreated:
              type: string
              format: date-time
              description: When the user created the asset
            userUpdated:
              type: string
              format: date-time
              description: When the user last updated the asset
            importSource:
              type: object
              description: Import source information
              properties:
                fileName:
                  type: string
                  description: Original file name
                importedOnDevice:
                  type: string
                  description: Device used for import
                importTimestamp:
                  type: string
                  format: date-time
                  description: When the asset was imported
            develop:
              type: object
              description: Develop settings applied to the asset
            xmp:
              type: object
              description: XMP metadata
            location:
              type: object
              description: GPS location data
              properties:
                latitude:
                  type: number
                  description: GPS latitude
                longitude:
                  type: number
                  description: GPS longitude
                altitude:
                  type: number
                  description: GPS altitude
                direction:
                  type: number
                  description: Direction the camera was facing
          example: example_value
        links:
          $ref: '#/components/schemas/Links_2'
    AlbumResponse:
      type: object
      properties:
        base:
          type: string
          example: example_value
        id:
          type: string
          example: abc123
        type:
          type: string
          const: album
          example: example_value
        subtype:
          type: string
          example: example_value
        created:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        updated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        payload:
          $ref: '#/components/schemas/AlbumPayload'
        links:
          $ref: '#/components/schemas/Links'
    AlbumCreateRequest:
      type: object
      required:
      - subtype
      - payload
      properties:
        subtype:
          type: string
          enum:
          - collection
          - collection_set
          - project
          example: collection
        payload:
          type: object
          required:
          - name
          properties:
            name:
              type: string
              description: Display name for the album
            userCreated:
              type: string
              format: date-time
            userUpdated:
              type: string
              format: date-time
            cover:
              type: object
              properties:
                id:
                  type: string
            parent:
              type: object
              properties:
                id:
                  type: string
          example: example_value
    AlbumAssetsRequest:
      type: object
      required:
      - resources
      properties:
        resources:
          type: array
          description: List of asset references to add to the album
          items:
            type: object
            required:
            - id
            properties:
              id:
                type: string
                description: Asset ID to add
              payload:
                type: object
                properties:
                  order:
                    type: string
                    description: Sort order within the album
          example: []
    ErrorResponse_2:
      type: object
      properties:
        code:
          type: integer
          description: HTTP status code
          example: 10
        description:
          type: string
          description: Error description
          example: A sample description.
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              field:
                type: string
          example: []
  parameters:
    Offset:
      name: offset
      in: query
      required: false
      description: Number of results to skip for pagination
      schema:
        type: integer
        default: 0
        minimum: 0
    AlbumId_2:
      name: album_id
      in: path
      required: true
      description: Unique identifier of the album
      schema:
        type: string
    AlbumId:
      name: album_id
      in: path
      required: true
      description: Unique identifier of the album (UUID format)
      schema:
        type: string
        format: uuid
    CatalogId:
      name: catalog_id
      in: path
      required: true
      description: Unique identifier of the Lightroom catalog
      schema:
        type: string
    Limit:
      name: limit
      in: query
      required: false
      description: Maximum number of results to return
      schema:
        type: integer
        default: 100
        minimum: 1
        maximum: 500
    XApiKey_2:
      name: X-Api-Key
      in: header
      required: true
      description: API key from the Adobe Developer Console
      schema:
        type: string
    XApiKey:
      name: X-Api-Key
      in: header
      required: true
      description: API key from Adobe Developer Console
      schema:
        type: string
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden_2:
      description: Insufficient permissions. The user has not granted access or the partner application is not entitled.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    Unauthorized_2:
      description: Authentication required or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound_2:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://ims-na1.adobelogin.com/ims/authorize/v2
          tokenUrl: https://ims-na1.adobelogin.com/ims/token/v3
          scopes:
            lr_partner_apis: Access Lightroom partner APIs
    apiKey:
      type: apiKey
      name: X-Api-Key
      in: header
externalDocs:
  description: Lightroom Albums API Documentation
  url: https://developer.adobe.com/lightroom/lightroom-api-docs/api/