diff --git a/LICENSE b/LICENSE
index 224e177147da2d4c24086908675b7e9df8b6ddfc..d2fa112b6bdd0ca7f5173bbd308d2e632010c393 100644
--- a/LICENSE
+++ b/LICENSE
@@ -13,4 +13,206 @@ Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an “AS IS” BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
+limitations under the License.
+
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2022 Telefónica Innovación Digital, Fogus Innovations & Services P.C. and ETSI.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
index 6a41e4712549ab3159f325e61f2100e8a2e02e9c..14105da45a7318457e5e4275f715b900d283c784 100644
--- a/README.md
+++ b/README.md
@@ -74,7 +74,6 @@ For that purpose Network Apps play 2 different roles when interacting with CAPIF
 
   - AEF(API Exposing Function), is responsible for the exposure of the service APIs. Assuming that API Invokers are authorized by the CCF, AEF validates the authorization and subsequently provides the direct communication entry points to the service APIs. AEF may also authorize API invokers and record the invocations in log files.One provider can have multiple AEFs
 
-
 OpenCAPIF SDK brings a set of functions to integrate with the 5G Core's function CAPIF, as defined in [3GPP Technical Specification (TS) 29.222 V18.5.0 Common API Framework for 3GPP Northbound APIs](https://www.etsi.org/deliver/etsi_ts/129200_129299/129222/18.05.00_60/ts_129222v180500p.pdf). This section shows the mapping between the Python functions available in this SDK and the CAPIF OpenAPI APIs defined the reference standard:
 
 | **3GPP CAPIF API**                                    | **OpenCAPIF SDK function**                                  | **Description**                                             |
