{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/adobe/json-schema/adobe-search-operation-response-schema.json",
  "title": "SearchOperationResponse",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/adobe-aem-assets-author-openapi.yml#/components/schemas/SearchOperationResponse",
  "type": "object",
  "properties": {
    "hits": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/Metadata"
          }
        }
      }
    },
    "cursor": {
      "$ref": "#/$defs/Cursor"
    },
    "facets": {
      "type": "array",
      "description": "Facets calculated for the query. These facets are calculated on the\nsearch results and can be used to filter the results.\n\nEach facet result contains the field and type from the request,\nalong with the corresponding values based on the type.\n",
      "items": {
        "$ref": "#/$defs/FacetResponse"
      }
    },
    "search_metadata": {
      "type": "object",
      "properties": {
        "count": {
          "description": "Number of results on this page.\n",
          "type": "integer",
          "format": "int64",
          "minimum": 0,
          "maximum": 50
        },
        "totalCount": {
          "type": "object",
          "properties": {
            "total": {
              "description": "Total number of results.",
              "type": "integer",
              "format": "int64",
              "minimum": 0,
              "maximum": 10000
            },
            "relation": {
              "description": "Total number of results can either be 'eq' (equals to - meaning that this is the total number of results that are available) or 'gte' (greater than or equal to - meaning that there are more than this number of total results available and the precise total number of results has not been calculated, usually for performance reasons).",
              "type": "string",
              "enum": [
                "eq",
                "gte"
              ]
            }
          }
        },
        "searchDuration": {
          "description": "Time taken to execute the search request in nano sec.\n",
          "type": "integer",
          "format": "int64"
        }
      }
    }
  },
  "required": [
    "hits"
  ],
  "$defs": {
    "AssetId": {
      "type": "string",
      "description": "ID of the asset",
      "minLength": 1
    },
    "AssetMetadata": {
      "type": "object",
      "description": "Metadata properties that have been extracted from the asset, derived during asset processing, or applied after ingestion.  These properties are, for the most part, editable.",
      "properties": {
        "xcm:keywords": {
          "type": "array",
          "description": "tags that have been applied to the asset from the tag taxonomy",
          "items": {
            "type": "object",
            "properties": {
              "tagId": {
                "type": "string",
                "description": "unique identifier of the tag in the taxonomy",
                "minLength": 1
              },
              "ancestorIds": {
                "type": "array",
                "uniqueItems": true,
                "description": "unique identifiers of ancestor tags, from root toward the applied tag",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "value": {
                "type": "string",
                "description": "the tag for the asset"
              },
              "repo:ancestors": {
                "type": "array",
                "uniqueItems": true,
                "description": "list of ancestor names for the tag",
                "items": {
                  "type": "string"
                }
              },
              "@lang": {
                "type": "string",
                "description": "the ISO 639-1 language code for the tag"
              }
            }
          }
        },
        "dc:creator": {
          "type": "array",
          "description": "The entity primarily responsible for making the asset",
          "items": {
            "type": "string"
          }
        },
        "dc:description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ],
          "description": "An account of the asset"
        },
        "dc:title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ],
          "description": "A name given to the asset"
        },
        "exif:GPSLatitude": {
          "type": "string",
          "description": "Indicates the latitude. The latitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively."
        },
        "exif:GPSLongitude": {
          "type": "string",
          "description": "Indicates the longitude. The longitude is expressed as three RATIONAL values giving the degrees, minutes, and seconds, respectively."
        },
        "photoshop:ColorMode": {
          "type": "number",
          "description": "The color mode of the asset"
        },
        "photoshop:DateCreated": {
          "type": "string",
          "format": "date-time",
          "description": "The creation date of the asset as set by Photoshop"
        },
        "xcm:machineKeywords": {
          "type": "array",
          "description": "Smart Tags that have been predicted for the asset during asset processing",
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "description": "the predicted tag for the asset"
              },
              "confidence": {
                "type": "number",
                "format": "double",
                "description": "the model's confidence score for this tag"
              },
              "localeCode": {
                "type": "string",
                "description": "the ISO 639-1 language code for the tag"
              }
            }
          }
        },
        "tiff:BitsPerSample": {
          "type": "array",
          "description": "Number of bits per component.",
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "tiff:Orientation": {
          "type": "number",
          "description": "The orientation of the image with respect to the rows and columns."
        },
        "xmp:CreateDate": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the resource was created."
        },
        "xmp:CreatorTool": {
          "type": "string",
          "description": "The name of the first known tool used to create the resource."
        },
        "xmp:ModifyDate": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time the resource was last modified."
        }
      },
      "additionalProperties": true
    },
    "Cursor": {
      "description": "A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor\nsignifies that the returned list does not have more elements.\n",
      "type": "string",
      "minLength": 1
    },
    "FacetResponse": {
      "type": "object",
      "description": "Unified aggregation result containing both category counts and statistical values.\nEach result contains the tag, field, and type from the request, along with the corresponding values.\n",
      "properties": {
        "type": {
          "$ref": "#/$defs/FacetType"
        },
        "field": {
          "type": "string",
          "minLength": 1,
          "description": "The field on which aggregation was performed. This is typically a field in the document that you want to either filter on (facet aggregation) or get the stats for.\n"
        },
        "id": {
          "description": "A unique identifier for this facet response. This is the same id that is used in the request to identify the facet request.",
          "type": "string",
          "maxLength": 256,
          "minLength": 0
        }
      },
      "required": [
        "id",
        "field",
        "type"
      ]
    },
    "FacetType": {
      "type": "string",
      "description": "The type of aggregation required on the specified field.\n- `CATEGORY`: Category aggregation is used to get the unique values for a field and their respective counts. This is applicable for string fields.\n- `STAT`: Stat aggregation is used to get statistical information about a numerical field - min, max. This is applicable only for date and numerical fields.\n\nEach facet request can have a 'scope' property that is a list of filters that are applied before the aggregation is computed.\n",
      "enum": [
        "CATEGORY",
        "STAT"
      ]
    },
    "Metadata": {
      "type": "object",
      "properties": {
        "assetId": {
          "$ref": "#/$defs/AssetId"
        },
        "repositoryMetadata": {
          "$ref": "#/$defs/RepositoryMetadata"
        },
        "assetMetadata": {
          "$ref": "#/$defs/AssetMetadata"
        }
      }
    },
    "RepositoryId": {
      "description": "The ID of the repository that contains the asset, link, folder or collection",
      "type": "string",
      "minLength": 1,
      "readOnly": true
    },
    "RepositoryMetadata": {
      "type": "object",
      "description": "Read-only metadata properties that are maintained by the repository for the asset. Properties may be omitted if not applicable.",
      "properties": {
        "repo:name": {
          "type": "string",
          "description": "The asset storage name",
          "readOnly": true
        },
        "repo:path": {
          "type": "string",
          "description": "The asset storage path",
          "readOnly": true
        },
        "repo:assetId": {
          "type": "string",
          "description": "The asset identifier",
          "readOnly": true
        },
        "repo:parent": {
          "type": "string",
          "description": "The identifier of the parent folder of the asset",
          "readOnly": true
        },
        "repo:ancestors": {
          "type": "array",
          "description": "List of ancestor folder identifiers, starting with the identifier of the storage root folder and ending with the identifier of the parent folder of the asset.",
          "uniqueItems": true,
          "readOnly": true,
          "items": {
            "type": "string"
          }
        },
        "repo:createDate": {
          "type": "string",
          "format": "date-time",
          "description": "The created date of the asset as maintained by the content repository",
          "readOnly": true
        },
        "repo:createdBy": {
          "type": "string",
          "description": "The user that created the asset in the content repository",
          "readOnly": true
        },
        "repo:modifyDate": {
          "type": "string",
          "format": "date-time",
          "description": "The last modified date of the asset as maintained by the content repository",
          "readOnly": true
        },
        "repo:modifiedBy": {
          "type": "string",
          "description": "The user that last modified the asset in the content repository",
          "readOnly": true
        },
        "dc:format": {
          "type": "string",
          "description": "The file format of the asset",
          "readOnly": true
        },
        "repo:size": {
          "type": "integer",
          "format": "int64",
          "description": "The size, in bytes, of the asset binary",
          "readOnly": true
        },
        "dam:sha1": {
          "type": "string",
          "description": "A SHA1 hash of the asset's binary content",
          "readOnly": true
        },
        "tiff:imageLength": {
          "type": "integer",
          "description": "The number of rows of pixels in the image.",
          "readOnly": true
        },
        "tiff:imageWidth": {
          "type": "integer",
          "description": "The number of columns in the image, i.e., the number of pixels per row.",
          "readOnly": true
        },
        "isPublishedToAemPublish": {
          "type": "boolean",
          "description": "Set to `true` when the asset has been published to AEM Publish",
          "readOnly": true
        },
        "isPublishedToDynamicMedia": {
          "type": "boolean",
          "description": "Set to `true` when the asset has been published to Dynamic Media",
          "readOnly": true
        },
        "lastPublishedToAemPublish": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time at which the asset was last published to AEM Publish",
          "readOnly": true
        },
        "lastPublishedToDynamicMedia": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time at which the asset was last published to Dynamic Media",
          "readOnly": true
        },
        "aem:published": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time at which the asset was last published to AEM Publish",
          "readOnly": true,
          "deprecated": true
        },
        "aem:assetState": {
          "type": "string",
          "description": "The processing state of the asset",
          "readOnly": true
        },
        "aem:checkedOutBy": {
          "type": "string",
          "description": "The User ID of the user who has checked out the asset, if it is checked out",
          "readOnly": true
        },
        "repo:state": {
          "type": "string",
          "description": "Indicates the state change of an asset. This property is an enumeration that can have values - ACTIVE, DISCARDED, DISCARDED_PARENT.",
          "readOnly": true
        },
        "repo:repositoryId": {
          "$ref": "#/$defs/RepositoryId"
        },
        "repo:etag": {
          "type": "string",
          "description": "Computed as a hash over the schema ID, repo:path, and the full serialized metadata response. Changes whenever any of those change. Use with `If-None-Match` (GET) or `If-Match` (PATCH).",
          "readOnly": true
        },
        "repo:scene7Domain": {
          "type": "string",
          "description": "Scene7 delivery domain",
          "readOnly": true
        },
        "repo:scene7File": {
          "type": "string",
          "description": "Scene7 file path",
          "readOnly": true
        },
        "repo:scene7FileStatus": {
          "type": "string",
          "description": "Scene7 synchronization status (e.g. `PublishComplete`)",
          "readOnly": true
        },
        "repo:scene7Folder": {
          "type": "string",
          "description": "Scene7 folder path",
          "readOnly": true
        },
        "repo:scene7FontStyle": {
          "type": "string",
          "description": "Font style (font assets)",
          "readOnly": true
        },
        "repo:scene7FontType": {
          "type": "string",
          "description": "Font type (font assets)",
          "readOnly": true
        },
        "repo:scene7LastModified": {
          "type": "string",
          "description": "Timestamp of last Scene7 modification",
          "readOnly": true
        },
        "repo:scene7Name": {
          "type": "string",
          "description": "Scene7 asset name",
          "readOnly": true
        },
        "repo:scene7RTFName": {
          "type": "string",
          "description": "RTF font name (font assets)",
          "readOnly": true
        },
        "repo:scene7Type": {
          "type": "string",
          "description": "Scene7 asset type",
          "readOnly": true
        }
      },
      "additionalProperties": true
    }
  }
}