# Test Plan for API Status Feature At this documentation you will have all information and related files and examples of test plan for this feature. --- ## Test Case 1: Publish without apiStatus feature receive eventDetails with serviceAPIDescription **Test ID**: ***api_status-1*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing apiIds and serviceAPIDescription at eventDetails, and the same when api is unpublished. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***Enhanced_event_report*** and ***apiStatusMonitoring*** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag inactive (binary 0 0000 0000 -> string **000**) 2. This API not includes "API Status" information at **service API Description**. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **000** * 2 profiles, one with each aef. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if **NOT** contains the **apiStatus** keys 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 2: Publish without apiStatus feature receive eventDetails without serviceAPIDescription **Test ID**: ***api_status-2*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with only ***Enhanced_event_report*** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing apiIds at eventDetails, and the same when api is unpublished. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***Enhanced_event_report*** **active** at supported features (binary 0100-> string **4**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag inactive (binary 0 0000 0000 -> string **000**) 2. This API not includes "API Status" information at **service API Description**. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 0100 -> string **4** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **000** * 2 profiles, one with each aef. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if **NOT** contains the **apiStatus** keys 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 3: Publish without apiStatus feature receive eventDetails without eventDetails (apiMonitoringStatus active) **Test ID**: ***api_status-3*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with only ***apiStatusMonitoring*** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, not containing eventDetails, and the same when api is unpublished. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** **active** at supported features (binary 1000-> string **8**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag inactive (binary 0 0000 0000 -> string **000**) 2. This API not includes "API Status" information at **service API Description**. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1000 -> string **8** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **000** * 2 profiles, one with each aef. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if **NOT** contains the **apiStatus** keys 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, without **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 4: Publish without apiStatus feature receive eventDetails without eventDetails **Test ID**: ***api_status-4*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** not active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, not containing eventDetails, and the same when api is unpublished. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** **active** at supported features (binary 0000-> string **0**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag inactive (binary 0 0000 0000 -> string **000**) 2. This API not includes "API Status" information at **service API Description**. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 0000 -> string **0** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **000** * 2 profiles, one with each aef. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if **NOT** contains the **apiStatus** keys 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, without **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 5: Publish with apiStatus present but apiStatusMonitoring inactive receive bad Request **Test ID**: ***api_status-5*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** not active, receive Bad Request when api is published by a provider. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** and ***Enhanced_event_report*** **inactive** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag inactive (binary 0 0000 0000 -> string **000**) 2. This API includes "API Status" information at **service API Description** with aefId1 inside array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **0** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **400 Bad Request** 2. Error Response Body must accomplish with **ProblemDetails** data structure with: * status 400 * title with message "Bad Request" * detail with message "Set apiStatus with apiStatusMonitoring feature inactive at supportedFeatures if not allowed". * cause with message "apiStatus can't be set if apiStatusMonitoring is inactive". 4. Response to Discover Request By Invoker: 1. **404 Not Found** response. 2. Error Response Body must accomplish with **ProblemDetails** data structure with: * status 404 * title with message "Not Found" * detail with message "API Invoker {api_invoker_id} has no API Published that accomplish filter conditions". * cause with message "No API Published accomplish filter conditions". 5. Mock Server received messages must accomplish: 1. **No Events have been received**. --- ## Test Case 6: Publish with apiStatus feature active receive eventDetails with serviceAPIDescription **Test ID**: ***api_status-6*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** active, receive event notification including apiIds and serviceAPIDescriptions. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with aefId1 inside array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 7: Publish with apiStatus active feature receive eventDetails without serviceAPIDescription **Test ID**: ***api_status-7*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** inactive and ***Enhanced_event_report*** active, receive event notification including only apiIds. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***Enhanced_event_report*** **active** and ***apiStatusMonitoring*** **inactive** at supported features (binary 0100-> string **4**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with aefId1 inside array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 0100 -> string **4** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with only **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 8: Publish with apiStatus active feature receive eventDetails without eventDetails with apiStatus (apiMonitoringStatus active) **Test ID**: ***api_status-8*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** active and ***Enhanced_event_report*** inactive, receive event notification without eventDetails. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***Enhanced_event_report*** **inactive** and ***apiStatusMonitoring*** **active** at supported features (binary 1000-> string **8**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with aefId1 inside array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1000 -> string **8** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, without **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 9: Publish with apiStatus active feature receive eventDetails without eventDetails **Test ID**: ***api_status-9*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** inactive, receive event notification without eventDetails. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***Enhanced_event_report*** and ***apiStatusMonitoring*** **inactive** at supported features (binary 0000-> string **0**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with aefId1 inside array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 0000 -> string **0** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, without **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. The other one must be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 10: Publish with apiStatus feature active no aefId active receive eventDetails with serviceAPIDescription with apiStatus empty array **Test ID**: ***api_status-10*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** active, receive event notification **SERVICE_API_UNAVAILABLE** including apiIds and serviceAPIDescriptions when API is published containing ***apiStatus*** with empty array. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with empty aefIds array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with empty aefIds array. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **One Event has been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. Only one **SERVICE_API_UNAVAILABLE** event. --- ## Test Case 11: Publish with apiStatus not present but apiStatusMonitoring feature active receive eventDetails with serviceAPIDescription without apiStatus **Test ID**: ***api_status-11*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**, with ***apiStatusMonitoring*** and ***Enhanced_event_report*** active, receive event notification **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE** including apiIds and serviceAPIDescriptions when API is published wihtout ***apiStatus***. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE** and **SERVICE_API_UNAVAILABLE**. ***apiStatusMonitoring*** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API not includes "API Status" information at **service API Description**. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus not present. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** key. 5. Response to Remove published Service API at CCF: 1. **204 No Content** 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. First **SERVICE_API_AVAILABLE** event. 2. Other with **SERVICE_API_UNAVAILABLE** event. --- ## Test Case 12: Update published API without apiStatus and apiStatusMonitoring inactive **Test ID**: ***api_status-12*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing eventDetails, and SERVICE_API_UPDATE after update apiStatus to not present. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Update Published API: 1. apiStatus Not present 2. aipStatusMonitoring feature not active (binary 0 0000 0000 -> string **0**) **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **0** * 2 profiles, one with each aef. * apiStatus not present. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Update published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetail** with apiIds and serviceAPIDescription. 2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetail** containing serviceAPIDescription updated. --- ## Test Case 13: Update published API with apiStatus empty and apiStatusMonitoring inactive **Test ID**: ***api_status-13*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing eventDetails, and SERVICE_API_UPDATE after update apiStatus to empty aefIds array with **ApiStatusMonitoring** inactive. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Update Published API: 1. apiStatus present with empty aefIds array. 2. apiStatusMonitoring feature not active (binary 0 0000 0000 -> string **0**) **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **0** * 2 profiles, one with each aef. * apiStatus present with empty aefIds array. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Update request must accomplish: 1. **400 Bad Request** 2. Error Response Body must accomplish with **ProblemDetails** data structure with: * status 400 * title with message "Bad Request" * detail with message "Set apiStatus with apiStatusMonitoring feature inactive at supportedFeatures if not allowed". * cause with message "apiStatus can't be set if apiStatusMonitoring is inactive". 6. Mock Server received messages must accomplish: 1. **One Event have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription. --- ## Test Case 14: Update published API with apiStatus empty and apiStatusMonitoring active **Test ID**: ***api_status-14*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing eventDetails, SERVICE_API_UPDATE and SERVICE_API_UNAVAILABLE after update apiStatus to empty aefIds array with **ApiStatusMonitoring** active. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Update Published API: 1. apiStatus present with empty aefIds array. 2. apiStatusMonitoring feature active (binary 0 0010 0000 -> string **20**) **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **20** * 2 profiles, one with each aef. * apiStatus present with empty aefIds array. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Update published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Event have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. One should be **SERVICE_API_UPDATE**. 3. One should be **SERVICE_API_UNAVAILABLE**. --- ## Test Case 15: Update published API with apiStatus only aef2 and apiStatusMonitoring active **Test ID**: ***api_status-15*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider, containing eventDetails and SERVICE_API_UPDATE after update apiStatus to aefId2 array with **ApiStatusMonitoring** active. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Update Published API: 1. apiStatus present with empty aefIds array. 2. apiStatusMonitoring feature active (binary 0 0010 0000 -> string **20**) **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **20** * 2 profiles, one with each aef. * apiStatus present with aefId2 in aefIds array. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Update published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Event have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE**. 2. One should be **SERVICE_API_UPDATE**. --- ## Test Case 16: Published API without aefs available updated to one aef available **Test ID**: ***api_status-16*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_UNAVAILABLE in mockserver when api is published with apiStatus empty by a provider containing eventDetails, SERVICE_API_UPDATE and SERVICE_API_AVAILABLE after update apiStatus to aefId2 array with **ApiStatusMonitoring** active, and SERVICE_API_UNAVAILABLE when API is unpublished. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with empty aefIds array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Update Published API: 1. apiStatus present with aefId2 in aefIds array. 2. apiStatusMonitoring feature active (binary 0 0010 0000 -> string **20**) 7. Provider remove published API. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with empty aefIds array. * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PUT** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **20** * 2 profiles, one with each aef. * apiStatus present with aefId2 in aefIds array. 7. Remove published Service API: * Send **DELETE** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Update published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Event have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** and **serviceAPIDescription** in **eventDetail** parameter. 1. One should be **SERVICE_API_UNAVAILABLE** aefIds array inside apiStatus empty. 2. One should be **SERVICE_API_UPDATE** aefIds array inside apiStatus contains apfId2. 3. One should be **SERVICE_API_AVAILABLE** aefIds array inside apiStatus contains apfId2. 4. One should be **SERVICE_API_UNAVAILABLE** aefIds array inside apiStatus contains apfId2. --- ## Test Case 17: Patch published (apiStatusMonitoring active) API with apiStatus only aefId2 **Test ID**: ***api_status-17*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider (with apiStatusMonitoring active), containing eventDetails, and SERVICE_API_UPDATE after patch with apfId2 in apiStatus array. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Patch Published API: 1. apiStatus present with aefId2 in array. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description patch] and realted with aefId1 and aefId2. * apiStatus present with aefId2. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Patch published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription. 2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched. --- ## Test Case 18: Patch published (apiStatusMonitoring active) API with apiStatus aef1 and aef2 **Test ID**: ***api_status-18*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider (with apiStatusMonitoring active), containing eventDetails, and SERVICE_API_UPDATE after patch with apfId1 and apfId2 in apiStatus array. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Patch Published API: 1. apiStatus present with aefId1 and aefId2 in array. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description patch] and realted with aefId1 and aefId2. * apiStatus present with aefId1 and aefId2. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Patch published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription. 2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched. --- ## Test Case 19: Patch published (apiStatusMonitoring inactive) API with apiStatus aefId1 and aefId2 **Test ID**: ***api_status-19*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_AVAILABLE in mockserver when api is published by a provider (with apiStatusMonitoring inactive), containing eventDetails, and **NO SERVICE_API_UPDATE** after patch with apfId1 and apfId2 in apiStatus array, because **apiStatusMonitoring** in publish is inactive. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0000 0000 -> string **000**) 2. This API includes "API Status" information at **service API Description** with only aefId1. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Patch Published API: 1. apiStatus present with aefId1 and aefId2 in array. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **000** * 2 profiles, one with each aef. * apiStatus with aefId1 inside array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **400 Bad Request** 2. Error Response Body must accomplish with **ProblemDetails** data structure with: * status 400 * title with message "Bad Request" * detail with message "Set apiStatus with apiStatusMonitoring feature inactive at supportedFeatures if not allowed". * cause with message "apiStatus can't be set if apiStatusMonitoring is inactive". 4. Response to Discover Request By Invoker: 1. **404 Not Found** response. 2. Error Response Body must accomplish with **ProblemDetails** data structure with: * status 404 * title with message "Not Found" * detail with message "API Invoker {api_invoker_id} has no API Published that accomplish filter conditions". * cause with message "No API Published accomplish filter conditions". 5. Mock Server received messages must accomplish: 1. **No Events have been received**. --- ## Test Case 20: Patch published without aefs available API with apiStatus only aef2 **Test ID**: ***api_status-20*** **Description**: This test case will check if an invoker subscribed to events **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE** with ***apiStatusMonitoring*** and **Enhanced_event_report** active, receive SERVICE_API_UNAVAILABLE in mockserver when api is published by a provider (with **apiStatusMonitoring** active), containing eventDetails, and SERVICE_API_UPDATE and SERVICE_API_AVAILABLE after patch with apfId1 and apfId2 in apiStatus array, becasue change from unavailable to available and also serviceAPIDescription is updated. **Pre-Conditions**: * CAPIF subscriber is pre-authorised (has valid InvokerId or apfId from CAPIF Authority) * CAPIF provider is correctly registered with 2 aefs. * **Mock Server is up and running to receive requests.** * **Mock Server is clean.** **Execution Steps**: 1. Register Invoker and Onboard Invoker at CCF. 2. Register Provider at CCF with 2 aefs. 3. Subscribe to **SERVICE_API_AVAILABLE**, **SERVICE_API_UNAVAILABLE** and **SERVICE_API_UPDATE**. **apiStatusMonitoring** and **Enhanced_event_report** **active** at supported features (binary 1100-> string **C**) 4. Publish Service API at CCF: 1. Supported Features with apiStatusMonitoring flag active (binary 0 0010 0000 -> string **020**) 2. This API includes "API Status" information at **service API Description** with empty array. 5. Discover Service APIs by Invoker 1. includes filter by query parameter **aef-id** 6. Patch Published API: 1. apiStatus present with aefId1 and aefId2 in array. **Information of Test**: 1. Perform [Invoker Onboarding] 2. Perform [Provider Registration] with 2 aefs 3. Event Subscription to SERVICE_API_AVAILABLE and SERVICE_API_UNAVAILABLE of provider previously registered: 1. Send **POST** to **https://{CAPIF_HOSTNAME}/capif-events/v1/{subscriberId}/subscriptions** 2. body [event subscription request body] with: 1. events: **['SERVICE_API_AVAILABLE','SERVICE_API_UNAVAILABLE','SERVICE_API_UPDATE']** 2. supportedFeatures: binary 1100 -> string **C** 3. Use **Invoker Certificate** 4. Publish Service API at CCF: * Send **POST** to ccf_publish_url **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis** * body [service api description] with **service_1** and **service_2** apiNames and realted with aefId1 and aefId2. * supportedFeatures **020** * 2 profiles, one with each aef. * apiStatus empty array * Use **APF Certificate** 5. Request Discover Published APIs: * Send **GET** to **https://{CAPIF_HOSTNAME}/service-apis/v1/allServiceAPIs?api-invoker-id={apiInvokerId}&aef-id=${aefId}** * Param api-invoker-id is mandatory * Use **Invoker Certificate** 6. Update published Service API: * Send **PATCH** to resource URL **https://{CAPIF_HOSTNAME}/published-apis/v1/{apfId}/service-apis/{SERVICE_API_ID}** * Use **APF Certificate** * body [service api description patch] and realted with aefId1 and aefId2. * apiStatus present with aefId1 and aefId2. **Expected Result**: 1. Response to Onboard request must accomplish: 1. **201 Created** 2. Response Body must follow **APIInvokerEnrolmentDetails** data structure with: * apiInvokerId * onboardingInformation->apiInvokerCertificate must contain the public key signed. 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/api-invoker-management/{apiVersion}/onboardedInvokers/{onboardingId}** 2. Response to Event Subscription must accomplish: 1. **201 Created** 2. The URI of the created resource shall be returned in the "Location" HTTP header, following this structure: **{apiRoot}/capif-events/{apiVersion}/{subscriberId}/subscriptions/{subscriptionId}** 3. Response Body must follow **EventSubscription** data structure. 3. Response to Publish request must accomplish: 1. **201 Created** 2. Response Body must follow **ServiceAPIDescription** data structure with: * apiId * 2 profiles with: * resourceName resource_1 and aefId1 * resourceName resource_2 and aefId2 3. Response Header **Location** must be received with URI to new resource created, following this structure: **{apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId}** 4. Response to Discover Request By Invoker: 1. **200 OK** response. 2. Response body must follow **DiscoveredAPIs** data structure: * Check if DiscoveredAPIs contains the API Published previously * Check if contains the **apiStatus** with aefId1 5. Response to Patch published Service API at CCF: 1. **200 OK** 2. Store response with updated serviceAPIDescription. 6. Mock Server received messages must accomplish: 1. **Two Events have been received**. 2. Validate received events follow **EventNotification** data structure, with **apiIds** in **eventDetail** parameter. 1. One should be **SERVICE_API_UNAVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription. 2. The other one must be **SERVICE_API_UPDATE** apiId published API with **eventDetails** containing serviceAPIDescription patched. 3. Last one should be **SERVICE_API_AVAILABLE** apiId of published API with **eventDetails** with apiIds and serviceAPIDescription. [service api description]: ../api_publish_service/service_api_description_post_example.json "Service API Description Request" [service api description patch]: ../api_publish_service/service_api_description_patch_example.json "Service API Description Patch Request" [publisher register body]: ../api_publish_service/publisher_register_body.json "Publish register Body" [invoker onboarding body]: ../api_invoker_management/invoker_details_post_example.json "API Invoker Request" [provider request body]: ../api_provider_management/provider_details_post_example.json "API Provider Enrolment Request" [provider request patch body]: ../api_provider_management/provider_details_enrolment_details_patch_example.json "API Provider Enrolment Patch Request" [invoker onboarding]: ../common_operations/README.md#onboard-an-invoker "Invoker Onboarding" [provider registration]: ../common_operations/README.md#register-a-provider "Provider Registration" [event subscription request body]: ../api_events_service/event_subscription.json "Event Subscription Request"