diff --git a/Runtime/Packages.meta b/Runtime/Packages.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b6c7aeca1ec8da4b41c26c6fae77efb8761f346e
--- /dev/null
+++ b/Runtime/Packages.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 953b8657509a139449794a24f2147730
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2.meta
new file mode 100644
index 0000000000000000000000000000000000000000..15642e0d3a8f9637a42e7f53f507c648e2c076de
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4af05175caa96bb43844e080f1d8701b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/.signature.p7s b/Runtime/Packages/websocket-sharp-latest.1.0.2/.signature.p7s
new file mode 100644
index 0000000000000000000000000000000000000000..29b82e384cd4bfbf60c118bfe30e6e30bd1d7699
Binary files /dev/null and b/Runtime/Packages/websocket-sharp-latest.1.0.2/.signature.p7s differ
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/lib.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b83a27ae6b2adea4b3933cad26125ed564976044
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1494d109bc218c346ab7622ed734ea86
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0.meta
new file mode 100644
index 0000000000000000000000000000000000000000..7d2e7f155cabf023f95db07c08c3503c753acea9
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9d5dbed810c34cc4db0fe224cda88d0b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0/websocket-sharp-latest.dll.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0/websocket-sharp-latest.dll.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9be2412de27263ba5dd369214fc161c466858683
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0/websocket-sharp-latest.dll.meta
@@ -0,0 +1,23 @@
+fileFormatVersion: 2
+guid: bddbf4bf9ff11da4885638979b82efb2
+labels:
+- NuGetForUnity
+PluginImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  iconMap: {}
+  executionOrder: {}
+  defineConstraints: []
+  isPreloaded: 0
+  isOverridable: 0
+  isExplicitlyReferenced: 0
+  validateReferences: 1
+  platformData:
+  - first:
+      Any: 
+    second:
+      enabled: 1
+      settings: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec
new file mode 100644
index 0000000000000000000000000000000000000000..18e382ad69a2b8278b2aab3d31e54b9ac5380f6c
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
+  <metadata>
+    <id>websocket-sharp-latest</id>
+    <version>1.0.2</version>
+    <authors>websocket-sharp-latest</authors>
+    <license type="expression">MIT</license>
+    <licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
+    <icon>websocket-sharp_icon.png</icon>
+    <description>Package Description</description>
+    <releaseNotes>https://github.com/garbles-labs/websocket-sharp/releases</releaseNotes>
+    <repository type="git" />
+    <dependencies>
+      <group targetFramework=".NETStandard2.0" />
+    </dependencies>
+  </metadata>
+</package>
\ No newline at end of file
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec.meta
new file mode 100644
index 0000000000000000000000000000000000000000..667b2c7eb8fbb988a74c062695fe599842cacbf5
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a9d61c123a66f5b4a8d236c2972a3609
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a07c30eb38d729691b987ff3ae8597fe3256b999
Binary files /dev/null and b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png differ
diff --git a/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png.meta b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png.meta
new file mode 100644
index 0000000000000000000000000000000000000000..76b216b774fff699b984249323daaaf4c052bf04
--- /dev/null
+++ b/Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png.meta
@@ -0,0 +1,153 @@
+fileFormatVersion: 2
+guid: b3235afb951bf0a4f9e21db48a0937f6
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Scripts/OpenAPI/Generated/WorldAnalysisOpenAPI.cs b/Runtime/Scripts/OpenAPI/Generated/WorldAnalysisOpenAPI.cs
index fe98f3ae4949fa8510ebfba5e861fc17920eca09..126f5ab2e7d000f038fffb4bd997490724b11be5 100644
--- a/Runtime/Scripts/OpenAPI/Generated/WorldAnalysisOpenAPI.cs
+++ b/Runtime/Scripts/OpenAPI/Generated/WorldAnalysisOpenAPI.cs
@@ -1,6 +1,6 @@
 //----------------------
 // <auto-generated>
-//     Generated using the NSwag toolchain v14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)
+//     Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)
 // </auto-generated>
 //----------------------
 
@@ -8,6 +8,7 @@
 #pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword."
 #pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?'
 #pragma warning disable 612 // Disable "CS0612 '...' is obsolete"
+#pragma warning disable 649 // Disable "CS0649 Field is never assigned to, and will always have its default value null"
 #pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ...
 #pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..."
 #pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'"
@@ -15,23 +16,25 @@
 #pragma warning disable 8603 // Disable "CS8603 Possible null reference return"
 #pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter"
 #pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type"
