diff --git a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md
index b404e47126..5f9a58b47f 100644
--- a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md
+++ b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-sse-streaming-api.md
@@ -110,31 +110,50 @@ Follow the instructions below to create the API using the basic flow.
### Step 2 - Configure the Topics
-Topics of an SSE API are always **Subscribe only**, where the flow of events will be from the server (backend) to the client. By default, an SSE API will have a topic with the name `/*`.
+Topics of a SSE API are always **Receive only**, where the flow of events will be from the server (backend) to the client.
1. Click **Topics** under **API Configurations** to navigate to the **Topics** page.
-2. Modify the topics as follows and click **Save** to update them.
+2. By default, the newly created SSE API will have a topic with the name `/*`.
- 1. Optionally, click delete, as shown below, to delete an existing topic.
+
-
+3. This default channel `/*` will have a default operation `receive_/*`.
- 2. Select **sub** under **Types**, enter the **Topic Name**, and click **+** as shown below, to add a new topic.
+
-
+4. Modify the topics as follows and click **Save** to update them.
- The newly added topic is displayed as follows.
+ 1. Optionally, click delete as shown below, to delete an existing topic or an operation.
-
+
+
+ 2. Select **receive** under **Types**, enter the **Address** of the channel to be created, enter the **Operation Name** to be added to the selected channel, and click **+** as shown below, to add a new topic.
+
+
+
+ The newly added topic is displayed as follows. Expand the topic to view the newly added operation.
+
+
+
+ 3. You can also add a new operation to an existing topic by selecting the respective channel address from the dropdown.
+
+
+
+ Expand the topic to view the newly added operation.
+
+
### Step 3 - View the AsyncAPI Definition
Click **AsyncAPI Definition** under **API Configurations**.
+!!! note
+ The API definition will be generated in AsyncAPI V3.0.0.
+
The AsyncAPI definition of the streaming API, which you just created, appears.
-
+
### Step 4 - Configure the Runtime Configurations
diff --git a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md
index 505a72262e..660f48b05c 100644
--- a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md
+++ b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition.md
@@ -29,15 +29,19 @@ Follow the instructions below to create a Streaming API using an AsyncAPI defini
* **AsyncAPI URL** - If you select this option, you need to provide a URL.
* **AsyncAPI File** - If you select this option, click **Browse File to Upload** and upload a file, which contains an AsyncAPI definition.
-3. Select the way in which you are going to import the AsynAPI definition, and click **Next**.
-
- For this example, let's select **AsyncAPI URL**, provide the following URL, and click **Next**.
+3. Select the way in which you are going to import the AsyncAPI definition, and click **Next**.
- ```sh
- https://raw.githubusercontent.com/asyncapi/spec/v2.0.0/examples/2.0.0/streetlights.yml
- ```
+
+
Note
+
AsyncAPI import now supports both AsyncAPI v2.x and AsyncAPI v3.0 definitions.
+
+
+
+ For this example, let's select **AsyncAPI File**, upload the following file, and click **Next**.
-
+ [Download AsyncAPI V3 file]({{base_path}}/assets/attachments/103332601/streetlights_v3-def.yml)
+
+
4. Edit the Streaming API information and click **Create**.
@@ -67,19 +71,25 @@ Follow the instructions below to create a Streaming API using an AsyncAPI defini
Click **Topics** to navigate to the topics page.
-[]({{base_path}}/assets/img/design/create-api/streaming-api/websocket-streaming-api-from-asyncapi-topics.png)
+[]({{base_path}}/assets/img/design/create-api/streaming-api/asyncv3-topics.png)
You will notice that the topics have been created automatically from the AsyncAPI definition specified in the provided URL.
+[]({{base_path}}/assets/img/design/create-api/streaming-api/asyncv3-operations.png)
+
+Expand each topic to view the operations which are automatically created for each channel, as defined in the specification.
+
## Step 3 - View the AsyncAPI Definition
Click **AsyncAPI Definition** under **API Configurations**.
The AsyncAPI definition of the streaming API, which you just created, appears.
-
+
+
+Now, you have successfully created a Streaming API from an Async API Definition.
-Now, you have successfully created a Streaming API from an Async API Definition.
+If you have created the streaming API using an AsyncAPI v2.x definition, see [AsyncAPI v2.x for APIM 4.6.0](https://apim.docs.wso2.com/en/latest/api-design-manage/design/create-api/create-streaming-api/create-a-streaming-api-from-an-asyncapi-definition/).
Next, publish the API, for more information, see [Publish an API]({{base_path}}/deploy-and-publish/publish-on-dev-portal/publish-an-api).
diff --git a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md
index 47cb623d4f..cc9b790a55 100644
--- a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md
+++ b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websocket-streaming-api.md
@@ -129,44 +129,66 @@ Follow the instructions below to create a WebSocket API using the basic flow:
### Step 2 - Configure the Topics
-Topics of a WebSocket API are always **Subscribe (sub) and Publish (pub)**, where the flow of events can be either from the server (backend) to the clients or from the client to the server. By default, the WebSocket API will have a topic with the name `/*`.
+Topics of a WebSocket API represents the channels which support actions **Receive and Send**, where the flow of events can be either from the server (backend) to the clients or from the client to the server.
1. Click **Topics** under **API Configurations** and navigate to the **Topics** page.
+
+2. By default, the newly created WebSocket API will have a topic with the name `/*`.
-2. Modify the topics as follows and click **Save** to update them.
+
- 1. Optionally, click delete as shown below, to delete an existing topic.
+3. This default channel `/*` will have two default operations `send_/*` and `receive_/*` and are listed inside the respective action of the channel.
-
+
- 2. Select the **Types**, enter the **Topic Name**, and click **+** as shown below, to add a new topic.
+4. Modify the topics as follows and click **Save** to update them.
-
+ 1. Optionally, click delete as shown below, to delete an existing topic or an operation.
-
+
- The newly added topic is displayed as follows.
+ 2. Select a **Type**, enter the **Address** of the channel to be created, enter the **Operation Name** to be added to the selected channel, and click **+** as shown below, to add a new topic.
-
+
+ | Channel Address | /notifications |
+ | Operation Name | sendNotifications |
+
- 3. Optionally, provide a URL Mapping to the topic.
+
+
+ The newly added topic is displayed as follows. Expand the topic to view the newly added operation.
+
+
+
+ 3. You can also add a new operation to an existing topic by selecting the respective channel address from the dropdown.
+
+
+
+ Expand the topic to view the newly added operation.
+
+
+
+ 4. Optionally, provide a URL Mapping to the topic.
The provided URL Mapping will be appended to the WebSocket endpoint URL that you provided when creating the API, and the traffic via this topic will be sent to the resulting URL.
- Expand **both** PUB and SUB under the created topic, provide the same URL Mapping for both and click **Save**.
+ Expand **both** SEND and RECEIVE under the created topic, provide the same URL Mapping for both and click **Save**.
| Description | Chat room notifications |
| URL Mapping | /notifications |
-
+
### Step 3 - View the AsyncAPI Definition
Click **AsyncAPI Definition** under **API Configurations**.
+!!! note
+ The API definition will be generated in AsyncAPI V3.0.0.
+
The AsyncAPI definition of the streaming API, which you just created, appears.
-
+
### Step 4 - Configure the Runtime Configurations
diff --git a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websub-streaming-api.md b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websub-streaming-api.md
index e8c599ce5d..4f1631c90f 100644
--- a/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websub-streaming-api.md
+++ b/en/docs/api-design-manage/design/create-api/create-streaming-api/create-a-websub-streaming-api.md
@@ -73,33 +73,52 @@ Follow the instructions below to create a WebHook API using the basic flow:
### Step 2 - Configure the Topics
-Topics of a WebSub/Webhook API are always **Subscribe only**. By default, a WebSub/Webhook API will have a topic with the name `_default`.
+Topics of a WebSub/Webhook API are always **Receive only**.
1. Click **Topics** under **API Configurations** to navigate to the **Topics** page.
-2. Modify the topics as follows and click **Save** to update them.
+2. By default, the newly created WebSub/Webhook API will have a topic with the name `_default`.
- 1. Optionally, click delete, as shown below, to delete an existing topic.
+
-
+3. This default channel `_default` will have a default operation `receive__edfault`.
- 2. Select **sub** under **Types**, enter the **Topic Name**, and click **+** as shown below, to add a new topic.
+
-
+4. Modify the topics as follows and click **Save** to update them.
- The newly added topic is displayed as follows.
+ 1. Optionally, click delete as shown below, to delete an existing topic or an operation.
-
+
+
+ 2. Select **receive** under **Types**, enter the **Address** of the channel to be created, enter the **Operation Name** to be added to the selected channel, and click **+** as shown below, to add a new topic.
+
+
+
+ The newly added topic is displayed as follows. Expand the topic to view the newly added operation.
+
+
Expand the created topic to view its **Callback URL**. You can use this when registering the topic with a WebHook provider (WebSub Provider).
+ 3. You can also add a new operation to an existing topic by selecting the respective channel address from the dropdown.
+
+
+
+ Expand the topic to view the newly added operation.
+
+
+
### Step 3 - View the AsyncAPI Definition
Click **AsyncAPI Definition** under **API Configurations**.
+!!! note
+ The API definition will be generated in AsyncAPI V3.0.0.
+
The AsyncAPI definition of the streaming API, which you just created, appears.
-
+
### Step 4 - Configure the Runtime Configurations
diff --git a/en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-a-soap-client.md b/en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-a-soap-client.md
index e9d9952e65..073dade2f9 100644
--- a/en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-a-soap-client.md
+++ b/en/docs/api-developer-portal/invoke-apis/invoke-apis-using-tools/invoke-an-api-using-a-soap-client.md
@@ -27,10 +27,15 @@ Let's invoke the `PhoneVerification` API using a SOAP client.
[]({{base_path}}/assets/attachments/103332601/soap-ui-new-project.png)
-8. Give your API's WSDL and click **OK**.
- In this case, the WSDL is as follows:
-
- []({{base_path}}/assets/attachments/103332601/soap-ui-project-wizard.png)
+8. Give your API's WSDL and click **OK**. You have two ways to provide the WSDL;
+
+ 1. Directly enter the WSDL URL which is
+
+ []({{base_path}}/assets/attachments/103332601/soap-ui-project-wizard.png)
+
+ 2. If your SOAP API is created from a single WSDL and in published state, you can go to the Developer Portal, navigate to your API, and copy the WSDL URL from the Overview page. Please note that this generated WSDL URL will get expired in 15 minutes if the API has restricted visibility.
+
+ []({{base_path}}/assets/attachments/103332601/wsdl-url.png)
9. The WSDL defines two operations. Let's work with `CheckPhoneNumber`. Double click on `Request 1`. Then, click the **Header** tab and add an authorization header to your request by clicking on the add icon.
diff --git a/en/docs/assets/attachments/103332601/asyncv3-def-view.png b/en/docs/assets/attachments/103332601/asyncv3-def-view.png
new file mode 100644
index 0000000000..92c1c83d03
Binary files /dev/null and b/en/docs/assets/attachments/103332601/asyncv3-def-view.png differ
diff --git a/en/docs/assets/attachments/103332601/asyncv3-file.png b/en/docs/assets/attachments/103332601/asyncv3-file.png
new file mode 100644
index 0000000000..9fcb5efbc3
Binary files /dev/null and b/en/docs/assets/attachments/103332601/asyncv3-file.png differ
diff --git a/en/docs/assets/attachments/103332601/asyncv3-topics-page.png b/en/docs/assets/attachments/103332601/asyncv3-topics-page.png
new file mode 100644
index 0000000000..557e42423a
Binary files /dev/null and b/en/docs/assets/attachments/103332601/asyncv3-topics-page.png differ
diff --git a/en/docs/assets/attachments/103332601/streetlights_v3-def.yml b/en/docs/assets/attachments/103332601/streetlights_v3-def.yml
new file mode 100644
index 0000000000..5ef6988733
--- /dev/null
+++ b/en/docs/assets/attachments/103332601/streetlights_v3-def.yml
@@ -0,0 +1,252 @@
+asyncapi: 3.0.0
+info:
+ title: Streetlights API
+ version: 1.0.0
+ description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n"
+ license:
+ name: Apache 2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0'
+defaultContentType: application/json
+servers:
+ production:
+ host: 'test.mosquitto.org:{port}'
+ protocol: mqtt
+ description: Test broker
+ variables:
+ port:
+ description: Secure connection (TLS) is available through port 8883.
+ default: '1883'
+ enum:
+ - '1883'
+ - '8883'
+ security:
+ - $ref: '#/components/securitySchemes/apiKey'
+ - type: oauth2
+ description: Flows to support OAuth 2.0
+ flows:
+ implicit:
+ authorizationUrl: 'https://authserver.example/auth'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ password:
+ tokenUrl: 'https://authserver.example/token'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ clientCredentials:
+ tokenUrl: 'https://authserver.example/token'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ authorizationCode:
+ authorizationUrl: 'https://authserver.example/auth'
+ tokenUrl: 'https://authserver.example/token'
+ refreshUrl: 'https://authserver.example/refresh'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ scopes:
+ - 'streetlights:on'
+ - 'streetlights:off'
+ - 'streetlights:dim'
+ - $ref: '#/components/securitySchemes/openIdConnectWellKnown'
+channels:
+ measured:
+ address: 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured'
+ messages:
+ receiveLightMeasurement.message:
+ $ref: '#/components/messages/lightMeasured'
+ description: The topic on which measured values may be produced and consumed.
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+
+ turnon:
+ address: 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on'
+ messages:
+ turnOn.message:
+ $ref: '#/components/messages/turnOnOff'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+
+ turnoff:
+ address: 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off'
+ messages:
+ turnOff.message:
+ $ref: '#/components/messages/turnOnOff'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+
+ dim:
+ address: 'smartylighting/streetlights/1/0/action/{streetlightId}/dim'
+ messages:
+ dimLight.message:
+ $ref: '#/components/messages/dimLight'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+
+operations:
+ receiveLightMeasurement:
+ action: receive
+ channel:
+ $ref: '#/channels/measured'
+ summary: >
+ Inform about environmental lighting conditions of a particular streetlight.
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/measured/messages/receiveLightMeasurement.message'
+
+ turnOn:
+ action: send
+ channel:
+ $ref: '#/channels/turnon'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/turnon/messages/turnOn.message'
+
+ turnOff:
+ action: send
+ channel:
+ $ref: '#/channels/turnoff'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/turnoff/messages/turnOff.message'
+
+ dimLight:
+ action: send
+ channel:
+ $ref: '#/channels/dim'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/dim/messages/dimLight.message'
+components:
+ messages:
+ lightMeasured:
+ name: lightMeasured
+ title: Light measured
+ summary: >-
+ Inform about environmental lighting conditions of a particular
+ streetlight.
+ contentType: application/json
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: '#/components/schemas/lightMeasuredPayload'
+ turnOnOff:
+ name: turnOnOff
+ title: Turn on/off
+ summary: Command a particular streetlight to turn the lights on or off.
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: '#/components/schemas/turnOnOffPayload'
+ dimLight:
+ name: dimLight
+ title: Dim light
+ summary: Command a particular streetlight to dim the lights.
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: '#/components/schemas/dimLightPayload'
+ schemas:
+ lightMeasuredPayload:
+ type: object
+ properties:
+ lumens:
+ type: integer
+ minimum: 0
+ description: Light intensity measured in lumens.
+ sentAt:
+ $ref: '#/components/schemas/sentAt'
+ turnOnOffPayload:
+ type: object
+ properties:
+ command:
+ type: string
+ enum:
+ - 'on'
+ - 'off'
+ description: Whether to turn on or off the light.
+ sentAt:
+ $ref: '#/components/schemas/sentAt'
+ dimLightPayload:
+ type: object
+ properties:
+ percentage:
+ type: integer
+ description: Percentage to which the light should be dimmed to.
+ minimum: 0
+ maximum: 100
+ sentAt:
+ $ref: '#/components/schemas/sentAt'
+ sentAt:
+ type: string
+ format: date-time
+ description: Date and time when the message was sent.
+ securitySchemes:
+ apiKey:
+ type: apiKey
+ in: user
+ description: Provide your API key as the user and leave the password empty.
+ supportedOauthFlows:
+ type: oauth2
+ description: Flows to support OAuth 2.0
+ flows:
+ implicit:
+ authorizationUrl: 'https://authserver.example/auth'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ password:
+ tokenUrl: 'https://authserver.example/token'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ clientCredentials:
+ tokenUrl: 'https://authserver.example/token'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ authorizationCode:
+ authorizationUrl: 'https://authserver.example/auth'
+ tokenUrl: 'https://authserver.example/token'
+ refreshUrl: 'https://authserver.example/refresh'
+ availableScopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ openIdConnectWellKnown:
+ type: openIdConnect
+ openIdConnectUrl: 'https://authserver.example/.well-known'
+ parameters:
+ streetlightId:
+ description: The ID of the streetlight.
+ messageTraits:
+ commonHeaders:
+ headers:
+ type: object
+ properties:
+ my-app-header:
+ type: integer
+ minimum: 0
+ maximum: 100
+ operationTraits:
+ kafka:
+ bindings:
+ kafka:
+ clientId: my-app-id
diff --git a/en/docs/assets/attachments/103332601/wsdl-url.png b/en/docs/assets/attachments/103332601/wsdl-url.png
new file mode 100644
index 0000000000..f95d6e43a7
Binary files /dev/null and b/en/docs/assets/attachments/103332601/wsdl-url.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/asyncv3-operations.png b/en/docs/assets/img/design/create-api/streaming-api/asyncv3-operations.png
new file mode 100644
index 0000000000..8dcd165258
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/asyncv3-operations.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/asyncv3-topics.png b/en/docs/assets/img/design/create-api/streaming-api/asyncv3-topics.png
new file mode 100644
index 0000000000..a105c2aa9b
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/asyncv3-topics.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-add-operation.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-add-operation.png
new file mode 100644
index 0000000000..1aca9a7cf9
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-add-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-asyncapi.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-asyncapi.png
new file mode 100644
index 0000000000..02e2770442
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-asyncapi.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-create-new-topic.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-create-new-topic.png
new file mode 100644
index 0000000000..996d1a39e9
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-create-new-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-delete-default-topic.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-delete-default-topic.png
new file mode 100644
index 0000000000..5709366013
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-delete-default-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-new-operation.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-new-operation.png
new file mode 100644
index 0000000000..e9ffedf29a
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-new-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-newly-added-topic.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-newly-added-topic.png
new file mode 100644
index 0000000000..180079b291
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-newly-added-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-operation.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-operation.png
new file mode 100644
index 0000000000..4d6e4f0f0e
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-topics.png b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-topics.png
new file mode 100644
index 0000000000..aebac2c460
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/sse-api-v3-topics.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-channel.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-channel.png
new file mode 100644
index 0000000000..093892ce52
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-channel.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-operation.png
new file mode 100644
index 0000000000..5868a76fc3
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-add-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-asyncapi.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-asyncapi.png
new file mode 100644
index 0000000000..0c1369c9a5
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-asyncapi.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-delete-topic-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-delete-topic-operation.png
new file mode 100644
index 0000000000..e7de136b89
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-delete-topic-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-channel.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-channel.png
new file mode 100644
index 0000000000..29e85127f8
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-channel.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-operation.png
new file mode 100644
index 0000000000..4bbf082dc9
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-new-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-operation.png
new file mode 100644
index 0000000000..d26c006fec
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-topics.png b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-topics.png
new file mode 100644
index 0000000000..18ec8b41dd
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websocket-streaming-api-v3-topics.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-operation.png
new file mode 100644
index 0000000000..b9779774d5
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-topic.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-topic.png
new file mode 100644
index 0000000000..1043ab986a
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-add-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-asyncapi.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-asyncapi.png
new file mode 100644
index 0000000000..1069904d67
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-asyncapi.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-delete-topic.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-delete-topic.png
new file mode 100644
index 0000000000..9629e6ca75
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-delete-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-new-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-new-operation.png
new file mode 100644
index 0000000000..290c868af2
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-new-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-newly-added-topic.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-newly-added-topic.png
new file mode 100644
index 0000000000..7a7ee3ab7a
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-newly-added-topic.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-operation.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-operation.png
new file mode 100644
index 0000000000..2381838f20
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-operation.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-topics.png b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-topics.png
new file mode 100644
index 0000000000..06ea03b04e
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/websub-api-v3-topics.png differ
diff --git a/en/docs/assets/img/design/create-api/streaming-api/wesocket-streaming-api-v3-add-topic-url-mapping.png b/en/docs/assets/img/design/create-api/streaming-api/wesocket-streaming-api-v3-add-topic-url-mapping.png
new file mode 100644
index 0000000000..8c73af1afd
Binary files /dev/null and b/en/docs/assets/img/design/create-api/streaming-api/wesocket-streaming-api-v3-add-topic-url-mapping.png differ
diff --git a/en/docs/assets/img/tutorials/streaming-api/enable-secret-generation-v3.png b/en/docs/assets/img/tutorials/streaming-api/enable-secret-generation-v3.png
new file mode 100644
index 0000000000..a82a3fc09d
Binary files /dev/null and b/en/docs/assets/img/tutorials/streaming-api/enable-secret-generation-v3.png differ
diff --git a/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-add-topics.png b/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-add-topics.png
new file mode 100644
index 0000000000..cfa8a09d84
Binary files /dev/null and b/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-add-topics.png differ
diff --git a/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-topic-url-mapping.png b/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-topic-url-mapping.png
new file mode 100644
index 0000000000..038636f699
Binary files /dev/null and b/en/docs/assets/img/tutorials/streaming-api/websocket-api-v3-topic-url-mapping.png differ
diff --git a/en/docs/install-and-setup/setup/deployment-best-practices/production-deployment-guidelines.md b/en/docs/install-and-setup/setup/deployment-best-practices/production-deployment-guidelines.md
index 9a9f9f3816..830d06e276 100644
--- a/en/docs/install-and-setup/setup/deployment-best-practices/production-deployment-guidelines.md
+++ b/en/docs/install-and-setup/setup/deployment-best-practices/production-deployment-guidelines.md
@@ -136,5 +136,13 @@ Given below is a checklist that will guide you to set up your production environ
Note: In distributed or high-availability deployments, all API-M instances must use the same symmetric encryption key. Ensure the identical key value is added to the deployment.toml of every node in the cluster to maintain the ability to decrypt registry resources across instances.
+
+ | WSDL URL generation in Developer Portal |
+
+ Generate a random string and add it to the deployment.toml file. See Configure WSDL URL generation secret
+ for instructions.
+ Note: In distributed or high-availability deployments, all API-M instances must use the same secret key. Ensure the identical key value is added to the deployment.toml of every node in the cluster to maintain the ability to validate generated WSDL URLs across instances.
+ |
+
diff --git a/en/docs/install-and-setup/setup/deployment-best-practices/security-guidelines-for-production-deployment.md b/en/docs/install-and-setup/setup/deployment-best-practices/security-guidelines-for-production-deployment.md
index a4d25b9775..172f2a380a 100644
--- a/en/docs/install-and-setup/setup/deployment-best-practices/security-guidelines-for-production-deployment.md
+++ b/en/docs/install-and-setup/setup/deployment-best-practices/security-guidelines-for-production-deployment.md
@@ -354,6 +354,29 @@ You should generate a symmetric encryption key for internal encryption and add i
+
+Configure WSDL URL generation secret |
+
+
+If you are using the WSDL URL of a SOAP API generated using the Developer Portal,
+configure a secret to secure the generated URLs. Add the following to
+the deployment.toml file:
+
+
+
+[apim.devportal]
+url_generation_secret = "your_secret"
+
+
+
+A randomly generated string of at least 32 characters is recommended. You can generate a strong secret using the following command:
+
+openssl rand -base64 32
+
+It is highly recommended to encrypt this secret using the secure vault. See Encrypting Passwords in Configuration Files for instructions.
+
+ |
+
diff --git a/en/docs/tutorials/streaming-api/create-and-publish-websocket-api.md b/en/docs/tutorials/streaming-api/create-and-publish-websocket-api.md
index 92a089ae55..980fe63472 100644
--- a/en/docs/tutorials/streaming-api/create-and-publish-websocket-api.md
+++ b/en/docs/tutorials/streaming-api/create-and-publish-websocket-api.md
@@ -84,14 +84,17 @@ This will demonstrate a simple command line based chat room which has two channe
2. Delete the existing default topic, which has the name `/*`.
- 3. Add the following topics one by one.
-
- Select **pub** and **sub** as the **Types**, enter the **Topic Name**, and click **+** to add each topic.
+ 3. Add the following operations one by one.
- - /notifications
- - /rooms/{roomID}
+
+ | Type | Channel Address | Operation |
+ | send | /notifications | sendNotifications |
+ | receive | /notifications | receiveNotifications |
+ | send | /rooms/{roomID} | sendMessages |
+ | receive | /rooms/{roomID} | receiveMessages |
+
-
+
4. Expand each topic, provide URL Mappings as follows, and click **Save**.
@@ -103,7 +106,7 @@ This will demonstrate a simple command line based chat room which has two channe
URL Mapping provided for a topic will be appended to the WebSocket endpoint URL, which was provided when creating the API, and the traffic via the topic will be sent to & received from the resulting URL.
- []({{base_path}}/assets/img/tutorials/streaming-api/websocket-api-topic-url-mapping.png)
+ []({{base_path}}/assets/img/tutorials/streaming-api/websocket-api-v3-topic-url-mapping.png)
6. Attach business plans to your WebSocket API.
diff --git a/en/docs/tutorials/streaming-api/create-and-publish-websub-api.md b/en/docs/tutorials/streaming-api/create-and-publish-websub-api.md
index 48fce479d8..6fec2937f1 100644
--- a/en/docs/tutorials/streaming-api/create-and-publish-websub-api.md
+++ b/en/docs/tutorials/streaming-api/create-and-publish-websub-api.md
@@ -61,13 +61,13 @@ The tutorial demonstrates a simple WebSub/WebHook API that monitors your GitHub
2. Click **Add Topic**, add a topic with the name **/issues**, click **Add**, and finally click **Save**.
- []({{base_path}}/assets/img/tutorials/streaming-api/websub-api-add-topic.png)
+ []({{base_path}}/assets/img/design/create-api/streaming-api/websub-api-v3-add-topic.png)
6. Generate a secret.
1. Expand the **Subscription Configuration** section in the **Topics** page.
- []({{base_path}}/assets/img/tutorials/streaming-api/enable-secret-generation.png)
+ []({{base_path}}/assets/img/tutorials/streaming-api/enable-secret-generation-v3.png)
2. Click **Enable** to enable secret generation.