@@ -95,7 +94,6 @@ OpenCAPIF SDK brings a set of functions to integrate with the 5G Core's function
 | /{apfId}/service-apis (GET)            | [get_all_services()](./doc/sdk_full_documentation.md#get-all-services)                                          | Retrieves a list of all available service APIs for a specific `apfId`            |
 | /aef-security/v1/check-authentication (POST)            | [check_authentication()](./doc/sdk_full_documentation.md#check_authentication)                                          | This custom operation allows the API invoker to confirm the `supported_features` from the API exposing function(AEF)            |
 
-
 NOTE: Above mentioned CAPIF APIs are defined in these 3GPP references:
 - [CAPIF Invoker API specification](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_API_Invoker_Management_API.yaml)
 - [CAPIF Provider API specification](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_API_Provider_Management_API.yaml)
diff --git a/config/capif_sdk_config.json b/config/capif_sdk_config.json
index 36dda0240960b8ae296054341dd55827d1a81f4e..db4f074c1776ed2d6fb0023aa2f48f59714dbeea 100644
--- a/config/capif_sdk_config.json
+++ b/config/capif_sdk_config.json
@@ -9,6 +9,10 @@
   "invoker": {
     "invoker_folder": "",
     "capif_callback_url": "",
+    "supported_features":"",
+    "check_authorization":{
+      "ip":"",
+      "port":""
     "cert_generation": {
       "csr_common_name": "",
       "csr_organizational_unit": "",
@@ -17,7 +21,6 @@
       "csr_state_or_province_name": "",
       "csr_country_name": "",
       "csr_email_address": ""
-
     },
     "discover_filter": {
       "api-name": "",
diff --git a/doc/images/flows_invoker_check_authentication.jpg b/doc/images/flows_invoker_check_authentication.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3d0ae72a39183e8ab6e17a54adf273ae259213d7
Binary files /dev/null and b/doc/images/flows_invoker_check_authentication.jpg differ
diff --git a/doc/images/flows_invoker_discover.jpg b/doc/images/flows_invoker_discover.jpg
index e490c6a914a295e068fc598c29c7bf47d038ce0a..6b60b7d0a868339d736b8e506f4eeb87ea93b1f7 100644
Binary files a/doc/images/flows_invoker_discover.jpg and b/doc/images/flows_invoker_discover.jpg differ
diff --git a/doc/images/flows_invoker_get_tokens.jpg b/doc/images/flows_invoker_get_tokens.jpg
index fc2aaec46a4bd3247059fddda0fcf33f4039be4e..28e1d06890b37a80fe3261e4f52e279e63091f45 100644
Binary files a/doc/images/flows_invoker_get_tokens.jpg and b/doc/images/flows_invoker_get_tokens.jpg differ
diff --git a/doc/images/flows_invoker_onboard.jpg b/doc/images/flows_invoker_onboard.jpg
index 49c20dc026669a91159897a85d86c546eb1f80de..34d07c47a7b105e8b39fb3457e4afab5eb814fb5 100644
Binary files a/doc/images/flows_invoker_onboard.jpg and b/doc/images/flows_invoker_onboard.jpg differ
diff --git a/doc/images/flows_invoker_path.jpg b/doc/images/flows_invoker_path.jpg
index ff7457f06a5d41c7a5b7657fdf924f555afc165f..b9c7c1dcbf54c2c85a15e1ca9895c6837a92561f 100644
Binary files a/doc/images/flows_invoker_path.jpg and b/doc/images/flows_invoker_path.jpg differ
diff --git a/doc/images/flows_invoker_update_offboard.jpg b/doc/images/flows_invoker_update_offboard.jpg
index 9b092fff8d8736a5c08f7c1d1a664cfaa4034d06..e47daab8ad485490d0b05af38201aa725abb4b4c 100644
Binary files a/doc/images/flows_invoker_update_offboard.jpg and b/doc/images/flows_invoker_update_offboard.jpg differ
diff --git a/doc/images/flows_provider_onboard.jpg b/doc/images/flows_provider_onboard.jpg
index 70c942a75120b9eb1e05bb9305699d8b79fc5584..14e2c650577393722686914cb0cf7cbe130dea29 100644
Binary files a/doc/images/flows_provider_onboard.jpg and b/doc/images/flows_provider_onboard.jpg differ
diff --git a/doc/images/flows_provider_path.jpg b/doc/images/flows_provider_path.jpg
index 1d5dbc536bb344e7dcbdcd524a02412fdc4eb2c2..8e734954da1877bbb6d6a670b5d39cc91023ad24 100644
Binary files a/doc/images/flows_provider_path.jpg and b/doc/images/flows_provider_path.jpg differ
diff --git a/doc/images/flows_provider_publish_functions.jpg b/doc/images/flows_provider_publish_functions.jpg
index 5d0020355a72d612f7a46887514d8c91cb21b414..e3af9ed44348515b1ce6b58c75605a7bbf0015bb 100644
Binary files a/doc/images/flows_provider_publish_functions.jpg and b/doc/images/flows_provider_publish_functions.jpg differ
diff --git a/doc/images/flows_provider_update_offboard.jpg b/doc/images/flows_provider_update_offboard.jpg
index 4f592642aa175c03217c5544b4102beb3a8d23e1..106f650c44dc47a7c4f1bbb0fde10d4fb32a0b85 100644
Binary files a/doc/images/flows_provider_update_offboard.jpg and b/doc/images/flows_provider_update_offboard.jpg differ
diff --git a/doc/images/flows_sdk_with_register.jpg b/doc/images/flows_sdk_with_register.jpg
index 8ece6ce2087e4bdef23b3991e41409a2a39bb379..862a3533dd1b5114d0363c8480034dd0b2d0ed80 100644
Binary files a/doc/images/flows_sdk_with_register.jpg and b/doc/images/flows_sdk_with_register.jpg differ
diff --git a/doc/images/flows_updated_opencapif.jpg b/doc/images/flows_updated_opencapif.jpg
index 1bef5f1da3faca689919311e173d1a66e742187e..075b9c7eb39d6985b0271a329ea5ea38927c27dc 100644
Binary files a/doc/images/flows_updated_opencapif.jpg and b/doc/images/flows_updated_opencapif.jpg differ
diff --git a/doc/sdk_configuration.md b/doc/sdk_configuration.md
index e110e4b3ec0fda0dde13b56a636966d558530e8c..e172f6f20fd13b16c59c109b34968e20e97492ec 100644
--- a/doc/sdk_configuration.md
+++ b/doc/sdk_configuration.md
@@ -37,7 +37,7 @@ When configuring the SDK as a **Network App Invoker**, the following fields must
 **Optional:**
 To enable the discovery of specific APIs, the fields under [`discover_filter`](#configuration-of-discover_filter) can be configured.
 
-To use `check_authentication()` it is required to fill the `ip` and `port` variables within the `check_authentication` variable
+To use check_authentication() it will be required to fill up the `ip` and `port` parameters within the `check_authentication` variable.
 
 ### Network App Provider
 
@@ -92,6 +92,7 @@ This file can also be populated using [environment variables](../samples/envirom
 - `api_description_path`: The path to the [ServiceAPIDescription](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Publish_Service_API.yaml) JSON file.
 - `check_authentication`: The `ip` and `port` of the target Provider's AEF to get their supported features from.
 
+
 ## Configuration via `capif_sdk_register.json`
 
 To use this SDK in a local environment for creating and removing users, the following fields must be populated. Note that this feature is not included in the SDK, but instructions can be found in the [CAPIF official repository](https://labs.etsi.org/rep/ocf/capif/-/tree/REL1?ref_type=heads).
diff --git a/doc/sdk_full_documentation.md b/doc/sdk_full_documentation.md
index 77f265daa60ace92ac1596ad9a22bdd88a97543c..2ecdba56dc219149e0c0d0d11ad7655985afa9ff 100644
--- a/doc/sdk_full_documentation.md
+++ b/doc/sdk_full_documentation.md
@@ -17,7 +17,6 @@ Before using the SDK, the following steps should be completed:
 
 ![GENERAL CAPIF USAGE FLOW](./images/flows_updated_opencapif.jpg)
 
-
 The repository provides two modes for utilizing the OpenCAPIF SDK:
 
 1. **Development Mode**: The SDK can be imported directly into code for development purposes. Sample applications using the SDK are available in the [network_app_samples](../network_app_samples/) folder.
@@ -32,7 +31,6 @@ The repository provides two modes for utilizing the OpenCAPIF SDK:
 
 As outlined in the [Network App developers section](../README.md), the OpenCAPIF SDK supports two primary roles:
 
-
 - [Provider Network App](#provider-network-app)
     - [Important Information for Providers](#important-information-for-providers)
     - [Provider Onboarding](#provider-onboarding)
@@ -70,8 +68,6 @@ All the configuration values are available within the object capif_provider_conn
 
 The provider_capif_ids variable stores the `provider_service_ids.json` content in a dictionary form.
 
-The provider_capif_ids variable stores the `provider_capif_ids.json` content in a dictionary form.
-
 ### Provider Onboarding
 
 OpenCAPIF SDK references:
@@ -92,7 +88,13 @@ The SDK streamlines API publishing with the option to select specific APFs and A
 
 ### Service Deletion
 
-OpenCAPIF SDK references:
+**Required SDK inputs**:
+- publisher_apf_id
+- publisher_aefs_ids
+
+The SDK simplifies the process of publishing an API in CAPIF, with the option to select specific APFs and AEFs. Before publishing, ensure you’ve [onboarded as a provider](#provider-onboarding).
+
+**Required SDK inputs**:
 - **Function**: `unpublish_service()`
 - **Script**: `provider_unpublish_api.py`
 
@@ -125,10 +127,9 @@ Retrieve information on a previously published service, stored in `service_recei
 - publisher_apf_id
 
 ### Get All Services
-Retrieve information on all previously published services, stored in `service_received.json`. Onboarding and service publication are required.
+Retrieve information about all previously published services in `service_received.json`. Ensure you are [onboarded as a provider](#provider-onboarding) and have [published services](#services-publishing).
 
 **Required SDK input**:
-
 - publisher_apf_id
 
 ![Provider_publish](./images/flows_provider_publish_functions.jpg)
@@ -145,7 +146,6 @@ The provider must be onboarded before using these features.
 
 ## Invoker Network App
 
-
 The OpenCAPIF SDK enables efficient implementation of invoker functionality for Network App. This section details the SDK features related to CAPIF invokers.
 
 ### Important Information for Invokers
diff --git a/network_app_samples/network_app_invoker_sample/capif_sdk_config_sample.json b/network_app_samples/network_app_invoker_sample/capif_sdk_config_sample.json
index bec14c293bd6516a59b4f2b1d133c7ce3a5682aa..aa58c930c6394d72b565511f7fd1471f0189ec2a 100644
--- a/network_app_samples/network_app_invoker_sample/capif_sdk_config_sample.json
+++ b/network_app_samples/network_app_invoker_sample/capif_sdk_config_sample.json
@@ -9,6 +9,11 @@
   "invoker":{
     "invoker_folder": "/Users/IDB0128/Documents/OpenCapif/test_invoker_certificate_folder",
     "capif_callback_url": "http://localhost:5000",
+    "supported_features":"fffffff",
+    "check_authentication":{
+      "ip":"",
+      "port":""
+    },
     "cert_generation":{
       "csr_common_name": "invoker",
       "csr_organizational_unit": "test_app_ou",
diff --git a/network_app_samples/network_app_invoker_sample/network_app_invoker.py b/network_app_samples/network_app_invoker_sample/network_app_invoker.py
index 604fd6fb671b18a476507687793a87e767c47064..fb282bf57cef99b88dee83420180a3bdcaaa8fff 100644
--- a/network_app_samples/network_app_invoker_sample/network_app_invoker.py
+++ b/network_app_samples/network_app_invoker_sample/network_app_invoker.py
@@ -89,13 +89,19 @@ if __name__ == "__main__":
     capif_connector = capif_invoker_connector(config_file=capif_sdk_config_path)
     capif_connector.onboard_invoker()
     print("INVOKER ONBOARDING COMPLETED")
-
     # Now, with the certificates available, proceed with discovery
     discoverer = service_discoverer(config_file=capif_sdk_config_path)
     discoverer.discover()
-
     while True:
         discoverer.get_tokens()
+        
+        details = discoverer.invoker_capif_details
+        tamaño = len(details["registered_security_contexes"])
+        ip = details["registered_security_contexes"][tamaño-1]["aef_profiles"][0]["ip"]
+        port = details["registered_security_contexes"][tamaño-1]["aef_profiles"][0]["port"]
+        discoverer.check_authentication["ip"] = ip
+        discoverer.check_authentication["port"] = port
+        discoverer.check_authentication()
 
         # Load API details from the JSON file
         token = discoverer.token
diff --git a/network_app_samples/network_app_provider_sample/capif_sdk_config_sample.json b/network_app_samples/network_app_provider_sample/capif_sdk_config_sample.json
index e1044596724d32337a6f9dfb50ca46edef81f088..b93180a75dc79bdb3dd8edaf0fa9632f387baf9e 100644
--- a/network_app_samples/network_app_provider_sample/capif_sdk_config_sample.json
+++ b/network_app_samples/network_app_provider_sample/capif_sdk_config_sample.json
@@ -9,6 +9,10 @@
   "invoker":{
     "invoker_folder": "",
     "capif_callback_url": "",
+    "check_authentication":{
+      "ip":"",
+      "port":""
+    },
     "cert_generation":{
       "csr_common_name": "",
       "csr_organizational_unit": "",
diff --git a/network_app_samples/network_app_provider_sample/nef_upf_vendor_1.json b/network_app_samples/network_app_provider_sample/nef_upf_vendor_1.json
index 73c0665287bb5b17ac458908faaab1200361f4c6..8cc2fa42c0ccad2f63b4ba09d6b636db5f8fd791 100755
--- a/network_app_samples/network_app_provider_sample/nef_upf_vendor_1.json
+++ b/network_app_samples/network_app_provider_sample/nef_upf_vendor_1.json
@@ -2,7 +2,7 @@
     "apiName": "6G-resilience",
     "aefProfiles": [
         {
-            "aefId": "AEFa9977ceac99cd7dca857a373ce4385",
+            "aefId": "AEF6fc1d116574bcc797ecd74b8902b35",
             "versions": [
                 {
                     "apiVersion": "6G_Resilience_v1",
@@ -40,6 +40,102 @@
                                 "POST"
                             ],
                             "description": "Custom operation for managing 6G resilience parameters"
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
                         }
                     ]
                 }
@@ -60,7 +156,7 @@
             ]
         },
         {
-            "aefId": "AEF87d2faae1746e7678c959bfe8a513e",
+            "aefId": "AEFa8e49e01d179c79e6a4750a8363f1d",
             "versions": [
                 {
                     "apiVersion": "6G_Resilience_v1",
@@ -98,6 +194,102 @@
                                 "POST"
                             ],
                             "description": "Custom operation for configuring resilience in network slices"
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
                         }
                     ]
                 }
diff --git a/network_app_samples/network_app_provider_sample/nef_upf_vendor_2.json b/network_app_samples/network_app_provider_sample/nef_upf_vendor_2.json
index 09576f35215f901e04cbe926720cadd46f477af3..5feec72a09b690011fb88feb452d9f30908d1391 100755
--- a/network_app_samples/network_app_provider_sample/nef_upf_vendor_2.json
+++ b/network_app_samples/network_app_provider_sample/nef_upf_vendor_2.json
@@ -2,7 +2,7 @@
     "apiName": "5G-Network-App-API",
     "aefProfiles": [
         {
-            "aefId": "AEFa9977ceac99cd7dca857a373ce4385",
+            "aefId": "AEF6fc1d116574bcc797ecd74b8902b35",
             "versions": [
                 {
                     "apiVersion": "QoS_v1",
@@ -40,6 +40,86 @@
                                 "POST"
                             ],
                             "description": "Custom operation for managing QoS parameters"
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
                         }
                     ]
                 }
@@ -61,7 +141,7 @@
             ]
         },
         {
-            "aefId": "AEF87d2faae1746e7678c959bfe8a513e",
+            "aefId": "AEFa8e49e01d179c79e6a4750a8363f1d",
             "versions": [
                 {
                     "apiVersion": "TSN_v1",
@@ -116,6 +196,86 @@
                                 "POST"
                             ],
                             "description": "Custom operation for managing TSN profiles"
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
                         }
                     ]
                 }
@@ -136,7 +296,7 @@
             ]
         },
         {
-            "aefId": "AEF079fdc40e5d16d3095bac9d268ff12",
+            "aefId": "AEFc1a1d48f93449af79b5289cc3b1ae1",
             "versions": [
                 {
                     "apiVersion": "NetworkSlicing_v1",
@@ -174,6 +334,86 @@
                                 "POST"
                             ],
                             "description": "Custom operation for configuring network slices"
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "check-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Check authentication request."
+                        },
+                        {
+                            "commType": "REQUEST_RESPONSE",
+                            "custOpName": "revoke-authentication",
+                            "operations": [
+                                "POST"
+                            ],
+                            "description": "Revoke authorization for service APIs."
                         }
                     ]
                 }
diff --git a/network_app_samples/network_app_provider_sample/network_app_provider.py b/network_app_samples/network_app_provider_sample/network_app_provider.py
index 5bc39a15df22b4c160e37c7110360ce9cdbc60a6..24078fc6e653c7a48bf992683bea80ae018f93e8 100644
--- a/network_app_samples/network_app_provider_sample/network_app_provider.py
+++ b/network_app_samples/network_app_provider_sample/network_app_provider.py
@@ -1,7 +1,7 @@
 import threading
 from OpenSSL import crypto
 from flask_jwt_extended import jwt_required, JWTManager
-from flask import Flask, jsonify, request
+from flask import Flask, jsonify, request, redirect
 import sys
 import os
 import json
@@ -105,6 +105,32 @@ def manage_single_slice_resilience(sliceId):
         return jsonify({"message": f"DELETE request to remove slice {sliceId}'s resilience"})
 
 
+@resilience_app.route("/aef-security/v1/check-authentication", methods=["POST"])
+@jwt_required()
+def custom_operation_check():
+    if request.method == "POST":
+        try:
+            # Extraer el JSON del cuerpo del request
+            data = request.get_json()
+            
+            # Ejemplo de lógica para determinar si redirigir
+            # Este es un ejemplo ficticio, deberías reemplazarlo con la lógica real de tu caso
+            if "redirect_temporary" in data:
+                # Si se detecta "redirect_temporary", enviamos un 307 con un header Location
+                return redirect("https://alternative-uri.example.com", code=307)
+            elif "redirect_permanent" in data:
+                # Si se detecta "redirect_permanent", enviamos un 308 con un header Location
+                return redirect("https://alternative-uri.example.com", code=308)
+            
+            # Si no hay redirección, devolvemos el 200 OK con los datos
+            
+            return jsonify(data), 200
+
+        except Exception as e:
+            print("Error:", str(e))
+            return jsonify({"error": str(e)}), 500
+
+
 Network_app = Flask("Network_app")
 
 # JWT Configuration
@@ -228,6 +254,32 @@ def manage_slices():
         return jsonify({"message": "Network slice added", "sliceId": slice_id, "data": data})
 
 
+@Network_app.route("/aef-security/v1/check-authentication", methods=["POST"])
+@jwt_required()
+def custom_operation_check():
+    if request.method == "POST":
+        try:
+            # Extraer el JSON del cuerpo del request
+            data = request.get_json()
+            
+            # Ejemplo de lógica para determinar si redirigir
+            # Este es un ejemplo ficticio, deberías reemplazarlo con la lógica real de tu caso
+            if "redirect_temporary" in data:
+                # Si se detecta "redirect_temporary", enviamos un 307 con un header Location
+                return redirect("https://alternative-uri.example.com", code=307)
+            elif "redirect_permanent" in data:
+                # Si se detecta "redirect_permanent", enviamos un 308 con un header Location
+                return redirect("https://alternative-uri.example.com", code=308)
+            
+            # Si no hay redirección, devolvemos el 200 OK con los datos
+            return jsonify(data), 200
+
+        except Exception as e:
+            print("Error:", str(e))
+            return jsonify({"error": str(e)}), 500
+
+
+
 @Network_app.route("/slice/<sliceId>", methods=["GET", "PUT", "DELETE"])
 @jwt_required()
 def manage_single_slice(sliceId):
@@ -262,7 +314,6 @@ if __name__ == "__main__":
     try:
         # Initialize the connector
         capif_connector = capif_provider_connector(config_file=capif_sdk_config_path)
-        capif_connector.onboard_provider()
         print("PROVIDER ONBOARDING COMPLETED")
 
         capif_connector.api_description_path = "./nef_upf_vendor_1.json"
@@ -274,7 +325,7 @@ if __name__ == "__main__":
         Distrito = capif_connector.provider_capif_ids["AEF-2"]
         Valladolid = capif_connector.provider_capif_ids["AEF-3"]
 
-        capif_connector.publish_req['publisher_apf_id'] = apis
+        capif_connector.publish_req['publisher_apf_id'] = api6g
 
         capif_connector.publish_req['publisher_aefs_ids'] = [Peñuelas, Distrito]
 
@@ -282,7 +333,7 @@ if __name__ == "__main__":
 
         capif_connector.api_description_path = "./nef_upf_vendor_2.json"
 
-        capif_connector.publish_req['publisher_apf_id'] = apis
+        capif_connector.publish_req['publisher_apf_id'] = api5g
 
         capif_connector.publish_req['publisher_aefs_ids'] = [Peñuelas, Distrito, Valladolid]
 
@@ -294,6 +345,10 @@ if __name__ == "__main__":
 
         print("APIS PUBLISHED")
 
+        capif_connector.publish_req['service_api_id'] = capif_connector.provider_service_ids['5G-Network-App-API']
+
+        capif_connector.get_service()
+
         config_network()
 
         config_resilience()
diff --git a/samples/capif_api_security_context_details_sample.json b/samples/capif_api_security_context_details_sample.json
index 454956f52de40eeb67da8fd0e5051cff2f350bca..ec3ee6d4c967ac71582bb626e82427ebd9895967 100644
--- a/samples/capif_api_security_context_details_sample.json
+++ b/samples/capif_api_security_context_details_sample.json
@@ -1,34 +1,42 @@
 {
   "user_name": "echeva_0",
-  "api_invoker_id": "INV7b06186b167af4b4d846490cd78066",
+  "api_invoker_id": "INV74eff9e863a1b0344bbe6e1557f40a",
   "discover_services_url": "service-apis/v1/allServiceAPIs?api-invoker-id=",
   "registered_security_contexes": [
     {
       "api_name": "Test66",
       "api_id": "feb57d7c92dfd2b94da3f53ceadf33",
-      "aef_id": "AEF72e7f944a20fe072e9db263533b646",
-      "ip": "http://10.17.173.87",
-      "port": 8088,
-      "versions": [
+      "aef_profiles": [
         {
-          "apiVersion": "v1",
-          "expiry": "2025-08-27T09:16:41.278000+00:00",
-          "resources": [
+          "aef_id": "AEF72e7f944a20fe072e9db263533b646",
+          "ip": "http://10.17.173.87",
+          "port": 8088,
+          "versions": [
             {
-              "resourceName": "dynamic-deployment",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/api/svc/v1/dynamic-deployment",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "Dynamic deployment"
-            }
-          ],
-          "custOperations": [
-            {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "string"
+              "apiVersion": "v1",
+              "expiry": "2025-08-27T09:16:41.278000+00:00",
+              "resources": [
+                {
+                  "resourceName": "dynamic-deployment",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/api/svc/v1/dynamic-deployment",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Dynamic deployment"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
           ]
         }
@@ -37,29 +45,37 @@
     {
       "api_name": "Test77",
       "api_id": "de766971736ca69b578642f9942447",
-      "aef_id": "AEF5608b606ab08cfd7111018e3936666",
-      "ip": "http://10.17.173.87",
-      "port": 8088,
-      "versions": [
+      "aef_profiles": [
         {
-          "apiVersion": "v1",
-          "expiry": "2025-08-27T09:17:30.918000+00:00",
-          "resources": [
-            {
-              "resourceName": "dynamic-deployment",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/api/svc/v1/dynamic-deployment",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "Dynamic deployment"
-            }
-          ],
-          "custOperations": [
+          "aef_id": "AEF5608b606ab08cfd7111018e3936666",
+          "ip": "http://10.17.173.87",
+          "port": 8088,
+          "versions": [
             {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "string"
+              "apiVersion": "v1",
+              "expiry": "2025-08-27T09:17:30.918000+00:00",
+              "resources": [
+                {
+                  "resourceName": "dynamic-deployment",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/api/svc/v1/dynamic-deployment",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Dynamic deployment"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
           ]
         }
@@ -68,29 +84,37 @@
     {
       "api_name": "Deployment",
       "api_id": "aabc425680791995b1fbb93a01c7d1",
-      "aef_id": "AEFd836e9b49161673e3ee6632c409520",
-      "ip": "http://10.17.173.87",
-      "port": 8088,
-      "versions": [
+      "aef_profiles": [
         {
-          "apiVersion": "v1",
-          "expiry": "2025-08-28T08:00:21.178000+00:00",
-          "resources": [
-            {
-              "resourceName": "dynamic-deployment",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/api/svc/v1/dynamic-deployment",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "Dynamic deployment"
-            }
-          ],
-          "custOperations": [
+          "aef_id": "AEFd836e9b49161673e3ee6632c409520",
+          "ip": "http://10.17.173.87",
+          "port": 8088,
+          "versions": [
             {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "string"
+              "apiVersion": "v1",
+              "expiry": "2025-08-28T08:00:21.178000+00:00",
+              "resources": [
+                {
+                  "resourceName": "dynamic-deployment",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/api/svc/v1/dynamic-deployment",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Dynamic deployment"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
           ]
         }
@@ -99,118 +123,932 @@
     {
       "api_name": "Deployment1",
       "api_id": "dd0b9f983eeb2286431ed45980a4ef",
-      "aef_id": "AEF4610c63fcb94052eb8847abd2c5ed7",
-      "ip": "http://10.17.173.87",
-      "port": 8088,
-      "versions": [
+      "aef_profiles": [
         {
-          "apiVersion": "v1",
-          "expiry": "2025-09-03T14:00:17.889000+00:00",
-          "resources": [
+          "aef_id": "AEF4610c63fcb94052eb8847abd2c5ed7",
+          "ip": "http://10.17.173.87",
+          "port": 8088,
+          "versions": [
             {
-              "resourceName": "dynamic-deployment",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/api/svc/v1/dynamic-deployment",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "Dynamic deployment"
+              "apiVersion": "v1",
+              "expiry": "2025-09-03T14:00:17.889000+00:00",
+              "resources": [
+                {
+                  "resourceName": "dynamic-deployment",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/api/svc/v1/dynamic-deployment",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Dynamic deployment"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
-          ],
-          "custOperations": [
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "ks8500_gateway_development",
+      "api_id": "8eb8d27d533731ae500e00acdab87a",
+      "aef_profiles": [
+        {
+          "aef_id": "AEF4ca2cfb9700f917b8cce1368599c60",
+          "ip": "localhost",
+          "port": 443,
+          "versions": [
             {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["GET"],
-              "description": "string"
+              "apiVersion": "v1",
+              "resources": [
+                {
+                  "resourceName": "runs",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/runs",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Schedule a campaign run"
+                }
+              ]
             }
           ]
         }
       ]
     },
     {
-      "api_name": "ks8500_gateway",
-      "api_id": "989df41e88ff855b4caa3e8604a63a",
-      "aef_id": "AEFe4d29061739c80aceb26904354203a",
-      "ip": "localhost",
-      "port": 8088,
-      "versions": [
+      "api_name": "Test-2",
+      "api_id": "12eb4b45270b24c2e2e19ebf949ac0",
+      "aef_profiles": [
+        {
+          "aef_id": "AEFf9911166dadd72d9f2305e9121776d",
+          "ip": "127.0.0.1",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "MONITORING_SUBSCRIPTIONS",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/subscriptions",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage monitoring subscriptions"
+                },
+                {
+                  "resourceName": "MONITORING_SUBSCRIPTION_SINGLE",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/subscriptions/{subscriptionId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage single subscription"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "string"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF85bef05b30b1e9d32c5b7cb6ec7d00",
+          "ip": "127.0.0.1",
+          "port": 8899,
+          "versions": [
+            {
+              "apiVersion": "v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "TSN_LIST_PROFILES",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/profile",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving the list of available TSN profiles"
+                },
+                {
+                  "resourceName": "TSN_DETAIL_PROFILE",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/profile?name={profileName}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving information about a single TSN profile"
+                },
+                {
+                  "resourceName": "TSN_APPLY_CONFIGURATION",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/apply",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for configuring TSN connection parameters"
+                },
+                {
+                  "resourceName": "TSN_CLEAR_CONFIGURATION",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/clear",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for removing a previous TSN connection configuration"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "string"
+                }
+              ]
+            }
+          ]
+        },
         {
-          "apiVersion": "v1",
-          "expiry": "2025-11-30T10:32:02.004000+00:00",
-          "resources": [
+          "aef_id": "AEFc68bb090546dfc11d3986adbccbb12",
+          "ip": "127.0.0.1",
+          "port": 8888,
+          "versions": [
             {
-              "resourceName": "schedule_run",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/runs/new",
-              "custOpName": "string",
-              "operations": ["POST"],
-              "description": "Endpoint to receive a welcome message"
+              "apiVersion": "v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "MONITORING_SUBSCRIPTIONS",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/subscriptions",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage monitoring subscriptions"
+                },
+                {
+                  "resourceName": "MONITORING_SUBSCRIPTION_SINGLE",
+                  "commType": " SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/subscriptions/{subscriptionId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage single subscription"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
-          ],
-          "custOperations": [
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "demo_api_OCF",
+      "api_id": "e16c9dc483576f7b5fb3a2350294d9",
+      "aef_profiles": [
+        {
+          "aef_id": "AEFa100b1a76ce0a5e8495c6ebf43bf4c",
+          "ip": "one_provider_gui",
+          "port": 8088,
+          "versions": [
             {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["POST"],
-              "description": "string"
+              "apiVersion": "v1",
+              "expiry": "2025-10-02T08:27:50.894000+00:00",
+              "resources": [
+                {
+                  "resourceName": "create-vm-endpoint",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/hello",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint to say hello"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "string"
+                }
+              ]
             }
           ]
         }
       ]
     },
     {
-      "api_name": "ks8500_runner_test",
-      "api_id": "f7b310ec187da7b98f5e1ae04e7cf8",
-      "aef_id": "AEF245414674f715d15c0130f6e82c0ea",
-      "ip": "localhost",
-      "port": 8088,
-      "versions": [
+      "api_name": "ss-gm",
+      "api_id": "2c55c06867c55cf46bfc291150a95c",
+      "aef_profiles": [
         {
-          "apiVersion": "v1",
-          "expiry": "2025-11-30T10:32:02.004000+00:00",
-          "resources": [
+          "aef_id": "AEF9415a9171d81ded2b30dc060a288b5",
+          "ip": "localhost",
+          "port": 8089,
+          "versions": [
             {
-              "resourceName": "hello-endpoint",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/hello",
-              "custOpName": "string",
-              "operations": ["POST"],
-              "description": "Endpoint to receive a welcome message"
+              "apiVersion": "v1",
+              "expiry": "2025-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "VAL Group documents endpoint",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/group-documents",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST",
+                    "GET"
+                  ],
+                  "description": "VAL Group Documents"
+                },
+                {
+                  "resourceName": "Individual VAL Group Document endpoint",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/group-documents/{groupDocId}",
+                  "custOpName": "string",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE",
+                    "PATCH"
+                  ],
+                  "description": "Individual VAL Group Document"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Text description of the custom operation"
+                }
+              ]
             }
-          ],
-          "custOperations": [
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "ss-lair",
+      "api_id": "b68143d2c3e1b0156680f22cf911d9",
+      "aef_profiles": [
+        {
+          "aef_id": "AEF9415a9171d81ded2b30dc060a288b5",
+          "ip": "localhost",
+          "port": 8086,
+          "versions": [
             {
-              "commType": "REQUEST_RESPONSE",
-              "custOpName": "string",
-              "operations": ["POST"],
-              "description": "string"
+              "apiVersion": "v1",
+              "expiry": "2025-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "Location Information endpoint",
+                  "commType": "REQUEST_RESPONSE",
+                  "uri": "/location-retrievals",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Retrieve the UE(s) information in an application defined proximity range of a location"
+                }
+              ]
             }
           ]
         }
       ]
     },
     {
-      "api_name": "ks8500_gateway_development",
-      "api_id": "8eb8d27d533731ae500e00acdab87a",
-      "aef_id": "AEF4ca2cfb9700f917b8cce1368599c60",
-      "ip": "localhost",
-      "port": 443,
-      "versions": [
+      "api_name": "5G-Network-App",
+      "api_id": "c7c893d887f1b8d3b53c971489935d",
+      "aef_profiles": [
+        {
+          "aef_id": "AEFba23b71a8e3665a596a37aeea0995f",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "QoS_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "QOS_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage QoS levels for network traffic"
+                },
+                {
+                  "resourceName": "QOS_PROFILE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos/{profileId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage single QoS profile"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing QoS parameters"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF0958564e9312e20113aa958afe8e91",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "TSN_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "TSN_LIST_PROFILES",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving the list of available TSN profiles"
+                },
+                {
+                  "resourceName": "TSN_DETAIL_PROFILE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile?name={profileName}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving information about a single TSN profile"
+                },
+                {
+                  "resourceName": "TSN_APPLY_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/apply",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for configuring TSN connection parameters"
+                },
+                {
+                  "resourceName": "TSN_CLEAR_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/clear",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for removing a previous TSN connection configuration"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing TSN profiles"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF42c0e50be3d517a47ca9a947eb61c5",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "NetworkSlicing_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "SLICE_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint for managing network slices"
+                },
+                {
+                  "resourceName": "SLICE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice/{sliceId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint for managing a single network slice"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for configuring network slices"
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "5G-App-Network",
+      "api_id": "88f0b4402c7e3b3b7386d54298de09",
+      "aef_profiles": [
+        {
+          "aef_id": "AEF02edd275535f002f9a8ac3f1728a19",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "QoS_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "QOS_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage QoS levels for network traffic"
+                },
+                {
+                  "resourceName": "QOS_PROFILE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos/{profileId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage single QoS profile"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing QoS parameters"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF698cc1f41d41ee700bd1294d0d4e63",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "TSN_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "TSN_LIST_PROFILES",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving the list of available TSN profiles"
+                },
+                {
+                  "resourceName": "TSN_DETAIL_PROFILE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile?name={profileName}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving information about a single TSN profile"
+                },
+                {
+                  "resourceName": "TSN_APPLY_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/apply",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for configuring TSN connection parameters"
+                },
+                {
+                  "resourceName": "TSN_CLEAR_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/clear",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for removing a previous TSN connection configuration"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing TSN profiles"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF5a7180bc8e5191fea0d54a7e96282b",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "NetworkSlicing_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "SLICE_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint for managing network slices"
+                },
+                {
+                  "resourceName": "SLICE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice/{sliceId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint for managing a single network slice"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for configuring network slices"
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "6G-resilience",
+      "api_id": "59586353d430dc01edf966a03843ce",
+      "aef_profiles": [
+        {
+          "aef_id": "AEF3c00fec00ce2e94df8e227210a33d3",
+          "ip": "localhost",
+          "port": 8088,
+          "versions": [
+            {
+              "apiVersion": "6G_Resilience_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "RESILIENCE_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/resilience",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage resilience functionalities in 6G networks"
+                },
+                {
+                  "resourceName": "RESILIENCE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/resilience/{profileId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage a single resilience profile"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing 6G resilience parameters"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF28a603120c743e8d615a55c143400c",
+          "ip": "localhost",
+          "port": 8088,
+          "versions": [
+            {
+              "apiVersion": "6G_Resilience_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "SLICE_RESILIENCE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice/resilience",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint for managing resilience in network slices"
+                },
+                {
+                  "resourceName": "SLICE_SINGLE_RESILIENCE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice/{sliceId}/resilience",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint for managing a single slice's resilience"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for configuring resilience in network slices"
+                }
+              ]
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "api_name": "5G-Network-App-Function",
+      "api_id": "f36d98c81dc7ecfe7ff97bd17ee549",
+      "aef_profiles": [
+        {
+          "aef_id": "AEF3c00fec00ce2e94df8e227210a33d3",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "QoS_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "QOS_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint to manage QoS levels for network traffic"
+                },
+                {
+                  "resourceName": "QOS_PROFILE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/{scsAsId}/qos/{profileId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint to manage single QoS profile"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing QoS parameters"
+                }
+              ]
+            }
+          ]
+        },
+        {
+          "aef_id": "AEF28a603120c743e8d615a55c143400c",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
+            {
+              "apiVersion": "TSN_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "TSN_LIST_PROFILES",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving the list of available TSN profiles"
+                },
+                {
+                  "resourceName": "TSN_DETAIL_PROFILE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/profile?name={profileName}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET"
+                  ],
+                  "description": "Endpoint for retrieving information about a single TSN profile"
+                },
+                {
+                  "resourceName": "TSN_APPLY_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/apply",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for configuring TSN connection parameters"
+                },
+                {
+                  "resourceName": "TSN_CLEAR_CONFIGURATION",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/clear",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Endpoint for removing a previous TSN connection configuration"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for managing TSN profiles"
+                }
+              ]
+            }
+          ]
+        },
         {
-          "apiVersion": "v1",
-          "resources": [
+          "aef_id": "AEFc9de485870465cefd3ca91b9cee02b",
+          "ip": "localhost",
+          "port": 8888,
+          "versions": [
             {
-              "resourceName": "runs",
-              "commType": "REQUEST_RESPONSE",
-              "uri": "/runs",
-              "custOpName": "string",
-              "operations": ["POST"],
-              "description": "Schedule a campaign run"
+              "apiVersion": "NetworkSlicing_v1",
+              "expiry": "2100-11-30T10:32:02.004000+00:00",
+              "resources": [
+                {
+                  "resourceName": "SLICE_MANAGEMENT",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice",
+                  "custOpName": "http_post",
+                  "operations": [
+                    "GET",
+                    "POST"
+                  ],
+                  "description": "Endpoint for managing network slices"
+                },
+                {
+                  "resourceName": "SLICE_SINGLE",
+                  "commType": "SUBSCRIBE_NOTIFY",
+                  "uri": "/slice/{sliceId}",
+                  "custOpName": "http_get",
+                  "operations": [
+                    "GET",
+                    "PUT",
+                    "DELETE"
+                  ],
+                  "description": "Endpoint for managing a single network slice"
+                }
+              ],
+              "custOperations": [
+                {
+                  "commType": "REQUEST_RESPONSE",
+                  "custOpName": "string",
+                  "operations": [
+                    "POST"
+                  ],
+                  "description": "Custom operation for configuring network slices"
+                }
+              ]
             }
           ]
         }
       ]
     }
   ],
-  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcyNzMzNzA5MywianRpIjoiNTc3MzBkZjgtN2M4NS00NGQ2LTg0ZmEtNTQ0NjdmMTZlZWY0IiwidHlwZSI6ImFjY2VzcyIsInN1YiI6IklOVjdiMDYxODZiMTY3YWY0YjRkODQ2NDkwY2Q3ODA2NiIsIm5iZiI6MTcyNzMzNzA5MywiZXhwIjoxNzI3MzM3NjkzLCJpc3MiOiJJTlY3YjA2MTg2YjE2N2FmNGI0ZDg0NjQ5MGNkNzgwNjYiLCJzY29wZSI6IjNncHAjQUVGNzJlN2Y5NDRhMjBmZTA3MmU5ZGIyNjM1MzNiNjQ2OlRlc3Q2NjtBRUY1NjA4YjYwNmFiMDhjZmQ3MTExMDE4ZTM5MzY2NjY6VGVzdDc3O0FFRmQ4MzZlOWI0OTE2MTY3M2UzZWU2NjMyYzQwOTUyMDpEZXBsb3ltZW50O0FFRjQ2MTBjNjNmY2I5NDA1MmViODg0N2FiZDJjNWVkNzpEZXBsb3ltZW50MTtBRUZlNGQyOTA2MTczOWM4MGFjZWIyNjkwNDM1NDIwM2E6a3M4NTAwX2dhdGV3YXk7QUVGMjQ1NDE0Njc0ZjcxNWQxNWMwMTMwZjZlODJjMGVhOmtzODUwMF9ydW5uZXJfdGVzdDtBRUY0Y2EyY2ZiOTcwMGY5MTdiOGNjZTEzNjg1OTljNjA6a3M4NTAwX2dhdGV3YXlfZGV2ZWxvcG1lbnQifQ.AFFXCZ6IpqkPCYgTplF5YQphQPQH3LBe94YMTcM4ikp4aaoSyo4lyGVF9qWBWqql1rEVTHERM5nu7cf0C_pRwHb_p-iXDT3SUIBR-EajKh0sgc8LHE4qAT5wJ6ZQtz_gKTdcducu8pdUs3NPsmw_pqyubMZuC8nhuKCV8qSJJYjBvaH5DxvlxGKWsibVs0-K_LKQC6XTazv4UdBguz6YR_nP3TiVt731X0Y_EMQnILqY8Mi2IgBkkuyfV90BXvAluo17Z1NzVYZKupHjbQTD3VPO5zr0qjrPHNQAMFrV8gmygG-4TjcYvOy6xicZpqQzd_-yh1lgD4bi-kBkDJVhoQ"
-}
+  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcyOTc1ODUwNiwianRpIjoiY2FiNTNlMDMtNDI1Yy00MTA2LTkzNmYtZDE0ZGRjNjgyNjMyIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6IklOVjc0ZWZmOWU4NjNhMWIwMzQ0YmJlNmUxNTU3ZjQwYSIsIm5iZiI6MTcyOTc1ODUwNiwiZXhwIjoxNzI5NzU5MTA2LCJpc3MiOiJJTlY3NGVmZjllODYzYTFiMDM0NGJiZTZlMTU1N2Y0MGEiLCJzY29wZSI6IjNncHAjQUVGNzJlN2Y5NDRhMjBmZTA3MmU5ZGIyNjM1MzNiNjQ2OlRlc3Q2NjtBRUY1NjA4YjYwNmFiMDhjZmQ3MTExMDE4ZTM5MzY2NjY6VGVzdDc3O0FFRmQ4MzZlOWI0OTE2MTY3M2UzZWU2NjMyYzQwOTUyMDpEZXBsb3ltZW50O0FFRjQ2MTBjNjNmY2I5NDA1MmViODg0N2FiZDJjNWVkNzpEZXBsb3ltZW50MTtBRUY0Y2EyY2ZiOTcwMGY5MTdiOGNjZTEzNjg1OTljNjA6a3M4NTAwX2dhdGV3YXlfZGV2ZWxvcG1lbnQ7QUVGZjk5MTExNjZkYWRkNzJkOWYyMzA1ZTkxMjE3NzZkOlRlc3QtMjtBRUY4NWJlZjA1YjMwYjFlOWQzMmM1YjdjYjZlYzdkMDA6VGVzdC0yO0FFRmM2OGJiMDkwNTQ2ZGZjMTFkMzk4NmFkYmNjYmIxMjpUZXN0LTI7QUVGYTEwMGIxYTc2Y2UwYTVlODQ5NWM2ZWJmNDNiZjRjOmRlbW9fYXBpX09DRjtBRUY5NDE1YTkxNzFkODFkZWQyYjMwZGMwNjBhMjg4YjU6c3MtZ207QUVGOTQxNWE5MTcxZDgxZGVkMmIzMGRjMDYwYTI4OGI1OnNzLWxhaXI7QUVGYmEyM2I3MWE4ZTM2NjVhNTk2YTM3YWVlYTA5OTVmOjVHLU5ldHdvcmstQXBwO0FFRjA5NTg1NjRlOTMxMmUyMDExM2FhOTU4YWZlOGU5MTo1Ry1OZXR3b3JrLUFwcDtBRUY0MmMwZTUwYmUzZDUxN2E0N2NhOWE5NDdlYjYxYzU6NUctTmV0d29yay1BcHA7QUVGMDJlZGQyNzU1MzVmMDAyZjlhOGFjM2YxNzI4YTE5OjVHLUFwcC1OZXR3b3JrO0FFRjY5OGNjMWY0MWQ0MWVlNzAwYmQxMjk0ZDBkNGU2Mzo1Ry1BcHAtTmV0d29yaztBRUY1YTcxODBiYzhlNTE5MWZlYTBkNTRhN2U5NjI4MmI6NUctQXBwLU5ldHdvcms7QUVGM2MwMGZlYzAwY2UyZTk0ZGY4ZTIyNzIxMGEzM2QzOjZHLXJlc2lsaWVuY2U7QUVGMjhhNjAzMTIwYzc0M2U4ZDYxNWE1NWMxNDM0MDBjOjZHLXJlc2lsaWVuY2U7QUVGM2MwMGZlYzAwY2UyZTk0ZGY4ZTIyNzIxMGEzM2QzOjVHLU5ldHdvcmstQXBwLUZ1bmN0aW9uO0FFRjI4YTYwMzEyMGM3NDNlOGQ2MTVhNTVjMTQzNDAwYzo1Ry1OZXR3b3JrLUFwcC1GdW5jdGlvbjtBRUZjOWRlNDg1ODcwNDY1Y2VmZDNjYTkxYjljZWUwMmI6NUctTmV0d29yay1BcHAtRnVuY3Rpb24ifQ.F_fMx35rbOlf1je4UVoA4dvyJwaSuAWEboGPNY_ziDtNe6PF1c0VO3_I0Z_V9QQFHSMhOYjwcCK3m9eD0rsIY15Qlw9ER2OLhCoVDQlPZvrRorI7bOnt0Xf2rtQK-NNVR_91VwlBI7h86_cw2M7xqV7IKxYlAl9j49GzNzJtJSNzlW-JrJ_SdHgkPd9_Vbpv0_Nr4-CBKyn9gmZAvmWwA8g_vPoAFKIMQg00R5maQCfflqnvxF_yRDl3eZbO7o9Lrds-E-lFRuYEWHNl7ShhLmuHfcp9Xz7pLqWVlHbdHDJDcbQ4i1sKpLan7eXSM0oT6JdaMuzBrRA3tPPMfzb0Tw"
+}
\ No newline at end of file
diff --git a/samples/config_sample.json b/samples/config_sample.json
index a358ca4cc7daa0dc73ef770f0cb2d8f3a42ff49e..a63424188e28673915b095439444e75048c588b8 100644
--- a/samples/config_sample.json
+++ b/samples/config_sample.json
@@ -1,61 +1,66 @@
 {
-    "capif_host": "",
-    "register_host": "",
-    "capif_https_port": "",
-    "capif_register_port": "",
-    "capif_username": "",
-    "capif_password": "",
-    "debug_mode": "",
-    "invoker": {
-      "invoker_folder": "",
-      "capif_callback_url": "",
-      "cert_generation": {
-        "csr_common_name": "",
-        "csr_organizational_unit": "",
-        "csr_organization": "",
-        "crs_locality": "",
-        "csr_state_or_province_name": "",
-        "csr_country_name": "",
-        "csr_email_address": ""
-      },
-      "discover_filter": {
-        "api-name": "",
-        "api-version": "",
-        "comm-type": "",
-        "protocol": "",
-        "aef-id": "",
-        "data-format": "",
-        "api-cat": "",
-        "preferred-aef-loc": "",
-        "req-api-prov-name": "",
-        "supported-features": "",
-        "api-supported-features": "",
-        "ue-ip-addr": "",
-        "service-kpis": ""
-      }
+  "capif_host": "",
+  "register_host": "",
+  "capif_https_port": "",
+  "capif_register_port": "",
+  "capif_username": "",
+  "capif_password": "",
+  "debug_mode": "",
+  "invoker": {
+    "invoker_folder": "",
+    "capif_callback_url": "",
+    "supported_features":"",
+    "check_authentication":{
+      "ip":"",
+      "port":""
     },
-    "provider": {
-      "provider_folder": "",
-      "apfs": "",
-      "aefs": "",
-      "publish_req": {
-        "service_api_id": "",
-        "publisher_apf_id": "",
-        "publisher_aefs_ids": [
-          "",
-          ""
-        ]
-      },
-      "cert_generation": {
-        "csr_common_name": "",
-        "csr_organizational_unit": "",
-        "csr_organization": "",
-        "crs_locality": "",
-        "csr_state_or_province_name": "",
-        "csr_country_name": "",
-        "csr_email_address": ""
-      },
-      "api_description_path": ""
+    "cert_generation": {
+      "csr_common_name": "",
+      "csr_organizational_unit": "",
+      "csr_organization": "",
+      "crs_locality": "",
+      "csr_state_or_province_name": "",
+      "csr_country_name": "",
+      "csr_email_address": ""
+    },
+    "discover_filter": {
+      "api-name": "",
+      "api-version": "",
+      "comm-type": "",
+      "protocol": "",
+      "aef-id": "",
+      "data-format": "",
+      "api-cat": "",
+      "preferred-aef-loc": "",
+      "req-api-prov-name": "",
+      "supported-features": "",
+      "api-supported-features": "",
+      "ue-ip-addr": "",
+      "service-kpis": ""
     }
+  },
+
+  "provider": {
+    "provider_folder": "",
+    "apfs": "",
+    "aefs": "",
+    "publish_req": {
+      "service_api_id": "",
+      "publisher_apf_id": "",
+      "publisher_aefs_ids": [
+        "",
+        ""
+      ]
+    },
+    "cert_generation":{
+      "csr_common_name": "",
+      "csr_organizational_unit": "",
+      "csr_organization": "",
+      "crs_locality": "",
+      "csr_state_or_province_name": "",
+      "csr_country_name": "",
+      "csr_email_address": ""
+    },
+    "api_description_path": ""
   }
-  
\ No newline at end of file
+}
diff --git a/sdk/capif_invoker_connector.py b/sdk/capif_invoker_connector.py
index 04cfc78d9c0619f5e42dfa65dea4ae4ca7b6a82e..1835908309857238407aeea95ac762215baef541 100644
--- a/sdk/capif_invoker_connector.py
+++ b/sdk/capif_invoker_connector.py
@@ -80,7 +80,14 @@ class capif_invoker_connector:
         capif_register_port = str(os.getenv('CAPIF_REGISTER_PORT', config.get('capif_register_port', '')).strip())
         capif_username = os.getenv('CAPIF_USERNAME', config.get('capif_username', '')).strip()
         capif_invoker_password = os.getenv('CAPIF_PASSWORD', config.get('capif_password', '')).strip()
+        
         capif_callback_url = os.getenv('CAPIF_CALLBACK_URL', invoker_config.get('capif_callback_url', '')).strip()
+        supported_features = os.getenv('INVOKER_FOLDER', invoker_config.get('supported_features', '')).strip()
+        check_authentication = invoker_config.get('check_authentication', {})
+        self.check_authentication = {
+            "ip": os.getenv('INVOKER_CHECK_AUTHENTICATION_IP', check_authentication.get('ip', '')).strip(),
+            "port":  os.getenv('INVOKER_CHECK_AUTHENTICATION_PORT', check_authentication.get('port', '')).strip()
+        } 
 
         # Extract CSR configuration from the JSON
         csr_config = invoker_config.get('cert_generation', {})
@@ -95,6 +102,7 @@ class capif_invoker_connector:
         # Define the invoker folder path and create it if it doesn't exist
         self.invoker_folder = os.path.join(invoker_general_folder, capif_username)
         os.makedirs(self.invoker_folder, exist_ok=True)
+        self.supported_features = supported_features        
 
         # Configure URLs for CAPIF HTTPS and register services
         if len(capif_https_port) == 0 or int(capif_https_port) == 443:
@@ -123,6 +131,13 @@ class capif_invoker_connector:
         self.csr_email_address = csr_email_address
         self.invoker_capif_details_filename = "capif_api_security_context_details-" + self.capif_username + ".json"
 
+        path = os.path.join(
+            self.invoker_folder,
+            self.invoker_capif_details_filename
+        )
+        if os.path.exists(path):
+            self.invoker_capif_details = self.__load_invoker_api_details()
+
         self.logger.info("capif_invoker_connector initialized with the JSON parameters")
 
     def __load_config_file(self, config_file: str):
@@ -310,7 +325,7 @@ class capif_invoker_connector:
             url = self.capif_https_url + capif_onboarding_url
             payload_dict = {
                 "notificationDestination": self.capif_callback_url,
-                "supportedFeatures": "fffffff",
+                "supportedFeatures": self.supported_features,
                 "apiInvokerInformation": self.csr_common_name,
                 "websockNotifConfig": {
                     "requestWebsocketUri": True,
@@ -414,7 +429,7 @@ class capif_invoker_connector:
             url = self.capif_https_url + capif_onboarding_url + "/" + invokerid
             payload_dict = {
                 "notificationDestination": self.capif_callback_url,
-                "supportedFeatures": "fffffff",
+                "supportedFeatures": self.supported_features,
                 "apiInvokerInformation": self.csr_common_name,
                 "websockNotifConfig": {
                     "requestWebsocketUri": True,
@@ -456,3 +471,6 @@ class capif_invoker_connector:
             self.logger.error(
                 f"Error during updating Invoker to CAPIF: {e} - Response: {response.text}")
             raise
+
+    
+
diff --git a/sdk/capif_provider_connector.py b/sdk/capif_provider_connector.py
index 8f0d8525ce922d0cd30e233b7a17b539cf83b227..dd278aa8a174c36bca9e24e678e3f658060e4594 100644
--- a/sdk/capif_provider_connector.py
+++ b/sdk/capif_provider_connector.py
@@ -462,6 +462,35 @@ class capif_provider_connector:
                 # Assigning each AEF
                 for profile, aef_id in zip(data.get("aefProfiles", []), AEFs_list):
                     profile["aefId"] = aef_id
+                    for versions in profile["versions"]:
+                        for custom in versions["custOperations"]:
+                            check = True
+                            revoke = True
+                            if custom["custOpName"] == "check-authentication":
+                                check = False
+                            if custom["custOpName"] == "revoke-authentication ":
+                                revoke = False
+                        # If 'check-authentication' custom operation doesn't exist, add it
+                        if check:
+                            versions["custOperations"].append({
+                                "commType": "REQUEST_RESPONSE",
+                                "custOpName": "check-authentication",
+                                "operations": [
+                                    "POST"
+                                ],
+                                "description": "Check authentication request."
+                            })
+
+                        # If 'revoke-authentication' custom operation doesn't exist, add it
+                        if revoke:
+                            versions["custOperations"].append({
+                                "commType": "REQUEST_RESPONSE",
+                                "custOpName": "revoke-authentication",
+                                "operations": [
+                                    "POST"
+                                ],
+                                "description": "Revoke authorization for service APIs."
+                            })
 
                 self.logger.info(
                     "Service API description modified successfully")
@@ -532,7 +561,6 @@ class capif_provider_connector:
             provider_service_ids[file_name] = id
 
             self.provider_service_ids = provider_service_ids
-
             # Write the updated file of published APIs
             with open(output_path, "w") as outfile:
                 json.dump(provider_service_ids, outfile, indent=4)
@@ -622,7 +650,7 @@ class capif_provider_connector:
                     break
 
             output_path = os.path.join(
-              
+             
                 self.provider_folder, "provider_service_ids.json")
 
             # Read the existing file of published APIs
@@ -871,7 +899,35 @@ class capif_provider_connector:
                 # Asing the chosen AEFs
                 for profile, aef_id in zip(data.get("aefProfiles", []), AEFs_list):
                     profile["aefId"] = aef_id
-
+                    for versions in profile["versions"]:
+                        for custom in versions["custOperations"]:
+                            check = True
+                            revoke = True
+                            if custom["custOpName"] == "check-authentication":
+                                check = False
+                            if custom["custOpName"] == "revoke-authentication ":
+                                revoke = False
+                        # If 'check-authentication' custom operation doesn't exist, add it
+                        if check:
+                            versions["custOperations"].append({
+                                "commType": "REQUEST_RESPONSE",
+                                "custOpName": "check-authentication",
+                                "operations": [
+                                    "POST"
+                                ],
+                                "description": "Check authentication request."
+                            })
+
+                        # If 'revoke-authentication' custom operation doesn't exist, add it
+                        if revoke:
+                            versions["custOperations"].append({
+                                "commType": "REQUEST_RESPONSE",
+                                "custOpName": "revoke-authentication",
+                                "operations": [
+                                    "POST"
+                                ],
+                                "description": "Revoke authorization for service APIs."
+                            })
                 self.logger.info(
                     "Service API description modified successfully")
 
diff --git a/sdk/service_discoverer.py b/sdk/service_discoverer.py
index b42d713362ce27b698a79b6f5bdab67d7784f123..0566dec2bb083d7d55977fce6813b65753436eb2 100644
--- a/sdk/service_discoverer.py
+++ b/sdk/service_discoverer.py
@@ -75,7 +75,12 @@ class service_discoverer:
         invoker_general_folder = os.path.abspath(
             os.getenv('invoker_folder', invoker_config.get('invoker_folder', '')).strip()
         )
-
+        supported_features = os.getenv('INVOKER_FOLDER', invoker_config.get('supported_features', '')).strip()
+        check_authentication = invoker_config.get('check_authentication', {})
+        self.check_authentication = {
+            "ip": os.getenv('INVOKER_CHECK_AUTHENTICATION_IP', check_authentication.get('ip', '')).strip(),
+            "port":  os.getenv('INVOKER_CHECK_AUTHENTICATION_PORT', check_authentication.get('port', '')).strip()
+        } 
         # Retrieve CAPIF invoker username
         capif_invoker_username = os.getenv('CAPIF_USERNAME', config.get('capif_username', '')).strip()
 
@@ -102,6 +107,7 @@ class service_discoverer:
         self.capif_host = capif_host
         self.capif_https_port = capif_https_port
         self.token = ""
+        self.supported_features = supported_features
 
         # Create invoker folder dynamically based on username and folder path
         self.invoker_folder = os.path.join(invoker_general_folder, capif_invoker_username)
@@ -501,3 +507,38 @@ class service_discoverer:
             self.logger.error(
                 "Error while saving API provider details: %s", str(e))
             raise
+
+    def check_authentication(self):
+        self.logger.info("Checking authentication")
+        try:
+            invoker_details = self.__load_provider_api_details()
+            invoker_id = invoker_details["api_invoker_id"]
+            check_auth = self.check_authentication
+            url = "http://"+f"{check_auth['ip']}:{check_auth['port']}/" + "aef-security/v1/check-authentication"
+            
+            payload = {
+                "apiInvokerId": f"{invoker_id}",
+                "supportedFeatures": f"{self.supported_features}"
+            }
+            print(self.supported_features)
+            
+            headers = {
+                "Authorization": "Bearer {}".format(self.token),
+                "Content-Type": "application/json",
+            }
+            
+            response = requests.request(
+                "POST",
+                url,
+                headers=headers,
+                json=payload 
+            )
+            
+            print(response.text)
+            response.raise_for_status()
+            self.logger.info("Authentication of supported_features checked")
+            
+        except Exception as e:
+            self.logger.error(
+                f"Error during checking Invoker supported_features : {e} - Response: {response.text}")
+            raise
diff --git a/test/capif_sdk_config_sample_test.json b/test/capif_sdk_config_sample_test.json
index 04e9d920fa099f32d0e2a9f31cc8604dccc3fbf7..b398741466308665995b7ecc84673a969216ccb2 100644
--- a/test/capif_sdk_config_sample_test.json
+++ b/test/capif_sdk_config_sample_test.json
@@ -9,6 +9,11 @@
   "invoker":{
     "invoker_folder": "/Users/IDB0128/Documents/OpenCapif/test_invoker_certificate_folder",
     "capif_callback_url": "http://localhost:5000",
+    "supported_features":"fffffff",
+    "check_authorization":{
+      "ip":"",
+      "port":""
+    },
     "cert_generation":{
       "csr_common_name": "Echeva",
       "csr_organizational_unit": "discovery",
diff --git a/test/network_app_provider_api_spec.json b/test/network_app_provider_api_spec.json
index e76ddb4a6f68eef965241312c977127301a7e1e7..9672934e439809185e2165e97e9bb1dd8404a673 100755
--- a/test/network_app_provider_api_spec.json
+++ b/test/network_app_provider_api_spec.json
@@ -2,7 +2,7 @@
     "apiName": "Testtrece",
     "aefProfiles": [
         {
-            "aefId": "AEF04181f9adec08df32e63448695c563",
+            "aefId": "AEF0a7db19a1968aeb46da269e6e307c5",
             "versions": [
                 {
                     "apiVersion": "v1",
@@ -61,7 +61,7 @@
             ]
         },
         {
-            "aefId": "AEFfaeb54a0b8477cb93c8fa5dd89c680",
+            "aefId": "AEFa3c0228d148f38c7171bfde164804e",
             "versions": [
                 {
                     "apiVersion": "v1",
diff --git a/test/network_app_provider_api_spec_2.json b/test/network_app_provider_api_spec_2.json
index 1c792a449a08899d2b2cf0ac2d7643f9bb7e58c4..0d54904cfb24ee79280504484ebfc7529d4f9fd1 100755
--- a/test/network_app_provider_api_spec_2.json
+++ b/test/network_app_provider_api_spec_2.json
@@ -2,7 +2,7 @@
     "apiName": "Test-two",
     "aefProfiles": [
         {
-            "aefId": "AEFc4902981590674ef59c688e0d4950d",
+            "aefId": "AEF71fd7e0328beb8863ec9d4eeef5a08",
             "versions": [
                 {
                     "apiVersion": "v1",
@@ -61,7 +61,7 @@
             ]
         },
         {
-            "aefId": "AEFfad352761d963ddf7b0d4fd3765143",
+            "aefId": "AEF2d5b96486ce2f2c46a353a9438ad38",
             "versions": [
                 {
                     "apiVersion": "v1",
@@ -136,7 +136,7 @@
             ]
         },
         {
-            "aefId": "AEFcb9d5df2e59fe0b1ecc13560e64e8d",
+            "aefId": "AEFbe2013357187c44a772b832d9d194e",
             "versions": [
                 {
                     "apiVersion": "v1",
diff --git a/test/network_app_provider_api_spec_3.json b/test/network_app_provider_api_spec_3.json
index 23d3d47135e3effe9a0354cdfbdf4b3b3053d4d7..548b7408262c54241bb0fb81466339410e41d6bc 100755
--- a/test/network_app_provider_api_spec_3.json
+++ b/test/network_app_provider_api_spec_3.json
@@ -2,7 +2,7 @@
     "apiName": "Test-three",
     "aefProfiles": [
         {
-            "aefId": "AEF8857df8671cb6bda96daf3ca375867",
+            "aefId": "AEF67f10e46783f3e68356b4bb78c1cfc",
             "versions": [
                 {
                     "apiVersion": "v1",
@@ -61,7 +61,7 @@
             ]
         },
         {
-            "aefId": "AEF4e1b2b5e7af565ccdcf69805499341",
+            "aefId": "AEF528e9c4c1918f3c10205104e4336b8",
             "versions": [
                 {
                     "apiVersion": "v1",