{ "openapi": "3.0.1", "info": { "description": "Lightroom API Documentation, made available through [adobe.io](https://developer.adobe.com). API Change Logs are available [here](https://developer.adobe.com/lightroom/lightroom-api-docs/release-notes/).", "version": "1.0.0", "title": "Lightroom API Documentation", "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "servers": [ { "url": "https://lr.adobe.io/" } ], "tags": [ { "name": "Health", "description": "Lightroom Services status." }, { "name": "Accounts", "description": "Account information for the authenticated user." }, { "name": "Catalogs", "description": "Catalog information for the authenticated user." }, { "name": "Assets", "description": "Information for assets, typically images or videos." }, { "name": "Albums", "description": "Information for albums, which contain references to zero or more assets." } ], "paths": { "/v2/health": { "get": { "tags": [ "Health" ], "summary": "Lightroom Services health check", "description": "Will return the Lightroom server version ID (a hexadecimal value not guaranteed to be sequential) if the services are up.", "operationId": "getHealth", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "version": { "type": "string" } } } } } }, "403": { "$ref": "#/components/responses/ForbiddenKey" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/account": { "get": { "tags": [ "Accounts" ], "summary": "Retrieve the user account metadata", "description": "An account is associated with each Adobe customer and contains the personal information and subscription status. This information can be obtained through the authentication APIs and is provided by Lightroom as a convenience.", "operationId": "getAccount", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "base": { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "id": { "$ref": "#/components/schemas/uuid" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "type": { "type": "string", "enum": [ "account" ] }, "email": { "type": "string" }, "full_name": { "type": "string" }, "first_name": { "type": "string" }, "last_name": { "type": "string" }, "wcd_guid": { "type": "string" }, "country": { "type": "string" }, "config": { "type": "object" }, "entitlement": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "created", "trial", "trial_expired", "subscriber", "subscriber_expired" ], "description": "The status can take on one of five values from created, trial, trial_expired, subscriber, and subscriber_expired. The created status indicates the user has not yet stepped into any Creative Cloud offering, whether trial or subscription. It is a minimally-entitled Adobe ID." }, "trial": { "type": "object" }, "current_subs": { "type": "object" }, "storage": { "type": "object", "properties": { "used": { "type": "integer", "description": "The size in bytes of content this account that count against the storage limit." }, "warn": { "type": "integer", "description": "Value of used at which the client applications should start warning the user. Absence indicates no warning should be given." }, "limit": { "type": "integer", "description": "Specifies the storage limit in bytes that should be enforced for this account. It will always be greater than or equal to the display_limit." }, "display_limit": { "type": "integer", "description": "Specifies the storage limit in bytes that is displayed to the user for this account." } } }, "deletion_date": { "type": "string" } } } }, "example": { "base": "https://lr.adobe.io/", "id": "96e656e3812b4c2fb670fa74b6a7ad74", "type": "account", "created": "2017-09-12T17:22:41.751746Z", "updated": "2019-02-02T17:17:39.663862Z", "email": "customer@domain.com", "full_name": "Adobe Customer", "first_name": "Adobe", "last_name": "Customer", "wcd_guid": "6CEE5CFE464CC743992017B8", "country": "US", "config": { "nimbus_show_different_ui": true, "search_index": true, "purge_assets_after": 5184000 }, "entitlement": { "status": "subscriber", "trial": { "start": "2017-09-12T17:22:41.751746Z", "end": "2018-02-16T10:35:24.593005Z" }, "current_subs": { "product_id": "lightroom", "store": "adobe", "purchase_date": "2019-02-04T07:25:59.121277Z", "sao": { "inpkg_CCLE": "0", "inpkg_CCSN": "0", "inpkg_LRMP": "1", "inpkg_PHLT": "0" } }, "storage": { "used": 11998409416, "warn": 85899345920, "limit": 112742891520, "display_limit": 107374182400 }, "deletion_date": "2020-05-06T15:17:51.216255Z" } } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/ForbiddenKey" }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AccountNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalog": { "get": { "tags": [ "Catalogs" ], "summary": "Retrieve the user catalog metadata", "description": "A catalog is the topmost container of resources for a user. Each catalog contains zero or more assets, albums, or other resources.", "operationId": "getCatalog", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "base": { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "id": { "$ref": "#/components/schemas/uuid" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "type": { "type": "string", "enum": [ "catalog" ] }, "subtype": { "type": "string", "enum": [ "lightroom" ] }, "payload": { "title": "Catalog Payload Schema", "type": "object", "properties": { "userCreated": { "$ref": "#/components/schemas/utcDateTime" }, "userUpdated": { "$ref": "#/components/schemas/utcDateTime" }, "name": { "$ref": "#/components/schemas/max1024CharacterString" }, "assetSortOrder": { "type": "string", "enum": [ "captureDateAsc", "captureDateDesc", "importTimestampAsc", "importTimestampDesc", "fileNameAsc", "fileNameDesc", "ratingAsc", "ratingDesc", "userUpdatedAsc", "userUpdatedDesc" ] }, "presets": { "type": "object", "properties": { "favorites": { "type": "object", "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1 }, "profiles": { "type": "object", "properties": { "favorites": { "type": "object", "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1 }, "settings": { "type": "object", "properties": { "universal": { "type": "object", "properties": { "connections": { "type": "object", "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1 }, "desktop": { "type": "object", "additionalProperties": true, "minProperties": 1 }, "web": { "type": "object", "additionalProperties": true, "minProperties": 1 }, "mobile": { "type": "object", "additionalProperties": true, "minProperties": 1 }, "photosdk": { "type": "object", "additionalProperties": true, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "required": [ "name" ] }, "links": { "type": "object" } }, "example": { "created": "2019-07-02T15:16:13.556610Z", "updated": "2019-07-02T15:26:42.838366Z", "base": "https://lr.adobe.io/v2/", "id": "bf7337d9355c41b7875c9392f918362a", "type": "catalog", "subtype": "lightroom", "payload": { "userCreated": "2019-07-02T15:38:14Z", "userUpdated": "2019-08-16T16:05:13Z", "name": "Lightroom Classic Catalog Name", "presets": { "favorites": { "09E4A533BEFC4AC582FCF1EF953EB150": true, "30E266DB24AE09B97DC3DD687AC298B1": false, "5C9AF6F007B96EF1E0DED43E77BE87C3": true } }, "profiles": { "favorites": { "53A4A533BAFB4AB582FBF1AF353AB155": true, "35A266DB24AA53B37DB3DD687AB238B1": true, "5B3AF6F557B36AF1A5DAD43A77BA87B3": false } }, "settings": { "universal": { "connections": { "connection_api_key": { "created": "2019-07-02T15:26:42.838366Z" } } }, "desktop": { "desktop_key": "desktop_setting" }, "web": { "web_key": "web_setting" }, "mobile": { "mobile_key": "mobile_setting" }, "photosdk": { "sdk_key": "sdk_setting" } } }, "links": { "self": { "href": "catalogs/bf7337d9355c41b7875c9392f918362a" }, "/rels/subtyped_albums":{ "href":"catalogs/bf7337d9355c41b7875c9392f918362a/albums?subtype={subtype}", "templated":true }, "/rels/subtyped_assets":{ "href":"catalogs/bf7337d9355c41b7875c9392f918362a/assets?subtype={subtype}", "templated":true } } } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"}, {"$ref": "#/components/schemas/AccessForbiddenAccountStateError"}, {"$ref": "#/components/schemas/UnexpectedEntitlementError"}, {"$ref": "#/components/schemas/EntitlementExpiredError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" }, "AccessForbiddenAccountStateError": { "$ref": "#/components/examples/AccessForbiddenAccountStateExample" }, "UnexpectedEntitlementError": { "$ref": "#/components/examples/UnexpectedEntitlementExample" }, "EntitlementExpiredError": { "$ref": "#/components/examples/EntitlementExpiredExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/CatalogNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets/{asset_id}" : { "put": { "tags": [ "Assets" ], "summary": "Create asset", "description": "Create a new asset with initial metadata and import information.", "operationId": "createAsset", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which the asset will be created.", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Client-generated Lightroom unique identifier for the new asset.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Initial asset metadata and import information.", "required": true, "content": { "application/json": { "schema": { "type": "object", "required" : [ "captureDate" ], "properties": { "subtype": { "type": "string", "enum": [ "image", "video" ] }, "payload": { "type": "object", "properties": { "userCreated": { "$ref": "#/components/schemas/iso8601DateTime" }, "userUpdated": { "$ref": "#/components/schemas/iso8601DateTime" }, "captureDate": { "type": "string", "enum": [ "0000-00-00T00:00:00", "iso8601DateTime" ], "description": "Capture date of the asset in ISO-8601 format. Will be populated by the server automatically from the master if set to '0000-00-00T00:00:00'" }, "importSource": { "type": "object", "required" : [ "fileName", "importedOnDevice", "importedBy", "importTimestamp" ], "properties": { "fileName": { "type": "string" }, "importedOnDevice": { "type": "string", "description": "Name of the device that imported the image." }, "importedBy": { "type": "string", "description": "Account ID of the user who imported the asset." }, "importTimestamp": { "$ref": "#/components/schemas/iso8601DateTime" } } } } } } } } } }, "responses": { "201": { "description": "Created" }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestJSON"}, {"$ref": "#/components/schemas/InvaildRequestSubtype"}, {"$ref": "#/components/schemas/InvaildRequestPayload"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" }, "InvaildRequestJSON": { "$ref": "#/components/examples/InvaildRequestJSONExample" }, "InvaildRequestSubtype": { "$ref": "#/components/examples/InvaildRequestSubtypeExample" }, "InvaildRequestPayload": { "$ref": "#/components/examples/InvaildRequestPayloadExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/ForbiddenKeyError"}, {"$ref": "#/components/schemas/ResourceExistsError"}, {"$ref": "#/components/schemas/QuotaExceededError"} ] }, "examples": { "InvalidApiKey": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "ResourceExists": { "$ref": "#/components/examples/ResourceExistsErrorExample" }, "QuotaExceeded": { "$ref": "#/components/examples/AssetQuotaExceededErrorExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AssetNotFoundExample" } } } } }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "get": { "tags": [ "Assets" ], "summary": "Get a catalog asset", "description": "Retrieves information about a single asset in a catalog that the caller owns. Successful response may also return invalid flag in the rendition link for the asset. A rendition becomes invalid when an asset is edited after rendition has been generated. New renditions (only 2560 and fullsize) can be generated via Generate Renditions API. The read xmp/develop link in the response will have the invalid flag as true if asset with SHA256 has been created but external xmp/develop has not been uploaded yet.", "operationId": "getAsset", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Identifier of the asset", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/SuccessImageAsset"}, {"$ref": "#/components/schemas/SuccessVideoAsset"} ] }, "examples": { "SuccessImageAsset": { "$ref": "#/components/examples/SuccessImageAssetExample" }, "SuccessVideoAsset": { "$ref": "#/components/examples/SuccessVideoAssetExample" } } } } }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestAssetIds"}, {"$ref": "#/components/schemas/InvaildRequestGroup"}, {"$ref": "#/components/schemas/InvaildRequestName"}, {"$ref": "#/components/schemas/InvaildRequestFavorite"}, {"$ref": "#/components/schemas/InvaildRequestMissingSubtypeWithGroupOrName"}, {"$ref": "#/components/schemas/InvaildRequestMissingSubtypeWithFavorite"}, {"$ref": "#/components/schemas/InvaildRequestInvalidDateTime"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" }, "InvaildRequestAssetIds": { "$ref": "#/components/examples/InvaildRequestAssetIdsExample" }, "InvaildRequestGroup": { "$ref": "#/components/examples/InvaildRequestGroupExample" }, "InvaildRequestName": { "$ref": "#/components/examples/InvaildRequestNameExample" }, "InvaildRequestFavorite": { "$ref": "#/components/examples/InvaildRequestFavoriteExample" }, "InvaildRequestMissingSubtypeWithGroupOrName": { "$ref": "#/components/examples/InvaildRequestMissingSubtypeWithGroupOrNameExample" }, "InvaildRequestMissingSubtypeWithFavorite": { "$ref": "#/components/examples/InvaildRequestMissingSubtypeWithFavoriteExample" }, "InvaildRequestInvalidDateTime": { "$ref": "#/components/examples/InvaildRequestInvalidDateTimeExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/ForbiddenKeyError"}, {"$ref": "#/components/schemas/ForbiddenClientError"} ] }, "examples": { "InvalidApiKey": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "ForbiddenClient": { "$ref": "#/components/examples/ForbiddenClientErrorExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets" : { "get": { "tags": [ "Assets" ], "summary": "Retrieve assets", "description": "Retrieve a list of existing assets that caller owns. Successful response may also return invalid flag in the rendition link for the asset. A rendition becomes invalid when an asset is edited after rendition has been generated. New renditions (only 2560 and fullsize) can be generated via Generate Renditions API. The read xmp/develop link in the response will have the invalid flag as true if asset with SHA256 has been created but external xmp/develop has not been uploaded yet.", "operationId": "getAssets", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "updated_since", "in": "query", "description": "Starting timestamp", "schema": { "type": "string" } }, { "name": "captured_before", "in": "query", "description": "Used to request assets captured before a given time. captured_before will be found in the \"links.next.href\" link. If no links.next is included in a listing response, this is a hint from the server that there are no assets in the catalog with a date captured_before the last asset in the list (the client has reached the \"bottom\" of the list). captured_before may not be used in conjunction with captured_after.", "schema": { "type": "string" } }, { "name": "captured_after", "in": "query", "description": "Used to request assets captured after a given time. captured_after will be found in the \"links.prev.href\" link. If no links.prev is included in a listing response, this is a hint from the server that there are no assets in the catalog with a date captured_after the first asset in the list (the client has reached the \"top\" of the list). Note: assets imported without a captureDate payload property default to the value \"0000-00-00T00:00:00\". To list these assets set captured_after to \"-0001-12-31T23:59:59\". captured_after may not be used in conjunction with captured_before.", "schema": { "type": "string" } }, { "name": "limit", "in": "query", "description": "Number of assets to return. Default value is 100. Maximum is 500. Please note that the response may contain more than 'limit' number of assets returned if the assets at the 'limit' boundary has the same capture_date. For example if there are 5 assets in a catalog and the 3rd, 4th and 5th assets all have the same capture dates the response will contain all 5 assets whether 'limit' is 3, 4 or 5.", "schema": { "type": "integer" } }, { "name": "sha256", "in": "query", "description": "SHA256 hash value of original file. Assets with a matching SHA256 hash will be returned. May be used in conjunction with subtype.", "schema": { "type": "string" } }, { "name": "hide_stacked_assets", "in": "query", "description": "To show or hide assets inside stacks in the catalog. If hide_stacked_assets is passed as true, assets inside stacks won't be returned. Default value is false.", "schema": { "type": "boolean" } }, { "name": "subtype", "in": "query", "description": "Semi-colon separated asset subtype values.", "schema": { "type": "string" } }, { "name": "asset_ids", "in": "query", "description": "Set of 1 - 100 comma separated asset_id values. Other parameters can not be used in conjunction with this parameter.", "schema": { "type": "string" } }, { "name": "exclude", "in": "query", "description": "Used to request the list for different types of assets excluding incomplete or complete image and video assets. The valid values are \"incomplete\" and \"complete\". An image or video asset is considered to be complete if its proxy or original upload exists. An asset of subtypes profile, preset, camera_profile or lens_profile is considered complete if its original upload exists.", "schema": { "type": "string" } }, { "name": "group", "in": "query", "description": "Semi-colon separated group values. Subtype parameter of \"preset\" or \"profile\" is required when using this parameter.", "schema": { "type": "string" } }, { "name": "name", "in": "query", "description": "Semi-colon separated name values. Subtype parameter of \"preset\" or \"profile\" is required when using this parameter.", "schema": { "type": "string" } }, { "name": "favorite", "in": "query", "description": "Favorite status, subtype parameter of \"preset\" is required when using this parameter.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/Success"}, {"$ref": "#/components/schemas/SuccessAssetIdsQueryParam"} ] }, "examples": { "Success": { "$ref": "#/components/examples/SuccessExample" }, "SuccessQueryParam": { "$ref": "#/components/examples/SuccessQueryParamExample" } } } } }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestAssetIds"}, {"$ref": "#/components/schemas/InvaildRequestGroup"}, {"$ref": "#/components/schemas/InvaildRequestName"}, {"$ref": "#/components/schemas/InvaildRequestFavorite"}, {"$ref": "#/components/schemas/InvaildRequestMissingSubtypeWithGroupOrName"}, {"$ref": "#/components/schemas/InvaildRequestMissingSubtypeWithFavorite"}, {"$ref": "#/components/schemas/InvaildRequestInvalidDateTime"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" }, "InvaildRequestAssetIds": { "$ref": "#/components/examples/InvaildRequestAssetIdsExample" }, "InvaildRequestGroup": { "$ref": "#/components/examples/InvaildRequestGroupExample" }, "InvaildRequestName": { "$ref": "#/components/examples/InvaildRequestNameExample" }, "InvaildRequestFavorite": { "$ref": "#/components/examples/InvaildRequestFavoriteExample" }, "InvaildRequestMissingSubtypeWithGroupOrName": { "$ref": "#/components/examples/InvaildRequestMissingSubtypeWithGroupOrNameExample" }, "InvaildRequestMissingSubtypeWithFavorite": { "$ref": "#/components/examples/InvaildRequestMissingSubtypeWithFavoriteExample" }, "InvaildRequestInvalidDateTime": { "$ref": "#/components/examples/InvaildRequestInvalidDateTimeExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/ForbiddenKeyError"}, {"$ref": "#/components/schemas/ForbiddenClientError"} ] }, "examples": { "InvalidApiKey": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "ForbiddenClient": { "$ref": "#/components/examples/ForbiddenClientErrorExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets/{asset_id}/master": { "put": { "tags": [ "Assets" ], "summary": "Create an asset original file", "description": "Create and upload an original file for the asset. Up to 200 MB may be uploaded per invocation, and larger files may be uploaded by calling this API multiple times with Content-Range headers for each part. When all parts are received the upload will be consolidated asynchronously. All partial uploads should include optional rendition type parameters to ensure the last part received has the necessary options for request post-processing.", "operationId": "createAssetOriginal", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "Content-Length", "in": "header", "description": "Length in bytes of the content.", "schema": { "type": "integer" } }, { "name": "Content-Range", "in": "header", "description": "Byte range for the request, including first and last bytes and entity length as defined in RFC 2616. Should be included only when the data cannot be uploaded in a single call.", "schema": { "type": "string" } }, { "name": "Content-Type", "in": "header", "description": "Content type. For jpeg assets, the only allowed type is 'image/jpeg'. For camera raw assets the type is 'application/octet-stream'. For video assets, the content-type is of the format video/* where * depends upon the video type and can contain only ASCII characters. Or the content-type of video can be application/octet-stream;video", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which the asset will be created.", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Identifier of the asset to which the XMP settings are associated.", "required": true, "schema": { "type": "string" } } ], "responses": { "201": { "description": "Created" }, "400": { "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvaildRequestGUID" }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/ForbiddenKey" }, "413": { "$ref": "#/components/responses/TooLarge" }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets/{asset_id}/renditions": { "post": { "tags": [ "Assets" ], "summary": "Generate renditions for an original file", "description": "Generate renditions for an original file asynchronously. Allowed rendition types are fullsize and 2560. Generated rendition will be deleted after 1 day automatically.", "operationId": "generateRenditions", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "X-Generate-Renditions", "in": "header", "description": "One or multiple of the supported rendition types separated by ','. Supported rendition types are : ['fullsize', '2560'].", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "Content-Length", "in": "header", "description": "Length in bytes of the content.", "schema": { "type": "integer" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which the asset was created.", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Identifier of the asset for which rendition gets generated.", "required": true, "schema": { "type": "string" } } ], "responses": { "202": { "description": "Accepted.(Client needs to poll on rendition link in response and accessing it might not immediately returns a success response.)", "content": { "application/json": { "schema": { "type": "object", "properties": { "base": { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "links": { "type": "object" } }, "example": { "base": "", "links": { "/rels/rendition_type/": { "href": "assets//renditions/" } } } } } } }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestSubtype"}, {"$ref": "#/components/schemas/InvaildRequestMissingParameter"}, {"$ref": "#/components/schemas/InvaildRequestRenditionType"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" }, "InvaildRequestSubtype": { "$ref": "#/components/examples/InvaildRequestSubtypeExample" }, "InvaildRequestMissingParameter": { "$ref": "#/components/examples/InvaildRequestMissingParameterExample" }, "InvaildRequestRenditionType": { "$ref": "#/components/examples/InvaildRequestRenditionTypeExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/ForbiddenKey" }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AssetNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets/{asset_id}/renditions/{rendition_type}": { "get": { "tags": [ "Assets" ], "summary": "Get latest asset rendition", "description": "Get latest asset rendition of specified type. It returns 404 if rendition does not exist. It returns 404 in another case when rendition is invalid (only for rendition type 2560 and fullsize)", "operationId": "getAssetRendition", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which asset exists.", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Identifier of the asset for which to fetch rendition.", "required": true, "schema": { "type": "string" } }, { "name": "rendition_type", "in": "path", "description": "One of the supported rendition types. Supported rendition types are : ['thumbnail2x', 'fullsize', '640', '1280', '2048', '2560'].", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Asset rendition file. Response content type : image/jpeg" }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestRenditionType"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/RenditionInvaildRequestGUIDExample" }, "InvaildRequestRenditionType": { "$ref": "#/components/examples/InvaildRequestRenditionTypeExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/RenditionNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/assets/{asset_id}/xmp/develop": { "put": { "tags": [ "Assets" ], "summary": "Create asset external xmp develop setting file", "description": "This API support two workflows. The first workflow is to upload external XMP develop settings file for the asset. Content-type header for this case is application/rdf+xml. The second workflow is to create an external XMP develop settings file by copying from another asset's external xmp develop setting file. Content-type header for this case is application/json.", "operationId": "putAssetExternalXmpDevelopSetting", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which the asset will be created.", "required": true, "schema": { "type": "string" } }, { "name": "Content-Length", "in": "header", "description": "Content length, in bytes. Current maximum size is 200 Mb.", "required": true, "schema": { "type": "integer" } }, { "name": "Content-Type", "in": "header", "description": "For uploading a new xmp/develop file content-type='application/rdf+xml' and for copying xmp/develop file from another asset content-type='application/json'", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Client-generated Lightroom unique identifier for the new asset.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "The below request body example is for copying external xmp/develop file from another asset. (For upload external xmp/develop case the body will be a xml string. Eg. '\\')", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "file_href": { "type": "string", "description": "External xmp/develop link of source asset." } }, "example": { "file_href":"/v2/catalogs/{catalog_id}/assets/{source_asset_id}/xmp/develop" } } } } }, "responses": { "201": { "description": "Created" }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestGUID"}, {"$ref": "#/components/schemas/InvaildRequestSubtype"}, {"$ref": "#/components/schemas/InvaildRequestJSON"}, {"$ref": "#/components/schemas/InvaildRequestPayload"} ] }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" }, "InvaildRequestSubtype": { "$ref": "#/components/examples/InvaildRequestSubtypeExample" }, "InvaildRequestJSON": { "$ref": "#/components/examples/InvaildRequestJSONExample" }, "InvaildRequestPayload": { "$ref": "#/components/examples/InvaildRequestPayloadExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/ForbiddenKeyError"}, {"$ref": "#/components/schemas/ResourceExistsError"}, {"$ref": "#/components/schemas/QuotaExceededError"} ] }, "examples": { "InvalidApiKey": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "ResourceExists": { "$ref": "#/components/examples/ResourceExistsErrorExample" }, "QuotaExceeded": { "$ref": "#/components/examples/AssetQuotaExceededErrorExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AssetNotFoundExample" } } } } }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "get": { "tags": [ "Assets" ], "summary": "Get latest asset external xmp develop setting", "description": "Get latest asset external xmp develop setting file", "operationId": "getAssetExternalXmpDevelopSetting", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog in which asset exists.", "required": true, "schema": { "type": "string" } }, { "name": "asset_id", "in": "path", "description": "Identifier of the asset for which to fetch rendition.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "External XMP Develop Setting file. Content type of the response is application/rdf+xml." }, "400": { "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvaildRequestGUID" }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AssetInvaildRequestGUIDExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AssetNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/albums/{album_id}": { "put": { "tags": [ "Albums" ], "summary": "Create album", "description": "Create a new album.", "operationId": "createAlbum", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "album_id", "in": "path", "description": "Client-generated Lightroom unique identifier for the new album.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Initial album metadata and information.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "subtype": { "type": "string", "enum": [ "project", "project_set" ] }, "serviceId": { "type": "string", "description": "The API Key (client identifier) of the service creating the album." }, "payload": { "$ref": "#/components/schemas/albumPayload" } } } } } }, "responses": { "201": { "description": "Created" }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestJSON"}, {"$ref": "#/components/schemas/InvaildRequestPayload"} ] }, "examples": { "InvaildRequestJSON": { "$ref": "#/components/examples/InvaildRequestJSONExample" }, "InvaildRequestPayload": { "$ref": "#/components/examples/InvaildRequestPayloadExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/ForbiddenKeyError"}, {"$ref": "#/components/schemas/ResourceExistsError"} ] }, "examples": { "InvalidApiKey": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "ResourceExists": { "$ref": "#/components/examples/AlbumResourceExistsErrorExample" } } } } }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "get": { "tags":[ "Albums" ], "summary":"Get album", "description":"Read a album.", "operationId":"readAlbum", "parameters":[ { "name":"X-API-Key", "in":"header", "description":"Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required":true, "schema": { "type": "string" } }, { "name":"Authorization", "in":"header", "description":"Bearer [token] - User access token of an authenticated Lightroom customer", "required":true, "schema": { "type": "string" } }, { "name":"catalog_id", "in":"path", "description":"Identifier of the catalog containing the album.", "required":true, "schema": { "type": "string" } }, { "name":"album_id", "in":"path", "description":"Client-generated Lightroom unique identifier for the new album.", "required":true, "schema": { "type": "string" } } ], "responses":{ "200":{ "description":"OK", "content": { "application/json": { "schema":{ "type":"object", "properties":{ "base":{ "type":"string", "description":"Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "id":{ "$ref":"#/components/schemas/uuid" }, "type":{ "type":"string", "enum":[ "album" ] }, "subtype":{ "type":"string" }, "created":{ "$ref":"#/components/schemas/utcDateTime" }, "updated":{ "$ref":"#/components/schemas/utcDateTime" }, "links":{ "type":"object" }, "payload":{ "type":"object" } }, "example":{ "base": "/v2/catalogs//", "id": "", "type": "album", "subtype": "", "created": "", "updated": "", "payload": { "name": "", "cover": { "id": "" }, "parent": { "id": "" } }, "links": { "self": { "href": "albums/" }, "/rels/album_assets": { "href": "albums//assets?embed=asset" }, "/rels/parent_album": { "href": "albums/" }, "/rels/cover_asset": { "href": "assets/" }, "/rels/rendition_type/320": { "href": "assets//renditions/320" }, "/rels/rendition_type/640": { "href": "assets//renditions/640" }, "/rels/rendition_type/1280": { "href": "assets//renditions/1280" }, "/rels/rendition_type/2048": { "href": "assets//renditions/2048" } } } } } } }, "401":{ "$ref":"#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"}, {"$ref": "#/components/schemas/OperationNotPermittedError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" }, "OperationNotPermittedError": { "$ref": "#/components/examples/OperationNotPermittedExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AlbumNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "post": { "tags": [ "Albums" ], "summary": "Update album", "description": "Update an existing album. The existing album should be created via the same client app and of subtype project or project_set.", "operationId": "updateAlbum", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "album_id", "in": "path", "description": "Identifier for the album.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Album metadata and information to be updated.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "payload": { "$ref": "#/components/schemas/albumPayload" } } } } } }, "responses": { "204": { "description": "No Content" }, "400": { "description": "The request failed due to an invalid input", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvaildRequestJSON"}, {"$ref": "#/components/schemas/InvaildRequestPayload"} ] }, "examples": { "InvaildRequestJSON": { "$ref": "#/components/examples/InvaildRequestJSONExample" }, "InvaildRequestPayload": { "$ref": "#/components/examples/InvaildRequestPayloadExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"}, {"$ref": "#/components/schemas/OperationNotPermittedError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" }, "OperationNotPermittedError": { "$ref": "#/components/examples/OperationNotPermittedExample" } } } } }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "delete": { "tags": [ "Albums" ], "summary": "Delete album", "description": "Delete an existing album. The existing album should be created via the same client app and of subtype project or project_set.", "operationId": "deleteAlbum", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "album_id", "in": "path", "description": "Identifier for the album.", "required": true, "schema": { "type": "string" } }, { "name": "child_albums", "in": "query", "description": "This parameter when passed with a value, for example: true would delete all the child albums as well of the album specified. The deletion of child albums will be done asynchronously.", "schema": { "type": "string" } } ], "responses": { "204": { "description": "No Content" }, "400": { "$ref": "#/components/responses/InvaildRequestJSON" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"}, {"$ref": "#/components/schemas/OperationNotPermittedError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" }, "OperationNotPermittedError": { "$ref": "#/components/examples/OperationNotPermittedExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/albums": { "get": { "tags": [ "Albums" ], "summary": "Retrieve albums", "description": "Retrieve a list of existing albums.", "operationId": "getAlbums", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "subtype", "in": "query", "description": "Comma-separated list of subtypes to enumerate. Subtype can be one of 'project' or 'project_set'.", "schema": { "type": "string" } }, { "name": "name_after", "in": "query", "description": "UTF-8 string representing the name of the album that should precede the current page of results. In other words, the response will contain result with names greater than the 'name_after' value using standard string ordering relations.", "schema": { "type": "string" } }, { "name": "limit", "in": "query", "description": "Number of albums to return. Default value is 100. Please note that the response may contain more than 'limit' number of albums returned if multiple albums at the 'limit' boundary have the same name_after.", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "properties": { "base": { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "resources": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "type": { "type": "string", "enum": [ "album" ] }, "subtype": { "type": "string", "enum": [ "project", "project_set" ] }, "serviceId": { "type": "string", "description": "The API Key (client identifier) of the service affiliated with the album." }, "payload": { "$ref": "#/components/schemas/albumPayload" }, "links": { "type": "object" } } } } } } } } }, "400": { "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvaildRequestGUID" }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/CatalogInvaildRequestGUIDExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AlbumNotFoundExample" } } } } }, "415": { "$ref": "#/components/responses/UnsupportedMediaType" }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } }, "/v2/catalogs/{catalog_id}/albums/{album_id}/assets": { "put": { "tags": [ "Albums" ], "summary": "Add assets to album", "description": "Add many assets to the album. Note that there is no default defined order/position for the asset in the album. A payload may be provided with cover, order, and any other data allowed in the data model. If the asset already exists in the album and the cover field is supplied, then no error is thrown but only the cover update is applied and other entries in the payload are completely ignored. In all other cases trying to add an asset to an album that is already in the album will return an error. Limited to 50 assets per API call. Returns http status 201 if at least one asset was added to the album. If all assets could not be added, http status 403 is returned. Individual error codes are returned for each asset in the response body.", "operationId": "addAssetsToAlbum", "parameters": [ { "name": "X-API-Key", "in": "header", "description": "Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required": true, "schema": { "type": "string" } }, { "name": "Authorization", "in": "header", "description": "Bearer [token] - User access token of an authenticated Lightroom customer", "required": true, "schema": { "type": "string" } }, { "name": "catalog_id", "in": "path", "description": "Identifier of the catalog containing the album.", "required": true, "schema": { "type": "string" } }, { "name": "album_id", "in": "path", "description": "Identifier of the album.", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Album asset metadata and information.", "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "resources": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid", "description": "UUID of the asset to be added to the album." }, "payload": { "type": "object", "properties": { "cover": { "type": "boolean", "description": "Whether this asset should be used as the album cover." }, "order": { "$ref": "#/components/schemas/lex64SortOrderString" }, "publishInfo": { "type": "object", "properties": { "servicePayload": { "type": "string", "description": "Album asset metadata, unique to the service, encapsulated as a single string with a maximum length of 1024 characters." }, "remoteId": { "type": "string", "description": "Identifier for the album asset that is unique to the publishing service." } } } } } } } } } } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "type": "object", "properties": { "base": { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "resources": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "href": { "type": "string" } } } }, "errors": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "http_status": { "type": "integer" }, "code": { "type": "integer" }, "description": { "type": "string" }, "subtype": { "type": "string" }, "errors": { "type": "object", "properties": { "asset": { "type": "array", "items": { "type": "string" } } } } } } } } } } } }, "400": { "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvaildRequestGUID" }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AlbumInvaildRequestGUIDExample" } } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AlbumNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } }, "get": { "tags":[ "Albums" ], "summary":"List assets of an album", "description":"Lists assets in an album. The assets in an album are returned sorted on either order if order* parameters are used. The assets in an album are returned sorted on captured date if order* parameters are not used and captured* parameters are used. Please note that the created and updated dates for Album asset documents will be returned as \"0000-00-00T00:00:00\". Successful response may also return invalid flag in the rendition link for the asset. A rendition becomes invalid when an asset is edited after rendition has been generated. New renditions (only 2560 and fullsize) can be generated via Generate Renditions API. The read xmp/develop link in the response will have the invalid flag as true if asset with SHA256 has been created but external xmp/develop has not been uploaded yet.", "operationId":"listAssetsOfAlbum", "parameters":[ { "name":"X-API-Key", "in":"header", "description":"Client ID (API Key) which is subscribed to the Lightroom APIs through console.adobe.io", "required":true, "schema": { "type": "string" } }, { "name":"Authorization", "in":"header", "description":"Bearer [token] - User access token of an authenticated Lightroom customer", "required":true, "schema": { "type": "string" } }, { "name":"catalog_id", "in":"path", "description":"Identifier of the catalog containing the album.", "required":true, "schema": { "type": "string" } }, { "name":"album_id", "in":"path", "description":"Identifier of the album.", "required":true, "schema": { "type": "string" } }, { "name":"captured_before", "in":"query", "description":"Used to request assets captured before a given time. captured_before will be found in the \"links.next.href\" link. If no links.next is included in a listing response, this is a hint from the server that there are no assets in the catalog with a date captured_before the last asset in the list (the client has reached the \"bottom\" of the list). captured_before may not be used in conjunction with captured_after.", "schema": { "type": "string" } }, { "name":"captured_after", "in":"query", "description":"Used to request assets captured after a given time. captured_after will be found in the \"links.prev.href\" link. If no links.prev is included in a listing response, this is a hint from the server that there are no assets in the catalog with a date captured_after the first asset in the list (the client has reached the \"top\" of the list). Note: assets imported without a captureDate payload property default to the value \"0000-00-00T00:00:00\". To list these assets set captured_after to \"-0001-12-31T23:59:59\". captured_after may not be used in conjunction with captured_before.", "schema": { "type": "string" } }, { "name":"order_after", "in":"query", "description":"Used to request assets having order value greater than specified value. Next and previous pages will be found in the \"links.next.href\" and \"links.prev.href\" links respectively. If next/prev link is missing, it indicates that there is no next/prev page. Some rules about using order_after: 1) Specify \"-\" to get the first page. 2) Can be max of 1024 characters. 3) Should be a lex64 sort order string with characters in the set: [-0-9A-Z_a-z] with sort order in the same sequence as in the set [-0-9A-Z_a-z]. 4) captured_before cannot be used with order_after 5) captured_after can be used only if order_after==\"\"", "schema": { "type": "string" } }, { "name":"order_before", "in":"query", "description":"Used to request assets having order value lesser than specified value. Next and previous pages will be found in the \"links.next.href\" and \"links.prev.href\" links respectively. If next/prev link is missing, it indicates that there is no next/prev page. Some rules about using order_before: 1) Specify order_before as \"\" and captured_before as a future date to get the first page. 2) Can be max of 1024 characters. 3) Should be a lex64 sort order string with characters in the set: [-0-9A-Z_a-z] with sort order in the same sequence as in the set [-0-9A-Z_a-z]. 4) captured_after cannot be used with order_before 5) captured_before can be used only if order_before==\"\"", "schema": { "type": "string" } }, { "name":"limit", "in":"query", "description":"Number of assets to return. Default value is 100. Maximum is 500. Please note that the response may contain more than 'limit' number of assets returned if the assets at the 'limit' boundary has the same capture_date. For example if there are 5 assets in a catalog and the 3rd, 4th and 5th assets all have the same capture dates the response will contain all 5 assets whether 'limit' is 3, 4 or 5.", "schema": { "type": "integer" } }, { "name":"hide_stacked_assets", "in":"query", "description":"To show or hide assets inside stacks in the catalog. If hide_stacked_assets is passed as true, assets inside stacks won't be returned. Default value is false.", "schema": { "type": "boolean" } }, { "name":"subtype", "in":"query", "description":"Semi-colon separated asset subtype values.", "schema": { "type": "string" } }, { "name":"flag", "in":"query", "description":"Semi-colon separated review flag values used to filter assets returned. Can be combined with subtype filter. Valid values for flags are 'pick', 'unflagged' and 'reject'. This parameter cannot be used along with album_filters parameter. Default behavior is to display all assets.", "schema": { "type": "string" } }, { "name":"embed", "in":"query", "description":"Semicolon-delimited list of additional data to include. When the list includes \"asset\", the asset subdocuments contains all the fields. Otherwise, only the id and self href link are returned in the asset subdocuments.", "schema": { "type": "string" } }, { "name":"exclude", "in":"query", "description":"Used to request the list for different types of assets excluding incomplete or complete image and video assets. The valid values are \"incomplete\" and \"complete\". An image or video asset is considered to be complete if its proxy or original upload exists. An asset of subtypes profile, preset, camera_profile or lens_profile is considered complete if its original upload exists.", "schema": { "type": "string" } }, { "name":"asset_ids", "in":"query", "description":"Set of 1 - 100 comma separated asset_id values. Other parameters can not be used in conjunction with this parameter.", "schema": { "type": "string" } }, { "name":"album_filters", "in":"query", "description":"When album_filters is set to 'true', it filters out all the album assets based on the presentation filters set on the album. With this parameter, rejected assets always get filtered out irrespective of settings in presentation filters. Presentation filters are not applied when any value other than 'true' is set for album_filters. Default behavior is to display all assets. This parameter cannot be used along with flag parameter.\t\tno\nResponse: 200 OK", "schema": { "type": "string" } } ], "responses":{ "200":{ "description":"Ok", "content": { "application/json": { "schema":{ "type":"object", "properties":{ "base":{ "type":"string", "description":"Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "album": { "type":"object", "description": "Contains details of the album whose assets are being fetched", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "links" : { "type": "object" } } }, "resources" : { "type" : "array", "items" : { "type" : "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "type": { "type": "string", "enum": ["album_asset"] }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links" : { "type": "object" }, "asset": { "type" : "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "links": { "type": "object" }, "payload":{ "type":"object" } } } } } }, "links": { "type": "object" } }, "example":{ "base": "", "album": { "id": "", "links": { "self": { "href": "albums/" } } }, "resources": [ { "id": "", "type": "album_asset", "created": "", "updated": "", "links": { "self": { "href": "albums//assets/" } }, "asset": { "id": "", "type": "asset", "subtype": "image", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "": "", "develop": { "": "" } } }, "payload": { "order": "", "cover": true, "": "" } }, { "id": "", "type": "album_asset", "created": "", "updated": "", "links": { "self": { "href": "albums//assets/" } }, "asset": { "id": "", "type": "asset", "subtype": "video", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "video": { "frameRate": [ "", "" ], "duration": [ "", "" ], "displayAspectRatio": [ "", "" ], "storageWidth": "", "storageHeight": "" }, "": "", "develop": { "": "" } } } } ], "links": { "prev": { "href": "albums//assets?captured_after=" }, "next": { "href": "albums//assets?captured_before=" } } } } } } }, "400":{ "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvaildRequestGUID" }, "examples": { "InvaildRequestGUID": { "$ref": "#/components/examples/AlbumInvaildRequestGUIDExample" } } } } }, "401":{ "$ref":"#/components/responses/Unauthorized" }, "403": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "oneOf": [ {"$ref": "#/components/schemas/InvalidAPIKeyError"}, {"$ref": "#/components/schemas/AccessForbiddenError"}, {"$ref": "#/components/schemas/OperationNotPermittedError"} ] }, "examples": { "ForbiddenKeyError": { "$ref": "#/components/examples/ForbiddenKeyExample" }, "AccessForbiddenError": { "$ref": "#/components/examples/AccessForbiddenExample" }, "OperationNotPermittedError": { "$ref": "#/components/examples/OperationNotPermittedExample" } } } } }, "404": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFound" }, "examples": { "ResourceNotFound": { "$ref": "#/components/examples/AlbumNotFoundExample" } } } } }, "503": { "description": "The request failed because the service is temporarily unavailable. Try again later.", "content": { "application/json": { "schema": { "oneOf": [ { "$ref": "#/components/schemas/ServiceUnavailable" }, { "$ref": "#/components/schemas/MaintenanceError" } ] }, "examples": { "ServiceUnavailable": { "$ref": "#/components/examples/ServiceUnavailableExample" }, "MaintenanceError": { "$ref": "#/components/examples/MaintenanceErrorExample" } } } } } } } } }, "components": { "responses": { "InvaildRequestGUID": { "description": "The request failed due to an invalid resource identifier.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "Must be a valid GUID"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "examples": { "InvaildRequestGUID": { "$ref":"#/components/examples/AssetInvaildRequestGUIDExample" } } } } }, "InvaildRequestJSON": { "description": "The request failed due to an invalid JSON.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "body": { "type": "array", "items": { "type": "string", "enum": [ "Must be valid JSON"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestSubtype": { "description": "The request failed due to an invalid subtype.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "is invalid"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestPayload": { "description": "The request failed due to an invalid payload. The errors hash returned will specify which payload keys had issues and whether the value was invalid, whether the key is required and missing, or whether the key is not allowed.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "payload..": { "type": "array", "items": { "type": "string", "enum": [ "invalid", "disallowed", "required" ] } } } }, "code": { "type": "integer", "enum": [ 1030 ] }, "description": { "type": "string", "enum": [ "Payload Validation Error" ] } } } } } }, "InvaildRequestAssetIds": { "description": "The request failed as no other parameter is allowed with asset_ids parameter.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "not allowed with asset_ids parameter"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestGroup": { "description": "The request failed due one of the subtype does not supported group. Only preset or profile supports group parameter.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "group": { "type": "array", "items": { "type": "string", "enum": [ "group not expected for each given subtype"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestName": { "description": "The request failed due to one of the subtype does not supported group. Only preset or profile supports name parameter.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "name": { "type": "array", "items": { "type": "string", "enum": ["name not expected for each given subtype"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestFavorite": { "description": "The request failed due to invalid favorite status. Currently only true is supported.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "favorite": { "type": "array", "items": { "type": "string", "enum": ["favorite query param can only be true. favorite=false not supported"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestMissingParameter": { "description": "The request failed due to missing parameter.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "parameter": { "type": "array", "items": { "type": "string", "enum": ["must be specified"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestMissingSubtypeWithGroupOrName": { "description": "The request failed due to missing subtype. This error can occur if group or name parameter is included in the request.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "subtype": { "type": "array", "items": { "type": "string", "enum": ["subtype value expected with group or name"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestMissingSubtypeWithFavorite": { "description": "The request failed due to missing subtype. This error can occur if favorite is included in the request.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "subtype": { "type": "array", "items": { "type": "string", "enum": ["subtype value expected with favorite"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "InvaildRequestInvalidDateTime": { "description": "The request failed due to invalid date/time.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "must be a valid XML Schema dateTime"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } } } } }, "Unauthorized": { "description": "The request failed due to missing or invalid authentication token." }, "ForbiddenKey": { "description": "The request failed because the API Key is not valid.", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 403003 ] }, "description": { "type": "string", "enum": [ "API Key is invalid" ] } } } } } }, "ForbiddenAccount": { "description": "The request failed due to the account state.", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4301 ] }, "description": { "type": "string", "enum": [ "Access forbidden due to account state of resource owner" ] } } } } } }, "ForbiddenExists": { "description": "The request failed due to the account state.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "already exists"] } } } }, "code": { "type": "integer", "enum": [ 1002 ] }, "description": { "type": "string", "enum": [ "Resource already exists" ] } } } } } }, "ForbiddenQuota": { "description": "The request failed due to insufficient storage under the entitlement.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "quota exceeded"] } } } }, "code": { "type": "integer", "enum": [ 1043 ] }, "description": { "type": "string", "enum": [ "Too many assets" ] } } } } } }, "Forbidden": { "description": "The request failed due to insufficient permissions.", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4300 ] }, "description": { "type": "string", "enum": [ "Access is forbidden" ] } } } } } }, "ForbiddenClient": { "description": "The request failed because the client application must be upgraded.", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4999 ] }, "description": { "type": "string", "enum": [ "Upgrade required" ] }, "links": { "type": "object", "properties": { "/rels/client_app": { "type": "object", "properties": { "href": { "type": "string", "enum": [" (Link to the where to find a new version of the client application)"] } } } } } } } } } }, "ForbiddenOperation": { "description": "The request failed because the request operation is not permitted", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 1016 ] }, "description": { "type": "string", "enum": [ "Requested operation not permitted" ] } } } } } }, "NotFound": { "description": "The request failed because the resource being requested does not exist.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "does not exist"] } } } }, "code": { "type": "integer", "enum": [ 1000 ] }, "description": { "type": "string", "enum": [ "Resource not found" ] } } } } } }, "PreconditionFailed": { "description": "The request failed because one or more orginal files matching the provided SHA-256 hash already exists. The response body lists the matching original files.", "content": { "application/json": { "schema": { "type": "object", "properties": { "base" : { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "revisions": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "created_by": { "$ref": "#/components/schemas/uuid" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links": { "type": "object" }, "payload": { "type": "object" } } } } }, "example": { "base": "", "resources": [ { "id": "", "created": "", "created_by": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "": "", "develop": { "": "" } } } ] } } } } }, "TooLarge": { "description": "The request failed because it is too large.", "content": { "application/json": { "schema": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 1007 ] }, "description": { "type": "string", "enum": [ "The resource is too big" ] } } } } } }, "UnsupportedMediaType": { "description": "The request failed because the Content-Type did not match the request.", "content": { "application/json": { "schema": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "content_type": { "type": "array", "items": { "type": "string", "enum": [ "should be json", "should match the subtype of the asset" ] } } } }, "code": { "type": "integer", "enum": [ 1003 ] }, "description": { "type": "string", "enum": [ "Invalid content type" ] } } } } } } }, "examples": { "SuccessImageAssetExample": { "summary": "SuccessImageAsset", "value": { "base": "", "id": "", "type": "asset", "subtype": "image", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "": "", "develop": { "": "" } } } }, "SuccessVideoAssetExample":{ "summary": "SuccessVideoAsset", "value": { "base": "", "id": "", "type": "asset", "subtype": "video", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "unshareable": "", "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "video": { "frameRate": [ "", "" ], "duration": [ "", "" ], "displayAspectRatio": [ "", "" ], "storageWidth": "", "storageHeight": "" }, "": "", "develop": { "": "" } }, "favorites": { "": "" } } }, "SuccessExample": { "summary": "Success", "value": { "base": "", "resources": [ { "id": "", "type": "asset", "subtype": "image", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "": "", "develop": { "": "" } } }, { "id": "", "type": "asset", "subtype": "video", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "unshareable": "", "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "video": { "frameRate": [ "", "" ], "duration": [ "", "" ], "displayAspectRatio": [ "", "" ], "storageWidth": "", "storageHeight": "" }, "": "", "develop": { "": "" } } } ], "links": { "prev": { "href": "albums//assets?captured_after=" }, "next": { "href": "albums//assets?captured_before=" }, "/rels/asset": { "href": "assets/{asset_id}", "templated": true } } } }, "SuccessQueryParamExample": { "summary": "Success - Asset_ids query param present", "value": { "base": "", "resources": [ { "id": "", "type": "asset", "subtype": "image", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "": "", "develop": { "": "" } } }, { "id": "", "type": "asset", "subtype": "video", "created": "", "updated": "", "links": { "self": { "href": "assets/" }, "/rels/master_create": { "href": "assets//master" }, "/rels/xmp_develop_create": { "href": "assets//xmp/develop" }, "/rels/rendition_type/": { "href": "assets//renditions/" }, "/rels/xmp/develop": { "href": "assets//xmp/develop", "invalid": "true", "fileSize": "" } }, "unshareable": "", "payload": { "captureDate": "", "importSource": { "fileName": "", "fileSize": "", "originalWidth": "", "originalHeight": "", "sha256": "", "importedOnDevice": "", "importedBy": "", "importTimestamp": "" }, "video": { "frameRate": [ "", "" ], "duration": [ "", "" ], "displayAspectRatio": [ "", "" ], "storageWidth": "", "storageHeight": "" }, "": "", "develop": { "": "" } } } ], "errors": [ { "id": "", "code": 1000, "description": "Resource not found" } ], "links": { "/rels/asset": { "href": "assets/{asset_id}", "templated": true } } } }, "ForbiddenExistsExample": { "summary": "ForbiddenExistsError", "value": { "errors": { "": [ "already exists" ] }, "code": 1002, "description": "Resource already exists" } }, "ForbiddenKeyExample": { "summary": "Invalid API Key", "value": { "code": 403003, "description": "API Key is invalid" } }, "AccessForbiddenExample": { "summary": "Access Forbidden", "value": { "code": 4300, "description": "Access is forbidden" } }, "AccessForbiddenAccountStateExample": { "summary": "Access Forbidden Account State", "value": { "code": 4301, "description": "Access forbidden due to account state of resource owner" } }, "UnexpectedEntitlementExample": { "summary": "Unexpected Entitlement (string code)", "value": { "code": "UnexpectedEntitlementError", "description": "Account is in an unexpected status", "errors": { "catalog": [ "not allowed" ] }, "subtype": "UnexpectedEntitlementError" } }, "EntitlementExpiredExample": { "summary": "Entitlement Expired (string code)", "value": { "code": "EntitlementExpiredError", "description": "Resources unavailable because owner account entitlement has expired", "errors": { "catalog": [ "not allowed" ] }, "subtype": "EntitlementExpiredError" } }, "OperationNotPermittedExample": { "summary": "Operation Not Permitted", "value": { "code": 1016, "description": "Requested operation not permitted" } }, "ForbiddenClientErrorExample": { "summary": "Forbidden Client", "value": { "links": { "/rels/client_app": { "href": " (Link to the where to find a new version of the client application)" } }, "code": 4999, "description": "Upgrade required" } }, "AssetInvaildRequestGUIDExample": { "summary": "InvalidRequestGUID", "value": { "errors": {"asset_id": [ "Must be a valid GUID"]}, "code": 1005, "description": "Input Validation Error" } }, "CatalogInvaildRequestGUIDExample": { "summary": "InvalidRequestGUID", "value": { "errors": {"catalog_id": [ "Must be a valid GUID"]}, "code": 1005, "description": "Input Validation Error" } }, "AlbumInvaildRequestGUIDExample": { "summary": "InvalidRequestGUID", "value": { "errors": {"album_id": [ "Must be a valid GUID"]}, "code": 1005, "description": "Input Validation Error" } }, "RenditionInvaildRequestGUIDExample": { "summary": "InvalidRequestGUID", "value": { "errors": {"rendition_id": [ "Must be a valid GUID"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestJSONExample": { "summary": "InvalidRequestJSON", "value": { "errors": {"body": [ "Must be a valid JSON"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestSubtypeExample": { "summary": "InvalidRequestSubtype", "value": { "errors": {"subtype": [ "is invalid"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestPayloadExample": { "summary": "InvalidRequestPayload", "value": { "errors": {"payload.importSource.importTimestamp": [ "invalid"]}, "code": 1030, "description": "Payload Validation Error" } }, "InvaildRequestAssetIdsExample": { "summary": "ParamsWithAssetIds", "value": { "errors": {"": [ "not allowed with asset_ids parameter"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestGroupExample": { "summary": "InvalidRequestGroup", "value": { "errors": {"group": [ "group not expected for each given subtype" ]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestNameExample": { "summary": "InvalidRequestName", "value": { "errors": {"name": [ "name not expected for each given subtype"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestFavoriteExample": { "summary": "InvalidRequestFavorite", "value": { "errors": {"favorite": [ "favorite query param can only be true. favorite=false not supported"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestMissingParameterExample": { "summary": "MissingParameter", "value": { "errors": {"parameter": [ "must be specified"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestMissingSubtypeWithGroupOrNameExample": { "summary": "MissingSubtypeWithGroupOrName", "value": { "errors": {"subtype": [ "subtype value expected with group or name"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestMissingSubtypeWithFavoriteExample": { "summary": "MissingSubtypeWithFavorite", "value": { "errors": {"subtype": [ "subtype value expected with favorite"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestInvalidDateTimeExample": { "summary": "InvalidDateTime", "value": { "errors": {"updated_since": [ "must be a valid XML Schema dateTime"]}, "code": 1005, "description": "Input Validation Error" } }, "InvaildRequestRenditionTypeExample": { "summary": "RenditionTypeNotSupported", "value": { "errors": {"rendition_type": [ "not supported"]}, "code": 1005, "description": "Input Validation Error" } }, "ResourceExistsErrorExample": { "summary": "ResourceExistsError", "value": { "errors": {"asset": [ "already exists"]}, "code": 1002, "description": "Resource already exists" } }, "AlbumResourceExistsErrorExample": { "summary": "ResourceExistsError", "value": { "errors": {"album": [ "already exists"]}, "code": 1002, "description": "Resource already exists" } }, "ForbiddenAccountExample": { "summary": "Forbidden Account", "value": { "code": 4301, "description": "Access forbidden due to account state of resource owner" } }, "AssetQuotaExceededErrorExample": { "summary": "QuotaExceededError", "value": { "errors": {"": [ "quota exceeded"]}, "code": 1043, "description": "Too many assets" } }, "AccountNotFoundExample": { "summary": "ResourceNotFoundError", "value": { "errors": {"account": [ "does not exist"]}, "code": 1000, "description": "Resource not found" } }, "CatalogNotFoundExample": { "summary": "ResourceNotFoundError", "value": { "errors": {"catalog": [ "does not exist"]}, "code": 1000, "description": "Resource not found" } }, "AssetNotFoundExample": { "summary": "ResourceNotFoundError", "value": { "errors": {"asset": [ "does not exist"]}, "code": 1000, "description": "Resource not found" } }, "RenditionNotFoundExample": { "summary": "ResourceNotFoundError", "value": { "errors": {"rendition": [ "does not exist"]}, "code": 1000, "description": "Resource not found" } }, "AlbumNotFoundExample": { "summary": "ResourceNotFoundError", "value": { "errors": {"album": [ "does not exist"]}, "code": 1000, "description": "Resource not found" } }, "ServiceUnavailableExample": { "summary": "ServiceUnavailable", "value": { "code": 9999, "description": "Service is temporarily unavailable" } }, "MaintenanceErrorExample": { "summary": "MaintenanceError", "value": { "code": "MaintenanceError", "description": "Service is unavailable" } } }, "schemas": { "SuccessImageAsset": { "type": "object", "properties": { "base" : { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "id": { "$ref": "#/components/schemas/uuid" }, "type": { "type": "string", "enum": ["asset"] }, "subtype": { "type": "string" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links": { "type": "object" }, "payload": { "type": "object" } } }, "SuccessVideoAsset":{ "type": "object", "properties": { "base" : { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "id": { "$ref": "#/components/schemas/uuid" }, "type": { "type": "string", "enum": ["asset"] }, "subtype": { "type": "string" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links": { "type": "object" }, "payload": { "type": "object" }, "favorites": { "type": "object", "properties" : { "account_id": { "$ref": "#/components/schemas/utcDateTime" } } }, "fingerprint": { "type": "object" } } }, "Success": { "type": "object", "properties": { "base" : { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "resources": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "type": { "type": "string", "enum": ["asset"] }, "subtype": { "type": "string" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links": { "type": "object" }, "payload": { "type": "object" } } } } } }, "SuccessAssetIdsQueryParam": { "type": "object", "properties": { "base" : { "type": "string", "description": "Base URL that can be prepended to the 'href' values in the 'links' to produce fully qualified URLs for future queries." }, "resources": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "type": { "type": "string", "enum": ["asset"] }, "subtype": { "type": "string" }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "links": { "type": "object" }, "payload": { "type": "object" } } } }, "errors": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" }, "code": { "type": "integer" }, "description": { "type": "string" } } } }, "links": { "type": "object" } } }, "InvaildRequestGUID": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "Must be a valid GUID"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestJSON": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "body": { "type": "array", "items": { "type": "string", "enum": [ "Must be valid JSON"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestSubtype": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "is invalid"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestPayload": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "payload..": { "type": "array", "items": { "type": "string", "enum": [ "invalid", "disallowed", "required" ] } } } }, "code": { "type": "integer", "enum": [ 1030 ] }, "description": { "type": "string", "enum": [ "Payload Validation Error" ] } } }, "InvaildRequestAssetIds": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "not allowed with asset_ids parameter"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestGroup": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "group": { "type": "array", "items": { "type": "string", "enum": [ "group not expected for each given subtype"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestName": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "name": { "type": "array", "items": { "type": "string", "enum": ["name not expected for each given subtype"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestFavorite": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "favorite": { "type": "array", "items": { "type": "string", "enum": ["favorite query param can only be true. favorite=false not supported"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestMissingParameter": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "parameter": { "type": "array", "items": { "type": "string", "enum": ["must be specified"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestMissingSubtypeWithGroupOrName": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "subtype": { "type": "array", "items": { "type": "string", "enum": ["subtype value expected with group or name"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestMissingSubtypeWithFavorite": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "subtype": { "type": "array", "items": { "type": "string", "enum": ["subtype value expected with favorite"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestInvalidDateTime": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "must be a valid XML Schema dateTime"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "InvaildRequestRenditionType": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "rendition_type": { "type": "array", "items": { "type": "string", "enum": ["not supported"] } } } }, "code": { "type": "integer", "enum": [ 1005 ] }, "description": { "type": "string", "enum": [ "Input Validation Error" ] } } }, "NotFound": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "does not exist"] } } } }, "code": { "type": "integer", "enum": [ 1000 ] }, "description": { "type": "string", "enum": [ "Resource not found" ] } } }, "InvalidAPIKeyError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 403003 ] }, "description": { "type": "string", "enum": [ "API Key is invalid" ] } } }, "AccessForbiddenError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4300 ] }, "description": { "type": "string", "enum": [ "Access is forbidden" ] } } }, "AccessForbiddenAccountStateError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4301 ] }, "description": { "type": "string", "enum": [ "Access forbidden due to account state of resource owner" ] } } }, "UnexpectedEntitlementError": { "type": "object", "description": "Returned when the resource owner's account is in an unexpected entitlement state for the requested operation (for example, a partner request on behalf of an account that is not an active subscriber).", "properties": { "code": { "type": "string", "enum": [ "UnexpectedEntitlementError" ], "description": "For this error the code is returned as a string. Note that an error code may be either an integer or a string, so clients should not assume it is always an integer." }, "subtype": { "type": "string", "enum": [ "UnexpectedEntitlementError" ] }, "description": { "type": "string", "enum": [ "Account is in an unexpected status" ] }, "errors": { "type": "object", "properties": { "catalog": { "type": "array", "items": { "type": "string", "enum": [ "not allowed" ] } } } } } }, "EntitlementExpiredError": { "type": "object", "description": "Returned when the resource owner's account entitlement has expired (for example, an account whose subscription has lapsed).", "properties": { "code": { "type": "string", "enum": [ "EntitlementExpiredError" ], "description": "For this error the code is returned as a string. Note that an error code may be either an integer or a string, so clients should not assume it is always an integer." }, "subtype": { "type": "string", "enum": [ "EntitlementExpiredError" ] }, "description": { "type": "string", "enum": [ "Resources unavailable because owner account entitlement has expired" ] }, "errors": { "type": "object", "properties": { "catalog": { "type": "array", "items": { "type": "string", "enum": [ "not allowed" ] } } } } } }, "OperationNotPermittedError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 1016 ] }, "description": { "type": "string", "enum": [ "Requested operation not permitted" ] } } }, "ForbiddenExistsError": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "already exists"] } } } }, "code": { "type": "integer", "enum": [ 1002 ] }, "description": { "type": "string", "enum": [ "Resource already exists" ] } } }, "ForbiddenClientError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4999 ] }, "description": { "type": "string", "enum": [ "Upgrade required" ] }, "links": { "type": "object", "properties": { "/rels/client_app": { "type": "object", "properties": { "href": { "type": "string", "enum": [" (Link to the where to find a new version of the client application)"] } } } } } } }, "ForbiddenKeyError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 403003] }, "description": { "type": "string", "enum": [ "API Key is invalid"] } } }, "ForbiddenAccountError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4301] }, "description": { "type": "string", "enum": [ "Access forbidden due to account state of resource owner"] } } }, "ForbiddenError": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 4300] }, "description": { "type": "string", "enum": [ "Access is forbidden"] } } }, "Error": { "type": "object", "properties": { "code": { "type": "integer" }, "description": { "type": "string" } } }, "ResourceExistsError": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "already exists"] } } } }, "code": { "type": "integer", "enum": [ 1002 ] }, "description": { "type": "string", "enum": [ "Resource already exists" ] } } }, "QuotaExceededError": { "type": "object", "properties": { "errors": { "type": "object", "properties": { "": { "type": "array", "items": { "type": "string", "enum": [ "quota exceeded"] } } } }, "code": { "type": "integer", "enum": [ 1043 ] }, "description": { "type": "string", "enum": [ "Too many assets" ] } } }, "ServiceUnavailable": { "type": "object", "properties": { "code": { "type": "integer", "enum": [ 9999 ] }, "description": { "type": "string", "enum": [ "Service is temporarily unavailable" ] } } }, "MaintenanceError": { "type": "object", "properties": { "code": { "type": "string", "enum": [ "MaintenanceError" ] }, "description": { "type": "string", "enum": [ "Service is unavailable" ] }, "subtype": { "type": "string", "enum": [ "MaintenanceError" ] } } }, "iso8601DateTime": { "pattern": "^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})-((02-([1-2][0-9]|0[1-9]))|((01|03|05|07|08|10|12)-(3[0-1]|[1-2][0-9]|0[1-9]))|((04|06|09|11)-(30|[1-2][0-9]|0[1-9])))T(2[0-3]|[0-1][0-9]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?(((\\+|-)(2[0-3]|[0-1][0-9])(:?[0-5][0-9])?)|Z)?$", "type": "string", "description": "datetime in ISO-8601 format (e.g. 2016-01-15T16:18:00-05:00) with both date and time required, including seconds, but timezone optional. Also flexible on allowing some nonstandard timezone formats like 2016-01-15T12:10:32+0000 or 2016-01-15T12:10:32-05." }, "utcDateTime": { "pattern": "^([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]|[0-9][1-9][0-9]{2}|[1-9][0-9]{3})-((02-([1-2][0-9]|0[1-9]))|((01|03|05|07|08|10|12)-(3[0-1]|[1-2][0-9]|0[1-9]))|((04|06|09|11)-(30|[1-2][0-9]|0[1-9])))T(2[0-3]|[0-1][0-9]):[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?Z$", "type": "string", "description": "datetime in RFC-3339 format (subset of ISO-8601) requiring a UTC time ending with Z (so -00:00 or +00-00 suffix NOT allowed). The datetime must have date and time, including seconds, e.g. 2016-01-15T09:23:34Z." }, "max1024CharacterString": { "maxLength": 1024, "minLength": 1, "type": "string" }, "uuid": { "pattern": "^[a-f0-9]{32}$", "type": "string" }, "lex64SortOrderString": { "maxLength": 1024, "minLength": 1, "pattern": "^[-_0-9a-zA-Z]*[_0-9a-zA-Z]$", "type": "string" }, "albumPayload": { "type": "object", "properties": { "userCreated": { "$ref": "#/components/schemas/utcDateTime" }, "userUpdated": { "$ref": "#/components/schemas/utcDateTime" }, "name": { "type": "string" }, "cover": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" } } }, "parent": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/uuid" } } }, "publishInfo": { "type": "object", "properties": { "servicePayload": { "type": "string", "description": "Album metadata, unique to the service, encapsulated as a single string with a maximum length of 1024 characters." }, "remoteId": { "type": "string", "description": "Identifier for the album that is unique to the publishing service." }, "created": { "$ref": "#/components/schemas/utcDateTime" }, "updated": { "$ref": "#/components/schemas/utcDateTime" }, "deleted": { "type": "boolean", "description": "True if the externally affiliated content (identified by remoteId) was deleted; acts as a tombstone." }, "remoteLinks": { "type": "object", "properties": { "edit": { "type": "object", "properties": { "href": { "type": "string", "description": "Fully-formed URL to a location to edit affiliated content (identified by remoteId) on the external service." } } }, "view": { "type": "object", "properties": { "href": { "type": "string", "description": "Fully-formed URL to a location to view affiliated content (identified by remoteId) on the external service." } } } }, "description": "Links to affiliated URLs on the publishing service." } } } } } } }, "externalDocs": { "description": "Find out more about Lightroom", "url": "https://www.adobe.com/products/photoshop-lightroom.html" } }