From 9d13fce036d2d43fca1d5e7bec0db8cad4b3387a Mon Sep 17 00:00:00 2001
From: Sylvain Renault <sylvain.renault@hhi.fraunhofer.de>
Date: Mon, 16 Sep 2024 13:55:12 +0200
Subject: [PATCH] Implementation of the subscription for websockets. Bug fix
 for the issue with the HTTP header (token).

---
 Runtime/Packages.meta                         |   8 +
 .../websocket-sharp-latest.1.0.2.meta         |   8 +
 .../.signature.p7s                            | Bin 0 -> 11515 bytes
 .../websocket-sharp-latest.1.0.2/lib.meta     |   8 +
 .../lib/netstandard2.0.meta                   |   8 +
 .../websocket-sharp-latest.dll.meta           |  23 +
 .../websocket-sharp-latest.nuspec             |  17 +
 .../websocket-sharp-latest.nuspec.meta        |   7 +
 .../websocket-sharp_icon.png                  | Bin 0 -> 911 bytes
 .../websocket-sharp_icon.png.meta             | 153 +++++
 .../OpenAPI/Generated/WorldAnalysisOpenAPI.cs | 567 ++++++++++--------
 .../OpenAPI/UnityWebRequestHttpClient.cs      |  20 +-
 Runtime/Scripts/WorldAnalysisREST.cs          |  16 +-
 .../Scripts/WorldAnalysisREST_WebSockets.cs   | 119 ++++
 .../WorldAnalysisREST_WebSockets.cs.meta      |  11 +
 Runtime/Scripts/WorldAnalysisREST_Webhook.cs  |  44 ++
 .../Scripts/WorldAnalysisREST_Webhook.cs.meta |  11 +
 17 files changed, 755 insertions(+), 265 deletions(-)
 create mode 100644 Runtime/Packages.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/.signature.p7s
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/lib.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/lib/netstandard2.0/websocket-sharp-latest.dll.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp-latest.nuspec.meta
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png
 create mode 100644 Runtime/Packages/websocket-sharp-latest.1.0.2/websocket-sharp_icon.png.meta
 create mode 100644 Runtime/Scripts/WorldAnalysisREST_WebSockets.cs
 create mode 100644 Runtime/Scripts/WorldAnalysisREST_WebSockets.cs.meta
 create mode 100644 Runtime/Scripts/WorldAnalysisREST_Webhook.cs
 create mode 100644 Runtime/Scripts/WorldAnalysisREST_Webhook.cs.meta

diff --git a/Runtime/Packages.meta b/Runtime/Packages.meta
new file mode 100644
index 0000000..b6c7aec
--- /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 0000000..15642e0
--- /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
GIT binary patch
literal 11515
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

literal 0
HcmV?d00001

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 0000000..b83a27a
--- /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 0000000..7d2e7f1
--- /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 0000000..9be2412
--- /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 0000000..18e382a
--- /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 0000000..667b2c7
--- /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
GIT binary patch
literal 911
zcmeAS@N?(olHy`uVBq!ia0y~yU~~Xs4mP03*$GQm0V&P`kH}&M25w;xW@MN(M}mQY
z+0oO*F{I+w+iMp&4;u)$IBNIizKx#wNtR=V1W%VuaHHjXxpEnxX2QVVq^E&<S!^1+
zzA^)gfCB>~#RP^4KZ*}?Of!GWy91Zu6kGcvP2yntOZmCkyYI}IbR#vUfq{ub0Zt$>
z5rSl}fLi*EdlD)y-<t!rs3KmEl<*=cVDn7D(PDSKY^SB_$7iu1&rru7Oc^ZjkO2ik
zPKpGhb%u5L?`10YrgM`L6&MkXM{`3oukwTN+~-;MryS9H%!Cpaqy!=!D;O9VSqP_h
dkcx)6dl~1tNi#?;v3(2Td%F6$taD0e0s#I1gB<_>

literal 0
HcmV?d00001

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 0000000..76b216b
--- /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 fe98f3a..126f5ab 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 8d696aa..c841a48 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 c4e0d6c..073f237 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 0000000..118c780
--- /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 0000000..31b4333
--- /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 0000000..1b4a981
--- /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 0000000..b7ce0cd
--- /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: 
-- 
GitLab