Skip to content

Commit 63fcb9c

Browse files
NGINX Declarative API v5.5.0 (#95)
* 5.4.2 dev * API Gateway parameters enforcement * 5.4.2 dev * API Gateway parameters enforcement * API Gateway parameters enforcement * API Gateway parameters enforcement * Added OpenAPI schema query string parameters check enforcement * Added OpenAPI schema query string parameters check enforcement * Default policy added * HTTP location statistics added * API Gateway location statistics added * Template fixes * Bugfixes * v5.5 initial commit * README updated * NGINX Declarative API v5.5.0 * USAGE-v5.5.md updated
1 parent d00f887 commit 63fcb9c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2325
-1405
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Thumbs.db
2020
=======
2121
/.idea/
2222
/src/__pycache__/
23-
/src/v5_3/__pycache__/
2423
/src/v5_4/__pycache__/
24+
/src/v5_5/__pycache__/
2525
/contrib/devportal/redocly/src/__pycache__/
2626
/venv/

FEATURES.md

Lines changed: 31 additions & 29 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ A **blog article** to automate NGINX API Gateway management from OpenAPI schemas
4444

4545
## 🚀 Supported releases
4646

47-
- [F5 NGINX Instance Manager 2.14+](https://docs.nginx.com/nginx-instance-manager/)
47+
- [F5 NGINX Instance Manager 2.20+](https://docs.nginx.com/nginx-instance-manager/)
4848
- [F5 NGINX One Console](https://docs.nginx.com/nginx-one/)
4949
- [F5 NGINX Plus R33+](https://docs.nginx.com/nginx/)
5050
- [F5 WAF for NGINX](https://docs.nginx.com/waf/)
@@ -203,8 +203,8 @@ end
203203

204204
## 🧾 Output formats
205205

206-
- [X] Output to F5 NGINX Instance Manager 2.14+ imperative REST API (instance group)
207-
- [X] Output to F5 NGINX One Console REST API (config sync group)
206+
- [X] Output to [F5 NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/) 2.20+ imperative REST API (instance group)
207+
- [X] Output to [F5 NGINX One Console](https://docs.nginx.com/nginx-one-console/) REST API (config sync group)
208208

209209
## 🌟 Supported features
210210

@@ -214,8 +214,8 @@ See the [features list](/FEATURES.md)
214214

215215
Usage details and JSON schema are available here:
216216

217-
- [API v5.4](/USAGE-v5.4.md) - latest
218-
- [API v5.3](/USAGE-v5.3.md) - stable
217+
- [API v5.5](/USAGE-v5.5.md) - latest
218+
- [API v5.4](/USAGE-v5.4.md) - stable
219219

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

USAGE-v5.3.md renamed to USAGE-v5.5.md

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
1-
# Usage for NGINX Declarative API v5.3
1+
# Usage for NGINX Declarative API v5.5
22

3-
Version 5.3 supports:
3+
Version 5.5 supports:
44

5-
- [NGINX Instance Manager](https://docs.nginx.com/nginx-management-suite/nim/) 2.14+. Version 2.18+ is required for NGINX R33 and above
6-
- [NGINX One Console](https://docs.nginx.com/nginx-one/)
7-
- [NGINX Plus](https://docs.nginx.com/nginx/) R31+
8-
- [NGINX App Protect WAF](https://docs.nginx.com/nginx-app-protect-waf/) v4 or v5 with precompiled [policy bundles](https://docs.nginx.com/nginx-app-protect-waf/v5/admin-guide/compiler/)
5+
- [NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/ 2.20+
6+
- [NGINX One Console](https://docs.nginx.com/nginx-one-console/)
7+
- [NGINX Plus](https://docs.nginx.com/nginx/) R33+
8+
- [F5 WAF for NGINX](https://docs.nginx.com/waf/) with precompiled [policy bundles](https://docs.nginx.com/nginx-app-protect-waf/v5/admin-guide/compiler/)
99

1010
The JSON schema is self explanatory. See also the [sample Postman collection](/contrib/postman) for usage examples
1111

1212
- `.output.license` defines the JWT license to use for NGINX Plus R33+
13-
- `.output.license.endpoint` the usage reporting endpoint (defaults to `product.connect.nginx.com`). NGINX Instance Manager address can be used here
13+
- `.output.license.endpoint` the usage reporting endpoint (defaults to `product.connect.nginx.com`). NGINX Instance Manager address or FQDN can be used here
1414
- `.output.license.token` the JWT license token. If this field is omitted, it is assumed that a `/etc/nginx/license.jwt` token already exists on the instance and it won't be replaced
1515
- `.output.license.ssl_verify` set to `false` to trust all SSL certificates (not recommended). Useful for reporting to NGINX Instance Manager without a local PKI.
1616
- `.output.license.grace_period` Set to 'true' to begin the 180-day reporting enforcement grace period. Reporting must begin or resume before the end of the grace period to ensure continued operation
17+
- `.output.license.proxy` The optional explicit forward proxy `IP_address:port` or `FQDN:port` for usage reporting
18+
- `.output.license.proxy_username` The optional explicit forward proxy authentication username for usage reporting
19+
- `.output.license.proxy_password` The optional explicit forward proxy authentication password for usage reporting
1720
- `.output.type` defines how NGINX configuration will be returned:
1821
- *nms* - NGINX configuration is published as a Staged Config to NGINX Instance Manager
1922
- `.output.nms.url` the NGINX Instance Manager URL
@@ -48,29 +51,20 @@ The JSON schema is self explanatory. See also the [sample Postman collection](/c
4851
- `.output.nginxone.certificates[].type` the item type ('certificate', 'key', 'chain')
4952
- `.output.nginxone.certificates[].name` the certificate/key/chain name with no path/extension (ie. 'test-application')
5053
- `.output.nginxone.certificates[].contents` the content: this can be either base64-encoded or be a HTTP(S) URL that will be fetched dynamically from a source of truth
51-
- `.output.nginxone.policies[]` an optional array of NGINX App Protect security policies
52-
- `.output.nginxone.policies[].type` the policy type ('app_protect')
53-
- `.output.nginxone.policies[].name` the policy name (ie. 'prod-policy')
54-
- `.output.nginxone.policies[].active_tag` the policy tag to enable among all available versions (ie. 'v1')
55-
- `.output.nginxone.policies[].versions[]` array with all available policy versions
56-
- `.output.nginxone.policies[].versions[].tag` the policy version's tag name
57-
- `.output.nginxone.policies[].versions[].displayName` the policy version's display name
58-
- `.output.nginxone.policies[].versions[].description` the policy version's description
59-
- `.output.nginxone.policies[].versions[].contents` this can be either base64-encoded or be a HTTP(S) URL that will be fetched dynamically from a source of truth
6054
- `.declaration` describes the NGINX configuration to be created
6155
- `.declaration.http[]` NGINX HTTP definitions
6256
- `.declaration.layer4[]` NGINX TCP/UDP definitions
6357
- `.declaration.resolvers[]` DNS resolvers definitions
6458

6559
### API endpoints
6660

67-
- `POST /v5.3/config/` - Publish a new declaration
68-
- `PATCH /v5.3/config/{config_uid}` - Update an existing declaration
61+
- `POST /v5.5/config/` - Publish a new declaration
62+
- `PATCH /v5.5/config/{config_uid}` - Update an existing declaration
6963
- Per-HTTP server CRUD
7064
- Per-HTTP upstream CRUD
7165
- Per-Stream server CRUD
7266
- Per-Stream upstream CRUD
7367
- Per-NGINX App Protect WAF policy CRUD
74-
- `GET /v5.3/config/{configUid}/submission/{submissionUid}` - Retrieve a submission (asynchronous `PATCH` request) status
75-
- `GET /v5.3/config/{config_uid}` - Retrieve an existing declaration
76-
- `DELETE /v5.3/config/{config_uid}` - Delete an existing declaration
68+
- `GET /v5.5/config/{configUid}/submission/{submissionUid}` - Retrieve a submission (asynchronous `PATCH` request) status
69+
- `GET /v5.5/config/{config_uid}` - Retrieve an existing declaration
70+
- `DELETE /v5.5/config/{config_uid}` - Delete an existing declaration

contrib/docker-compose/docker-compose.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
version: "3.9"
2-
31
volumes:
42
redis_data:
53

contrib/docker-compose/nginx-dapi.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ COMPOSE_HTTP_TIMEOUT=240 docker-compose -p $PROJECT_NAME -f $DOCKER_COMPOSE_YAML
5050
}
5151

5252
#
53-
# NGINX Declarative API removal
53+
# NGINX Declarative API image build
5454
#
5555
nginx_dapi_build() {
5656

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"policy": {
3+
"name": "nms_app_protect_default_policy",
4+
"template": {
5+
"name": "POLICY_TEMPLATE_NGINX_BASE"
6+
}
7+
}
8+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)