Skip to content
Merged

V5.6 #138

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ Thumbs.db
/.idea/
/venv/
/src/__pycache__/
/src/v5_4/__pycache__/
/src/v5_5/__pycache__/
/src/v5_6/__pycache__/
/contrib/devportal/redocly/src/__pycache__/

# Test coverage artifacts #
Expand Down
28 changes: 14 additions & 14 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@

NGINX Declarative API has been tested with the following NGINX control plane releases:

| Control plane | API v5.4 | API v5.5 | Notes |
| Control plane | API v5.5 | API v5.6 | Notes |
|---------------------------|----------------------|----------------------|--------|
| NGINX Instance Manager | 2.18+ | 2.20+ | |
| NGINX One Console | General availability | General availability | |

### NGINX `http` and `stream` servers

| Feature | API v5.4 | API v5.5 | Notes |
| Feature | API v5.5 | API v5.6 | Notes |
|-----------------------------|----------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Upstreams | X | X | <li>Snippets supported: static and from source of truth</li> |
| HTTP servers | X | X | <li>Snippets supported (`http`, `servers`, `locations`): static and from source of truth</li> |
Expand Down Expand Up @@ -43,7 +43,7 @@ Locations `.declaration.http.servers[].locations[].uri` match modifiers in `.dec

### NGINX API Gateway use case

| Feature | API v5.4 | API v5.5 | Notes |
| Feature | API v5.5 | API v5.6 | Notes |
|--------------------------------------------------------------|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------|-----------------------------------------------|
| Configuration generation from OpenAPI schema | X | X | OpenAPI 2.0, 3.0, 3.0.1, YAML and JSON format |
| HTTP methods enforcement | X | X | |
Expand Down Expand Up @@ -92,21 +92,21 @@ See the [Postman collection](/contrib/) for usage examples

### NGINX API Gateway use case - Developer Portal

| Type | API v5.4 | API v5.5 | Notes |
| Type | API v5.5 | API v5.6 | Notes |
|-----------------|----------|----------|------------------------------------------|
| Redocly | X | X | Developer portal published by NGINX Plus |
| Backstage.io | X | X | Backstage YAML manifest generated |

### NGINX API Gateway use case - Visibility

| Type | API v5.4 | API v5.5 | Notes |
| Type | API v5.5 | API v5.6 | Notes |
|---------------|----------|----------|-----------------------------------------------------------------------------------------------|
| Moesif | X | X | Integration with Moesif - see https://www.moesif.com/docs/server-integration/nginx-openresty/ |


### TLS

| Type | Description | API v5.4 | API v5.5 | Notes |
| Type | Description | API v5.5 | API v5.6 | Notes |
|-------|-------------------------|----------|----------|-------|
| ACME | ACME Protocol support | X | X | |

Expand All @@ -130,7 +130,7 @@ For full details for all fields see https://nginx.org/en/docs/http/ngx_http_acme

### Client authentication

| Type | Description | API v5.4 | API v5.5 | Notes |
| Type | Description | API v5.5 | API v5.6 | Notes |
|------|----------------------|----------|----------|-------------------------------------|
| jwt | JSON Web Token (JWT) | X | X | |
| mtls | Mutual TLS | X | X | <li>Supported for HTTP servers</li> |
Expand Down Expand Up @@ -208,7 +208,7 @@ For additional details see https://nginx.org/en/docs/http/ngx_http_oidc_module.h

### Client authorization

| Type | Description | API v5.4 | API v5.5 | Notes |
| Type | Description | API v5.5 | API v5.6 | Notes |
|------|------------------------|----------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| jwt | JSON Web Token (JWT) | X | X | Based on JWT claims. Supported under <li>.declaration.http.servers[]</li><li>.declaration.http.servers[].location[]</li><li>.declaration.http.servers[].location[].apigateway</li> |

Expand Down Expand Up @@ -238,7 +238,7 @@ Client-side authorization profiles to be defined under `.declaration.http.author

### Upstream and Source of truth authentication

| Type | Description | API v5.4 | API v5.5 | Notes |
| Type | Description | API v5.5 | API v5.6 | Notes |
|--------------|------------------------------------------------|----------|----------|----------------------------------------------------------------------------------------|
| Bearer token | Authentication token as Authorization Bearer | X | X | `Bearer` Authorization header is injected in requests to upstreams and source of truth |
| Basic Auth | Authentication token as Authorization Basic | X | X | `Basic` Authorization header is injected in requests to upstreams and source of truth |
Expand Down Expand Up @@ -306,7 +306,7 @@ Server-side authentication profiles to be defined under `.declaration.http.authe

### HTTP Headers manipulation

| Type | API v5.4 | API v5.5 | Notes |
| Type | API v5.5 | API v5.6 | Notes |
|-------------------------------|----------|----------|------------------------------------------------------------------------------------------------------------------------------|
| Request (client to server) | X | X | <li>`set` - new header injection</li><li>`delete` - client header removal</li> |
| Response (server to client) | X | X | <li>`add` - new header injection</li><li>`delete` - server header removal</li><li>`replace` - server header replacement</li> |
Expand Down Expand Up @@ -355,7 +355,7 @@ To be defined under `.declaration.http.servers[].headers` and/or `.declaration.h

