# Extending Zowe
Zowe is designed as an extensible tools platform. One of the Zowe architecture goals is to provide consistent interoperability between all Zowe components including extensions. The Zowe Conformance Program defines the criteria to help accomplish the aforementioned goal. By satisfying the Zowe Conformance Program criteria, extension providers are assured that their software remains functional throughout the Zowe release cycle. For more information, see the Zowe Conformance Program.
Zowe can be extended in the following ways:
- Extend Zowe CLI
- Extend Zowe API Mediation Layer
- Add a plug-in to the Zowe Desktop
- Sample extensions
Note: For more information on the architecture of Zowe, see Zowe Architecture.
# Extend Zowe CLI
Zowe CLI extenders can build plug-ins that provide new commands. Zowe CLI is built using Node.js and is typically run on a machine other than z/OS, such as a PC, where the CLI can be driven through a terminal or command prompt, or on an automation machine such as a DevOps pipeline orchestrator.
# Extend Zowe API Mediation Layer
Zowe API Mediation Layer extenders can build and onboard additional API services to the API ML microservices ecosystem. REST APIs can register with the API Mediation Layer, which makes them available in the API Catalog and for routing through the API Gateway.
To register a z/OS service with the API Mediation Layer, there are two approaches:
For information about how to onboard REST APIs, see the Onboarding Overview.
# Dynamic API registration
Registration of a REST API service to the API ML is performed through a call to the Discovery Service by sending registration data and metadata for the service being registered. Registration requires that the z/OS service must know the web address of the API ML Discovery Service. When Dynamic registration is performed, the service that performs the registration must periodically send heartbeat requests to the Discovery Service for each registered service instance. These heartbeat requests serve to renew the corresponding service instance registration with API ML. These requests enable the Discovery Service to monitor the availability of registered service instances. Services that are registered dynamically display the status of the service in the API Catalog after initial service registration.
For more information about how to build a service which is able to register, see the Onboarding Overview.
# Static API registration
For services that cannot be modified to be dynamically discoverable, it is possible onboard them to the API ML by providing the API ML a static definition file with API service details. This registration method does not require modifications to the existing API service code. For more information, see Onboard a REST API without code changes required. Unlike services that use Dynamic API registration, the status of services onboarded through Static API registration is not displayed in the API Catalog.
# Add a plug-in to the Zowe Desktop
The Zowe Desktop allows a user to interact with z/OS applications through a web browser. The Desktop is served by the Zowe Application Framework Server on z/OS, also known as Z Lightweight User Experience (ZLUX). The Zowe desktop comes with a set of default applications. You can extend it to add new applications. For more information, see Developing for Zowe Application Framework.
Notes: For more information, see the following samples:
# Sample extensions
# Sample Zowe API and API Catalog extension
The repository https://github.com/zowe/sample-node-api (opens new window) contains a sample Zowe extension with a node server providing sample APIs for looking at cars in a dealership. For more information, see sample-node-api (opens new window).
# Sample Zowe Desktop extension
The repository https://github.com/zowe/sample-trial-app (opens new window) contains a sample Zowe extension with a node server providing a web page that gives a user interface to the APIs included with the API sample above.