diff --git a/Contentstack.Core/Configuration/LivePreviewConfig.cs b/Contentstack.Core/Configuration/LivePreviewConfig.cs
index 18670ca5..2356cf76 100644
--- a/Contentstack.Core/Configuration/LivePreviewConfig.cs
+++ b/Contentstack.Core/Configuration/LivePreviewConfig.cs
@@ -1,4 +1,5 @@
-using Newtonsoft.Json.Linq;
+using System;
+using Newtonsoft.Json.Linq;
namespace Contentstack.Core.Configuration
{
@@ -12,7 +13,24 @@ public class LivePreviewConfig
internal string ContentTypeUID { get; set; }
internal string EntryUID { get; set; }
internal JObject PreviewResponse { get; set; }
+
+ ///
+ /// Snapshot of preview_timestamp / release_id / live_preview when was set (prefetch).
+ /// Prevents Entry.Fetch from short-circuiting with a draft from a previous Live Preview query.
+ ///
+ internal string PreviewResponseFingerprintPreviewTimestamp { get; set; }
+ internal string PreviewResponseFingerprintReleaseId { get; set; }
+ internal string PreviewResponseFingerprintLivePreview { get; set; }
+
public string ReleaseId {get; set;}
public string PreviewTimestamp {get; set;}
+
+ internal bool IsCachedPreviewForCurrentQuery()
+ {
+ if (PreviewResponse == null) return false;
+ return string.Equals(PreviewTimestamp ?? "", PreviewResponseFingerprintPreviewTimestamp ?? "", StringComparison.Ordinal)
+ && string.Equals(ReleaseId ?? "", PreviewResponseFingerprintReleaseId ?? "", StringComparison.Ordinal)
+ && string.Equals(LivePreview ?? "", PreviewResponseFingerprintLivePreview ?? "", StringComparison.Ordinal);
+ }
}
}
diff --git a/Contentstack.Core/ContentstackClient.cs b/Contentstack.Core/ContentstackClient.cs
index 85ebccdb..b34d0fd1 100644
--- a/Contentstack.Core/ContentstackClient.cs
+++ b/Contentstack.Core/ContentstackClient.cs
@@ -61,6 +61,94 @@ private string _Url
private string currentContenttypeUid = null;
private string currentEntryUid = null;
public List Plugins { get; set; } = new List();
+
+ private static LivePreviewConfig CloneLivePreviewConfig(LivePreviewConfig source)
+ {
+ if (source == null) return null;
+
+ return new LivePreviewConfig
+ {
+ Enable = source.Enable,
+ Host = source.Host,
+ ManagementToken = source.ManagementToken,
+ PreviewToken = source.PreviewToken,
+ ReleaseId = source.ReleaseId,
+ PreviewTimestamp = source.PreviewTimestamp,
+
+ // internal state (same assembly)
+ LivePreview = source.LivePreview,
+ ContentTypeUID = source.ContentTypeUID,
+ EntryUID = source.EntryUID,
+ PreviewResponse = source.PreviewResponse,
+ PreviewResponseFingerprintPreviewTimestamp = source.PreviewResponseFingerprintPreviewTimestamp,
+ PreviewResponseFingerprintReleaseId = source.PreviewResponseFingerprintReleaseId,
+ PreviewResponseFingerprintLivePreview = source.PreviewResponseFingerprintLivePreview
+ };
+ }
+
+ private static ContentstackOptions CloneOptions(ContentstackOptions source)
+ {
+ if (source == null) return null;
+
+ return new ContentstackOptions
+ {
+ ApiKey = source.ApiKey,
+ AccessToken = source.AccessToken,
+ DeliveryToken = source.DeliveryToken,
+ Environment = source.Environment,
+ Host = source.Host,
+ Proxy = source.Proxy,
+ Region = source.Region,
+ Version = source.Version,
+ Branch = source.Branch,
+ Timeout = source.Timeout,
+ EarlyAccessHeader = source.EarlyAccessHeader,
+ LivePreview = CloneLivePreviewConfig(source.LivePreview)
+ };
+ }
+
+ ///
+ /// Clears any in-memory Live Preview context (hash, release, timestamp, content type, entry).
+ /// Useful when switching back to the Delivery API after using Live Preview / Timeline preview.
+ ///
+ public void ResetLivePreview()
+ {
+ if (this.LivePreviewConfig == null) return;
+
+ this.LivePreviewConfig.LivePreview = null;
+ this.LivePreviewConfig.ReleaseId = null;
+ this.LivePreviewConfig.PreviewTimestamp = null;
+ this.LivePreviewConfig.ContentTypeUID = null;
+ this.LivePreviewConfig.EntryUID = null;
+ this.LivePreviewConfig.PreviewResponse = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintPreviewTimestamp = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintReleaseId = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintLivePreview = null;
+ }
+
+ ///
+ /// Creates a new client instance with the same configuration but isolated in-memory state.
+ /// Use this to safely perform Timeline comparisons (left/right) without shared Live Preview context.
+ ///
+ public ContentstackClient Fork()
+ {
+ var forked = new ContentstackClient(CloneOptions(_options));
+
+ // Preserve any runtime header mutations (e.g., custom headers added via SetHeader).
+ if (this._LocalHeaders != null)
+ {
+ foreach (var kvp in this._LocalHeaders)
+ {
+ forked.SetHeader(kvp.Key, kvp.Value?.ToString());
+ }
+ }
+
+ // Carry over current content type / entry hints (used when live preview query omits them)
+ forked.currentContenttypeUid = this.currentContenttypeUid;
+ forked.currentEntryUid = this.currentEntryUid;
+
+ return forked;
+ }
///
/// Initializes a instance of the class.
///
@@ -115,7 +203,7 @@ public ContentstackClient(IOptions options)
this.SetConfig(cnfig);
if (_options.LivePreview != null)
{
- this.LivePreviewConfig = _options.LivePreview;
+ this.LivePreviewConfig = CloneLivePreviewConfig(_options.LivePreview);
}
else
{
@@ -341,6 +429,11 @@ public async Task GetContentTypes(Dictionary param = null
}
}
+ ///
+ /// Fetches draft entry JSON from the Live Preview host (Java Stack.livePreviewQuery equivalent).
+ /// Always uses the configured preview host so the call succeeds even when the delivery base URL
+ /// would still point at CDN (e.g. live_preview hash is "init").
+ ///
private async Task GetLivePreviewData()
{
@@ -386,11 +479,25 @@ private async Task GetLivePreviewData()
try
{
HttpRequestHandler RequestHandler = new HttpRequestHandler(this);
- //string branch = this.Config.Branch ? this.Config.Branch : "main";
- string URL = String.Format("{0}/content_types/{1}/entries/{2}", this.Config.getBaseUrl(this.LivePreviewConfig, this.LivePreviewConfig.ContentTypeUID), this.LivePreviewConfig.ContentTypeUID, this.LivePreviewConfig.EntryUID);
+ string basePreview = this.Config.getLivePreviewUrl(this.LivePreviewConfig);
+ string URL = String.Format("{0}/content_types/{1}/entries/{2}", basePreview, this.LivePreviewConfig.ContentTypeUID, this.LivePreviewConfig.EntryUID);
var outputResult = await RequestHandler.ProcessRequest(URL, headerAll, mainJson, Branch: this.Config.Branch, isLivePreview: true, timeout: this.Config.Timeout, proxy: this.Config.Proxy);
JObject data = JsonConvert.DeserializeObject(outputResult.Replace("\r\n", ""), this.SerializerSettings);
- return (JObject)data["entry"];
+ if (data == null) return null;
+ if (data["entry"] is JObject single && single.HasValues)
+ return single;
+ if (data["entries"] is JArray arr && arr.Count > 0)
+ {
+ string targetUid = this.LivePreviewConfig.EntryUID;
+ foreach (var token in arr)
+ {
+ if (token is JObject jo && jo["uid"] != null
+ && string.Equals(jo["uid"].ToString(), targetUid, StringComparison.Ordinal))
+ return jo;
+ }
+ return arr[0] as JObject;
+ }
+ return null;
}
catch (Exception ex)
{
@@ -612,6 +719,10 @@ public async Task LivePreviewQueryAsync(Dictionary query)
this.LivePreviewConfig.LivePreview = null;
this.LivePreviewConfig.PreviewTimestamp = null;
this.LivePreviewConfig.ReleaseId = null;
+ this.LivePreviewConfig.PreviewResponse = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintPreviewTimestamp = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintReleaseId = null;
+ this.LivePreviewConfig.PreviewResponseFingerprintLivePreview = null;
if (query.Keys.Contains("content_type_uid"))
{
string contentTypeUID = null;
@@ -655,10 +766,28 @@ public async Task LivePreviewQueryAsync(Dictionary query)
query.TryGetValue("preview_timestamp", out PreviewTimestamp);
this.LivePreviewConfig.PreviewTimestamp = PreviewTimestamp;
}
- //if (!string.IsNullOrEmpty(this.LivePreviewConfig.LivePreview))
- //{
- // this.LivePreviewConfig.PreviewResponse = await GetLivePreviewData();
- //}
+
+ if (this.LivePreviewConfig.Enable
+ && !string.IsNullOrEmpty(this.LivePreviewConfig.Host)
+ && !string.IsNullOrEmpty(this.LivePreviewConfig.ContentTypeUID)
+ && !string.IsNullOrEmpty(this.LivePreviewConfig.EntryUID))
+ {
+ try
+ {
+ var draft = await GetLivePreviewData();
+ if (draft != null && draft.Type == JTokenType.Object && draft.HasValues)
+ {
+ this.LivePreviewConfig.PreviewResponse = draft;
+ this.LivePreviewConfig.PreviewResponseFingerprintPreviewTimestamp = this.LivePreviewConfig.PreviewTimestamp;
+ this.LivePreviewConfig.PreviewResponseFingerprintReleaseId = this.LivePreviewConfig.ReleaseId;
+ this.LivePreviewConfig.PreviewResponseFingerprintLivePreview = this.LivePreviewConfig.LivePreview;
+ }
+ }
+ catch
+ {
+ // Prefetch failed: Entry.Fetch still uses preview headers on the network path.
+ }
+ }
}
///
diff --git a/Contentstack.Core/Models/Entry.cs b/Contentstack.Core/Models/Entry.cs
index d683ecdb..70d1948d 100644
--- a/Contentstack.Core/Models/Entry.cs
+++ b/Contentstack.Core/Models/Entry.cs
@@ -1401,13 +1401,47 @@ public async Task Fetch()
//Dictionary urlQueries = new Dictionary();
+ var livePreviewConfig = this.ContentTypeInstance?.StackInstance?.LivePreviewConfig;
+ if (livePreviewConfig != null
+ && livePreviewConfig.Enable
+ && livePreviewConfig.PreviewResponse != null
+ && livePreviewConfig.PreviewResponse.Type == JTokenType.Object
+ && livePreviewConfig.PreviewResponse.HasValues
+ && !string.IsNullOrEmpty(this.Uid)
+ && string.Equals(livePreviewConfig.EntryUID, this.Uid, StringComparison.Ordinal)
+ && this.ContentTypeInstance != null
+ && string.Equals(
+ livePreviewConfig.ContentTypeUID,
+ this.ContentTypeInstance.ContentTypeId,
+ StringComparison.OrdinalIgnoreCase)
+ && livePreviewConfig.IsCachedPreviewForCurrentQuery())
+ {
+ try
+ {
+ var serializedFromPreview = livePreviewConfig.PreviewResponse.ToObject(
+ this.ContentTypeInstance.StackInstance.Serializer);
+ if (serializedFromPreview != null && serializedFromPreview.GetType() == typeof(Entry))
+ {
+ (serializedFromPreview as Entry).ContentTypeInstance = this.ContentTypeInstance;
+ }
+ return serializedFromPreview;
+ }
+ catch
+ {
+ // Fall through to network fetch.
+ }
+ }
+
if (headers != null && headers.Count() > 0)
{
foreach (var header in headers)
{
- if (this.ContentTypeInstance.StackInstance.LivePreviewConfig.Enable == true
- && this.ContentTypeInstance.StackInstance.LivePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId
- && header.Key == "access_token" && !string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview))
+ if (this.ContentTypeInstance != null
+ && livePreviewConfig != null
+ && livePreviewConfig.Enable
+ && livePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId
+ && header.Key == "access_token"
+ && !string.IsNullOrEmpty(livePreviewConfig.LivePreview))
{
continue;
}
@@ -1415,25 +1449,36 @@ public async Task Fetch()
}
}
bool isLivePreview = false;
- if (this.ContentTypeInstance.StackInstance.LivePreviewConfig.Enable == true && this.ContentTypeInstance.StackInstance.LivePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId)
+ var hasLivePreviewContext =
+ this.ContentTypeInstance != null
+ && livePreviewConfig != null
+ && livePreviewConfig.Enable
+ && livePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId
+ && (
+ !string.IsNullOrEmpty(livePreviewConfig.LivePreview)
+ || !string.IsNullOrEmpty(livePreviewConfig.ReleaseId)
+ || !string.IsNullOrEmpty(livePreviewConfig.PreviewTimestamp)
+ );
+
+ if (hasLivePreviewContext)
{
- mainJson.Add("live_preview", string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview)? "init" : this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview);
+ mainJson.Add("live_preview", string.IsNullOrEmpty(livePreviewConfig.LivePreview)? "init" : livePreviewConfig.LivePreview);
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.ManagementToken)) {
- headerAll["authorization"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.ManagementToken;
- } else if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewToken)) {
- headerAll["preview_token"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewToken;
+ if (!string.IsNullOrEmpty(livePreviewConfig.ManagementToken)) {
+ headerAll["authorization"] = livePreviewConfig.ManagementToken;
+ } else if (!string.IsNullOrEmpty(livePreviewConfig.PreviewToken)) {
+ headerAll["preview_token"] = livePreviewConfig.PreviewToken;
} else {
throw new LivePreviewException();
}
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.ReleaseId))
+ if (!string.IsNullOrEmpty(livePreviewConfig.ReleaseId))
{
- headerAll["release_id"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.ReleaseId;
+ headerAll["release_id"] = livePreviewConfig.ReleaseId;
}
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewTimestamp))
+ if (!string.IsNullOrEmpty(livePreviewConfig.PreviewTimestamp))
{
- headerAll["preview_timestamp"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewTimestamp;
+ headerAll["preview_timestamp"] = livePreviewConfig.PreviewTimestamp;
}
isLivePreview = true;
diff --git a/Contentstack.Core/Models/Query.cs b/Contentstack.Core/Models/Query.cs
index c0d6ead1..09dcc9c8 100644
--- a/Contentstack.Core/Models/Query.cs
+++ b/Contentstack.Core/Models/Query.cs
@@ -1874,26 +1874,37 @@ private async Task Exec()
Dictionary mainJson = new Dictionary();
bool isLivePreview = false;
- if (this.ContentTypeInstance!=null && this.ContentTypeInstance.StackInstance.LivePreviewConfig.Enable == true
- && this.ContentTypeInstance.StackInstance?.LivePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId)
- {
- mainJson.Add("live_preview", string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview) ? "init" : this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview);
-
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.ManagementToken)) {
- headerAll["authorization"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.ManagementToken;
- } else if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewToken)) {
- headerAll["preview_token"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewToken;
+ var livePreviewConfig = this.ContentTypeInstance?.StackInstance?.LivePreviewConfig;
+ var hasLivePreviewContext =
+ this.ContentTypeInstance != null
+ && livePreviewConfig != null
+ && livePreviewConfig.Enable
+ && livePreviewConfig.ContentTypeUID == this.ContentTypeInstance.ContentTypeId
+ && (
+ !string.IsNullOrEmpty(livePreviewConfig.LivePreview)
+ || !string.IsNullOrEmpty(livePreviewConfig.ReleaseId)
+ || !string.IsNullOrEmpty(livePreviewConfig.PreviewTimestamp)
+ );
+
+ if (hasLivePreviewContext)
+ {
+ mainJson.Add("live_preview", string.IsNullOrEmpty(livePreviewConfig.LivePreview) ? "init" : livePreviewConfig.LivePreview);
+
+ if (!string.IsNullOrEmpty(livePreviewConfig.ManagementToken)) {
+ headerAll["authorization"] = livePreviewConfig.ManagementToken;
+ } else if (!string.IsNullOrEmpty(livePreviewConfig.PreviewToken)) {
+ headerAll["preview_token"] = livePreviewConfig.PreviewToken;
} else {
throw new LivePreviewException();
}
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.ReleaseId))
+ if (!string.IsNullOrEmpty(livePreviewConfig.ReleaseId))
{
- headerAll["release_id"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.ReleaseId;
+ headerAll["release_id"] = livePreviewConfig.ReleaseId;
}
- if (!string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewTimestamp))
+ if (!string.IsNullOrEmpty(livePreviewConfig.PreviewTimestamp))
{
- headerAll["preview_timestamp"] = this.ContentTypeInstance.StackInstance.LivePreviewConfig.PreviewTimestamp;
+ headerAll["preview_timestamp"] = livePreviewConfig.PreviewTimestamp;
}
isLivePreview = true;
@@ -1903,10 +1914,11 @@ private async Task Exec()
{
foreach (var header in headers)
{
- if (this.ContentTypeInstance!=null && this.ContentTypeInstance?.StackInstance.LivePreviewConfig.Enable == true
- && this.ContentTypeInstance?.StackInstance.LivePreviewConfig.ContentTypeUID == this.ContentTypeInstance?.ContentTypeId
+ if (this.ContentTypeInstance!=null && livePreviewConfig != null
+ && livePreviewConfig.Enable
+ && livePreviewConfig.ContentTypeUID == this.ContentTypeInstance?.ContentTypeId
&& header.Key == "access_token"
- && !string.IsNullOrEmpty(this.ContentTypeInstance.StackInstance.LivePreviewConfig.LivePreview))
+ && !string.IsNullOrEmpty(livePreviewConfig.LivePreview))
{
continue;
}
diff --git a/snyk.json b/snyk.json
new file mode 100644
index 00000000..4093b1ad
--- /dev/null
+++ b/snyk.json
@@ -0,0 +1,434 @@
+[
+ {
+ "vulnerabilities": [],
+ "ok": true,
+ "dependencyCount": 18,
+ "org": "contentstack-devex",
+ "policy": "# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.\nversion: v1.25.1\nignore: {}\npatch: {}\n",
+ "isPrivate": true,
+ "licensesPolicy": {
+ "severities": {},
+ "orgLicenseRules": {
+ "AGPL-1.0": {
+ "licenseType": "AGPL-1.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "AGPL-3.0": {
+ "licenseType": "AGPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "Artistic-1.0": {
+ "licenseType": "Artistic-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "Artistic-2.0": {
+ "licenseType": "Artistic-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CDDL-1.0": {
+ "licenseType": "CDDL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CPOL-1.02": {
+ "licenseType": "CPOL-1.02",
+ "severity": "high",
+ "instructions": ""
+ },
+ "EPL-1.0": {
+ "licenseType": "EPL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "GPL-2.0": {
+ "licenseType": "GPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "GPL-3.0": {
+ "licenseType": "GPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "LGPL-2.0": {
+ "licenseType": "LGPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-2.1": {
+ "licenseType": "LGPL-2.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-3.0": {
+ "licenseType": "LGPL-3.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-1.1": {
+ "licenseType": "MPL-1.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-2.0": {
+ "licenseType": "MPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MS-RL": {
+ "licenseType": "MS-RL",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "SimPL-2.0": {
+ "licenseType": "SimPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ }
+ }
+ },
+ "packageManager": "nuget",
+ "ignoreSettings": {
+ "adminOnly": false,
+ "reasonRequired": false,
+ "disregardFilesystemIgnores": false
+ },
+ "summary": "No known vulnerabilities",
+ "filesystemPolicy": false,
+ "uniqueCount": 0,
+ "targetFile": "Contentstack.AspNetCore/obj/project.assets.json",
+ "projectName": "contentstack-dotnet",
+ "foundProjectCount": 4,
+ "displayTargetFile": "Contentstack.AspNetCore/obj/project.assets.json",
+ "hasUnknownVersions": false,
+ "path": "/Users/om.pawar/Desktop/SDKs/contentstack-dotnet"
+ },
+ {
+ "vulnerabilities": [],
+ "ok": true,
+ "dependencyCount": 103,
+ "org": "contentstack-devex",
+ "policy": "# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.\nversion: v1.25.1\nignore: {}\npatch: {}\n",
+ "isPrivate": true,
+ "licensesPolicy": {
+ "severities": {},
+ "orgLicenseRules": {
+ "AGPL-1.0": {
+ "licenseType": "AGPL-1.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "AGPL-3.0": {
+ "licenseType": "AGPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "Artistic-1.0": {
+ "licenseType": "Artistic-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "Artistic-2.0": {
+ "licenseType": "Artistic-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CDDL-1.0": {
+ "licenseType": "CDDL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CPOL-1.02": {
+ "licenseType": "CPOL-1.02",
+ "severity": "high",
+ "instructions": ""
+ },
+ "EPL-1.0": {
+ "licenseType": "EPL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "GPL-2.0": {
+ "licenseType": "GPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "GPL-3.0": {
+ "licenseType": "GPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "LGPL-2.0": {
+ "licenseType": "LGPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-2.1": {
+ "licenseType": "LGPL-2.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-3.0": {
+ "licenseType": "LGPL-3.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-1.1": {
+ "licenseType": "MPL-1.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-2.0": {
+ "licenseType": "MPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MS-RL": {
+ "licenseType": "MS-RL",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "SimPL-2.0": {
+ "licenseType": "SimPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ }
+ }
+ },
+ "packageManager": "nuget",
+ "ignoreSettings": {
+ "adminOnly": false,
+ "reasonRequired": false,
+ "disregardFilesystemIgnores": false
+ },
+ "summary": "No known vulnerabilities",
+ "filesystemPolicy": false,
+ "uniqueCount": 0,
+ "targetFile": "Contentstack.Core.Tests/obj/project.assets.json",
+ "projectName": "contentstack-dotnet",
+ "foundProjectCount": 4,
+ "displayTargetFile": "Contentstack.Core.Tests/obj/project.assets.json",
+ "hasUnknownVersions": false,
+ "path": "/Users/om.pawar/Desktop/SDKs/contentstack-dotnet"
+ },
+ {
+ "vulnerabilities": [],
+ "ok": true,
+ "dependencyCount": 103,
+ "org": "contentstack-devex",
+ "policy": "# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.\nversion: v1.25.1\nignore: {}\npatch: {}\n",
+ "isPrivate": true,
+ "licensesPolicy": {
+ "severities": {},
+ "orgLicenseRules": {
+ "AGPL-1.0": {
+ "licenseType": "AGPL-1.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "AGPL-3.0": {
+ "licenseType": "AGPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "Artistic-1.0": {
+ "licenseType": "Artistic-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "Artistic-2.0": {
+ "licenseType": "Artistic-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CDDL-1.0": {
+ "licenseType": "CDDL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CPOL-1.02": {
+ "licenseType": "CPOL-1.02",
+ "severity": "high",
+ "instructions": ""
+ },
+ "EPL-1.0": {
+ "licenseType": "EPL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "GPL-2.0": {
+ "licenseType": "GPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "GPL-3.0": {
+ "licenseType": "GPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "LGPL-2.0": {
+ "licenseType": "LGPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-2.1": {
+ "licenseType": "LGPL-2.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-3.0": {
+ "licenseType": "LGPL-3.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-1.1": {
+ "licenseType": "MPL-1.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-2.0": {
+ "licenseType": "MPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MS-RL": {
+ "licenseType": "MS-RL",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "SimPL-2.0": {
+ "licenseType": "SimPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ }
+ }
+ },
+ "packageManager": "nuget",
+ "ignoreSettings": {
+ "adminOnly": false,
+ "reasonRequired": false,
+ "disregardFilesystemIgnores": false
+ },
+ "summary": "No known vulnerabilities",
+ "filesystemPolicy": false,
+ "uniqueCount": 0,
+ "targetFile": "Contentstack.Core.Unit.Tests/obj/project.assets.json",
+ "projectName": "contentstack-dotnet",
+ "foundProjectCount": 4,
+ "displayTargetFile": "Contentstack.Core.Unit.Tests/obj/project.assets.json",
+ "hasUnknownVersions": false,
+ "path": "/Users/om.pawar/Desktop/SDKs/contentstack-dotnet"
+ },
+ {
+ "vulnerabilities": [],
+ "ok": true,
+ "dependencyCount": 14,
+ "org": "contentstack-devex",
+ "policy": "# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.\nversion: v1.25.1\nignore: {}\npatch: {}\n",
+ "isPrivate": true,
+ "licensesPolicy": {
+ "severities": {},
+ "orgLicenseRules": {
+ "AGPL-1.0": {
+ "licenseType": "AGPL-1.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "AGPL-3.0": {
+ "licenseType": "AGPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "Artistic-1.0": {
+ "licenseType": "Artistic-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "Artistic-2.0": {
+ "licenseType": "Artistic-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CDDL-1.0": {
+ "licenseType": "CDDL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "CPOL-1.02": {
+ "licenseType": "CPOL-1.02",
+ "severity": "high",
+ "instructions": ""
+ },
+ "EPL-1.0": {
+ "licenseType": "EPL-1.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "GPL-2.0": {
+ "licenseType": "GPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "GPL-3.0": {
+ "licenseType": "GPL-3.0",
+ "severity": "high",
+ "instructions": ""
+ },
+ "LGPL-2.0": {
+ "licenseType": "LGPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-2.1": {
+ "licenseType": "LGPL-2.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "LGPL-3.0": {
+ "licenseType": "LGPL-3.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-1.1": {
+ "licenseType": "MPL-1.1",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MPL-2.0": {
+ "licenseType": "MPL-2.0",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "MS-RL": {
+ "licenseType": "MS-RL",
+ "severity": "medium",
+ "instructions": ""
+ },
+ "SimPL-2.0": {
+ "licenseType": "SimPL-2.0",
+ "severity": "high",
+ "instructions": ""
+ }
+ }
+ },
+ "packageManager": "nuget",
+ "ignoreSettings": {
+ "adminOnly": false,
+ "reasonRequired": false,
+ "disregardFilesystemIgnores": false
+ },
+ "summary": "No known vulnerabilities",
+ "filesystemPolicy": false,
+ "uniqueCount": 0,
+ "targetFile": "Contentstack.Core/obj/project.assets.json",
+ "projectName": "contentstack-dotnet",
+ "foundProjectCount": 4,
+ "displayTargetFile": "Contentstack.Core/obj/project.assets.json",
+ "hasUnknownVersions": false,
+ "path": "/Users/om.pawar/Desktop/SDKs/contentstack-dotnet"
+ }
+]