### NGINX Javascript

| Hook type | API v5.4 | API v5.5 | Notes |
| Hook type | API v5.5 | API v5.6 | Notes |
|---------------------|----------|----------|--------------------------------------------------------------------------------------------------------------------------------|
| js_body_filter | X | X | Available in <li>`declaration.http.servers[].location[]`</li> |
| js_content | X | X | Available in <li>`declaration.http.servers[].location[]`</li> |
Expand Down Expand Up @@ -509,7 +509,7 @@ Example hooks:

### DNS resolvers

| | API v5.4 | API v5.5 | Notes |
| | API v5.5 | API v5.6 | Notes |
|-------------------------|----------|----------|------------------------------------------------------------------------------------------------------------------------------------|
| DNS resolver profiles | X | X | Available in <li>`declaration.http.servers[]`</li><li>`declaration.http.upstreams[]`</li><li>`declaration.layer4.upstreams[]`</li> |

Expand All @@ -532,13 +532,13 @@ DNS resolver profiles to be defined under `.declaration.http.resolvers[]`

#### HTTP Access and error logging

| | API v5.4 | API v5.5 | Notes |
| | API v5.5 | API v5.6 | Notes |
|---------|----------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Logging | X | X | Available in <li>`.declaration.http.servers[].log`</li><li>`.declaration.http.servers[].locations[].log`</li><br>`condition` enables conditional logging. Logging will be disabled if `condition` evaluates to "0" or an empty string |

### Access logging formats

| | API v5.4 | API v5.5 | Notes |
| | API v5.5 | API v5.6 | Notes |
|-----------------|----------|----------|-------|
| Logging formats | X | X | |

Expand Down
17 changes: 4 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ A **blog article** to automate NGINX API Gateway management from OpenAPI schemas

## 🚀 Supported releases

- [F5 NGINX Instance Manager 2.14+](https://docs.nginx.com/nginx-instance-manager/)
- [F5 NGINX Instance Manager 2.20+](https://docs.nginx.com/nginx-instance-manager/)
- [F5 NGINX One Console](https://docs.nginx.com/nginx-one/)
- [F5 NGINX Plus R33+](https://docs.nginx.com/nginx/)
- [F5 WAF for NGINX](https://docs.nginx.com/waf/)

**Note**: F5 NGINX Plus R33 and above [require a valid license](https://docs.nginx.com/solutions/about-subscription-licenses/) and the `.output.license` section in the declarative JSON is required. See the [usage notes](/USAGE-v5.4.md) for further details. [Postman collection](/contrib/postman) examples are provided for NGINX Plus R33+.
**Note**: F5 NGINX Plus R33 and above [require a valid license](https://docs.nginx.com/solutions/about-subscription-licenses/) and the `.output.license` section in the declarative JSON is required.

## 🛠️ Architecture

Expand Down Expand Up @@ -198,15 +198,6 @@ NGINX Declarative API ->> CI/CD Pipeline: Response
end
```

## 🧩 Input formats

- [X] Declarative JSON

## 🧾 Output formats

- [X] Output to F5 NGINX Instance Manager 2.14+ imperative REST API (instance group)
- [X] Output to F5 NGINX One Console REST API (config sync group)

## 🌟 Supported features

See the [features list](/FEATURES.md)
Expand All @@ -215,8 +206,8 @@ See the [features list](/FEATURES.md)

Usage details and JSON schema are available here:

- [API v5.5](/USAGE-v5.5.md) - latest
- [API v5.4](/USAGE-v5.4.md) - stable
- [API v5.6](/USAGE-v5.6.md) - latest
- [API v5.5](/USAGE-v5.5.md) - stable

A sample Postman collection and usage instructions can be found [here](/contrib/postman)

Expand Down
3 changes: 2 additions & 1 deletion USAGE-v5.5.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ The JSON schema is self explanatory. See also the [sample Postman collection](/c

### API endpoints

- `POST /v5.5/config/` - Publish a new declaration
- `GET /v5.5/schema` - Get Declarative API JSON schema
- `POST /v5.5/config` - Publish a new declaration
- `PATCH /v5.5/config/{config_uid}` - Update an existing declaration
- Per-HTTP server CRUD
- Per-HTTP upstream CRUD
Expand Down
Loading
Loading