# OpenCAPIF SDK configuration

Before configuration it's needed to have completed the [requirements](./sdk-prerequirements.md) section and the [installation](./sdk-installation.md) section.

- [Configuration via Config.json](#1-configuration-via-configjson)
- [Configuration via Register.json](#configuration-via-registerjson)

# **1. Configuration via Config.json**

This file could also be fulfilled by [environment variables](../samples/enviroment-variables-sample.txt)

- invoker_folder: The path (relative or absolute) of the folder you want to store your invoker information

- provider_folder:The path (relative or absolute) of the folder you want to store your provider information

- capif_host:The domain name of your capif host

- register_host:The domain name of your register host

- capif_https_port: The port of your capif host 

- capif_register_port:The port of your register host

- capif_callback_url:The Url you want to receive CAPIF notifications(This functionality is not currently available) 

- csr fields: Seven information fields for generating your invoker certificate(csr_country_name must be only two letters) 

- capif_username: CAPIF username 

- capif_password: CAPIF password 

- apfs: Number of APF's you want to onboard as a provider Example:5 

- aefs: Number of AEF's you want to onboard as a provider Example:2

- debug_mode: Boolean | If you want to receive logs from SDK Example:True/False

- [discover_filter](#2configuration-via-discover_filterjson)

- [publish_req](#3-configuration-via-publishjson)

- api_description_path : The path to the [ServiceAPIDescription](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Publish_Service_API.yaml) json 

Mandatory fields no matter the target role to be onboarded, either invoker or provider:

- capif_host
- register_host
- capif_https_port
- capif_register_port
- capif_username
- capif_password
- debug_mode

If you want to use SDK as an **Invoker** is mandatory to fill out these fields

- invoker_folder
- capif_callback_url
- csr_information(csr_common_name,csr_country_name...)

OPTIONAL:
- [discover_filter](#2configuration-via-discover_filterjson)

If you want to use SDK as a **Provider** is mandatory to fill out these fields

- provider_folder
- APFs
- AEFs
     
Mandatory field for using [CAPIF Publish API specification](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Publish_Service_API.yaml) :

- [publish_req](#3-configuration-via-publishjson)

- api_description_path 


## **Configuration of discover_filter**
This file follows the parameters schema from the GET petition of  [Discover Services API](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Discover_Service_API.yaml) 

To use this feature it has to be completed `discover_filter` with the parameters you want to be filtered in order to run the Invoker Service Discovery Functionality.

To run the Invoker Service Discovery Functionality it has to be onboarded as an Invoker before the CAPIF user.


## **Configuration of publish_req**

This configuration fields is only mandatory if we want to use the [CAPIF_Publish_Service_API](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Publish_Service_API.yaml) 

   - service_api_id: The Api id we want to use Example "02eff6e1b3a8f7c8044a92ee8a30bd"
   - publisher_apf_id: APF id we chose to use Example : "APFa165364a379035d14311deadc04332"
   - publisher_aefs_ids: Array of strings filled out of AEFs ids we want to use Example:        ["AEFfa38f0e855bffb420e4994ecbc8fb9","AEFe8bfa711f4f0c95ba0b382508e6382"]

For using the Publish Api function or the Update function the api_description_path **must** have been  modified with the path to the Publish API that is wanted to share following the standard schema for [ServiceAPIDescription](https://github.com/jdegre/5GC_APIs/blob/Rel-18/TS29222_CAPIF_Publish_Service_API.yaml)

**AefIds fields won't need to fill out the  from aefProfiles** array because you would already be configuring this fields by completing publisherAEFsids parameter

**If the publisherAEFsids parameter don't match with the aefProfiles in your [Api description](../api-samples/provider_api_description_sample.json) you will receive an error**





# **Configuration via Register.json**

In order to use this SDK in a Local environment and creating and removing users, its mandatory to fulfil this fields.

This Feature is not included in the SDK.

[Here](https://labs.etsi.org/rep/ocf/capif/-/tree/REL1?ref_type=heads) is the link to the CAPIF official repository if it's wanted to create the Local environment

- register_host:The domain name of your register host
- capif_register_port: The port of your register host
- capif_register_username: CAPIF admin username
- capif_register_password: CAPIF admin password
- capif_username: CAPIF user username
- capif_password: CAPIF user password
- config_path: Absolute path to the Config_files folder
- uuid: UUID for Deregister the user


This file is only used for the Functionalities of :
- Register and login 
- Deregister and login

Each field is obligatory to complete except UUID, which is only obligatory in case of Deregister the user.

Although this field is not obligatory we recommend to store the UUID parameter received by the Register and login functionality in this field.    
