Skip to content
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
### Version: 5.1.0
#### Date: Mar-02-2026
Fix: Added support of asset fields in assets & entries class.

### Version: 5.0.1
#### Date: feb-23-2026
Fix: Added support of special symbols in regex method with safe pattern.
Expand Down
113 changes: 58 additions & 55 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@contentstack/delivery-sdk",
"version": "5.0.1",
"version": "5.1.0",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
23 changes: 22 additions & 1 deletion src/assets/asset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { AxiosInstance, getData } from '@contentstack/core';
export class Asset {
private _client: AxiosInstance;
private _urlPath: string;
_queryParams: { [key: string]: string | number } = {};
_queryParams: { [key: string]: string | number | string[] } = {};

constructor(client: AxiosInstance, assetUid: string) {
this._client = client;
Expand Down Expand Up @@ -129,6 +129,27 @@ export class Asset {
return this;
}

/**
* @method assetFields
* @memberof Asset
* @description Include specific asset fields in the response (CDA getAssets - single asset).
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
* @example
* import contentstack from '@contentstack/delivery-sdk'
*
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
* const result = await stack.asset("assetUid").assetFields("user_defined_fields", "embedded_metadata").fetch();
*
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
* @returns {Asset} - Returns the Asset instance for chaining.
*/
assetFields(...fields: string[]): this {
if (fields.length > 0) {
this._queryParams['asset_fields[]'] = fields;
}
return this;
}

/**
* @method fetch
* @memberof Asset
Expand Down
21 changes: 21 additions & 0 deletions src/entries/entries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,27 @@ export class Entries extends BaseQuery {
return this;
}

/**
* @method assetFields
* @memberof Entries
* @description Include specific asset fields in the response (CDA getEntry/entries).
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
* @example
* import contentstack from '@contentstack/delivery-sdk'
*
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
* const result = await stack.contentType("contentTypeUid").entry().assetFields("user_defined_fields", "embedded_metadata").find();
*
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
* @returns {Entries} - Returns the Entries instance for chaining.
*/
assetFields(...fields: string[]): this {
if (fields.length > 0) {
this._queryParams['asset_fields[]'] = fields;
}
return this;
}

/**
* Override find method to include content type UID directly for better caching
*/
Expand Down
21 changes: 21 additions & 0 deletions src/entries/entry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -273,4 +273,25 @@ export class Entry {
}
return this;
}

/**
* @method assetFields
* @memberof Entry
* @description Include specific asset fields in the response (CDA getEntry).
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
* @example
* import contentstack from '@contentstack/delivery-sdk'
*
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
* const result = await stack.contentType("contentTypeUid").entry("entryUid").assetFields("user_defined_fields", "embedded_metadata").fetch();
*
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
* @returns {Entry} - Returns the Entry instance for chaining.
*/
assetFields(...fields: string[]): this {
if (fields.length > 0) {
this._queryParams['asset_fields[]'] = fields;
}
return this;
}
}
22 changes: 22 additions & 0 deletions src/query/asset-query.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,28 @@ export class AssetQuery extends BaseQuery {

return this;
}

/**
* @method assetFields
* @memberof AssetQuery
* @description Include specific asset fields in the response (CDA getAssets).
* Use with asset_fields[]: user_defined_fields, embedded, ai_suggested, visual_markups.
* @example
* import contentstack from '@contentstack/delivery-sdk'
*
* const stack = contentstack.stack({ apiKey: "apiKey", deliveryToken: "deliveryToken", environment: "environment" });
* const result = await stack.asset().assetFields("user_defined_fields", "embedded_metadata").find();
*
* @param {...string} fields - Asset field names to include (e.g. user_defined_fields, embedded, ai_suggested, visual_markups)
* @returns {AssetQuery} - Returns the AssetQuery instance for chaining.
*/
assetFields(...fields: string[]): this {
if (fields.length > 0) {
this._queryParams['asset_fields[]'] = fields;
}
return this;
}

/**
* @method query
* @memberof AssetQuery
Expand Down
Loading
Loading