diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_CreateOrUpdate.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_CreateOrUpdate.json new file mode 100644 index 000000000000..10e3cc92a0b6 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_CreateOrUpdate.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "apiKeyName": "myApiKey", + "requestBody": { + "properties": { + "secretText": "00000000-0000-0000-0000-000000000000", + "endDateTime": "2024-09-01T00:00:00Z" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/apiKeys/myApiKey", + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "properties": { + "hint": "000", + "endDateTime": "2024-09-01T00:00:00Z" + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/apiKeys/myApiKey", + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "properties": { + "hint": "000", + "endDateTime": "2024-09-01T00:00:00Z" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Delete.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Delete.json new file mode 100644 index 000000000000..ea962c9b508f --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Delete.json @@ -0,0 +1,13 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "apiKeyName": "myApiKey" + }, + "responses": { + "200": {}, + "204": {} + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Get.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Get.json new file mode 100644 index 000000000000..39c6aee028bc --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_Get.json @@ -0,0 +1,22 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "apiKeyName": "myApiKey" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "properties": { + "hint": "000", + "endDateTime": "2024-09-01T00:00:00Z" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_List.json new file mode 100644 index 000000000000..ee4dd92b5c30 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/ApiKeys_List.json @@ -0,0 +1,34 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "properties": { + "hint": "000", + "endDateTime": "2024-09-01T00:00:00Z" + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey2", + "name": "myApiKey2", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "properties": { + "hint": "111", + "endDateTime": "2024-10-01T00:00:00Z" + } + } + ] + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_CreateOrUpdate.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_CreateOrUpdate.json new file mode 100644 index 000000000000..5d40d34dd875 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_CreateOrUpdate.json @@ -0,0 +1,44 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "certificateName": "default", + "requestBody": { + "properties": { + "keyVirtualPath": "/src/cert/somekey.key", + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/certificates/default", + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "properties": { + "provisioningState": "Succeeded", + "keyVirtualPath": "/src/cert/somekey.key", + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID" + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/certificates/default", + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "properties": { + "provisioningState": "Accepted", + "keyVirtualPath": "/src/cert/somekey.key", + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Delete.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Delete.json new file mode 100644 index 000000000000..81104dcf3577 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Delete.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "certificateName": "default" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Get.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Get.json new file mode 100644 index 000000000000..9e0e2e81fa65 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_Get.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "certificateName": "default" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/certificates/default", + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "properties": { + "provisioningState": "Succeeded", + "keyVirtualPath": "/src/cert/somekey.key", + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "certificateError": { + "code": "CertificateNotYetValid", + "message": "The certificate is not yet valid. The certificate is not yet valid. NotBefore: '2020-01-01T00:00:00Z', NotAfter: '2020-01-01T00:00:00Z'" + } + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_List.json new file mode 100644 index 000000000000..fc9aadd13de0 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Certificates_List.json @@ -0,0 +1,49 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/certificates/cert1", + "name": "cert1", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "properties": { + "provisioningState": "Succeeded", + "keyVirtualPath": "/src/cert/somekey.key", + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "certificateError": { + "code": "CertificateNotYetValid", + "message": "The certificate is not yet valid. The certificate is not yet valid. NotBefore: '2020-01-01T00:00:00Z', NotAfter: '2020-01-01T00:00:00Z'" + } + } + }, + { + "id": "/subscritions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/certificates/cert2", + "name": "cert2", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "properties": { + "provisioningState": "Succeeded", + "keyVirtualPath": "/src/cert/somekey2.key", + "certificateVirtualPath": "/src/cert/somePath2.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID2", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "certificateError": null + } + } + ] + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Analysis.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Analysis.json new file mode 100644 index 000000000000..61dc1273e427 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Analysis.json @@ -0,0 +1,43 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "configurationName": "default", + "requestBody": { + "config": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + }, + "responses": { + "200": { + "body": { + "status": "FAILED", + "data": { + "errors": [ + { + "id": "config-analysis-error-1", + "directive": "worker_processes", + "description": "Directives outside the http context are not allowed", + "file": "/etc/nginx/nginx.conf", + "line": 2, + "message": "You are not allowed to set the worker_processes directive", + "rule": "nginx-azure-load-balancer-allowed-directives" + } + ] + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_CreateOrUpdate.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_CreateOrUpdate.json new file mode 100644 index 000000000000..e6ddca4e7558 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_CreateOrUpdate.json @@ -0,0 +1,65 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "configurationName": "default", + "requestBody": { + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "properties": { + "provisioningState": "Succeeded", + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "properties": { + "provisioningState": "Accepted", + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Delete.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Delete.json new file mode 100644 index 000000000000..f64bc3b49e44 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Delete.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "configurationName": "default" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Get.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Get.json new file mode 100644 index 000000000000..5e99462b614a --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_Get.json @@ -0,0 +1,37 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "configurationName": "default" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "properties": { + "provisioningState": "Succeeded", + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "protectedFiles": [ + { + "virtualPath": "/etc/nginx/protected-file.cert", + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_List.json new file mode 100644 index 000000000000..b4ba1de28bb8 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Configurations_List.json @@ -0,0 +1,40 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "properties": { + "provisioningState": "Succeeded", + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "protectedFiles": [ + { + "virtualPath": "/etc/nginx/protected-file.cert", + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + } + ] + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/DefaultWafPolicy_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/DefaultWafPolicy_List.json new file mode 100644 index 000000000000..323c45a337a1 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/DefaultWafPolicy_List.json @@ -0,0 +1,21 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + ], + "nextLink": "https://management.azure.com/...&$skiptoken=..." + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Create.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Create.json new file mode 100644 index 000000000000..963a4bdae628 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Create.json @@ -0,0 +1,163 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "requestBody": { + "name": "myDeployment", + "tags": { + "Environment": "Dev" + }, + "properties": { + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + } + }, + "location": "West US" + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "tags": { + "Environment": "Dev" + }, + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "tags": { + "Environment": "Dev" + }, + "properties": { + "provisioningState": "Accepted", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + } + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Delete.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Delete.json new file mode 100644 index 000000000000..2bf17ccdf7e2 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Delete.json @@ -0,0 +1,16 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get.json new file mode 100644 index 000000000000..460149bd0a5f --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get.json @@ -0,0 +1,74 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get_AutoScale.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get_AutoScale.json new file mode 100644 index 000000000000..60e88d09bc67 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Get_AutoScale.json @@ -0,0 +1,60 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + }, + "scalingProperties": { + "autoScaleSettings": { + "profiles": [ + { + "name": "ExampleProfile", + "capacity": { + "min": 10, + "max": 50 + } + } + ] + } + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + } + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_List.json new file mode 100644 index 000000000000..5d03bb8fff81 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_List.json @@ -0,0 +1,74 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + ] + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_ListByResourceGroup.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_ListByResourceGroup.json new file mode 100644 index 000000000000..30bf224dc44c --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_ListByResourceGroup.json @@ -0,0 +1,75 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + ] + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Update.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Update.json new file mode 100644 index 000000000000..29e344e74eca --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_Update.json @@ -0,0 +1,95 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "requestBody": { + "tags": { + "Environment": "Dev" + }, + "properties": { + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "tags": { + "Environment": "Dev" + }, + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + }, + "202": { + "headers": { + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/locations/westus/operationResults/00000000-0000-0000-0000-000000000000/Spring/default?api-version=2025-03-01-preview" + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_UpdateSubnet.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_UpdateSubnet.json new file mode 100644 index 000000000000..a546df3e94c9 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Deployments_UpdateSubnet.json @@ -0,0 +1,89 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "requestBody": { + "tags": { + "Environment": "Dev" + }, + "properties": { + "networkProfile": { + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + } + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "location": "westus", + "tags": { + "Environment": "Dev" + }, + "properties": { + "provisioningState": "Succeeded", + "nginxVersion": "nginx-1.19.6", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ], + "privateIPAddresses": [] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + }, + "scalingProperties": { + "capacity": 10 + }, + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "version": "2024.02.21", + "revisionDatetime": "2024-02-21T15:50:53Z" + }, + "botSignaturesPackage": { + "version": "2024.02.22", + "revisionDatetime": "2024-02-22T15:50:53Z" + }, + "threatCampaignsPackage": { + "version": "2024.02.23", + "revisionDatetime": "2024-02-23T15:50:53Z" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + } + } + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net" + } + } + }, + "202": { + "headers": { + "Azure-AsyncOperation": "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/locations/westus/operationResults/00000000-0000-0000-0000-000000000000/Spring/default?api-version=2025-03-01-preview" + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Operations_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Operations_List.json new file mode 100644 index 000000000000..2d825b5ab9ea --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/Operations_List.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "Nginx.NginxPlus/nginxDeployments/write", + "display": { + "provider": "Nginx.NginxPlus", + "resource": "deployments", + "operation": "write", + "description": "Write deployments resource" + } + } + ], + "nextLink": null + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Create.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Create.json new file mode 100644 index 000000000000..75e822c1ac3c --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Create.json @@ -0,0 +1,61 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "wafPolicyName": "myWafPolicy", + "requestBody": { + "properties": { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + } + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "properties": { + "provisioningState": "Succeeded", + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "compilingState": { + "code": "Succeeded", + "displayStatus": "Succeeded", + "time": "2025-03-02T10:05:00.000Z" + }, + "applyingState": { + "code": "NotApplied", + "displayStatus": "Not Applied", + "time": "2025-03-02T10:05:00.000Z" + } + } + } + }, + "201": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "properties": { + "provisioningState": "Accepted", + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "compilingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + }, + "applyingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + } + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Delete.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Delete.json new file mode 100644 index 000000000000..60d8f6e262f1 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Delete.json @@ -0,0 +1,17 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Get.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Get.json new file mode 100644 index 000000000000..7e95d9c5f9bb --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_Get.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "200": { + "body": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "properties": { + "provisioningState": "Succeeded", + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + } + } + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_List.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_List.json new file mode 100644 index 000000000000..e56cca50c448 --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/examples/WafPolicy_List.json @@ -0,0 +1,55 @@ +{ + "parameters": { + "api-version": "2025-03-01-preview", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "resourceGroupName": "myResourceGroup", + "deploymentName": "myDeployment" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/wafPolicies/wafPolicy1", + "name": "wafPolicy1", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "properties": { + "provisioningState": "Succeeded", + "filepath": "/etc/nginx/waf/policy.conf", + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + } + } + }, + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/NGINX.NGINXPLUS/nginxDeployments/myDeployment/wafPolicies/wafPolicy2", + "name": "wafPolicy2", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "properties": { + "provisioningState": "Succeeded", + "filepath": "/etc/nginx/waf/policy.conf", + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + } + } + } + ], + "nextLink": "https://management.azure.com/.../wafPolicies?api-version=2025-03-01-preview&$skiptoken=..." + } + } + } +} diff --git a/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/swagger.json b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/swagger.json new file mode 100644 index 000000000000..c92bfc7131fb --- /dev/null +++ b/specification/nginx/resource-manager/NGINX.NGINXPLUS/preview/2025-03-01-preview/swagger.json @@ -0,0 +1,2850 @@ +{ + "swagger": "2.0", + "info": { + "title": "Nginx.NginxPlus", + "version": "2025-03-01-preview" + }, + "host": "management.azure.com", + "schemes": [ + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "flow": "implicit", + "description": "Azure Active Directory OAuth2 Flow", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "paths": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/apiKeys/{apiKeyName}": { + "put": { + "tags": [ + "NginxApiKey" + ], + "summary": "Create or update an API Key for the Nginx deployment in order to access the dataplane API endpoint", + "operationId": "ApiKeys_CreateOrUpdate", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ApiKeyNameParameter" + }, + { + "in": "body", + "name": "body", + "description": "The API Key object containing fields (e.g. secret text, expiration date) to upsert the key.", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyRequest" + } + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The API Key was successfully updated and returned.", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "201": { + "description": "The API Key was successfully created and returned.", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_CreateOrUpdate": { + "$ref": "./examples/ApiKeys_CreateOrUpdate.json" + } + } + }, + "delete": { + "tags": [ + "NginxApiKey" + ], + "summary": "Delete API key for Nginx deployment", + "operationId": "ApiKeys_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ApiKeyNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "204": { + "description": "The API key resource does not exist." + }, + "200": { + "description": "The API key was successfully deleted." + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_Delete": { + "$ref": "./examples/ApiKeys_Delete.json" + } + } + }, + "get": { + "tags": [ + "NginxApiKey" + ], + "summary": "Get the specified API Key of the given Nginx deployment", + "operationId": "ApiKeys_Get", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ApiKeyNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the API Key", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_Get": { + "$ref": "./examples/ApiKeys_Get.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/apiKeys": { + "get": { + "tags": [ + "NginxApiKey" + ], + "summary": "List all API Keys of the given Nginx deployment", + "operationId": "ApiKeys_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed the Deployment's API Keys", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "ApiKeys_List": { + "$ref": "./examples/ApiKeys_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/certificates/{certificateName}": { + "get": { + "tags": [ + "NginxCertificate" + ], + "summary": "Get a certificate of given NGINX deployment", + "operationId": "Certificates_Get", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/CertificateNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the Certificate", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Certificates_Get": { + "$ref": "./examples/Certificates_Get.json" + } + } + }, + "put": { + "tags": [ + "NginxCertificate" + ], + "summary": "Create or update the NGINX certificates for given NGINX deployment", + "operationId": "Certificates_CreateOrUpdate", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/CertificateNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "in": "body", + "name": "body", + "description": "The certificate", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + } + ], + "responses": { + "200": { + "description": "Successfully Created or Updated the Certificate", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "201": { + "description": "Certificate upsert accepted for provisioning", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "Certificates_CreateOrUpdate": { + "$ref": "./examples/Certificates_CreateOrUpdate.json" + } + } + }, + "delete": { + "tags": [ + "NginxCertificate" + ], + "summary": "Deletes a certificate from the NGINX deployment", + "operationId": "Certificates_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/CertificateNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Certificate deletion accepted", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + }, + "Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + } + }, + "204": { + "description": "Successfully deleted the certificate" + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "Certificates_Delete": { + "$ref": "./examples/Certificates_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/certificates": { + "get": { + "tags": [ + "NginxCertificate" + ], + "summary": "List all certificates of given NGINX deployment", + "operationId": "Certificates_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed the deployment's certificates", + "schema": { + "$ref": "#/definitions/NginxCertificateListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "Certificates_List": { + "$ref": "./examples/Certificates_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations": { + "get": { + "tags": [ + "NginxConfiguration" + ], + "summary": "List the NGINX configuration of given NGINX deployment.", + "operationId": "Configurations_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the deployment's configurations", + "schema": { + "$ref": "#/definitions/NginxConfigurationListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "Configurations_List": { + "$ref": "./examples/Configurations_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations/{configurationName}": { + "get": { + "tags": [ + "NginxConfiguration" + ], + "summary": "Get the NGINX configuration of given NGINX deployment", + "operationId": "Configurations_Get", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ConfigurationNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the deployment's configuration", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_Get": { + "$ref": "./examples/Configurations_Get.json" + } + } + }, + "put": { + "tags": [ + "NginxConfiguration" + ], + "summary": "Create or update the NGINX configuration for given NGINX deployment", + "operationId": "Configurations_CreateOrUpdate", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ConfigurationNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "in": "body", + "name": "body", + "description": "The NGINX configuration", + "schema": { + "$ref": "#/definitions/NginxConfigurationRequest" + } + } + ], + "responses": { + "200": { + "description": "Successfully Created or Updated the configuration", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "201": { + "description": "Configuration upsert accepted for provisioning", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "Configurations_CreateOrUpdate": { + "$ref": "./examples/Configurations_CreateOrUpdate.json" + } + } + }, + "delete": { + "tags": [ + "NginxConfiguration" + ], + "summary": "Reset the NGINX configuration of given NGINX deployment to default", + "operationId": "Configurations_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ConfigurationNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Configuration deletion accepted", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + }, + "Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + } + }, + "204": { + "description": "Configuration successfully deleted" + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "Configurations_Delete": { + "$ref": "./examples/Configurations_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations/{configurationName}/analyze": { + "post": { + "tags": [ + "NginxConfigurationAnalysis" + ], + "summary": "Analyze an NGINX configuration without applying it to the NGINXaaS deployment", + "operationId": "Configurations_Analysis", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/ConfigurationNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "name": "body", + "in": "body", + "description": "The NGINX configuration to analyze", + "schema": { + "$ref": "#/definitions/AnalysisCreate" + } + } + ], + "responses": { + "200": { + "description": "Successfully completed configuration analysis", + "schema": { + "$ref": "#/definitions/AnalysisResult" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_Analysis": { + "$ref": "./examples/Configurations_Analysis.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}": { + "get": { + "tags": [ + "NginxDeployment" + ], + "summary": "Get the NGINX deployment", + "operationId": "Deployments_Get", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the deployment", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_Get": { + "$ref": "./examples/Deployments_Get.json" + }, + "Deployments_Get_AutoScale": { + "$ref": "./examples/Deployments_Get_AutoScale.json" + } + } + }, + "put": { + "tags": [ + "NginxDeployment" + ], + "summary": "Create or update the NGINX deployment", + "operationId": "Deployments_CreateOrUpdate", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "in": "body", + "name": "body", + "description": "The Nginx deployment", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + } + ], + "responses": { + "200": { + "description": "Successfully Created or Updated the deployment", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "201": { + "description": "Deployment upsert accepted for provisioning", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "Deployments_Create": { + "$ref": "./examples/Deployments_Create.json" + } + } + }, + "patch": { + "tags": [ + "NginxDeployment" + ], + "summary": "Update the NGINX deployment", + "operationId": "Deployments_Update", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "in": "body", + "name": "body", + "description": "The Nginx deployment update parameters", + "schema": { + "$ref": "#/definitions/NginxDeploymentUpdateParameters" + } + } + ], + "responses": { + "200": { + "description": "Deployment PATCH successful", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "202": { + "description": "Deployment PATCH accepted", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + }, + "Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_Update": { + "$ref": "./examples/Deployments_Update.json" + }, + "Deployments_UpdateSubnet": { + "$ref": "./examples/Deployments_UpdateSubnet.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + }, + "delete": { + "tags": [ + "NginxDeployment" + ], + "summary": "Delete the NGINX deployment resource", + "operationId": "Deployments_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Deployment deletion accepted", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + }, + "Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + } + }, + "204": { + "description": "Deployment successfully deleted" + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "Deployments_Delete": { + "$ref": "./examples/Deployments_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/providers/Nginx.NginxPlus/nginxDeployments": { + "get": { + "tags": [ + "NginxDeployment" + ], + "summary": "List the NGINX deployments resources", + "operationId": "Deployments_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed all deployments under the subscription", + "schema": { + "$ref": "#/definitions/NginxDeploymentListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "Deployments_List": { + "$ref": "./examples/Deployments_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments": { + "get": { + "tags": [ + "NginxDeployment" + ], + "summary": "List all NGINX deployments under the specified resource group.", + "operationId": "Deployments_ListByResourceGroup", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed all deployments under the resource group", + "schema": { + "$ref": "#/definitions/NginxDeploymentListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "Deployments_ListByResourceGroup": { + "$ref": "./examples/Deployments_ListByResourceGroup.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/wafPolicies/{wafPolicyName}": { + "get": { + "tags": [ + "NginxWafPolicy" + ], + "summary": "Get the Nginx Waf Policy of given Nginx deployment", + "operationId": "WafPolicy_Get", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/WafPolicyNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully retrieved the custom Waf Policy", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "WafPolicy_Get": { + "$ref": "./examples/WafPolicy_Get.json" + } + } + }, + "put": { + "tags": [ + "NginxWafPolicy" + ], + "summary": "Create or update the Nginx Waf Policy for given Nginx deployment", + "operationId": "WafPolicy_Create", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/WafPolicyNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "in": "body", + "name": "body", + "description": "The Nginx Deployment Waf Policy", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + } + ], + "responses": { + "200": { + "description": "Successfully Created or Updated the custom Waf Policy", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + }, + "201": { + "description": "Custom Waf Policy upsert accepted for provisioning", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + }, + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + }, + "x-ms-examples": { + "WafPolicy_Create": { + "$ref": "./examples/WafPolicy_Create.json" + } + } + }, + "delete": { + "tags": [ + "NginxWafPolicy" + ], + "summary": "Reset the Nginx Waf Policy of given Nginx deployment to default", + "operationId": "WafPolicy_Delete", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "#/parameters/WafPolicyNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "202": { + "description": "Custom Waf Policy deletion accepted", + "headers": { + "Retry-After": { + "description": "Number of seconds to wait before retrying or until the operation is likely to complete", + "type": "integer", + "format": "int32" + }, + "Operation-Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + }, + "Location": { + "description": "The URL to poll for the status of this asynchronous operation", + "type": "string" + } + } + }, + "204": { + "description": "Successfully deleted the custom Waf Policy" + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-examples": { + "WafPolicy_Delete": { + "$ref": "./examples/WafPolicy_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/listDefaultWafPolicies": { + "post": { + "tags": [ + "NginxWafPolicy" + ], + "summary": "Get the Nginx Waf Policy of given Nginx deployment", + "operationId": "DefaultWafPolicy_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed the deployment's default Waf policies", + "schema": { + "$ref": "#/definitions/NginxDeploymentDefaultWafPolicyListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "DefaultWafPolicy_List": { + "$ref": "./examples/DefaultWafPolicy_List.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/wafPolicies": { + "get": { + "tags": [ + "NginxWafPolicy" + ], + "summary": "List Waf Policies of given Nginx deployment", + "operationId": "WafPolicy_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/DeploymentNameParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Successfully listed all deployment's custom Waf policies", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicyListResponse" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "WafPolicy_List": { + "$ref": "./examples/WafPolicy_List.json" + } + } + } + }, + "/providers/Nginx.NginxPlus/operations": { + "get": { + "tags": [ + "NginxDeployment" + ], + "summary": "List all operations provided by Nginx.NginxPlus for the 2024-11-01-preview api version.", + "operationId": "Operations_List", + "produces": [ + "application/json" + ], + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "Default error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + }, + "x-ms-examples": { + "Operations_List": { + "$ref": "./examples/Operations_List.json" + } + } + } + } + }, + "definitions": { + "ScaleProfile": { + "type": "object", + "description": "The autoscale profile.", + "required": [ + "name", + "capacity" + ], + "properties": { + "name": { + "type": "string", + "example": "ExampleProfile" + }, + "capacity": { + "type": "object", + "required": [ + "min", + "max" + ], + "description": "The capacity parameters of the profile.", + "x-ms-client-flatten": true, + "properties": { + "min": { + "type": "integer", + "format": "int32", + "description": "The minimum number of NCUs the deployment can be autoscaled to.", + "minimum": 0 + }, + "max": { + "type": "integer", + "format": "int32", + "description": "The maximum number of NCUs the deployment can be autoscaled to.", + "minimum": 0 + } + } + } + } + }, + "AutoUpgradeProfile": { + "type": "object", + "description": "Autoupgrade settings of a deployment.", + "required": [ + "upgradeChannel" + ], + "properties": { + "upgradeChannel": { + "description": "Channel used for autoupgrade.", + "type": "string", + "example": "stable" + } + } + }, + "ProvisioningState": { + "enum": [ + "Accepted", + "Creating", + "Updating", + "Deleting", + "Succeeded", + "Failed", + "Canceled", + "Deleted", + "NotSpecified" + ], + "type": "string", + "title": "Provisioning State", + "readOnly": true, + "x-ms-enum": { + "modelAsString": true, + "name": "ProvisioningState" + } + }, + "NginxCertificateProperties": { + "type": "object", + "title": "Nginx Certificate Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "keyVirtualPath": { + "type": "string" + }, + "certificateVirtualPath": { + "type": "string" + }, + "keyVaultSecretId": { + "type": "string" + }, + "sha1Thumbprint": { + "type": "string", + "example": "1234567890ABCDEF1234567890ABCDEF12345678", + "readOnly": true + }, + "keyVaultSecretVersion": { + "type": "string", + "example": "12345678ef9a12345678ef9a12345678", + "readOnly": true + }, + "keyVaultSecretCreated": { + "type": "string", + "format": "date-time", + "example": "2022-01-01T00:00:00.000Z", + "readOnly": true + }, + "certificateError": { + "$ref": "#/definitions/NginxCertificateErrorResponseBody" + } + } + }, + "NginxCertificateErrorResponseBody": { + "type": "object", + "title": "Nginx Certificate Error Response Body", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "NginxCertificate": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Certificate", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxCertificateProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxCertificateListResponse": { + "type": "object", + "title": "Nginx Certificate List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "nextLink": { + "type": "string" + } + } + }, + "NginxConfigurationFile": { + "type": "object", + "title": "Nginx Configuration File", + "properties": { + "content": { + "type": "string" + }, + "virtualPath": { + "type": "string" + } + } + }, + "NginxConfigurationProtectedFileRequest": { + "type": "object", + "title": "Nginx Configuration Protected File Request", + "properties": { + "content": { + "type": "string", + "x-ms-secret": true, + "description": "The content of the protected file. This value is a PUT only value. If you perform a GET request on this value, it will be empty because it is a protected file." + }, + "virtualPath": { + "type": "string", + "description": "The virtual path of the protected file.", + "example": "/etc/nginx/protected-file.cert" + }, + "contentHash": { + "type": "string", + "description": "The hash of the content of the file. This value is used to determine if the file has changed.", + "example": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF" + } + } + }, + "NginxConfigurationProtectedFileResponse": { + "type": "object", + "title": "Nginx Configuration Protected File Response", + "properties": { + "virtualPath": { + "type": "string", + "description": "The virtual path of the protected file.", + "example": "/etc/nginx/protected-file.cert" + }, + "contentHash": { + "type": "string", + "description": "The hash of the content of the file. This value is used to determine if the file has changed.", + "example": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF" + } + } + }, + "NginxConfigurationPackage": { + "type": "object", + "title": "Nginx Configuration Package", + "properties": { + "data": { + "type": "string" + }, + "protectedFiles": { + "type": "array", + "items": { + "type": "string" + }, + "x-ms-identifiers": [] + } + } + }, + "NginxConfigurationResponseProperties": { + "type": "object", + "title": "Nginx Configuration Response Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationFile" + }, + "x-ms-identifiers": [] + }, + "protectedFiles": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationProtectedFileResponse" + }, + "x-ms-identifiers": [] + }, + "package": { + "$ref": "#/definitions/NginxConfigurationPackage" + }, + "rootFile": { + "type": "string" + } + } + }, + "NginxConfigurationRequestProperties": { + "type": "object", + "title": "Nginx Configuration Request Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationFile" + }, + "x-ms-identifiers": [] + }, + "protectedFiles": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationProtectedFileRequest" + }, + "x-ms-identifiers": [] + }, + "package": { + "$ref": "#/definitions/NginxConfigurationPackage" + }, + "rootFile": { + "type": "string" + } + } + }, + "NginxConfigurationResponse": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Configuration Response", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxConfigurationResponseProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxConfigurationRequest": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Configuration Request", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxConfigurationRequestProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxConfigurationListResponse": { + "description": "Response of a list operation.", + "type": "object", + "title": "Nginx Configuration List Response", + "properties": { + "value": { + "description": "Results of a list operation.", + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "nextLink": { + "description": "Link to the next set of results, if any.", + "type": "string" + } + } + }, + "IdentityType": { + "enum": [ + "SystemAssigned", + "UserAssigned", + "SystemAssigned, UserAssigned", + "None" + ], + "type": "string", + "title": "Identity Type", + "x-ms-enum": { + "modelAsString": true, + "name": "IdentityType" + } + }, + "UserIdentityProperties": { + "type": "object", + "title": "User Identity Properties", + "properties": { + "principalId": { + "type": "string", + "readOnly": true + }, + "clientId": { + "type": "string", + "readOnly": true + } + } + }, + "ResourceSku": { + "required": [ + "name" + ], + "type": "object", + "title": "Resource Sku", + "properties": { + "name": { + "description": "Name of the SKU.", + "type": "string" + } + } + }, + "IdentityProperties": { + "type": "object", + "title": "Identity Properties", + "properties": { + "principalId": { + "type": "string", + "readOnly": true + }, + "tenantId": { + "type": "string", + "readOnly": true + }, + "type": { + "$ref": "#/definitions/IdentityType" + }, + "userAssignedIdentities": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/UserIdentityProperties" + } + } + } + }, + "NginxPrivateIPAllocationMethod": { + "enum": [ + "Static", + "Dynamic" + ], + "type": "string", + "title": "Nginx Private IP Allocation Method", + "x-ms-enum": { + "modelAsString": true, + "name": "NginxPrivateIPAllocationMethod" + } + }, + "NginxPrivateIPAddress": { + "type": "object", + "title": "Nginx Private IP Address", + "properties": { + "privateIPAddress": { + "type": "string" + }, + "privateIPAllocationMethod": { + "$ref": "#/definitions/NginxPrivateIPAllocationMethod" + }, + "subnetId": { + "type": "string" + } + } + }, + "NginxPublicIPAddress": { + "type": "object", + "title": "Nginx Public IP Address", + "properties": { + "id": { + "type": "string" + } + } + }, + "NginxFrontendIPConfiguration": { + "type": "object", + "title": "Nginx Frontend IP Configuration", + "properties": { + "publicIPAddresses": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxPublicIPAddress" + }, + "x-ms-identifiers": [] + }, + "privateIPAddresses": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxPrivateIPAddress" + }, + "x-ms-identifiers": [] + } + } + }, + "NginxNetworkInterfaceConfiguration": { + "type": "object", + "title": "Nginx Network Interface Configuration", + "properties": { + "subnetId": { + "type": "string" + } + } + }, + "NginxNetworkProfile": { + "title": "Nginx Network Profile", + "type": "object", + "properties": { + "frontEndIPConfiguration": { + "$ref": "#/definitions/NginxFrontendIPConfiguration" + }, + "networkInterfaceConfiguration": { + "$ref": "#/definitions/NginxNetworkInterfaceConfiguration" + } + } + }, + "NginxStorageAccount": { + "type": "object", + "title": "Nginx Storage Account", + "properties": { + "accountName": { + "type": "string" + }, + "containerName": { + "type": "string" + } + } + }, + "NginxLogging": { + "type": "object", + "title": "Nginx Logging", + "properties": { + "storageAccount": { + "$ref": "#/definitions/NginxStorageAccount" + } + } + }, + "NginxDeploymentScalingProperties": { + "type": "object", + "description": "Information on how the deployment will be scaled.", + "properties": { + "capacity": { + "format": "int32", + "type": "integer", + "example": 20 + }, + "autoScaleSettings": { + "type": "object", + "required": [ + "profiles" + ], + "description": "The settings for enabling automatic scaling of the deployment. If this field is specified, 'scale.capacity' must be empty.", + "x-ms-client-flatten": true, + "properties": { + "profiles": { + "type": "array", + "items": { + "$ref": "#/definitions/ScaleProfile" + }, + "x-ms-identifiers": [] + } + } + } + } + }, + "NginxDeploymentUserProfile": { + "type": "object", + "title": "Nginx Deployment User Profile", + "properties": { + "preferredEmail": { + "type": "string", + "format": "email", + "pattern": "^$|^[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}$", + "description": "The preferred support contact email address of the user used for sending alerts and notification. Can be an empty string or a valid email address.", + "example": [ + "", + "john.doe@example.com", + "tom@example.com" + ] + } + } + }, + "NginxDeploymentProperties": { + "type": "object", + "title": "Nginx Deployment Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "nginxVersion": { + "type": "string", + "readOnly": true + }, + "networkProfile": { + "$ref": "#/definitions/NginxNetworkProfile" + }, + "ipAddress": { + "type": "string", + "description": "The IP address of the deployment.", + "readOnly": true + }, + "enableDiagnosticsSupport": { + "type": "boolean" + }, + "logging": { + "$ref": "#/definitions/NginxLogging" + }, + "scalingProperties": { + "$ref": "#/definitions/NginxDeploymentScalingProperties" + }, + "autoUpgradeProfile": { + "$ref": "#/definitions/AutoUpgradeProfile" + }, + "userProfile": { + "$ref": "#/definitions/NginxDeploymentUserProfile" + }, + "nginxAppProtect": { + "type": "object", + "description": "Settings for NGINX App Protect (NAP)", + "required": [ + "webApplicationFirewallSettings" + ], + "x-ms-client-flatten": true, + "properties": { + "webApplicationFirewallSettings": { + "$ref": "#/definitions/WebApplicationFirewallSettings" + }, + "webApplicationFirewallStatus": { + "$ref": "#/definitions/WebApplicationFirewallStatus", + "readOnly": true + } + } + }, + "dataplaneApiEndpoint": { + "type": "string", + "description": "Dataplane API endpoint for the caller to update the NGINX state of the deployment.", + "readOnly": true + } + } + }, + "NginxDeployment": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Deployment", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "identity": { + "$ref": "#/definitions/IdentityProperties" + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentProperties" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "sku": { + "$ref": "#/definitions/ResourceSku" + }, + "location": { + "type": "string", + "x-ms-mutability": [ + "read", + "create" + ], + "description": "The geo-location where the resource lives" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxDeploymentUpdateProperties": { + "type": "object", + "title": "Nginx Deployment Update Properties", + "properties": { + "enableDiagnosticsSupport": { + "type": "boolean" + }, + "logging": { + "$ref": "#/definitions/NginxLogging" + }, + "scalingProperties": { + "$ref": "#/definitions/NginxDeploymentScalingProperties" + }, + "userProfile": { + "$ref": "#/definitions/NginxDeploymentUserProfile" + }, + "networkProfile": { + "$ref": "#/definitions/NginxNetworkProfile" + }, + "autoUpgradeProfile": { + "$ref": "#/definitions/AutoUpgradeProfile" + }, + "nginxAppProtect": { + "type": "object", + "description": "Update settings for NGINX App Protect (NAP)", + "x-ms-client-flatten": true, + "properties": { + "webApplicationFirewallSettings": { + "$ref": "#/definitions/WebApplicationFirewallSettings" + } + } + } + } + }, + "NginxDeploymentUpdateParameters": { + "type": "object", + "title": "Nginx Deployment Update Parameters", + "properties": { + "identity": { + "$ref": "#/definitions/IdentityProperties" + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "sku": { + "$ref": "#/definitions/ResourceSku" + }, + "location": { + "type": "string", + "x-ms-mutability": [ + "read", + "create" + ], + "description": "The geo-location where the resource lives" + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentUpdateProperties" + } + } + }, + "NginxDeploymentListResponse": { + "type": "object", + "title": "Nginx Deployment List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "nextLink": { + "type": "string" + } + } + }, + "NginxDeploymentApiKeyRequestProperties": { + "type": "object", + "title": "Nginx Deployment Api Key Request Properties", + "properties": { + "secretText": { + "type": "string", + "format": "password", + "description": "Secret text to be used as a Dataplane API Key. This is a write only property that can never be read back, but the first three characters will be returned in the 'hint' property.", + "x-ms-secret": true + }, + "endDateTime": { + "format": "date-time", + "type": "string", + "description": "The time after which this Dataplane API Key is no longer valid." + } + } + }, + "NginxDeploymentApiKeyResponseProperties": { + "type": "object", + "title": "Nginx Deployment Api Key Response Properties", + "properties": { + "hint": { + "type": "string", + "readOnly": true, + "description": "The first three characters of the secret text to help identify it in use. This property is read-only." + }, + "endDateTime": { + "format": "date-time", + "type": "string", + "description": "The time after which this Dataplane API Key is no longer valid." + } + } + }, + "NginxDeploymentApiKeyRequest": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Deployment Api Key Request", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentApiKeyRequestProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxDeploymentApiKeyResponse": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Deployment Api Key Response", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponseProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxDeploymentApiKeyListResponse": { + "type": "object", + "title": "Nginx Deployment Api Key List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "nextLink": { + "type": "string" + } + } + }, + "OperationDisplay": { + "description": "The object that represents the operation.", + "type": "object", + "properties": { + "provider": { + "description": "Service provider: Nginx.NginxPlus", + "type": "string" + }, + "resource": { + "description": "Type on which the operation is performed, e.g., 'deployments'.", + "type": "string" + }, + "operation": { + "description": "Operation type, e.g., read, write, delete, etc.", + "type": "string" + }, + "description": { + "description": "Description of the operation, e.g., 'Write deployments'.", + "type": "string" + } + } + }, + "OperationResult": { + "description": "A Nginx.NginxPlus REST API operation.", + "type": "object", + "properties": { + "name": { + "description": "Operation name: {provider}/{resource}/{operation}", + "type": "string" + }, + "display": { + "description": "The object that represents the operation.", + "$ref": "#/definitions/OperationDisplay" + }, + "isDataAction": { + "description": "Indicates whether the operation is a data action", + "type": "boolean" + } + } + }, + "AnalysisCreate": { + "type": "object", + "description": "The request body for creating an analysis for an NGINX configuration.", + "properties": { + "config": { + "type": "object", + "x-ms-client-flatten": true, + "properties": { + "rootFile": { + "type": "string", + "description": "The root file of the NGINX config file(s). It must match one of the files' filepath." + }, + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationFile" + }, + "x-ms-identifiers": [] + }, + "protectedFiles": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationProtectedFileRequest" + }, + "x-ms-identifiers": [] + }, + "package": { + "$ref": "#/definitions/NginxConfigurationPackage" + } + } + } + }, + "required": [ + "config" + ] + }, + "AnalysisResult": { + "type": "object", + "description": "The response body for an analysis request. Contains the status of the analysis and any errors.", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "description": "The status of the analysis." + }, + "data": { + "type": "object", + "x-ms-client-flatten": true, + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/AnalysisDiagnostic" + } + }, + "diagnostics": { + "type": "array", + "items": { + "$ref": "#/definitions/DiagnosticItem" + } + } + } + } + } + }, + "AnalysisDiagnostic": { + "type": "object", + "description": "An error object found during the analysis of an NGINX configuration.", + "required": [ + "directive", + "description", + "file", + "line", + "message", + "rule" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the error" + }, + "directive": { + "type": "string", + "example": "worker_processes" + }, + "description": { + "type": "string", + "example": "Directives outside the http context are not allowed" + }, + "file": { + "type": "string", + "description": "the filepath of the most relevant config file", + "example": "nginx.conf" + }, + "line": { + "type": "number", + "example": 2 + }, + "message": { + "type": "string", + "example": "You are not allowed to set the worker_processes directive" + }, + "rule": { + "type": "string", + "example": "nginx-azure-load-balancer-allowed-directives" + } + } + }, + "DiagnosticItem": { + "type": "object", + "description": "A diagnostic is a message associated with an NGINX config. The Analyzer returns diagnostics with a level indicating the importance of the diagnostic with optional category.", + "required": [ + "directive", + "description", + "file", + "line", + "message", + "rule", + "level" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the diagnostic." + }, + "directive": { + "type": "string", + "example": "worker_processes" + }, + "description": { + "type": "string", + "example": "Some directives cannot be overridden by the user provided configuration." + }, + "file": { + "type": "string", + "description": "The filepath of the most relevant config file.", + "example": "nginx.conf" + }, + "line": { + "type": "number", + "example": 2 + }, + "message": { + "type": "string", + "example": "The value will be overridden with `4000`." + }, + "rule": { + "type": "string", + "example": "overridden directives" + }, + "level": { + "type": "string", + "enum": [ + "Info", + "Warning" + ], + "description": "Warning or Info", + "x-ms-enum": { + "modelAsString": true, + "name": "level" + }, + "example": "Warning" + }, + "category": { + "type": "string", + "description": "Category of warning like Best-practices, Recommendation, Security etc.", + "example": "Security" + } + } + }, + "WebApplicationFirewallSettings": { + "type": "object", + "description": "Settings for the NGINX App Protect Web Application Firewall (WAF)", + "properties": { + "activationState": { + "type": "string", + "enum": [ + "Enabled", + "Disabled" + ], + "description": "The activation state of the WAF. Use 'Enabled' to enable the WAF and 'Disabled' to disable it.", + "x-ms-enum": { + "modelAsString": true, + "name": "activationState" + } + } + } + }, + "WebApplicationFirewallStatus": { + "type": "object", + "description": "The status of the NGINX App Protect Web Application Firewall", + "properties": { + "wafRelease": { + "type": "string", + "example": "5.3.0", + "description": "NGINX App Protect WAF release version" + }, + "attackSignaturesPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "readOnly": true, + "description": "Package containing attack signatures for the NGINX App Protect Web Application Firewall (WAF)." + }, + "botSignaturesPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "readOnly": true, + "description": "Package containing bot signatures for the NGINX App Protect Web Application Firewall (WAF)." + }, + "threatCampaignsPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "readOnly": true, + "description": "Package containing threat campaigns for the NGINX App Protect Web Application Firewall (WAF)." + }, + "componentVersions": { + "$ref": "#/definitions/WebApplicationFirewallComponentVersions", + "readOnly": true, + "description": "Versions of the NGINX App Protect Web Application Firewall (WAF) components." + } + } + }, + "WebApplicationFirewallPackage": { + "type": "object", + "description": "NGINX App Protect Web Application Firewall (WAF) Package. Contains the version and revision date of the package.", + "required": [ + "version", + "revisionDatetime" + ], + "properties": { + "version": { + "type": "string", + "example": "2.02", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) package." + }, + "revisionDatetime": { + "type": "string", + "example": "2024-02-21T15:50:53Z", + "format": "date-time", + "description": "The date and time of the package revision." + } + } + }, + "WebApplicationFirewallComponentVersions": { + "type": "object", + "readOnly": true, + "required": [ + "wafEngineVersion", + "wafNginxVersion" + ], + "description": "Versions of the NGINX App Protect Web Application Firewall (WAF) components.", + "properties": { + "wafEngineVersion": { + "type": "string", + "example": "10.624.0", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) engine." + }, + "wafNginxVersion": { + "type": "string", + "example": "4.815.0", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) module for NGINX." + } + } + }, + "NginxDeploymentWafPolicy": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Deployment Waf Policy", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentWafPolicyProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyMetadata": { + "type": "object", + "x-ms-azure-resource": true, + "title": "Nginx Deployment Waf Policy Metadata", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentWafPolicyMetadataProperties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyApplyingStatus": { + "type": "object", + "title": "Nginx Deployment Waf Policy Applying Status", + "readOnly": true, + "properties": { + "code": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatusCode" + }, + "displayStatus": { + "type": "string", + "readOnly": true, + "description": "A readable string of the current status, and sometimes have the reason for the current state." + }, + "time": { + "type": "string", + "readOnly": true, + "description": "The date and time in UTC the current applying status was set." + } + } + }, + "NginxDeploymentWafPolicyApplyingStatusCode": { + "type": "string", + "example": "Applying", + "readOnly": true, + "description": "Machine readable code indicating the applying status code of a WAF Policy.", + "enum": [ + "NotApplied", + "Applying", + "Succeeded", + "Failed", + "Removing" + ], + "x-ms-enum": { + "modelAsString": true, + "name": "NginxDeploymentWafPolicyApplyingStatusCode", + "values": [ + { + "value": "NotApplied", + "description": "The policy is not referenced in the nginx config and not applied." + }, + { + "value": "Applying", + "description": "The policy is referenced in the nginx config and is applying." + }, + { + "value": "Succeeded", + "description": "The policy is referenced in the nginx config and that config has been successfully applied." + }, + { + "value": "Failed", + "description": "The policy is referenced in the nginx config and that config failed to apply." + }, + { + "value": "Removing", + "description": "The policy is now not referenced in the nginx config and its being removed from the applied nginx config." + } + ] + } + }, + "NginxDeploymentWafPolicyCompilingStatus": { + "type": "object", + "title": "Nginx Deployment Waf Policy Compiling Status", + "readOnly": true, + "properties": { + "code": { + "$ref": "#/definitions/NginxDeploymentWafPolicyCompilingStatusCode" + }, + "displayStatus": { + "type": "string", + "readOnly": true, + "description": "A readable string of the current status, and sometimes have the reason for the current state. If the CompilingStatus is Failed the Display Status will be The waf Policy failed to compile." + }, + "time": { + "type": "string", + "readOnly": true, + "description": "The date and time the policy was compiled in UTC." + } + } + }, + "NginxDeploymentWafPolicyCompilingStatusCode": { + "type": "string", + "example": "InProgress", + "readOnly": true, + "description": "Machine readable code indicating the compilation status of a WAF Policy.", + "enum": [ + "NotStarted", + "InProgress", + "Succeeded", + "Failed" + ], + "x-ms-enum": { + "modelAsString": true, + "name": "NginxDeploymentWafPolicyCompilingStatusCode", + "values": [ + { + "value": "NotStarted", + "description": "The compilation of the custom waf policy has not started" + }, + { + "value": "InProgress", + "description": "The compilation of the custom waf policy is in progress" + }, + { + "value": "Succeeded", + "description": "The compilation of the custom waf policy is completed successfully and can now be referenced in the nginx config." + }, + { + "value": "Failed", + "description": "The compilation of the custom waf policy failed." + } + ] + } + }, + "NginxDeploymentDefaultWafPolicyListResponse": { + "type": "object", + "title": "Nginx Deployment Default Waf Policy List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxDeploymentDefaultWafPolicyProperties" + }, + "x-ms-identifiers": [] + }, + "nextLink": { + "type": "string" + } + } + }, + "NginxDeploymentWafPolicyListResponse": { + "type": "object", + "title": "Nginx Deployment Waf Policy List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxDeploymentWafPolicyMetadata" + } + }, + "nextLink": { + "type": "string" + } + } + }, + "NginxDeploymentWafPolicyProperties": { + "type": "object", + "title": "Nginx Deployment Waf Policy Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "content": { + "format": "byte", + "type": "string", + "description": "The byte content of the Policy" + }, + "filepath": { + "type": "string", + "description": "The file path where the Policy is to be saved" + }, + "compilingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyCompilingStatus" + }, + "applyingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatus" + } + } + }, + "NginxDeploymentWafPolicyMetadataProperties": { + "type": "object", + "title": "Nginx Deployment Waf Policy Metadata Properties", + "properties": { + "filepath": { + "type": "string", + "readOnly": true + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState" + }, + "compilingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyCompilingStatus" + }, + "applyingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatus" + } + } + }, + "NginxDeploymentDefaultWafPolicyProperties": { + "type": "object", + "title": "Nginx Deployment Default Waf Policy Properties", + "properties": { + "content": { + "format": "byte", + "type": "string", + "readOnly": true + }, + "filepath": { + "type": "string", + "readOnly": true + } + } + } + }, + "parameters": { + "DeploymentNameParameter": { + "in": "path", + "name": "deploymentName", + "description": "The name of targeted NGINX deployment", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" + }, + "ApiKeyNameParameter": { + "in": "path", + "name": "apiKeyName", + "description": "The resource name of the API key", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" + }, + "CertificateNameParameter": { + "in": "path", + "name": "certificateName", + "description": "The name of certificate", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" + }, + "ConfigurationNameParameter": { + "in": "path", + "name": "configurationName", + "description": "The name of configuration, only 'default' is supported value due to the singleton of NGINX conf", + "pattern": "^[a-z][a-z0-9]*$", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" + }, + "WafPolicyNameParameter": { + "in": "path", + "name": "wafPolicyName", + "description": "The name of Waf Policy", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$", + "required": true, + "type": "string", + "x-ms-parameter-location": "method" + } + } +} diff --git a/specification/nginx/resource-manager/readme.md b/specification/nginx/resource-manager/readme.md index 80fa8f91311b..f5622b659b3d 100644 --- a/specification/nginx/resource-manager/readme.md +++ b/specification/nginx/resource-manager/readme.md @@ -28,7 +28,22 @@ These are the global settings for the Nginx API. title: NginxManagementClient openapi-type: arm openapi-subtype: rpaas -tag: package-2024-11-01-preview +tag: package-2025-03-01-preview +``` + +### Tag: package-2025-03-01-preview + +These settings apply only when `--tag=package-2025-03-01-preview` is specified on the command line. + +```yaml $(tag) == 'package-2025-03-01-preview' +input-file: + - NGINX.NGINXPLUS/preview/2025-03-01-preview/swagger.json +suppressions: + - code: GetCollectionResponseSchema + from: swagger.json + where: $.paths["/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/wafPolicies"] + reason: This is by design to avoid high bandwidth consumption + ``` ### Tag: package-2024-11-01-preview