Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Anax v2.14 synchingdocsstaging docs #3435

Merged
merged 89 commits into from
Feb 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
c04b354
Use Docusaurus sitemap plugin to remove old versions from SEO
t1m0thyj Dec 22, 2023
94f9ab0
Merge branch 'master' into fix/seo-old-versions
anaxceron Jan 2, 2024
c6a465c
addressing post-merge feedback from PR 3352
anaxceron Jan 17, 2024
a5c8971
minor edit
anaxceron Jan 17, 2024
5b3be45
Fix infinispan in sidebar (#3372)
janan07 Jan 18, 2024
a2a25fe
Additional description of TN3270 (#3047)
Martin-Zeithaml Jan 18, 2024
4983ec6
Create Authenticating with client certificates file (#3331)
janan07 Jan 22, 2024
8bb340d
Retitle Authenticating with personal access token (#3332)
janan07 Jan 22, 2024
fd0a174
Create article Authenticating with JWT token (#3319)
janan07 Jan 22, 2024
976c493
Merge branch 'master' into anax-v2.13-odbctroubleedits-cli
anaxceron Jan 22, 2024
86b7c4d
Merge pull request #3368 from zowe/anax-v2.13-odbctroubleedits-cli
anaxceron Jan 22, 2024
d7fc0e8
Create sidebar for single sign on for API ML (#3391)
janan07 Jan 23, 2024
16d785e
Janan07 fix security overview link (#3394)
janan07 Jan 23, 2024
0940bdb
Move API ML SSO landing page from extend to user guide (#3395)
janan07 Jan 23, 2024
6d9b3ef
link/format/user fixes to Using SSO with API ML articles (#3398)
janan07 Jan 23, 2024
00600c5
adding prompt instructions
anaxceron Jan 23, 2024
cd713b1
adding to prompt feature instructions
anaxceron Jan 23, 2024
07ecf9d
Merge branch 'master' into anax-v2.13-promptinstructions-cli
anaxceron Jan 23, 2024
492b330
removed note per dev
anaxceron Jan 23, 2024
0c994aa
adding link for remote usage info; split content
anaxceron Jan 23, 2024
3435921
minor style edit
anaxceron Jan 23, 2024
b7340cd
fixing note syntax
anaxceron Jan 23, 2024
db2ad89
updating sidebar
anaxceron Jan 23, 2024
bd8053f
link fix and other minor fixes (#3401)
janan07 Jan 24, 2024
47c1592
Merge branch 'master' into anax-v2.13-remoteenvuse-ZE
anaxceron Jan 24, 2024
4e820d6
Merge branch 'master' into anax-v2.13-promptinstructions-cli
anaxceron Jan 24, 2024
9f85664
addressing Fernando, Scott feedback
anaxceron Jan 24, 2024
4f27a6c
minor edit to an intro sentence
anaxceron Jan 24, 2024
1fc0901
Merge branch 'anax-v2.13-promptinstructions-cli' of https://github.co…
anaxceron Jan 24, 2024
2b1d83b
addressing Scott's feedback
anaxceron Jan 24, 2024
7973108
removing extra space
anaxceron Jan 24, 2024
feef04f
Merge branch 'master' into fix/seo-old-versions
anaxceron Jan 25, 2024
be1d020
Merge pull request #3329 from zowe/fix/seo-old-versions
anaxceron Jan 25, 2024
abaef02
address Adam feedback
anaxceron Jan 25, 2024
1d8a2fe
Merge branch 'master' into anax-v2.13-remoteenvuse-ZE
anaxceron Jan 25, 2024
2de32d7
Merge pull request #3400 from zowe/anax-v2.13-remoteenvuse-ZE
anaxceron Jan 25, 2024
d25136b
Merge branch 'master' into anax-v2.14-publishdocs-docs
anaxceron Jan 26, 2024
5bc1ed1
Merge pull request #3406 from zowe/anax-v2.14-publishdocs-docs
MarkAckert Jan 26, 2024
bffba9d
removing duplicate article in sidebar
anaxceron Jan 26, 2024
a0fd216
Merge pull request #3407 from zowe/anax-v2.14-fixsidebar-apiml
anaxceron Jan 26, 2024
88d80a6
updating site PDF
anaxceron Jan 26, 2024
23cc0b3
Merge pull request #3408 from zowe/anax-v2.14-sitepdf2-docs
anaxceron Jan 28, 2024
f3ac776
Add expiration customization instructions to config with JWT (#3409)
janan07 Jan 29, 2024
72e0471
Create article: Routing requests to REST APIs (#3344)
janan07 Jan 30, 2024
56bac8f
Create Article: Routing requests to the GraphQL API (#3411)
balhar-jakub Jan 30, 2024
9dbeb0f
initial commit with minor header refactor (#3346)
janan07 Jan 30, 2024
5f04c0a
Create article Routing with websockets for API ML Using section (#3365)
janan07 Jan 30, 2024
5219059
Add Using API ML routing section to sidebar (#3412)
janan07 Jan 31, 2024
8f7d12f
Merge branch 'master' into anax-v2.13-promptinstructions-cli
anaxceron Jan 31, 2024
f84e44e
Merge pull request #3399 from zowe/anax-v2.13-promptinstructions-cli
anaxceron Jan 31, 2024
f88c45d
Clean up API routing section (#3413)
janan07 Feb 1, 2024
bb2224f
adding V1 EOS banner (#3393)
anaxceron Feb 1, 2024
45f100c
Create Multi-factor authentication for API ML file (#3414)
janan07 Feb 1, 2024
f4e9151
Update docusaurus and other dependencies
t1m0thyj Feb 1, 2024
9d0a1ee
Fix typo and link to migration guide
t1m0thyj Feb 1, 2024
5f2344c
Remove prefixes from old sidebar links
t1m0thyj Feb 1, 2024
3aa01cc
Fix broken admonitions
t1m0thyj Feb 1, 2024
92148b2
Support html comments in markdown files
t1m0thyj Feb 1, 2024
97a6e76
Fix mdx errors in non-versioned docs
t1m0thyj Feb 2, 2024
179a913
Fix more mdx errors in versioned docs
t1m0thyj Feb 2, 2024
96130b1
Fix remaining mdx errors
t1m0thyj Feb 2, 2024
ee49040
Fix 404 page and change PDF button to Print
t1m0thyj Feb 2, 2024
cfc4083
Clean up unused imports
t1m0thyj Feb 5, 2024
5ba9939
Add Plug-in help for new conformant plug-ins
awharn Feb 5, 2024
aefaf28
Apply edits to authenticating with client certificate (#3418)
janan07 Feb 6, 2024
92e7c72
Merge branch 'master' into awharn/update-cli-web-help
awharn Feb 6, 2024
625fcf8
Additional edits to Authenticating with client certificates (#3420)
janan07 Feb 6, 2024
2268d07
Merge branch 'master' into awharn/update-cli-web-help
anaxceron Feb 6, 2024
12ae9d6
Merge pull request #3419 from zowe/awharn/update-cli-web-help
anaxceron Feb 6, 2024
a3db39f
Fix file type checker for large PRs
t1m0thyj Feb 6, 2024
dc0431e
Fix swizzled components and char escapes
t1m0thyj Feb 6, 2024
f349ea8
Use escaping instead of code blocks in subheaders
t1m0thyj Feb 6, 2024
dafb87e
Undo accidental spacing changes in markdown
t1m0thyj Feb 6, 2024
8ac7094
Merge branch 'master' into update-docusaurus-v3
t1m0thyj Feb 6, 2024
e97bfed
Fix image tag in 1.28 install z/os docs
t1m0thyj Feb 6, 2024
d226eda
Merge pull request #3415 from zowe/update-docusaurus-v3
anaxceron Feb 7, 2024
84c61da
Create sections for Learning about APIs, Administrating APIs, and Usi…
janan07 Feb 7, 2024
5276a24
Restructure swizzled components and delete unused ones
t1m0thyj Feb 8, 2024
3201e51
Update version labels at top of articles
t1m0thyj Feb 8, 2024
9159d37
Swizzle navbar and sidebar items
t1m0thyj Feb 8, 2024
e809515
Fix links in API ML Using section after restructuring (#3423)
janan07 Feb 8, 2024
802cc16
Enhance message on 404 not found page
t1m0thyj Feb 8, 2024
9adfaa1
replace client cert png with new version (#3430)
janan07 Feb 9, 2024
fda8b41
How to register the client certificate with the user ID (#3431)
janan07 Feb 9, 2024
01e37fb
fix formatting and links (#3432)
janan07 Feb 9, 2024
cc7c29d
Support redirects when switching between versions
t1m0thyj Feb 12, 2024
1a870b7
Merge branch 'master' into fix/docusaurus-v3-quirks
t1m0thyj Feb 13, 2024
87fbb9e
Merge pull request #3424 from zowe/fix/docusaurus-v3-quirks
anaxceron Feb 13, 2024
eb3b354
Merge branch 'docs-staging' of https://github.com/zowe/docs-site into…
anaxceron Feb 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .github/workflows/pull-request-checker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,10 @@ jobs:
If you have addressed this issue already, refresh this page in your browser to remove this comment.
- name: File type checker
id: file_type_checker
uses: JJ/github-pr-contains-action@releases/v10
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
bodyContains: '\.md|\.jpg|\.gif|\.png'
env:
PR_BODY_PATTERN: '\.md|\.jpg|\.gif|\.png|\.pdf'
run: |
[[ "${{ github.event.pull_request.body }}" =~ "$PR_BODY_PATTERN" ]] || exit 1
- name: Missing File Name Comment PR
if: failure() && steps.file_type_checker.outcome == 'failure'
uses: marocchino/sticky-pull-request-comment@v2
Expand Down
2 changes: 1 addition & 1 deletion docs/appendix/zowe-glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ The standard z/OS Unix directory where Zowe server component and extension confi

#### Zowe instance directory (V1 only)

Also known as <INSTANCE_DIR>. Contains information that is specific to a launch of Zowe. It contains configuration settings that determine how an instance of the Zowe server is started, such as ports that are used or paths to dependent Java and Node.js runtimes.
Also known as `<INSTANCE_DIR>`. Contains information that is specific to a launch of Zowe. It contains configuration settings that determine how an instance of the Zowe server is started, such as ports that are used or paths to dependent Java and Node.js runtimes.

The instance directory also contains a log directory where different microservices write trace data for diagnosis, as well as a workspace and shell scripts to start and stop Zowe.

Expand Down
2 changes: 1 addition & 1 deletion docs/contribute/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ For whatever list or steps we are introducing, the word "following" should prece

Examples:
- Before a procedure, use "Follow these steps:"
- The <component_name> supports the following use cases:
- The `<component_name>` supports the following use cases:
- Before you install Zowe, review the following prerequisite installation tasks:

Avoid ending the sentence with "following".
Expand Down
2 changes: 1 addition & 1 deletion docs/extend/extend-api/ReactJSUI.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ In order to build and prepare your app:

2. Create a folder for your project and a new `web` folder inside it.

- EX: /Desktop/<Your_Project_Name> and Desktop/<Your_Project_Name>/web
- EX: `/Desktop/<Your_Project_Name>` and `Desktop/<Your_Project_Name>/web`

3. Copy built project into `Desktop/<Your_Project_Name>/web`
- If using the sample, copy `app.min.js` , `index.html` , `icon.png` and `css` into to `/Desktop/<Your_Project_Name>/web/`
Expand Down
31 changes: 19 additions & 12 deletions docs/extend/extend-apiml/api-mediation-components-of-URL.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,44 @@
# Components of URL
# Components of a URL

This page provides definitions and a diagram to make sure everyone is using the same terms. These terms are often overloaded. This page tries to follow the terms used in Swagger documentation.
This page provides definitions and a diagram to make sure everyone is using the same terms. To maintain consistency of the structure of URLs, Zowe seeks to establish standards around URLs and the elements that make up a URL. This article presents the standard terminology used in Swagger documentation.

## Definitions

REST APIs have a _baseUrl_ to which the endpoint paths are appended. The base URL is defined by _scheme_, _host_, _port_ and _basePath_

where:

- **`baseUrl`** is an absolute URL prefix that is different for each instance of the service, or when the service is accessed via the API Gateway.
- **`baseUrl`**
Specifies an absolute URL prefix that is different for each instance of the service, or when the service is accessed via the API Gateway.

The endpoint paths are relative paths that follow the documentation of the REST API.
The endpoint paths are relative paths that follow the documentation of the REST API.

- **`scheme`** is the transfer protocols used by the API. APIML supports the `http`, `https`, and WebSocket schemes - `ws` and `wss`.
- **`scheme`**
Specifies the transfer protocols used by the API. API ML supports the `http`, `https`, and WebSocket schemes - `ws` and `wss`.

- **`host`** is the domain name or IP address (IPv4) of the host that serves the API. It may include the port number if it is different from the scheme's default port (80 for HTTP and 443 for HTTPS). Note that this must be the host only, without a scheme or sub-paths.
- **`host`**
Specifies the domain name or IP address (IPv4) of the host that serves the API. It may include the port number if it is different from the scheme's default port (80 for HTTP and 443 for HTTPS). Note that this must be the host only, without a scheme or sub-paths.

- **`basePath`** is the URL prefix for all API paths, relative to the host root. It must start with a leading slash `/`. If basePath is not specified then all endpoint paths start at the host root.
- **`basePath`**
Specifies the URL prefix for all API paths, relative to the host root. It must start with a leading slash `/`. If basePath is not specified then all endpoint paths start at the host root.

When a service is accessed without the API Gateway then the format the `basePath` depends on the service. It can be empty or have several parts (e.g. `/fileMasterPlus/api/v1`).

When a service is accessed via the API Gateway then the format of the URL is standardized in one of the following formats:
When a service is accessed via the API Gateway, the format of the URL is standardized in one of the following formats:

- Using `serviceId`, service type (`t`) and major version (`v`)
- Using `serviceId` and service type (`t`)

where:

- **`serviceId`** is a unique name of the service that is set during the installation of the service.
- **`serviceId`**
Specifies a unique name of the service that is set during the installation of the service.

- **`t`** is the type of the service. It can be `api`, `ui`, or `ws`
- **`t`**
Specifies the type of the service. It can be `api`, `ui`, or `ws`

- **`v`** is the major version the REST API.
- **`v`**
Specifies the major version the REST API.

**Example:** `v1`, `v2`. It is optional since some existing services can have versioning in the endpoint path.

Expand Down Expand Up @@ -90,4 +97,4 @@ scheme host basePath endpointPath

### Resources

- <https://swagger.io/docs/specification/2-0/api-host-and-base-path/>
- For more information, see the documentation for [swagger specifications](https://swagger.io/docs/specification/2-0/api-host-and-base-path/) in the Swagger product documentation.
8 changes: 3 additions & 5 deletions docs/extend/extend-apiml/api-mediation-infinispan.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ For more information on Infinispan, see the [official Infinispan documentation](

### Infinispan replica instances

Infinispan can be used with both on standalone instance and High Availability mode. In case of multiple Caching Service instances,
you will have to specify all the cluster nodes (members). Each Infinispan node is bound to specific Caching Service instance and runs on a different port and host, which can be configured. See the [infinispan configuration](#infinispan-configuration) to know how to configure multiple Infinispan nodes.
Infinispan can be used with both a standalone instance and high availability mode. When using multiple Caching Service instances,
it is necessary to specify all of the cluster nodes (members). Each Infinispan node is bound to a specific Caching Service instance and runs on a different port and host, which can be configured. For more information about configuring multiple Infinispan modes, see the [Infinispan configuration](#infinispan-configuration).

For more information on Infinispan replication and how to configure a replica instance, see the [Infinispan Cross-site Replication](https://infinispan.org/docs/stable/titles/xsite/xsite.html) documentation.

Expand All @@ -34,10 +34,8 @@ Configure Infinispan as a storage solution through the Caching service by settin
* **`zowe.components.caching-service.storage.infinispan.persistence.dataLocation`**

The path where the Soft-Index store keeps its data files for the Infinispan Soft-Index Cache Store.
The default value is `data`. If you run the Caching Service in HA and the instances use the same filesystem,
The default value is `data`. If you run the Caching Service in HA and the instances use the same filesystem, you have to specify a different value of the `CACHING_STORAGE_INFINISPAN_PERSISTENCE_DATALOCATION` property for each instance. For more information, see the [Soft-Index File Store](https://infinispan.org/blog/2014/10/31/soft-index-file-store).

you have to specify a different value of the `zowe.components.caching-service.storage.infinispan.persistence.dataLocation` property for each
instance. For more information, see [Soft-Index File Store](https://infinispan.org/blog/2014/10/31/soft-index-file-store).

* **`zowe.components.caching-service.storage.infinispan.jgroups.port`**

Expand Down
98 changes: 8 additions & 90 deletions docs/extend/extend-apiml/authentication-for-apiml-services.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,99 +98,21 @@ The `auth/ticket` endpoint generates a PassTicket for the user associated with a
## Supported authentication methods

The API Mediation Layer provides multiple methods which clients can use to authenticate. When the API ML is run as part
of Zowe, all of the following methods are enabled and supported. All methods are supported at least to some extent
with each authentication provider.
of Zowe, all of the following methods are enabled and supported. All methods are supported at least to some extent with each authentication provider.

### Authenticate with Username/Password

The client can authenticate via Username and password. There are multiple methods which can be used to deliver
credentials. For more details, see the ZAAS Client documentation.

### Authenticate with Client certificate

You can perform authentication with client certificates.

If the keyring or a truststore contains at least one valid certificate authority (CA) other than the CA of API ML, it is possible to use the client certificates issued by this CA to authenticate to API ML. This feature is not enabled by default and must be configured.

:::note
There is a limitation with respect to ACF2 systems. If you would like to offer feedback using client
certificate authentication, please create an issue against the api-layer repository.
:::

When providing credentials with a client certificate on the same login request, the credentials take precedence and the client certificate is ignored.

#### How the Gateway resolves authentication

When sending a request to a service with a client certificate, the Gateway performs the following process to resolve authentication:

* The client calls the service endpoint through API ML Gateway with the client certificate.
* The client certificate and private key are checked as a valid TLS client certificate against the trusted CAs of the Gateway.
* The public part of the provided client certificate is checked against SAF. SAF subsequently returns a user ID that owns this certificate. ZSS provides this API for API ML.
* The Gateway performs the login of the mapped user and provides valid authentication to the southbound service.

When sending a request to the login endpoint with a client certificate, the Gateway performs the following process to exchange the client certificate for an authentication token.

* The client calls the API ML Gateway login endpoint with the client certificate.
* The client certificate and private key are checked as a valid TLS client certificate against the trusted CAs of the Gateway.
* The public part of the provided client certificate is checked against SAF. SAF subsequently returns a user ID that owns this certificate. ZSS provides this API for API ML.
* The Gateway performs the login of the mapped user and returns a valid JWT token.

![Zowe client certificate authentication diagram](../../images/api-mediation/zowe-client-cert-auth.png)

#### Prerequisites

Ensure to satisfy the following requirements before you set up client certificate authentication:

1. Specify the Zowe runtime user and set your protection by password. The user is created with the `NOPASSWORD` parameter by the Zowe installer. It is necessary to change this password.
Zowe supports three authentication methods with single-sign-on. Use the following links to the documentation about using the following supported authentication methods:

For RACF, issue the following TSO command:
* [Authenticating with a JWT token](../../user-guide/authenticating-with-jwt-token).

`ALTUSER <ZOWE_RUNTIME_USER (ZWESVUSR by default)> PASSWORD(<NEWPASSWORD>)`
* [Authenticating with client certificates](../../user-guide/authenticating-with-client-certificates).

For other security systems, refer to the documentation for an equivalent command.
* [Authenticating with personal access tokens](../../user-guide/api-mediation/authenticating-with-personal-access-token).

2. Verify that the Zowe runtime user is allowed to log in to z/OSMF. (Check that the user is member of the default `IZUUSER` group.)

:::note
Ensure that you have an external Certificate Authority and signed client certificates. Alternatively, you can generate these certificates in SAF. The client certificate must have correct `Extended Key Usage` metadata so the metadate can be used for TLS client authentication. (`OID: 1.3.6.1.5.5.7.3.2`)
:::

#### Configure your z/OS system to support client certificate authentication

1. Import the client certificates to SAF, or add them to a user profile.
**Examples:** `RACDCERT ADD` or `RACDCERT GENCERT`.
For more information, see your security system documentation.
2. Import the external CA to the truststore or keyring of the API Mediation Layer.
3. Configure the Gateway for client certificate authentication. Follow the procedure described in [Enabling single sign on for clients via client certificate configuration](../../user-guide/api-mediation/configuration-client-certificates).

:::note**Notes:**
* PassTicket generation must be enabled for the Zowe runtime user. The user has to be able to generate a PassTicket for itself and for the APPLID of z/OSMF. For more information, see [Configure Passticket](#authentication-with-passtickets).
* The Zowe runtime user must be enabled to perform identity mapping in SAF. For more information, see [Additional security rights that need to be granted](../../user-guide/configure-zos-system/#configure-main-Zowe-server-use-identity-mapping).
* ZSS has to be configured to participate in Zowe SSO. For more information, see [Configure components zss](../../appendix/zowe-yaml-configuration/#configure-component-zss).
:::

#### Validate the client certificate functionality

To validate that the client certificate functionality works properly, call the login endpoint with the certificate that was setup using the steps in _Configure your z/OS system to support client certificate authentication_.

Validate using CURL, a command line utility that runs on Linux based systems:

**Example:**
```
curl --cert /path/to/cert.pem --key /path/to/key.pem https://api-mediation-layer:7554/gateway/api/v1/login
```
Your Zowe instance is configured to accept x.509 client certificates authentication.


### Authenticate with JWT Token

When the client authenticates with the API ML, the client receives the JWT token in exchange. This token can be used for further authentication. If z/OSMF is configured as the authentication provider and the client already received a JWT token produced by z/OSMF, it is possible to reuse this token within API ML for authentication.
### Authenticate with Username/Password

### Authenticate with Personal Access Token
The client can authenticate via Username and password. There are multiple methods which can be used to deliver
credentials. For more details, see the ZAAS Client documentation.

A Personal Access Token (PAT) is an alternative to using passwords for authentication.
It is possible to generate a Personal Access Token that can be used for an instance of Version Control Systems on mainframe without having to store mainframe credentials
or use a certificate. For more information about the PAT functionality, see the [Personal Access Token documentation](../../user-guide/api-mediation/api-mediation-personal-access-token.md).

## Authentication parameters

Expand Down Expand Up @@ -303,11 +225,7 @@ Use the following property of API Gateway to enable the `Dummy Authentication Pr
apiml.security.auth.provider: dummy
```

## Authorization

Authorization is a method used to determine access rights of an entity.

In the API ML, authorization is performed by the z/OS security manager ([ACF2](https://www.broadcom.com/products/mainframe/identity-access/acf2), [IBM RACF](https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zsecurity/zsecc_042.htm), [Top Secret](https://www.broadcom.com/products/mainframe/identity-access/top-secret)). An authentication token is used as proof of valid authentication. The authorization checks, however, are always performed by the z/OS security manager.
## Discovery Service authentication

There are several authentication mechanisms, depending on the desired endpoint, as described by the following matrix:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Implementing routing to the API Gateway

Service instances provide information about routing to the API Gateway via Eureka metadata.

**Example:**

routes:
- gatewayUrl: "ui/v1"
serviceUrl: "/helloworld"
- gatewayUrl: "api/v1"
serviceUrl: "/helloworld/v1"
- gatewayUrl: "api/v2"
serviceUrl: "/helloworld/v2"

In this example, the service has a service ID of `helloworldservice` that exposes the following endpoints:

* **UI** - `https://gateway/helloworldservice/ui/v1` routed to `https://hwServiceHost:port/helloworld/`
* **API major version 1** - `https://gateway/helloworldservice/api/v1` routed to `https://hwServiceHost:port/helloworld/v1`
* **API major version 2** - `https://gateway/helloworldservice/api/v2` routed to `https://hwServiceHost:port/helloworld/v2`

where:

* The gatewayUrl is matched against the prefix of the URL path used at the Gateway `https://gateway/urlPath`, where `urlPath` is `serviceId/prefix/resourcePath`.
* The service ID is used to find the service host and port.
* The `serviceUrl` is used to prefix the `resourcePath` at the service host.

:::note
The service ID is not included in the routing metadata, but the service ID is in the basic Eureka metadata.
:::

### Basic Routing using only the service ID

This method of routing is similar to the previous method, but does not use the version part of the URL. This approach is useful for services that handle versioning themselves with different granularity.

One example that only uses a service ID is z/OSMF.

**Example:**

z/OSMF URL through the Gateway has the following format:

`https://gateway:10010/ibmzosmf/api/restjobs/jobs/...`

where:

* **`ibmzosmf`**
Specifies the service ID.

* **`/restjobs/1.0/...`**
Specifies the rest of the endpoint segment.

Note that no version is specified in this URL.
Loading
Loading