import type { AssetTag } from "./tag" /** Asset types. */ export const AssetType = { All: "all", Audio: "audio", Document: "document", Image: "image", Video: "video", } as const /** * An object representing an asset returned by the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type Asset = { /** Asset ID. */ id: string /** Asset URL. */ url: string /** Asset creation date. */ created_at: number /** Asset last modification date. */ last_modified: number /** Asset filename. */ filename: string /** Asset extension. */ extension: string /** Asset size in bytes. */ size: number /** Asset kind. */ kind: Exclude<(typeof AssetType)[keyof typeof AssetType], (typeof AssetType)["All"]> /** Asset width in pixels. */ width?: number /** Asset height in pixels. */ height?: number /** Asset notes. */ notes?: string /** Asset credits. */ credits?: string /** Asset alt text. */ alt?: string /** Asset tags. */ tags?: AssetTag[] /** @internal */ origin_url?: string /** @internal */ uploader_id?: string /** @internal */ search_highlight?: { filename?: string[] notes?: string[] credits?: string[] alt?: string[] } } /** * Available query parameters when querying assets from the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type GetAssetsParams = { // Pagination /** Number of items to return. */ pageSize?: number /** @internal */ cursor?: string // Filtering /** Asset type to filter by. */ assetType?: (typeof AssetType)[keyof typeof AssetType] /** Search query. */ keyword?: string /** Asset IDs to filter by. */ ids?: string[] /** Asset tags to filter by. */ tags?: string[] } /** * An object representing the result of querying assets from the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type GetAssetsResult = { items: Asset[] total: number cursor?: string missing_ids?: string[] is_opensearch_result: boolean } /** * Parameters for uploading an asset to the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type PostAssetParams = { file: BlobPart notes?: string credits?: string alt?: string } /** * Result of uploading an asset to the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type PostAssetResult = Asset /** * Parameters for updating an asset in the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type PatchAssetParams = { notes?: string credits?: string alt?: string filename?: string tags?: string[] } /** * Result of updating an asset in the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type PatchAssetResult = Asset /** * Parameters for deleting an asset from the Asset API. * * @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference} */ export type BulkDeleteAssetsParams = { ids: string[] }