-#pragma warning disable CS8765 // Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes).
+#pragma warning disable 8765 // Disable "CS8765 Nullability of type of parameter doesn't match overridden member (possibly because of nullability attributes)."
 
 namespace ETSI.ARF.OpenAPI.WorldAnalysis
 {
     using System = global::System;
 
-    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class WorldAnalysisClient 
     {
         private ETSI.ARF.OpenAPI.WorldAnalysis.IHttpClient _httpClient;
         private static System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings, true);
+        private Newtonsoft.Json.JsonSerializerSettings _instanceSettings;
 
     #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
         public WorldAnalysisClient(ETSI.ARF.OpenAPI.WorldAnalysis.IHttpClient httpClient)
     #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
         {
             _httpClient = httpClient;
+            Initialize();
         }
 
         private static Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings()
@@ -41,10 +44,12 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
             return settings;
         }
 
-        protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } }
+        protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _instanceSettings ?? _settings.Value; } }
 
         static partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings);
 
+        partial void Initialize();
+
         partial void PrepareRequest(ETSI.ARF.OpenAPI.WorldAnalysis.IHttpClient client, System.Net.Http.HttpRequestMessage request, string url);
         partial void PrepareRequest(ETSI.ARF.OpenAPI.WorldAnalysis.IHttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder);
         partial void ProcessResponse(ETSI.ARF.OpenAPI.WorldAnalysis.IHttpClient client, System.Net.Http.HttpResponseMessage response);
@@ -374,7 +379,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
                     if (sessionID != null)
                         request_.Headers.TryAddWithoutValidation("sessionID", ConvertToString(sessionID, System.Globalization.CultureInfo.InvariantCulture));
-                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value);
+                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
                     var content_ = new System.Net.Http.StringContent(json_);
                     content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
                     request_.Content = content_;
@@ -415,9 +420,22 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 405)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not supported.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -551,30 +569,52 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 403)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not allowed.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not allowed.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 405)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not supported.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -609,7 +649,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="uuid">List of UUIDs of the Trackables and Anchors to request with the mode representing the context of the Relocalization information (AR device to WorldAnchor/Trackable or WorldAnchor/Trackable to AR device)</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual System.Threading.Tasks.Task<Response> GetPosesAsync(string token, string sessionID, System.Collections.Generic.IEnumerable<Anonymous> uuid)
+        public virtual System.Threading.Tasks.Task<Poses> GetPosesAsync(string token, string sessionID, System.Collections.Generic.IEnumerable<UuidAndMode> uuid)
         {
             return GetPosesAsync(token, sessionID, uuid, System.Threading.CancellationToken.None);
         }
