> For the complete documentation index, see [llms.txt](https://developer.emporix.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.emporix.io/api-references/readme/api-reference-22/models.md).

# Models

## The errorMessage object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"errorMessage":{"title":"Error","description":"Schema for specific API errors.","type":"object","properties":{"code":{"type":"integer","description":"HTTP status code.","minimum":100,"maximum":599},"status":{"description":"HTTP status.","type":"string"},"message":{"description":"Descriptive error message for debugging.","type":"string"},"details":{"description":"List of problems causing this error.","type":"array","items":{"title":"Error Detail","description":"Error details.","type":"string"}},"resourceId":{"description":"Id of the resource.","type":"string"}},"required":["status","code","message"]}}}}
```

## The MetadataCreate object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}}}}}
```

## The MetadataUpdate object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}}}}}
```

## The MetadataGet object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"MetadataGet":{"type":"object","allOf":[{"$ref":"#/components/schemas/MetadataUpdate"}],"properties":{"createdAt":{"description":"Date and time when the document was created.","type":"string"},"modifiedAt":{"description":"Date and time when the document was last modified.","type":"string"}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}}}}}
```

## The RefId object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}}}}}
```

## The PatchOperation object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"PatchOperation":{"type":"object","properties":{"op":{"type":"string","enum":["add","remove","replace"],"description":"JSON Patch operation. Available operations: `add`, `remove`, and `replace`."},"path":{"type":"string","description":"Path to the field to update.\n\nExamples: `/url`, `/refIds`, `/refIds/-`.\n\nTo append an item to an array, use `add` with a path ending in `/-`. The `-` means append after the last element."},"value":{"description":"Value to add or replace. The value can be a primitive type, an object, or an array."}},"required":["op","path"]}}}}
```

## The Asset object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}}}}}
```

## The AssetDetailsCreate object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}}}}}
```

## The AssetDetailsGet object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetDetailsGet":{"title":"Asset Response Detailed Information","type":"object","allOf":[{"$ref":"#/components/schemas/AssetDetailsCreate"}],"properties":{"bytes":{"type":"number","description":"Size of the content associated with the asset in bytes."},"etag":{"type":"string","description":"The ETAG digest for the asset."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}}}}}
```

## The AssetUpdateMultipart object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetUpdateMultipart":{"title":"Asset Update Mutlipart Payload","type":"object","properties":{"file":{"type":"object","format":"binary","description":"Content of the file."},"body":{"description":"Asset Json update payload","allOf":[{"$ref":"#/components/schemas/AssetUpdateBlob"}]}},"required":["file","body"]},"AssetUpdateBlob":{"title":"Asset Update Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"},"metadata":{"$ref":"#/components/schemas/MetadataUpdate"}},"required":["access","type"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```

## The AssetCreateMultipart object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetCreateMultipart":{"title":"Asset Create Multipart Payload","type":"object","properties":{"file":{"type":"object","format":"binary","description":"Content of the file. The max file size is 30 MB."},"body":{"description":"Asset JSON creation payload.","allOf":[{"$ref":"#/components/schemas/AssetCreateBlob"}]}},"required":["file","body"]},"AssetCreateBlob":{"title":"Asset Create Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"}},"required":["type","access"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}}}}}
```

## The AssetCreateLink object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetCreateLink":{"title":"Asset Create Link Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["LINK"],"description":"Asset type. This property is immutable."},"url":{"type":"string","description":"Resource link."}},"required":["type","access","url"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}}}}}
```

## The AssetCreateBlob object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetCreateBlob":{"title":"Asset Create Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"}},"required":["type","access"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}}}}}
```

## The UploadSessionRequest object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"UploadSessionRequest":{"title":"Upload Session Request","description":"Payload for creating a direct-storage upload session.","allOf":[{"$ref":"#/components/schemas/AssetCreateBlob"},{"type":"object","properties":{"uploadType":{"type":"string","enum":["put","form"],"default":"put","description":"Upload flow requested for a private Google Cloud Storage asset.\n* `put`: Returns a signed `PUT` request. This is the default when the property is omitted.\n* `form`: Returns a multipart `POST` policy.\nPublic Cloudinary assets always use a multipart `POST` form, regardless of this value.\n"}}}]},"AssetCreateBlob":{"title":"Asset Create Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"}},"required":["type","access"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}}}}}
```

## The GetAsset object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"GetAsset":{"title":"Get Asset","allOf":[{"$ref":"#/components/schemas/Asset"},{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["BLOB","LINK"],"description":"Asset type. This property is immutable."},"vendorId":{"type":"string","description":"Id of a vendor to which the asset belongs."},"url":{"type":"string","description":"Resource link."},"details":{"$ref":"#/components/schemas/AssetDetailsGet"},"metadata":{"$ref":"#/components/schemas/MetadataGet"}}}]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsGet":{"title":"Asset Response Detailed Information","type":"object","allOf":[{"$ref":"#/components/schemas/AssetDetailsCreate"}],"properties":{"bytes":{"type":"number","description":"Size of the content associated with the asset in bytes."},"etag":{"type":"string","description":"The ETAG digest for the asset."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}},"MetadataGet":{"type":"object","allOf":[{"$ref":"#/components/schemas/MetadataUpdate"}],"properties":{"createdAt":{"description":"Date and time when the document was created.","type":"string"},"modifiedAt":{"description":"Date and time when the document was last modified.","type":"string"}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```

## The GetAssetLink object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"GetAssetLink":{"title":"Get Asset Link","type":"object","allOf":[{"$ref":"#/components/schemas/AssetCreateLink"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"vendorId":{"type":"string","description":"Id of a vendor to which the asset belongs."},"metadata":{"$ref":"#/components/schemas/MetadataGet"}}},"AssetCreateLink":{"title":"Asset Create Link Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["LINK"],"description":"Asset type. This property is immutable."},"url":{"type":"string","description":"Resource link."}},"required":["type","access","url"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"MetadataGet":{"type":"object","allOf":[{"$ref":"#/components/schemas/MetadataUpdate"}],"properties":{"createdAt":{"description":"Date and time when the document was created.","type":"string"},"modifiedAt":{"description":"Date and time when the document was last modified.","type":"string"}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```

## The GetAssetBlob object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"GetAssetBlob":{"title":"Get Asset Blob","type":"object","allOf":[{"$ref":"#/components/schemas/AssetCreateBlob"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"vendorId":{"type":"string","description":"Id of a vendor to which the asset belongs."},"status":{"type":"string","enum":["PENDING","READY"],"description":"Upload state of a `BLOB` created through an upload session.\n* `PENDING` — the session exists and the file is not confirmed yet.\n* `READY` — the file is stored.\nWhen this field is absent, the asset is ready. Assets created by the existing upload endpoints do not return this field.\n"},"details":{"$ref":"#/components/schemas/AssetDetailsGet"},"metadata":{"$ref":"#/components/schemas/MetadataGet"}}},"AssetCreateBlob":{"title":"Asset Create Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"id":{"type":"string","description":"Unique identifier of an asset."},"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"}},"required":["type","access"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}},"AssetDetailsGet":{"title":"Asset Response Detailed Information","type":"object","allOf":[{"$ref":"#/components/schemas/AssetDetailsCreate"}],"properties":{"bytes":{"type":"number","description":"Size of the content associated with the asset in bytes."},"etag":{"type":"string","description":"The ETAG digest for the asset."}}},"MetadataGet":{"type":"object","allOf":[{"$ref":"#/components/schemas/MetadataUpdate"}],"properties":{"createdAt":{"description":"Date and time when the document was created.","type":"string"},"modifiedAt":{"description":"Date and time when the document was last modified.","type":"string"}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```

## The UploadSession object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"UploadSession":{"title":"Upload Session","type":"object","description":"Instruction for sending a file directly to storage.","properties":{"id":{"type":"string","description":"Unique identifier of the asset, generated when the upload session is created."},"provider":{"type":"string","enum":["GCS","CLOUDINARY"],"description":"Storage that receives the file.\n* `GCS` — private asset. Upload with the returned `PUT` headers or multipart `POST` fields.\n* `CLOUDINARY` — public asset. Upload with `POST` and the returned multipart form fields.\n"},"status":{"type":"string","enum":["PENDING"],"description":"The asset stays `PENDING` until the file is stored."},"expiresAt":{"type":"string","format":"date-time","description":"Date and time when the unused upload session expires. Returned as an ISO-8601 string."},"upload":{"type":"object","description":"The request the caller sends to storage.","properties":{"method":{"type":"string","enum":["PUT","POST"],"description":"HTTP method of the storage request."},"url":{"type":"string","description":"Storage URL that receives the file."},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"Headers required by a private Google Cloud Storage `PUT` upload. Send every returned header unchanged with the file.\nReturned only for the Google Cloud Storage `PUT` flow.\n"},"fields":{"type":"object","additionalProperties":{"type":"string"},"description":"Fields required by a Google Cloud Storage or Cloudinary multipart `POST`. Send every returned field unchanged, then append the file part last.\nGoogle Cloud Storage fields do not include `x-goog-if-generation-match`. Cloudinary fields include `api_key` and `signature` but never include the API secret.\n"}},"required":["method","url"]}},"required":["id","provider","status","expiresAt","upload"]}}}}
```

## The DownloadUrl object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"DownloadUrl":{"title":"Download URL","type":"object","description":"URL that returns the stored file.","properties":{"provider":{"type":"string","enum":["GCS","CLOUDINARY","LINK"],"description":"Storage that holds the file.\n* `GCS` — private blob. The URL is a signed download and includes `expiresAt`.\n* `CLOUDINARY` — public blob. The URL is permanent.\n* `LINK` — the URL stored on the asset.\n"},"url":{"type":"string","description":"URL of the stored file."},"expiresAt":{"type":"string","format":"date-time","description":"Date and time when a private signed URL stops working. Returned as an ISO-8601 string.\nPresent for `GCS` only.\n"}},"required":["provider","url"]}}}}
```

## The AssetUpdateLink object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetUpdateLink":{"title":"Asset Update Link Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"url":{"type":"string","description":"Resource link."},"type":{"type":"string","enum":["LINK"],"description":"Asset type. This property is immutable."},"metadata":{"$ref":"#/components/schemas/MetadataUpdate"}},"required":["access","url","type"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```

## The AssetUpdateBlob object

```json
{"openapi":"3.0.0","info":{"title":"Media Service","version":"0.0.1"},"components":{"schemas":{"AssetUpdateBlob":{"title":"Asset Update Blob Payload","type":"object","allOf":[{"$ref":"#/components/schemas/Asset"}],"properties":{"type":{"type":"string","enum":["BLOB"],"description":"Asset type. This property is immutable."},"details":{"$ref":"#/components/schemas/AssetDetailsCreate"},"metadata":{"$ref":"#/components/schemas/MetadataUpdate"}},"required":["access","type"]},"Asset":{"title":"Asset","type":"object","properties":{"access":{"type":"string","enum":["PUBLIC","PRIVATE"],"description":"Access type of the asset. This property is immutable. \n- `PUBLIC`: Blob assets are stored in Cloudinary and are accessible through a permanent external URL.\n- `PRIVATE`: Blob assets are stored in Google Cloud Storage. Retrieve their content through `/media/{tenant}/assets/{assetId}/download` or request a temporary signed URL through `/media/{tenant}/assets/{assetId}/download-url`.\n"},"refIds":{"type":"array","description":"List of references.","items":{"$ref":"#/components/schemas/RefId"}},"mixins":{"type":"object","description":"Custom asset attributes."},"metadata":{"$ref":"#/components/schemas/MetadataCreate"}}},"RefId":{"type":"object","properties":{"type":{"type":"string","description":"Reference type. Can be one of the predefined types: `BRAND`, `CATEGORY`, `LABEL`, `PRODUCT`, `MODULE`, `AGENT` or any custom schema type.\n"},"id":{"type":"string","description":"Reference Id."}}},"MetadataCreate":{"type":"object","properties":{"mixins":{"type":"object","additionalProperties":{"type":"string"},"description":"A key-value map, where key is a mixin name and value is a link to the mixin schema. Must be provided together with the corresponding mixin values in the `mixins` object."}}},"AssetDetailsCreate":{"title":"Asset Request Detailed Information","type":"object","properties":{"filename":{"type":"string","description":"Asset filename."},"mimeType":{"type":"string","description":"The MIME (media) type of the asset."}}},"MetadataUpdate":{"allOf":[{"type":"object","properties":{"version":{"minimum":1,"type":"integer","description":"Version of the document."}},"required":["version"]},{"$ref":"#/components/schemas/MetadataCreate"}]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://developer.emporix.io/api-references/readme/api-reference-22/models.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
