diff --git a/src/plugins/editor-content-fixtures/index.js b/src/plugins/editor-content-fixtures/index.js
index 7c9086f3d09..2f93c8b4849 100644
--- a/src/plugins/editor-content-fixtures/index.js
+++ b/src/plugins/editor-content-fixtures/index.js
@@ -3,6 +3,7 @@ import selectOpenAPI303PetstoreYAML from './selectors/selectOpenAPI303PetstoreYA
import selectOpenAPI20PetstoreYAML from './selectors/selectOpenAPI20PetstoreYAML.js';
import selectAsyncAPI260PetstoreYAML from './selectors/selectAsyncAPI260PetstoreYAML.js';
import selectAsyncAPI260StreetlightsYAML from './selectors/selectAsyncAPI260StreetlightsYAML.js';
+import selectAsyncAPI300StreetlightsYAML from './selectors/selectAsyncAPI300StreetlightsYAML.js';
import selectAPIDesignSystemsYAML from './selectors/selectAPIDesignSystemsYAML.js';
// test
@@ -15,6 +16,8 @@ const EditorContentFixturesPlugin = () => ({
selectOpenAPI20PetstoreYAML,
selectAsyncAPI260PetstoreYAML,
selectAsyncAPI260StreetlightsYAML,
+ selectAsyncAPI300StreetlightsYAML,
+
selectAPIDesignSystemsYAML,
},
},
diff --git a/src/plugins/editor-content-fixtures/selectors/selectAsyncAPI300StreetlightsYAML.js b/src/plugins/editor-content-fixtures/selectors/selectAsyncAPI300StreetlightsYAML.js
new file mode 100644
index 00000000000..c8a485225e2
--- /dev/null
+++ b/src/plugins/editor-content-fixtures/selectors/selectAsyncAPI300StreetlightsYAML.js
@@ -0,0 +1,202 @@
+const selectAsyncAPI300StreetlightsYAML = () => `asyncapi: 3.0.0
+info:
+ title: Streetlights Kafka 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:
+ scram-connections:
+ host: 'test.mykafkacluster.org:18092'
+ protocol: kafka-secure
+ description: Test broker secured with scramSha256
+ security:
+ - $ref: '#/components/securitySchemes/saslScram'
+ tags:
+ - name: 'env:test-scram'
+ description: >-
+ This environment is meant for running internal tests through
+ scramSha256
+ - name: 'kind:remote'
+ description: This server is a remote server. Not exposed by the application
+ - name: 'visibility:private'
+ description: This resource is private and only available to certain users
+ mtls-connections:
+ host: 'test.mykafkacluster.org:28092'
+ protocol: kafka-secure
+ description: Test broker secured with X509
+ security:
+ - $ref: '#/components/securitySchemes/certs'
+ tags:
+ - name: 'env:test-mtls'
+ description: This environment is meant for running internal tests through mtls
+ - name: 'kind:remote'
+ description: This server is a remote server. Not exposed by the application
+ - name: 'visibility:private'
+ description: This resource is private and only available to certain users
+channels:
+ lightingMeasured:
+ address: 'smartylighting.streetlights.1.0.event.{streetlightId}.lighting.measured'
+ messages:
+ lightMeasured:
+ $ref: '#/components/messages/lightMeasured'
+ description: The topic on which measured values may be produced and consumed.
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ lightTurnOn:
+ address: 'smartylighting.streetlights.1.0.action.{streetlightId}.turn.on'
+ messages:
+ turnOn:
+ $ref: '#/components/messages/turnOnOff'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ lightTurnOff:
+ address: 'smartylighting.streetlights.1.0.action.{streetlightId}.turn.off'
+ messages:
+ turnOff:
+ $ref: '#/components/messages/turnOnOff'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ lightsDim:
+ address: 'smartylighting.streetlights.1.0.action.{streetlightId}.dim'
+ messages:
+ dimLight:
+ $ref: '#/components/messages/dimLight'
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+operations:
+ receiveLightMeasurement:
+ action: receive
+ channel:
+ $ref: '#/channels/lightingMeasured'
+ summary: >-
+ Inform about environmental lighting conditions of a particular
+ streetlight.
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/lightingMeasured/messages/lightMeasured'
+ turnOn:
+ action: send
+ channel:
+ $ref: '#/channels/lightTurnOn'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/lightTurnOn/messages/turnOn'
+ turnOff:
+ action: send
+ channel:
+ $ref: '#/channels/lightTurnOff'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/lightTurnOff/messages/turnOff'
+ dimLight:
+ action: send
+ channel:
+ $ref: '#/channels/lightsDim'
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ messages:
+ - $ref: '#/channels/lightsDim/messages/dimLight'
+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:
+ saslScram:
+ type: scramSha256
+ description: Provide your username and password for SASL/SCRAM authentication
+ certs:
+ type: X509
+ description: Download the certificate files from service provider
+ 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:
+ type: string
+ enum:
+ - my-app-id
+`;
+
+export default selectAsyncAPI300StreetlightsYAML;
diff --git a/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenu.jsx b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenu.jsx
index 750902329ad..1ac4b3f6c70 100644
--- a/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenu.jsx
+++ b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenu.jsx
@@ -28,6 +28,10 @@ const LoadExampleNestedMenu = (props) => {
'TopBarFileMenuLoadExampleNestedMenuAsyncAPI26StreetlightsMenuItem',
true
);
+ const AsyncAPI30StreetlightsMenuItem = getComponent(
+ 'TopBarFileMenuLoadExampleNestedMenuAsyncAPI30StreetlightsMenuItem',
+ true
+ );
const APIDesignSystemsMenuItem = getComponent(
'TopBarFileMenuLoadExampleNestedMenuAPIDesignSystemsMenuItem',
true
@@ -48,6 +52,9 @@ const LoadExampleNestedMenu = (props) => {
const handleAsyncAPI26StreetlightsClick = useCallback(async (event) => {
await loadExampleNestedMenuHandler.current.loadAsyncAPI26StreetlightsFixture(event);
}, []);
+ const handleAsyncAPI30StreetlightsClick = useCallback(async (event) => {
+ await loadExampleNestedMenuHandler.current.loadAsyncAPI30StreetlightsFixture(event);
+ }, []);
const handleAPIDesignSystemsClick = useCallback(async (event) => {
await loadExampleNestedMenuHandler.current.loadAPIDesignSystemsFixture(event);
}, []);
@@ -62,6 +69,7 @@ const LoadExampleNestedMenu = (props) => {
+
diff --git a/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenuHandler.jsx b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenuHandler.jsx
index 014463a7967..8e7ef25a563 100644
--- a/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenuHandler.jsx
+++ b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/LoadExampleNestedMenuHandler.jsx
@@ -25,6 +25,10 @@ const LoadExampleNestedMenuHandler = forwardRef((props, ref) => {
const content = editorContentFixturesSelectors.selectAsyncAPI260StreetlightsYAML();
editorActions.setContent(content, 'fixture-load');
},
+ loadAsyncAPI30StreetlightsFixture() {
+ const content = editorContentFixturesSelectors.selectAsyncAPI300StreetlightsYAML();
+ editorActions.setContent(content, 'fixture-load');
+ },
loadAPIDesignSystemsFixture() {
const content = editorContentFixturesSelectors.selectAPIDesignSystemsYAML();
editorActions.setContent(content, 'fixture-load');
@@ -44,6 +48,7 @@ LoadExampleNestedMenuHandler.propTypes = {
selectOpenAPI20PetstoreYAML: PropTypes.func.isRequired,
selectAsyncAPI260PetstoreYAML: PropTypes.func.isRequired,
selectAsyncAPI260StreetlightsYAML: PropTypes.func.isRequired,
+ selectAsyncAPI300StreetlightsYAML: PropTypes.func.isRequired,
selectAPIDesignSystemsYAML: PropTypes.func.isRequired,
}).isRequired,
};
diff --git a/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI30StreetlightsMenuItem.jsx b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI30StreetlightsMenuItem.jsx
new file mode 100644
index 00000000000..9a5bb200d31
--- /dev/null
+++ b/src/plugins/top-bar/components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI30StreetlightsMenuItem.jsx
@@ -0,0 +1,21 @@
+import PropTypes from 'prop-types';
+
+const AsyncAPI30StreetlightsMenuItem = ({ getComponent, onClick, children }) => {
+ const DropdownMenuItem = getComponent('DropdownMenuItem');
+
+ return (
+ {children || 'AsyncAPI 3.0 Streetlights'}
+ );
+};
+
+AsyncAPI30StreetlightsMenuItem.propTypes = {
+ getComponent: PropTypes.func.isRequired,
+ children: PropTypes.node,
+ onClick: PropTypes.func.isRequired,
+};
+
+AsyncAPI30StreetlightsMenuItem.defaultProps = {
+ children: null,
+};
+
+export default AsyncAPI30StreetlightsMenuItem;
diff --git a/src/plugins/top-bar/index.js b/src/plugins/top-bar/index.js
index a3f1867dc85..bc798da6da5 100644
--- a/src/plugins/top-bar/index.js
+++ b/src/plugins/top-bar/index.js
@@ -9,6 +9,7 @@ import OpenAPI30PetstoreMenuItem from './components/FileMenu/items/LoadExampleNe
import OpenAPI20PetstoreMenuItem from './components/FileMenu/items/LoadExampleNestedMenu/items/OpenAPI20PetstoreMenuItem.jsx';
import AsyncAPI26PetstoreMenuItem from './components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI26PetstoreMenuItem.jsx';
import AsyncAPI26StreetlightsMenuItem from './components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI26StreetlightsMenuItem.jsx';
+import AsyncAPI30StreetlightsMenuItem from './components/FileMenu/items/LoadExampleNestedMenu/items/AsyncAPI30StreetlightsMenuItem.jsx';
import APIDesignSystemsMenuItem from './components/FileMenu/items/LoadExampleNestedMenu/items/APIDesignSystemsMenuItem.jsx';
import SaveAsMenuItem from './components/FileMenu/items/SaveAsMenuItem.jsx';
import ConvertAndSaveAsJSONMenuItem from './components/FileMenu/items/ConvertAndSaveAsJSONMenuItem.jsx';
@@ -146,6 +147,8 @@ const TopBarPlugin = () => ({
TopBarFileMenuLoadExampleNestedMenuAsyncAPI26PetstoreMenuItem: AsyncAPI26PetstoreMenuItem,
TopBarFileMenuLoadExampleNestedMenuAsyncAPI26StreetlightsMenuItem:
AsyncAPI26StreetlightsMenuItem,
+ TopBarFileMenuLoadExampleNestedMenuAsyncAPI30StreetlightsMenuItem:
+ AsyncAPI30StreetlightsMenuItem,
TopBarFileMenuLoadExampleNestedMenuAPIDesignSystemsMenuItem: APIDesignSystemsMenuItem,
TopBarFileMenuSaveAsMenuItem: SaveAsMenuItem,
TopBarFileMenuConvertAndSaveAsJSONMenuItem: ConvertAndSaveAsJSONMenuItem,