@@ -623,7 +663,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="uuid">List of UUIDs of the Trackables and Anchors to request with the mode representing the context of the Relocalization information (AR device to WorldAnchor/Trackable or WorldAnchor/Trackable to AR device)</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual Response GetPoses(string token, string sessionID, System.Collections.Generic.IEnumerable<Anonymous> uuid)
+        public virtual Poses GetPoses(string token, string sessionID, System.Collections.Generic.IEnumerable<UuidAndMode> uuid)
         {
             return System.Threading.Tasks.Task.Run(async () => await GetPosesAsync(token, sessionID, uuid, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
         }
@@ -638,7 +678,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="uuid">List of UUIDs of the Trackables and Anchors to request with the mode representing the context of the Relocalization information (AR device to WorldAnchor/Trackable or WorldAnchor/Trackable to AR device)</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual async System.Threading.Tasks.Task<Response> GetPosesAsync(string token, string sessionID, System.Collections.Generic.IEnumerable<Anonymous> uuid, System.Threading.CancellationToken cancellationToken)
+        public virtual async System.Threading.Tasks.Task<Poses> GetPosesAsync(string token, string sessionID, System.Collections.Generic.IEnumerable<UuidAndMode> uuid, System.Threading.CancellationToken cancellationToken)
         {
             if (uuid == null)
                 throw new System.ArgumentNullException("uuid");
@@ -691,7 +731,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         var status_ = (int)response_.StatusCode;
                         if (status_ == 200)
                         {
-                            var objectResponse_ = await ReadObjectResponseAsync<Response>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            var objectResponse_ = await ReadObjectResponseAsync<Poses>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
                             {
                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
@@ -701,30 +741,52 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 403)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not allowed.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not allowed.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 405)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not supported.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -763,12 +825,6 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
             return SubscribeToPoseAsync(token, sessionID, body, System.Threading.CancellationToken.None);
         }
 
-        // SylR
-        public virtual System.Threading.Tasks.Task<SubscriptionMultiple> SubscribeToPoseAsync(string token, string sessionID, SubscriptionMultipleRequest body)
-        {
-            return SubscribeToPoseAsync(token, sessionID, body, System.Threading.CancellationToken.None);
-        }
-
         /// <summary>
         /// Subscribe to collect the pose of an AR device, an Anchor or a Trackable
         /// </summary>
@@ -781,12 +837,6 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         {
             return System.Threading.Tasks.Task.Run(async () => await SubscribeToPoseAsync(token, sessionID, body, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
         }
-    
-        // SylR
-        public virtual SubscriptionMultiple SubscribeToPose(string token, string sessionID, SubscriptionMultipleRequest body)
-        {
-            return System.Threading.Tasks.Task.Run(async () => await SubscribeToPoseAsync(token, sessionID, body, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
-        }
 
         /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param>
         /// <summary>
@@ -814,7 +864,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
                     if (sessionID != null)
                         request_.Headers.TryAddWithoutValidation("sessionID", ConvertToString(sessionID, System.Globalization.CultureInfo.InvariantCulture));
-                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value);
+                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
                     var content_ = new System.Net.Http.StringContent(json_);
                     content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
                     request_.Content = content_;
@@ -861,144 +911,52 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 403)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not allowed.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not allowed.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 405)
-                        {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
-                        }
-                        else
                         {
                             var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
                             {
                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
                             }
-                            throw new ApiException<Error>("Unexpected error.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                            throw new ApiException<Error>("Not supported.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
-                    }
-                    finally
-                    {
-                        if (disposeResponse_)
-                            response_.Dispose();
-                    }
-                }
-            }
-            finally
-            {
-                if (disposeClient_)
-                    client_.Dispose();
-            }
-        }
-
-        // SylR
-        public virtual async System.Threading.Tasks.Task<SubscriptionMultiple> SubscribeToPoseAsync(string token, string sessionID, SubscriptionMultipleRequest body, System.Threading.CancellationToken cancellationToken)
-        {
-            if (body == null)
-                throw new System.ArgumentNullException("body");
-
-            var client_ = _httpClient;
-            var disposeClient_ = false;
-            try
-            {
-                using (var request_ = new System.Net.Http.HttpRequestMessage())
-                {
-
-                    if (token != null)
-                        request_.Headers.TryAddWithoutValidation("token", ConvertToString(token, System.Globalization.CultureInfo.InvariantCulture));
-
-                    if (sessionID != null)
-                        request_.Headers.TryAddWithoutValidation("sessionID", ConvertToString(sessionID, System.Globalization.CultureInfo.InvariantCulture));
-                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value);
-                    var content_ = new System.Net.Http.StringContent(json_);
-                    content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
-                    request_.Content = content_;
-                    request_.Method = new System.Net.Http.HttpMethod("POST");
-                    request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json"));
-
-                    var urlBuilder_ = new System.Text.StringBuilder();
-
-                    // Operation Path: "pose/subscriptions"
-                    urlBuilder_.Append("pose/subscriptions");
-
-                    PrepareRequest(client_, request_, urlBuilder_);
-
-                    var url_ = urlBuilder_.ToString();
-                    request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
-
-                    PrepareRequest(client_, request_, url_);
-
-                    var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
-                    var disposeResponse_ = true;
-                    try
-                    {
-                        var headers_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>();
-                        foreach (var item_ in response_.Headers)
-                            headers_[item_.Key] = item_.Value;
-                        if (response_.Content != null && response_.Content.Headers != null)
-                        {
-                            foreach (var item_ in response_.Content.Headers)
-                                headers_[item_.Key] = item_.Value;
-                        }
-
-                        ProcessResponse(client_, response_);
-
-                        var status_ = (int)response_.StatusCode;
-                        if (status_ == 200)
+                        else
+                        if (status_ == 511)
                         {
-                            var objectResponse_ = await ReadObjectResponseAsync<SubscriptionMultiple>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
                             {
                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
                             }
-                            return objectResponse_.Object;
-                        }
-                        else
-                        if (status_ == 400)
-                        {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
-                        }
-                        else
-                        if (status_ == 403)
-                        {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not allowed.", status_, responseData_, headers_, result_, null);
-                        }
-                        else
-                        if (status_ == 404)
-                        {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
-                        }
-                        else
-                        if (status_ == 405)
-                        {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -1123,16 +1081,32 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -1212,7 +1186,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
                     if (sessionID != null)
                         request_.Headers.TryAddWithoutValidation("sessionID", ConvertToString(sessionID, System.Globalization.CultureInfo.InvariantCulture));
-                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value);
+                    var json_ = Newtonsoft.Json.JsonConvert.SerializeObject(body, JsonSerializerSettings);
                     var content_ = new System.Net.Http.StringContent(json_);
                     content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
                     request_.Content = content_;
@@ -1260,16 +1234,32 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -1298,9 +1288,9 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// End the subscription and the associated callback for collecting a given pose
         /// </remarks>
         /// <param name="subscriptionUUID">Subscription UUID to delete.</param>
-        /// <returns>OK, unsubcription successful.</returns>
+        /// <returns>Success request.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual System.Threading.Tasks.Task<string> UnsubscribeFromPoseAsync(string token, string sessionID, System.Guid subscriptionUUID)
+        public virtual System.Threading.Tasks.Task<Success> UnsubscribeFromPoseAsync(string token, string sessionID, System.Guid subscriptionUUID)
         {
             return UnsubscribeFromPoseAsync(token, sessionID, subscriptionUUID, System.Threading.CancellationToken.None);
         }
@@ -1312,9 +1302,9 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// End the subscription and the associated callback for collecting a given pose
         /// </remarks>
         /// <param name="subscriptionUUID">Subscription UUID to delete.</param>
-        /// <returns>OK, unsubcription successful.</returns>
+        /// <returns>Success request.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual string UnsubscribeFromPose(string token, string sessionID, System.Guid subscriptionUUID)
+        public virtual Success UnsubscribeFromPose(string token, string sessionID, System.Guid subscriptionUUID)
         {
             return System.Threading.Tasks.Task.Run(async () => await UnsubscribeFromPoseAsync(token, sessionID, subscriptionUUID, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
         }
@@ -1327,9 +1317,9 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// End the subscription and the associated callback for collecting a given pose
         /// </remarks>
         /// <param name="subscriptionUUID">Subscription UUID to delete.</param>
-        /// <returns>OK, unsubcription successful.</returns>
+        /// <returns>Success request.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual async System.Threading.Tasks.Task<string> UnsubscribeFromPoseAsync(string token, string sessionID, System.Guid subscriptionUUID, System.Threading.CancellationToken cancellationToken)
+        public virtual async System.Threading.Tasks.Task<Success> UnsubscribeFromPoseAsync(string token, string sessionID, System.Guid subscriptionUUID, System.Threading.CancellationToken cancellationToken)
         {
             if (subscriptionUUID == null)
                 throw new System.ArgumentNullException("subscriptionUUID");
@@ -1347,7 +1337,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                     if (sessionID != null)
                         request_.Headers.TryAddWithoutValidation("sessionID", ConvertToString(sessionID, System.Globalization.CultureInfo.InvariantCulture));
                     request_.Method = new System.Net.Http.HttpMethod("DELETE");
-                    request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain"));
+                    request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json"));
 
                     var urlBuilder_ = new System.Text.StringBuilder();
                 
@@ -1380,23 +1370,42 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         var status_ = (int)response_.StatusCode;
                         if (status_ == 200)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            return result_;
+                            var objectResponse_ = await ReadObjectResponseAsync<Success>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            return objectResponse_.Object;
                         }
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -1426,7 +1435,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// </remarks>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual System.Threading.Tasks.Task<Response2> GetCapabilitiesAsync(string token, string sessionID)
+        public virtual System.Threading.Tasks.Task<Capabilities> GetCapabilitiesAsync(string token, string sessionID)
         {
             return GetCapabilitiesAsync(token, sessionID, System.Threading.CancellationToken.None);
         }
@@ -1439,7 +1448,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// </remarks>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual Response2 GetCapabilities(string token, string sessionID)
+        public virtual Capabilities GetCapabilities(string token, string sessionID)
         {
             return System.Threading.Tasks.Task.Run(async () => await GetCapabilitiesAsync(token, sessionID, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
         }
@@ -1453,7 +1462,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// </remarks>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual async System.Threading.Tasks.Task<Response2> GetCapabilitiesAsync(string token, string sessionID, System.Threading.CancellationToken cancellationToken)
+        public virtual async System.Threading.Tasks.Task<Capabilities> GetCapabilitiesAsync(string token, string sessionID, System.Threading.CancellationToken cancellationToken)
         {
             var client_ = _httpClient;
             var disposeClient_ = false;
@@ -1500,7 +1509,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         var status_ = (int)response_.StatusCode;
                         if (status_ == 200)
                         {
-                            var objectResponse_ = await ReadObjectResponseAsync<Response2>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            var objectResponse_ = await ReadObjectResponseAsync<Capabilities>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
                             {
                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
@@ -1508,6 +1517,16 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                             return objectResponse_.Object;
                         }
                         else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
                         {
                             var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
@@ -1540,7 +1559,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="trackableOrAnchorUUID">UUID of the Trackable or Anchor to check support</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual System.Threading.Tasks.Task<Response3> GetSupportAsync(string token, string sessionID, System.Guid trackableOrAnchorUUID)
+        public virtual System.Threading.Tasks.Task<Supports> GetSupportAsync(string token, string sessionID, System.Guid trackableOrAnchorUUID)
         {
             return GetSupportAsync(token, sessionID, trackableOrAnchorUUID, System.Threading.CancellationToken.None);
         }
@@ -1554,7 +1573,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="trackableOrAnchorUUID">UUID of the Trackable or Anchor to check support</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual Response3 GetSupport(string token, string sessionID, System.Guid trackableOrAnchorUUID)
+        public virtual Supports GetSupport(string token, string sessionID, System.Guid trackableOrAnchorUUID)
         {
             return System.Threading.Tasks.Task.Run(async () => await GetSupportAsync(token, sessionID, trackableOrAnchorUUID, System.Threading.CancellationToken.None)).GetAwaiter().GetResult();
         }
@@ -1569,7 +1588,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         /// <param name="trackableOrAnchorUUID">UUID of the Trackable or Anchor to check support</param>
         /// <returns>Successful operation.</returns>
         /// <exception cref="ApiException">A server side error occurred.</exception>
-        public virtual async System.Threading.Tasks.Task<Response3> GetSupportAsync(string token, string sessionID, System.Guid trackableOrAnchorUUID, System.Threading.CancellationToken cancellationToken)
+        public virtual async System.Threading.Tasks.Task<Supports> GetSupportAsync(string token, string sessionID, System.Guid trackableOrAnchorUUID, System.Threading.CancellationToken cancellationToken)
         {
             if (trackableOrAnchorUUID == null)
                 throw new System.ArgumentNullException("trackableOrAnchorUUID");
@@ -1620,7 +1639,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         var status_ = (int)response_.StatusCode;
                         if (status_ == 200)
                         {
-                            var objectResponse_ = await ReadObjectResponseAsync<Response3>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            var objectResponse_ = await ReadObjectResponseAsync<Supports>(response_, headers_, cancellationToken).ConfigureAwait(false);
                             if (objectResponse_.Object == null)
                             {
                                 throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
@@ -1630,30 +1649,52 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
                         else
                         if (status_ == 400)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Bad request.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Bad request.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 403)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not allowed.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not allowed.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 404)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not found.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not found.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         if (status_ == 405)
                         {
-                            var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
-                            var result_ = (string)System.Convert.ChangeType(responseData_, typeof(string));
-                            throw new ApiException<string>("Not supported.", status_, responseData_, headers_, result_, null);
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("Not supported.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
+                        }
+                        else
+                        if (status_ == 511)
+                        {
+                            var objectResponse_ = await ReadObjectResponseAsync<Error>(response_, headers_, cancellationToken).ConfigureAwait(false);
+                            if (objectResponse_.Object == null)
+                            {
+                                throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+                            }
+                            throw new ApiException<Error>("The secret token is not valid. Please ask an ISG ARF team member for a valid token.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null);
                         }
                         else
                         {
@@ -1794,7 +1835,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// An element representing the result of the pose estimation of an AR device, a Trackable or a WorldAnchor by the World Analysis
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Pose
     {
         /// <summary>
@@ -1861,7 +1902,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Base type to define the pose value
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class PoseValue
     {
         /// <summary>
@@ -1885,7 +1926,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// A pose value that is described with a 4*4 matrix
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class MatrixPoseValue : PoseValue
     {
         /// <summary>
@@ -1906,7 +1947,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// A pose value that is described with a position and a rotation
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class VectorQuaternionPoseValue : PoseValue
     {
         /// <summary>
@@ -1933,7 +1974,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// A pose value in a geodetic coordinate system
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class GeodeticPoseValue : PoseValue
     {
         [Newtonsoft.Json.JsonProperty("altitude", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
@@ -1969,7 +2010,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// An object representing the framerate that the World Analysis needs to reach for a given Trackable Type
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class PoseConfiguration
     {
         [Newtonsoft.Json.JsonProperty("trackableType", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
@@ -1999,7 +2040,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Request when subscribing for pose update of a Trackable or a WorldAnchor
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class SubscriptionSingleRequest
     {
         /// <summary>
@@ -2041,14 +2082,14 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Request when subscribing for pose update of multiple Trackable or a WorldAnchor
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class SubscriptionMultipleRequest
     {
         /// <summary>
         /// List of UUID of the Trackable or Anchor to subscribe
         /// </summary>
         [Newtonsoft.Json.JsonProperty("targets", Required = Newtonsoft.Json.Required.Always)]
-        public System.Collections.Generic.ICollection<object> Targets { get; set; } = new System.Collections.ObjectModel.Collection<object>();
+        public System.Collections.Generic.ICollection<System.Guid> Targets { get; set; } = new System.Collections.ObjectModel.Collection<System.Guid>();
 
         /// <summary>
         /// List of modes representing the context of the Relocalization information (AR device to WorldAnchor/Trackable or WorldAnchor/Trackable to AR device)
@@ -2082,7 +2123,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Response when subscribing for pose update of a Trackable or a WorldAnchor
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class SubscriptionSingle
     {
         /// <summary>
@@ -2133,7 +2174,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Response when subscribing for pose update of multiple Trackable or a WorldAnchor
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class SubscriptionMultiple
     {
         [Newtonsoft.Json.JsonProperty("subscriptions", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
@@ -2153,7 +2194,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// An object representing a supported capability of the World Analysis and its associated metadata
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Capability
     {
         [Newtonsoft.Json.JsonProperty("trackableType", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
@@ -2195,7 +2236,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// An object holding the info of a Trackable`'`s encoding information `:` the data format and the version.
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class EncodingInformationStructure
     {
         /// <summary>
@@ -2222,13 +2263,10 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Error
     {
-        [Newtonsoft.Json.JsonProperty("code", Required = Newtonsoft.Json.Required.Always)]
-        public int Code { get; set; }
-
-        [Newtonsoft.Json.JsonProperty("message", Required = Newtonsoft.Json.Required.Always)]
+        [Newtonsoft.Json.JsonProperty("message", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
         public string Message { get; set; }
 
         private System.Collections.Generic.IDictionary<string, object> _additionalProperties;
@@ -2245,7 +2283,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Mode representing the context of the relocalization information (AR device to WorldAnchor/Trackable or WorldAnchor/Trackable to AR device)
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum Mode_WorldAnalysis
     {
 
@@ -2260,16 +2298,33 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// A quaternion
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Quaternion : System.Collections.ObjectModel.Collection<float>
     {
 
     }
 
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
+    public partial class Success
+    {
+        [Newtonsoft.Json.JsonProperty("message", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
+        public string Message { get; set; }
+
+        private System.Collections.Generic.IDictionary<string, object> _additionalProperties;
+
+        [Newtonsoft.Json.JsonExtensionData]
+        public System.Collections.Generic.IDictionary<string, object> AdditionalProperties
+        {
+            get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary<string, object>()); }
+            set { _additionalProperties = value; }
+        }
+
+    }
+
     /// <summary>
     /// Type for trackable
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum TrackableType
     {
 
@@ -2296,7 +2351,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Coordinate reference system of the world anchor, a 4*4 matrix (rowmajor) represented by a float vector.
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Transform3D : System.Collections.ObjectModel.Collection<float>
     {
 
@@ -2305,7 +2360,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Trackable or Anchor
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum TypeWorldStorage
     {
 
@@ -2323,7 +2378,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// Unit of length.
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum UnitSystem
     {
 
@@ -2365,14 +2420,14 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
     /// <summary>
     /// A 3 coordinates vector
     /// </summary>
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Vector3 : System.Collections.ObjectModel.Collection<float>
     {
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-    public partial class Anonymous
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
+    public partial class UuidAndMode
     {
         [Newtonsoft.Json.JsonProperty("uuid", Required = Newtonsoft.Json.Required.Always)]
         public System.Guid Uuid { get; set; }
@@ -2395,7 +2450,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class Body
     {
         /// <summary>
@@ -2428,11 +2483,11 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-    public partial class Response
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
+    public partial class Poses
     {
         [Newtonsoft.Json.JsonProperty("poses", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
-        public System.Collections.Generic.ICollection<Pose> Poses { get; set; }
+        public System.Collections.Generic.ICollection<Pose> Poses1 { get; set; }
 
         private System.Collections.Generic.IDictionary<string, object> _additionalProperties;
 
@@ -2445,11 +2500,11 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-    public partial class Response2
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
+    public partial class Capabilities
     {
         [Newtonsoft.Json.JsonProperty("capabilities", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
-        public System.Collections.Generic.ICollection<Capability> Capabilities { get; set; }
+        public System.Collections.Generic.ICollection<Capability> Capabilities1 { get; set; }
 
         private System.Collections.Generic.IDictionary<string, object> _additionalProperties;
 
@@ -2462,8 +2517,8 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
-    public partial class Response3
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
+    public partial class Supports
     {
         [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
         [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
@@ -2483,7 +2538,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum PoseEstimationState
     {
 
@@ -2495,7 +2550,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum PoseValueType
     {
 
@@ -2510,7 +2565,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum GeodeticPoseValueRotationTarget
     {
 
@@ -2522,7 +2577,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum PoseConfigurationTrackableType
     {
 
@@ -2546,7 +2601,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public enum EncodingInformationStructureDataFormat
     {
 
@@ -2572,7 +2627,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
 
 
-    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class ApiException : System.Exception
     {
         public int StatusCode { get; private set; }
@@ -2595,7 +2650,7 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
         }
     }
 
-    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.7.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")]
+    [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0))")]
     public partial class ApiException<TResult> : ApiException
     {
         public TResult Result { get; private set; }
diff --git a/Runtime/Scripts/OpenAPI/UnityWebRequestHttpClient.cs b/Runtime/Scripts/OpenAPI/UnityWebRequestHttpClient.cs
index 8d696aa6a621edc3cfcb038e31d7cb43cba61290..c841a48f45d564fe1c3a943478bfd409d7615eb8 100644
--- a/Runtime/Scripts/OpenAPI/UnityWebRequestHttpClient.cs
+++ b/Runtime/Scripts/OpenAPI/UnityWebRequestHttpClient.cs
@@ -15,7 +15,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-// Last change: June 2024
+// Last change: September 2024
 //
 
 // Depends on UniTask to support cancellation token and GetAwaiter: https://github.com/Cysharp/UniTask
@@ -101,6 +101,21 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
         private readonly HttpClient _httpClient = new HttpClient();
 
+        private void AppendARFHeaders(HttpRequestMessage message, UnityWebRequest webRequest)
+        {
+            // Add some ARF headers
+            foreach (var item in message.Headers)
+            {
+                try
+                {
+                    List<string> li = item.Value as List<string>;
+                    if (item.Key == "token") webRequest.SetRequestHeader(item.Key, li[0].ToString());  // add it
+                    if (item.Key == "sessionID") webRequest.SetRequestHeader(item.Key, li[0].ToString());  // add it
+                }
+                catch { }  // ignore it
+            }
+        }
+
         public async Task<HttpResponseMessage> SendAsync(HttpRequestMessage message, HttpCompletionOption option, CancellationToken token)
         {
             var content = await (message.Content?.ReadAsStringAsync() ?? Task.FromResult(""));
@@ -108,6 +123,9 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis
 
             AppendHeaders(webRequest);
 
+            // Add the ARF API headers
+            AppendARFHeaders(message, webRequest);
+
             Debug.Log("[HTTP] Request " + webRequest.uri.ToString());
             try
             {
diff --git a/Runtime/Scripts/WorldAnalysisREST.cs b/Runtime/Scripts/WorldAnalysisREST.cs
index c4e0d6c92c764bbe54276211683945792bc8f35e..073f237184e5f1b08fff06aaec076c86c8672768 100644
--- a/Runtime/Scripts/WorldAnalysisREST.cs
+++ b/Runtime/Scripts/WorldAnalysisREST.cs
@@ -183,9 +183,9 @@ public partial class WorldAnalysisREST : MonoBehaviour, WorldAnalysisInterface
         }
         PoseEstimationResult[] resul = new PoseEstimationResult[uuids.Length];
         poses = new ETSI.ARF.OpenAPI.WorldAnalysis.Pose[uuids.Length];
-        List<Anonymous> uuidList = new List<Anonymous>();
-        Response poses_ = apiClient.GetPoses(token, sessionID, uuidList.ToArray());
-        List<ETSI.ARF.OpenAPI.WorldAnalysis.Pose> posesList = poses_.Poses as List<ETSI.ARF.OpenAPI.WorldAnalysis.Pose>;
+        List<UuidAndMode> uuidList = new List<UuidAndMode>();
+        Poses poses_ = apiClient.GetPoses(token, sessionID, uuidList.ToArray());
+        List<ETSI.ARF.OpenAPI.WorldAnalysis.Pose> posesList = poses_.Poses1 as List<ETSI.ARF.OpenAPI.WorldAnalysis.Pose>;
 
         if (poses_ != null && posesList != null && posesList.Count > 0)
         {
@@ -398,16 +398,16 @@ public partial class WorldAnalysisREST : MonoBehaviour, WorldAnalysisInterface
 
     public CapabilityResult GetCapabilities(string token, out Capability[] capabilities)
     {
-        Response2 cap = apiClient.GetCapabilities(token, sessionID);
-        if (cap == null || cap.Capabilities == null || cap.Capabilities.Count == 0)
+        Capabilities cap = apiClient.GetCapabilities(token, sessionID);
+        if (cap == null || cap.Capabilities1 == null || cap.Capabilities1.Count == 0)
         {
             capabilities = null;
             return CapabilityResult.FAIL;
         }
         else
         {
-            capabilities = new Capability[cap.Capabilities.Count];
-            cap.Capabilities.CopyTo(capabilities, 0);
+            capabilities = new Capability[cap.Capabilities1.Count];
+            cap.Capabilities1.CopyTo(capabilities, 0);
             return CapabilityResult.OK;
         }
     }
@@ -418,7 +418,7 @@ public partial class WorldAnalysisREST : MonoBehaviour, WorldAnalysisInterface
         type = TypeWorldStorage.UNKNOWN;
         capability = null;
 
-        Response3 cap = apiClient.GetSupport(token, sessionID, uuid);
+        Supports cap = apiClient.GetSupport(token, sessionID, uuid);
         if (cap == null || cap.Capabilities == null || cap.Capabilities.Count == 0)
         {
             isSupported = false;
diff --git a/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs b/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs
new file mode 100644
index 0000000000000000000000000000000000000000..118c780f75c235d252469c621d1311d53528b3cf
--- /dev/null
+++ b/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using ETSI.ARF.OpenAPI.WorldAnalysis;
+
+using WebSocketSharp;
+using static WorldAnalysisInterface;
+
+//Implementation of the WorldAnalysis interface
+public partial class WorldAnalysisREST
+{
+    //
+    // Inspector variables
+    //
+    public StringEvent webSocketMessage;
+
+    //
+    // Private members
+    //
+    private WebSocketSharp.WebSocket webSocket;     // For WebSockets
+    private bool websocketConnected = false;
+
+    #region Communication system for WebSockets
+    public WebSocket WebSocketClient_Create(string url)
+    {
+        webSocket = new WebSocketSharp.WebSocket(url);
+
+        //
+        // Define standard callbacks
+        //
+        webSocket.OnOpen += (sender, e) =>
+        {
+            Debug.Log("[WS] Connected");
+            websocketConnected = true;
+            webSocket.Send("RegisterClient:UnitySceneManagement");
+        };
+        webSocket.OnClose += (sender, e) =>
+        {
+            Debug.Log("[WS] Disconnected");
+            websocketConnected = false;
+        };
+        webSocket.OnError += (sender, e) => Debug.Log("[WS] Error!");
+        webSocket.OnMessage += (sender, e) => WebSocketClient_OnReceive(e.Data);
+        webSocket.Connect();
+
+        return webSocket;
+    }
+
+    private void WebSocketClient_Close()
+    {
+        if (websocketConnected)
+        {
+            webSocket.Send("UnregisterClient");
+            webSocket.Close();
+            webSocket = null;
+        }
+    }
+
+    public void WebSocketClient_Send(string msg)
+    {
+        webSocket?.Send(msg);
+    }
+
+    bool isRegistered = false;
+    public void WebSocketClient_OnReceive(string data)
+    {
+        //Debug.Log("[WS] Receiving: " + data);
+
+        if (data.Contains("You are now registered"))
+        {
+            isRegistered = true;
+            if (isDebug)
+            {
+                webSocket.Send("TimeStart:3"); // test                
+            }
+        }
+        else if (isRegistered)
+        {
+            if (data.StartsWith("Time="))
+            {
+                // test the communication
+                Debug.Log("[WS] Server time is: " + data.Split('=')[1]);
+                webSocketMessage?.Invoke(data);
+            }
+            else if (data == "TimeStop")
+            {
+                // Get some dummy poses?
+                //webSocket.Send("PoseStart:5"); // test
+            }
+            else if (data == "PoseStop")
+            {
+                //SetColor(Color.yellow);
+            }
+            else if (data.StartsWith("Pose=") && data.Contains("estimationState"))
+            {
+                // Handle the new pose
+                string json = data.Substring("Pose=".Length);
+                ETSI.ARF.OpenAPI.WorldAnalysis.Pose pose = JsonUtility.FromJson<ETSI.ARF.OpenAPI.WorldAnalysis.Pose>(json);
+                Debug.Log("[WS][Pose] State: " + pose.EstimationState.ToString());
+                
+                // to check: p.Confidence
+                // to check: p.Mode, p.Value 
+                
+                PoseEstimationResult res = pose.EstimationState == PoseEstimationState.OK ? PoseEstimationResult.OK : PoseEstimationResult.FAILURE;
+                                
+                // Look for the corresponding callbacks
+                foreach (var item in m_subscriptionsPoses.Values)
+                {
+                    if (pose.Uuid == item.uuidTarget)
+                    {
+                        item.callback(res, pose);
+                    }
+                }
+            }
+        }
+    }
+    #endregion
+}
\ No newline at end of file
diff --git a/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs.meta b/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..31b43338f4f2d50805ff7c31a3e84b9565b117a2
--- /dev/null
+++ b/Runtime/Scripts/WorldAnalysisREST_WebSockets.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b7bcc535a949e24283db7e23c51dc46
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Runtime/Scripts/WorldAnalysisREST_Webhook.cs b/Runtime/Scripts/WorldAnalysisREST_Webhook.cs
new file mode 100644
index 0000000000000000000000000000000000000000..1b4a981f3d8769445c984bc24b3b35daa178e690
--- /dev/null
+++ b/Runtime/Scripts/WorldAnalysisREST_Webhook.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using ETSI.ARF.OpenAPI.WorldAnalysis;
+using ETSI.ARF.WorldAnalysis;
+using ETSI.ARF.WorldAnalysis.REST;
+
+//Implementation of the WorldAnalysis interface
+public partial class WorldAnalysisREST
+{
+    //
+    // Inspector variables
+    //
+    public StringEvent webhookMessage;
+    private bool webhookRunning = false;
+
+    #region Communication system for WebHooks
+    private void WebHookServer_Create(string url)
+    {
+        webhookRunning = true;
+        throw new Exception("[API] WebHookServer_Create(): Not implemented!");
+    }
+
+    private void WebHookServer_Close()
+    {
+        if (webhookRunning)
+        {
+            webhookRunning = false;
+            throw new Exception("[API] WebHookServer_Close(): Not implemented!");
+        }
+    }
+
+    private object WebHookServer_OnReceive()
+    {
+        throw new Exception("[API] WebHookServer_OnReceive(): Not implemented!");
+    }
+
+    private void WebHookServer_Send(object message)
+    {
+        throw new Exception("[API] WebHookServer_Send(): Not implemented!");
+    }
+    #endregion
+}
\ No newline at end of file
diff --git a/Runtime/Scripts/WorldAnalysisREST_Webhook.cs.meta b/Runtime/Scripts/WorldAnalysisREST_Webhook.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..b7ce0cd600b2b88adbe2859d4c659ddd924d1736
--- /dev/null
+++ b/Runtime/Scripts/WorldAnalysisREST_Webhook.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 67d4b99a5f7593e4a857b6c88249d564
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: