diff --git a/specification/nginx/Nginx.Management/NginxDeploymentWafPolicy.tsp b/specification/nginx/Nginx.Management/NginxDeploymentWafPolicy.tsp index 686d769fbac7..3f187b8833be 100644 --- a/specification/nginx/Nginx.Management/NginxDeploymentWafPolicy.tsp +++ b/specification/nginx/Nginx.Management/NginxDeploymentWafPolicy.tsp @@ -2,11 +2,13 @@ import "@azure-tools/typespec-azure-core"; import "@azure-tools/typespec-azure-resource-manager"; import "@typespec/openapi"; import "@typespec/rest"; +import "@typespec/versioning"; import "./models.tsp"; import "./NginxDeployment.tsp"; using TypeSpec.Rest; using Azure.ResourceManager; +using TypeSpec.Versioning; using TypeSpec.Http; using TypeSpec.OpenAPI; @@ -49,12 +51,21 @@ interface NginxDeploymentWafPolicies { * Reset the Nginx Waf Policy of given Nginx deployment to default */ delete is ArmResourceDeleteWithoutOkAsync; + + /** + * Analyze an Nginx Waf Policy + */ + @added(Versions.v2025_11_01) + @action("analyzeWafPolicy") + analysis is ArmResourceActionSync< + NginxDeploymentWafPolicy, + NginxDeploymentWafPolicyAnalysisCreateRequest, + ArmResponse, + OptionalRequestBody = true + >; } @@doc(NginxDeploymentWafPolicy.name, "The name of Waf Policy"); @@doc(NginxDeploymentWafPolicy.properties, "Nginx Deployment Waf Policy Properties" ); -@@doc(NginxDeploymentWafPolicies.create::parameters.resource, - "The Nginx Deployment Waf Policy" -); diff --git a/specification/nginx/Nginx.Management/client.tsp b/specification/nginx/Nginx.Management/client.tsp index 2e6effb21f6d..081182d7d616 100644 --- a/specification/nginx/Nginx.Management/client.tsp +++ b/specification/nginx/Nginx.Management/client.tsp @@ -135,11 +135,14 @@ using Azure.Core; ); @@clientName(AnalysisResultData, "NginxAnalysisResultDetails", "csharp"); @@clientName(Level, "NginxDiagnosticLevel", "csharp"); -@@clientName(NginxConfigurationResponse, "NginxConfiguration", "csharp"); +@@clientName(NginxConfigurationResponse, + "NginxConfiguration", + "csharp,go,javascript" +); @@usage(NginxConfigurationResponse, Usage.input, "csharp"); @@clientName(NginxConfigurationResponseProperties, "NginxConfigurationProperties", - "csharp" + "csharp,go,javascript" ); @@clientName(NginxDeploymentApiKeyResponse, "NginxDeploymentApiKey", "csharp"); @@clientName(NginxDeploymentApiKeyResponseProperties, diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_CreateOrUpdate.json b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_CreateOrUpdate.json new file mode 100644 index 000000000000..c3a160228e69 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_CreateOrUpdate.json @@ -0,0 +1,41 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "secretText": "00000000-0000-0000-0000-000000000000" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + }, + "201": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + } + }, + "operationId": "ApiKeys_CreateOrUpdate", + "title": "ApiKeys_CreateOrUpdate" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Delete.json b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Delete.json new file mode 100644 index 000000000000..072b820f3160 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Delete.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": {}, + "204": {} + }, + "operationId": "ApiKeys_Delete", + "title": "ApiKeys_Delete" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Get.json b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Get.json new file mode 100644 index 000000000000..a9ed88064064 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_Get.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + } + }, + "operationId": "ApiKeys_Get", + "title": "ApiKeys_Get" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_List.json new file mode 100644 index 000000000000..8108ba8cf620 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/ApiKeys_List.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + }, + { + "name": "myApiKey2", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey2", + "properties": { + "endDateTime": "2024-10-01T00:00:00Z", + "hint": "111" + } + } + ] + } + } + }, + "operationId": "ApiKeys_List", + "title": "ApiKeys_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_CreateOrUpdate.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_CreateOrUpdate.json new file mode 100644 index 000000000000..62730b2dcb01 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_CreateOrUpdate.json @@ -0,0 +1,46 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded" + } + } + }, + "201": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Accepted" + } + } + } + }, + "operationId": "Certificates_CreateOrUpdate", + "title": "Certificates_CreateOrUpdate" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Delete.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Delete.json new file mode 100644 index 000000000000..f89eeeb4ab15 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Certificates_Delete", + "title": "Certificates_Delete" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Get.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Get.json new file mode 100644 index 000000000000..51cb8b13d1c1 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_Get.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "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'" + }, + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + } + } + }, + "operationId": "Certificates_Get", + "title": "Certificates_Get" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_List.json new file mode 100644 index 000000000000..c5ab62040b7f --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Certificates_List.json @@ -0,0 +1,51 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "cert1", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/cert1", + "properties": { + "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'" + }, + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + }, + { + "name": "cert2", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/cert2", + "properties": { + "certificateError": null, + "certificateVirtualPath": "/src/cert/somePath2.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID2", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey2.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + } + ] + } + } + }, + "operationId": "Certificates_List", + "title": "Certificates_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Analysis.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Analysis.json new file mode 100644 index 000000000000..7df7357b3198 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Analysis.json @@ -0,0 +1,45 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "config": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "data": { + "errors": [ + { + "description": "Directives outside the http context are not allowed", + "directive": "worker_processes", + "file": "/etc/nginx/nginx.conf", + "id": "config-analysis-error-1", + "line": 2, + "message": "You are not allowed to set the worker_processes directive", + "rule": "nginx-azure-load-balancer-allowed-directives" + } + ] + }, + "status": "FAILED" + } + } + }, + "operationId": "Configurations_Analysis", + "title": "Configurations_Analysis" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_CreateOrUpdate.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_CreateOrUpdate.json new file mode 100644 index 000000000000..6eab9e84e753 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_CreateOrUpdate.json @@ -0,0 +1,67 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + }, + "201": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "provisioningState": "Accepted", + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + }, + "operationId": "Configurations_CreateOrUpdate", + "title": "Configurations_CreateOrUpdate" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Delete.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Delete.json new file mode 100644 index 000000000000..901c9b365f73 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Configurations_Delete", + "title": "Configurations_Delete" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Get.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Get.json new file mode 100644 index 000000000000..170d629d57c7 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_Get.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "protectedFiles": [ + { + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF", + "virtualPath": "/etc/nginx/protected-file.cert" + } + ], + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + }, + "operationId": "Configurations_Get", + "title": "Configurations_Get" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_List.json new file mode 100644 index 000000000000..40cdbdc0ff63 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Configurations_List.json @@ -0,0 +1,42 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "protectedFiles": [ + { + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF", + "virtualPath": "/etc/nginx/protected-file.cert" + } + ], + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + ] + } + } + }, + "operationId": "Configurations_List", + "title": "Configurations_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/DefaultWafPolicy_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/DefaultWafPolicy_List.json new file mode 100644 index 000000000000..36e877b76eda --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/DefaultWafPolicy_List.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "nextLink": "https://management.azure.com/...&$skiptoken=...", + "value": [ + { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + ] + } + } + }, + "operationId": "DefaultWafPolicy_List", + "title": "DefaultWafPolicy_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Create.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Create.json new file mode 100644 index 000000000000..7a9bd4f93da2 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Create.json @@ -0,0 +1,165 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "name": "myDeployment", + "location": "West US", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "201": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Accepted", + "scalingProperties": { + "capacity": 10 + } + }, + "tags": { + "Environment": "Dev" + } + } + } + }, + "operationId": "Deployments_CreateOrUpdate", + "title": "Deployments_Create" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Delete.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Delete.json new file mode 100644 index 000000000000..b0b3865b0f06 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Delete.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Deployments_Delete", + "title": "Deployments_Delete" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get.json new file mode 100644 index 000000000000..0a07d30364c8 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get.json @@ -0,0 +1,76 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + } + } + } + }, + "operationId": "Deployments_Get", + "title": "Deployments_Get" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get_AutoScale.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get_AutoScale.json new file mode 100644 index 000000000000..4447cdccebcb --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Get_AutoScale.json @@ -0,0 +1,62 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "autoScaleSettings": { + "profiles": [ + { + "name": "ExampleProfile", + "capacity": { + "max": 50, + "min": 10 + } + } + ] + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + } + } + } + }, + "operationId": "Deployments_Get", + "title": "Deployments_Get_AutoScale" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_List.json new file mode 100644 index 000000000000..b4794153fe8c --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_List.json @@ -0,0 +1,76 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + } + } + ] + } + } + }, + "operationId": "Deployments_List", + "title": "Deployments_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_ListByResourceGroup.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_ListByResourceGroup.json new file mode 100644 index 000000000000..c5a0a70acaf2 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_ListByResourceGroup.json @@ -0,0 +1,77 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + } + } + ] + } + } + }, + "operationId": "Deployments_ListByResourceGroup", + "title": "Deployments_ListByResourceGroup" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Update.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Update.json new file mode 100644 index 000000000000..56990004e6c8 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_Update.json @@ -0,0 +1,97 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "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-11-01" + } + } + }, + "operationId": "Deployments_Update", + "title": "Deployments_Update" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_UpdateSubnet.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_UpdateSubnet.json new file mode 100644 index 000000000000..620b7bcaa066 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Deployments_UpdateSubnet.json @@ -0,0 +1,91 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "networkProfile": { + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "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-11-01" + } + } + }, + "operationId": "Deployments_Update", + "title": "Deployments_UpdateSubnet" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/NginxDeploymentWafPolicies_Analysis.json b/specification/nginx/Nginx.Management/examples/2025-11-01/NginxDeploymentWafPolicies_Analysis.json new file mode 100644 index 000000000000..c9881fd6de92 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/NginxDeploymentWafPolicies_Analysis.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "wafPolicyName": "myWafPolicy", + "requestBody": { + "content": "ABCDEF==", + "filePath": "/etc/nginx/nginx.conf" + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "status": "Failed", + "data": { + "errors": [ + { + "code": "InvalidWafRule", + "field": "MyWafRulefield", + "message": "The WAF rule is invalid" + } + ] + } + } + } + }, + "operationId": "NginxDeploymentWafPolicies_Analysis", + "title": "NginxDeploymentWafPolicies_Analysis" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/Operations_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/Operations_List.json new file mode 100644 index 000000000000..cb59ab363344 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/Operations_List.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "api-version": "2025-11-01" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "Nginx.NginxPlus/nginxDeployments/write", + "display": { + "description": "Write deployments resource", + "operation": "write", + "provider": "Nginx.NginxPlus", + "resource": "deployments" + } + } + ] + } + } + }, + "operationId": "Operations_List", + "title": "Operations_List" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Create.json b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Create.json new file mode 100644 index 000000000000..22f701e2ebb9 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Create.json @@ -0,0 +1,63 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "200": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "NotApplied", + "displayStatus": "Not Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Succeeded", + "time": "2025-03-02T10:05:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + }, + "201": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Accepted" + } + } + } + }, + "operationId": "WafPolicy_Create", + "title": "WafPolicy_Create" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Delete.json b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Delete.json new file mode 100644 index 000000000000..740e8d6ab4be --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "WafPolicy_Delete", + "title": "WafPolicy_Delete" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Get.json b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Get.json new file mode 100644 index 000000000000..8f11f8e476e1 --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_Get.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "200": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + } + }, + "operationId": "WafPolicy_Get", + "title": "WafPolicy_Get" +} diff --git a/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_List.json b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_List.json new file mode 100644 index 000000000000..fa2c70f7b64a --- /dev/null +++ b/specification/nginx/Nginx.Management/examples/2025-11-01/WafPolicy_List.json @@ -0,0 +1,57 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "nextLink": "https://management.azure.com/.../wafPolicies?api-version=2025-11-01&$skiptoken=...", + "value": [ + { + "name": "wafPolicy1", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/wafPolicy1", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + }, + { + "name": "wafPolicy2", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/wafPolicy2", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + ] + } + } + }, + "operationId": "WafPolicy_List", + "title": "WafPolicy_List" +} diff --git a/specification/nginx/Nginx.Management/main.tsp b/specification/nginx/Nginx.Management/main.tsp index 612a78580007..8cfc99193c1d 100644 --- a/specification/nginx/Nginx.Management/main.tsp +++ b/specification/nginx/Nginx.Management/main.tsp @@ -40,6 +40,11 @@ enum Versions { * The 2025-03-01-preview API version. */ v2025_03_01_preview: "2025-03-01-preview", + + /** + * The 2025-11-01 API version. + */ + v2025_11_01: "2025-11-01", } interface Operations extends Azure.ResourceManager.Operations {} diff --git a/specification/nginx/Nginx.Management/models.tsp b/specification/nginx/Nginx.Management/models.tsp index 61efd765a8f1..0c179aba1492 100644 --- a/specification/nginx/Nginx.Management/models.tsp +++ b/specification/nginx/Nginx.Management/models.tsp @@ -1,10 +1,12 @@ import "@typespec/rest"; import "@typespec/http"; +import "@typespec/versioning"; import "@azure-tools/typespec-azure-core"; import "@azure-tools/typespec-azure-resource-manager"; using Azure.ResourceManager; using Azure.ResourceManager.Foundations; +using TypeSpec.Versioning; namespace Nginx.NginxPlus; @@ -1163,6 +1165,71 @@ model NginxDeploymentWafPolicyMetadataProperties { applyingState?: NginxDeploymentWafPolicyApplyingStatus; } +/** + * Nginx Deployment Waf Policy Error + */ +@added(Versions.v2025_11_01) +model NginxDeploymentWafPolicyError { + /** + * Error code + */ + code?: string; + + /** + * Field that caused the error + */ + field?: string; + + /** + * Error message + */ + message?: string; +} + +/** + * Nginx Deployment Waf Policy Analysis Create Request + */ +@added(Versions.v2025_11_01) +model NginxDeploymentWafPolicyAnalysisCreateRequest { + /** + * The byte content of the policy + */ + content?: bytes; + + /** + * The absolute file path of the policy as in the virtual machine + */ + filepath?: string; +} + +/** + * Nginx Deployment Waf Policy Analysis Data + */ +@added(Versions.v2025_11_01) +model NginxDeploymentWafPolicyAnalysisData { + /** + * List of errors found during analysis + */ + @identifiers(#[]) + errors?: NginxDeploymentWafPolicyError[]; +} + +/** + * Nginx Deployment Waf Policy Analysis Response + */ +@added(Versions.v2025_11_01) +model NginxDeploymentWafPolicyAnalysisResponse { + /** + * The status of the analysis. The possible values can be arbitrary + */ + status?: string; + + /** + * The analysis data containing errors + */ + data?: NginxDeploymentWafPolicyAnalysisData; +} + /** * The object that represents the operation. */ diff --git a/specification/nginx/Nginx.Management/tspconfig.yaml b/specification/nginx/Nginx.Management/tspconfig.yaml index 2edbb3c54503..afd5ea50679a 100644 --- a/specification/nginx/Nginx.Management/tspconfig.yaml +++ b/specification/nginx/Nginx.Management/tspconfig.yaml @@ -11,8 +11,12 @@ options: output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/swagger.json" emit-lro-options: "all" examples-dir: "{project-root}/examples" - "@azure-typespec/http-client-csharp-mgmt": + arm-types-dir: "{project-root}/../../common-types/resource-management" + "@azure-tools/typespec-csharp": + flavor: azure namespace: "Azure.ResourceManager.Nginx" + clear-output-folder: true + model-namespace: true emitter-output-dir: "{output-dir}/{service-dir}/{namespace}" "@azure-tools/typespec-python": emitter-output-dir: "{output-dir}/{service-dir}/azure-mgmt-nginx" @@ -26,17 +30,16 @@ options: service-name: "Nginx" # human-readable service name, whitespace allowed flavor: azure "@azure-tools/typespec-ts": - service-dir: sdk/nginx emitter-output-dir: "{output-dir}/{service-dir}/arm-nginx" + is-modular-library: true flavor: "azure" experimental-extensible-enums: true - compatibility-lro: true package-details: name: "@azure/arm-nginx" "@azure-tools/typespec-go": service-dir: "sdk/resourcemanager/nginx" emitter-output-dir: "{output-dir}/{service-dir}/armnginx" - module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armnginx/v3" + module: "github.com/Azure/azure-sdk-for-go/{service-dir}/armnginx" fix-const-stuttering: false flavor: "azure" generate-samples: true 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 index 087007f30127..10f5f93e8f66 100644 --- 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 @@ -1427,7 +1427,7 @@ { "name": "body", "in": "body", - "description": "The Nginx Deployment Waf Policy", + "description": "Resource create parameters.", "required": false, "schema": { "$ref": "#/definitions/NginxDeploymentWafPolicy" diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_CreateOrUpdate.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_CreateOrUpdate.json new file mode 100644 index 000000000000..c3a160228e69 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_CreateOrUpdate.json @@ -0,0 +1,41 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "secretText": "00000000-0000-0000-0000-000000000000" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + }, + "201": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + } + }, + "operationId": "ApiKeys_CreateOrUpdate", + "title": "ApiKeys_CreateOrUpdate" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Delete.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Delete.json new file mode 100644 index 000000000000..072b820f3160 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Delete.json @@ -0,0 +1,15 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": {}, + "204": {} + }, + "operationId": "ApiKeys_Delete", + "title": "ApiKeys_Delete" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Get.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Get.json new file mode 100644 index 000000000000..a9ed88064064 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_Get.json @@ -0,0 +1,24 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "apiKeyName": "myApiKey", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + } + } + }, + "operationId": "ApiKeys_Get", + "title": "ApiKeys_Get" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_List.json new file mode 100644 index 000000000000..8108ba8cf620 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/ApiKeys_List.json @@ -0,0 +1,36 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myApiKey", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey", + "properties": { + "endDateTime": "2024-09-01T00:00:00Z", + "hint": "000" + } + }, + { + "name": "myApiKey2", + "type": "Nginx.NginxPlus/nginxDeployments/apiKeys", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/apiKeys/myApiKey2", + "properties": { + "endDateTime": "2024-10-01T00:00:00Z", + "hint": "111" + } + } + ] + } + } + }, + "operationId": "ApiKeys_List", + "title": "ApiKeys_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_CreateOrUpdate.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_CreateOrUpdate.json new file mode 100644 index 000000000000..62730b2dcb01 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_CreateOrUpdate.json @@ -0,0 +1,46 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded" + } + } + }, + "201": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Accepted" + } + } + } + }, + "operationId": "Certificates_CreateOrUpdate", + "title": "Certificates_CreateOrUpdate" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Delete.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Delete.json new file mode 100644 index 000000000000..f89eeeb4ab15 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Certificates_Delete", + "title": "Certificates_Delete" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Get.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Get.json new file mode 100644 index 000000000000..51cb8b13d1c1 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_Get.json @@ -0,0 +1,33 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "certificateName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/default", + "properties": { + "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'" + }, + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + } + } + }, + "operationId": "Certificates_Get", + "title": "Certificates_Get" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_List.json new file mode 100644 index 000000000000..c5ab62040b7f --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Certificates_List.json @@ -0,0 +1,51 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "cert1", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/cert1", + "properties": { + "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'" + }, + "certificateVirtualPath": "/src/cert/somePath.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + }, + { + "name": "cert2", + "type": "nginx.nginxplus/nginxdeployments/certificates", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/certificates/cert2", + "properties": { + "certificateError": null, + "certificateVirtualPath": "/src/cert/somePath2.cert", + "keyVaultSecretCreated": "2020-01-01T00:00:00Z", + "keyVaultSecretId": "https://someKV.vault.azure.com/someSecretID2", + "keyVaultSecretVersion": "12345678ef9a12345678ef9a12345678", + "keyVirtualPath": "/src/cert/somekey2.key", + "provisioningState": "Succeeded", + "sha1Thumbprint": "1234567890ABCDEF1234567890ABCDEF12345678" + } + } + ] + } + } + }, + "operationId": "Certificates_List", + "title": "Certificates_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Analysis.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Analysis.json new file mode 100644 index 000000000000..7df7357b3198 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Analysis.json @@ -0,0 +1,45 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "config": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "data": { + "errors": [ + { + "description": "Directives outside the http context are not allowed", + "directive": "worker_processes", + "file": "/etc/nginx/nginx.conf", + "id": "config-analysis-error-1", + "line": 2, + "message": "You are not allowed to set the worker_processes directive", + "rule": "nginx-azure-load-balancer-allowed-directives" + } + ] + }, + "status": "FAILED" + } + } + }, + "operationId": "Configurations_Analysis", + "title": "Configurations_Analysis" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_CreateOrUpdate.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_CreateOrUpdate.json new file mode 100644 index 000000000000..6eab9e84e753 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_CreateOrUpdate.json @@ -0,0 +1,67 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "rootFile": "/etc/nginx/nginx.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + }, + "201": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "provisioningState": "Accepted", + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + }, + "operationId": "Configurations_CreateOrUpdate", + "title": "Configurations_CreateOrUpdate" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Delete.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Delete.json new file mode 100644 index 000000000000..901c9b365f73 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Configurations_Delete", + "title": "Configurations_Delete" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Get.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Get.json new file mode 100644 index 000000000000..170d629d57c7 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_Get.json @@ -0,0 +1,39 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "protectedFiles": [ + { + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF", + "virtualPath": "/etc/nginx/protected-file.cert" + } + ], + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + } + }, + "operationId": "Configurations_Get", + "title": "Configurations_Get" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_List.json new file mode 100644 index 000000000000..40cdbdc0ff63 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Configurations_List.json @@ -0,0 +1,42 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "default", + "type": "nginx.nginxplus/nginxDeployments/configurations", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/configurations/default", + "properties": { + "files": [ + { + "content": "ABCDEF==", + "virtualPath": "/etc/nginx/nginx.conf" + } + ], + "package": { + "data": null + }, + "protectedFiles": [ + { + "contentHash": "sha256:1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF", + "virtualPath": "/etc/nginx/protected-file.cert" + } + ], + "provisioningState": "Succeeded", + "rootFile": "/etc/nginx/nginx.conf" + } + } + ] + } + } + }, + "operationId": "Configurations_List", + "title": "Configurations_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/DefaultWafPolicy_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/DefaultWafPolicy_List.json new file mode 100644 index 000000000000..36e877b76eda --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/DefaultWafPolicy_List.json @@ -0,0 +1,23 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "nextLink": "https://management.azure.com/...&$skiptoken=...", + "value": [ + { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + ] + } + } + }, + "operationId": "DefaultWafPolicy_List", + "title": "DefaultWafPolicy_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Create.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Create.json new file mode 100644 index 000000000000..7a9bd4f93da2 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Create.json @@ -0,0 +1,165 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "name": "myDeployment", + "location": "West US", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + }, + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "201": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Accepted", + "scalingProperties": { + "capacity": 10 + } + }, + "tags": { + "Environment": "Dev" + } + } + } + }, + "operationId": "Deployments_CreateOrUpdate", + "title": "Deployments_Create" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Delete.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Delete.json new file mode 100644 index 000000000000..b0b3865b0f06 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Delete.json @@ -0,0 +1,18 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "Deployments_Delete", + "title": "Deployments_Delete" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get.json new file mode 100644 index 000000000000..0a07d30364c8 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get.json @@ -0,0 +1,76 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + } + } + } + }, + "operationId": "Deployments_Get", + "title": "Deployments_Get" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get_AutoScale.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get_AutoScale.json new file mode 100644 index 000000000000..4447cdccebcb --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Get_AutoScale.json @@ -0,0 +1,62 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "autoScaleSettings": { + "profiles": [ + { + "name": "ExampleProfile", + "capacity": { + "max": 50, + "min": 10 + } + } + ] + } + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + } + } + } + }, + "operationId": "Deployments_Get", + "title": "Deployments_Get_AutoScale" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_List.json new file mode 100644 index 000000000000..b4794153fe8c --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_List.json @@ -0,0 +1,76 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + } + } + ] + } + } + }, + "operationId": "Deployments_List", + "title": "Deployments_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_ListByResourceGroup.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_ListByResourceGroup.json new file mode 100644 index 000000000000..c5a0a70acaf2 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_ListByResourceGroup.json @@ -0,0 +1,77 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + } + } + } + ] + } + } + }, + "operationId": "Deployments_ListByResourceGroup", + "title": "Deployments_ListByResourceGroup" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Update.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Update.json new file mode 100644 index 000000000000..56990004e6c8 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_Update.json @@ -0,0 +1,97 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + } + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [ + { + "privateIPAddress": "1.1.1.1", + "privateIPAllocationMethod": "Static", + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + ], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "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-11-01" + } + } + }, + "operationId": "Deployments_Update", + "title": "Deployments_Update" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_UpdateSubnet.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_UpdateSubnet.json new file mode 100644 index 000000000000..620b7bcaa066 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Deployments_UpdateSubnet.json @@ -0,0 +1,91 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "networkProfile": { + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + } + }, + "tags": { + "Environment": "Dev" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "name": "myDeployment", + "type": "nginx.nginxplus/deployments", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment", + "location": "westus", + "properties": { + "autoUpgradeProfile": { + "upgradeChannel": "stable" + }, + "dataplaneApiEndpoint": "mynginx-75b3bf22a555.eastus2.nginxaas.net", + "ipAddress": "1.1.1.1", + "networkProfile": { + "frontEndIPConfiguration": { + "privateIPAddresses": [], + "publicIPAddresses": [ + { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIPAddress" + } + ] + }, + "networkInterfaceConfiguration": { + "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet2/subnets/mySubnet" + } + }, + "nginxAppProtect": { + "webApplicationFirewallSettings": { + "activationState": "Enabled" + }, + "webApplicationFirewallStatus": { + "attackSignaturesPackage": { + "revisionDatetime": "2024-02-21T15:50:53Z", + "version": "2024.02.21" + }, + "botSignaturesPackage": { + "revisionDatetime": "2024-02-22T15:50:53Z", + "version": "2024.02.22" + }, + "componentVersions": { + "wafEngineVersion": "10.624.0", + "wafNginxVersion": "4.815.0" + }, + "threatCampaignsPackage": { + "revisionDatetime": "2024-02-23T15:50:53Z", + "version": "2024.02.23" + } + } + }, + "nginxVersion": "nginx-1.19.6", + "provisioningState": "Succeeded", + "scalingProperties": { + "capacity": 10 + }, + "userProfile": { + "preferredEmail": "example@example.email" + } + }, + "tags": { + "Environment": "Dev" + } + } + }, + "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-11-01" + } + } + }, + "operationId": "Deployments_Update", + "title": "Deployments_UpdateSubnet" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/NginxDeploymentWafPolicies_Analysis.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/NginxDeploymentWafPolicies_Analysis.json new file mode 100644 index 000000000000..c9881fd6de92 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/NginxDeploymentWafPolicies_Analysis.json @@ -0,0 +1,32 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "configurationName": "default", + "deploymentName": "myDeployment", + "wafPolicyName": "myWafPolicy", + "requestBody": { + "content": "ABCDEF==", + "filePath": "/etc/nginx/nginx.conf" + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "status": "Failed", + "data": { + "errors": [ + { + "code": "InvalidWafRule", + "field": "MyWafRulefield", + "message": "The WAF rule is invalid" + } + ] + } + } + } + }, + "operationId": "NginxDeploymentWafPolicies_Analysis", + "title": "NginxDeploymentWafPolicies_Analysis" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Operations_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Operations_List.json new file mode 100644 index 000000000000..cb59ab363344 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/Operations_List.json @@ -0,0 +1,25 @@ +{ + "parameters": { + "api-version": "2025-11-01" + }, + "responses": { + "200": { + "body": { + "nextLink": null, + "value": [ + { + "name": "Nginx.NginxPlus/nginxDeployments/write", + "display": { + "description": "Write deployments resource", + "operation": "write", + "provider": "Nginx.NginxPlus", + "resource": "deployments" + } + } + ] + } + } + }, + "operationId": "Operations_List", + "title": "Operations_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Create.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Create.json new file mode 100644 index 000000000000..22f701e2ebb9 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Create.json @@ -0,0 +1,63 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "requestBody": { + "properties": { + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf" + } + }, + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "200": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "NotApplied", + "displayStatus": "Not Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Succeeded", + "time": "2025-03-02T10:05:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + }, + "201": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "NotStarted", + "displayStatus": "Not Started", + "time": "2025-03-02T10:05:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Accepted" + } + } + } + }, + "operationId": "WafPolicy_Create", + "title": "WafPolicy_Create" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Delete.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Delete.json new file mode 100644 index 000000000000..740e8d6ab4be --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Delete.json @@ -0,0 +1,19 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "202": { + "headers": { + "Azure-AsyncOperation": "https://example.com/operationstatus" + } + }, + "204": {} + }, + "operationId": "WafPolicy_Delete", + "title": "WafPolicy_Delete" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Get.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Get.json new file mode 100644 index 000000000000..8f11f8e476e1 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_Get.json @@ -0,0 +1,35 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000", + "wafPolicyName": "myWafPolicy" + }, + "responses": { + "200": { + "body": { + "name": "myWafPolicy", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/myWafPolicy", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "content": "QUJDREVGR0g=", + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + } + }, + "operationId": "WafPolicy_Get", + "title": "WafPolicy_Get" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_List.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_List.json new file mode 100644 index 000000000000..fa2c70f7b64a --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/examples/WafPolicy_List.json @@ -0,0 +1,57 @@ +{ + "parameters": { + "api-version": "2025-11-01", + "deploymentName": "myDeployment", + "resourceGroupName": "myResourceGroup", + "subscriptionId": "00000000-0000-0000-0000-000000000000" + }, + "responses": { + "200": { + "body": { + "nextLink": "https://management.azure.com/.../wafPolicies?api-version=2025-11-01&$skiptoken=...", + "value": [ + { + "name": "wafPolicy1", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/wafPolicy1", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + }, + { + "name": "wafPolicy2", + "type": "Nginx.NginxPlus/nginxDeployments/wafPolicies", + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Nginx.NginxPlus/nginxDeployments/myDeployment/wafPolicies/wafPolicy2", + "properties": { + "applyingState": { + "code": "Succeeded", + "displayStatus": "Policy Applied", + "time": "2025-03-02T10:05:00.000Z" + }, + "compilingState": { + "code": "Succeeded", + "displayStatus": "Compiled Successfully", + "time": "2025-03-02T10:00:00.000Z" + }, + "filepath": "/etc/nginx/waf/policy.conf", + "provisioningState": "Succeeded" + } + } + ] + } + } + }, + "operationId": "WafPolicy_List", + "title": "WafPolicy_List" +} diff --git a/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/swagger.json b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/swagger.json new file mode 100644 index 000000000000..d728c96fb4d4 --- /dev/null +++ b/specification/nginx/resource-manager/Nginx.NginxPlus/stable/2025-11-01/swagger.json @@ -0,0 +1,3145 @@ +{ + "swagger": "2.0", + "info": { + "title": "Nginx.NginxPlus", + "version": "2025-11-01", + "x-typespec-generated": [ + { + "emitter": "@azure-tools/typespec-autorest" + } + ] + }, + "schemes": [ + "https" + ], + "host": "management.azure.com", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "security": [ + { + "azure_auth": [ + "user_impersonation" + ] + } + ], + "securityDefinitions": { + "azure_auth": { + "type": "oauth2", + "description": "Azure Active Directory OAuth2 Flow.", + "flow": "implicit", + "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", + "scopes": { + "user_impersonation": "impersonate your user account" + } + } + }, + "tags": [ + { + "name": "Operations" + }, + { + "name": "NginxDeploymentApiKeyResponses" + }, + { + "name": "NginxDeployments" + }, + { + "name": "NginxCertificates" + }, + { + "name": "NginxConfigurationResponses" + }, + { + "name": "NginxDeploymentWafPolicies" + } + ], + "paths": { + "/providers/Nginx.NginxPlus/operations": { + "get": { + "operationId": "Operations_List", + "tags": [ + "Operations" + ], + "description": "List the operations for the provider", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/OperationListResult" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Operations_List": { + "$ref": "./examples/Operations_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Nginx.NginxPlus/nginxDeployments": { + "get": { + "operationId": "Deployments_List", + "tags": [ + "NginxDeployments" + ], + "description": "List the NGINX deployments resources", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_List": { + "$ref": "./examples/Deployments_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments": { + "get": { + "operationId": "Deployments_ListByResourceGroup", + "tags": [ + "NginxDeployments" + ], + "description": "List all NGINX deployments under the specified resource group.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_ListByResourceGroup": { + "$ref": "./examples/Deployments_ListByResourceGroup.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}": { + "get": { + "operationId": "Deployments_Get", + "tags": [ + "NginxDeployments" + ], + "description": "Get the NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "default": { + "description": "An unexpected 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": { + "operationId": "Deployments_CreateOrUpdate", + "tags": [ + "NginxDeployments" + ], + "description": "Create or update the NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "The Nginx deployment", + "required": false, + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + } + ], + "responses": { + "200": { + "description": "Resource 'NginxDeployment' update operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "201": { + "description": "Resource 'NginxDeployment' create operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeployment" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_Create": { + "$ref": "./examples/Deployments_Create.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/NginxDeployment" + }, + "x-ms-long-running-operation": true + }, + "patch": { + "operationId": "Deployments_Update", + "tags": [ + "NginxDeployments" + ], + "description": "Update the NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "The Nginx deployment update parameters", + "required": false, + "schema": { + "$ref": "#/definitions/NginxDeploymentUpdateParameters" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "202": { + "description": "Resource update request accepted.", + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected 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-options": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/NginxDeployment" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Deployments_Delete", + "tags": [ + "NginxDeployments" + ], + "description": "Delete the NGINX deployment resource", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Deployments_Delete": { + "$ref": "./examples/Deployments_Delete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/apiKeys": { + "get": { + "operationId": "ApiKeys_List", + "tags": [ + "NginxDeploymentApiKeyResponses" + ], + "description": "List all API Keys of the given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_List": { + "$ref": "./examples/ApiKeys_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/apiKeys/{apiKeyName}": { + "get": { + "operationId": "ApiKeys_Get", + "tags": [ + "NginxDeploymentApiKeyResponses" + ], + "description": "Get the specified API Key of the given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "apiKeyName", + "in": "path", + "description": "The resource name of the API key", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_Get": { + "$ref": "./examples/ApiKeys_Get.json" + } + } + }, + "put": { + "operationId": "ApiKeys_CreateOrUpdate", + "tags": [ + "NginxDeploymentApiKeyResponses" + ], + "description": "Create or update an API Key for the Nginx deployment in order to access the dataplane API endpoint", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "apiKeyName", + "in": "path", + "description": "The resource name of the API key", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "The API Key object containing fields (e.g. secret text, expiration date) to upsert the key.", + "required": false, + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyRequest" + } + } + ], + "responses": { + "200": { + "description": "Resource 'NginxDeploymentApiKeyResponse' update operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "201": { + "description": "Resource 'NginxDeploymentApiKeyResponse' create operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_CreateOrUpdate": { + "$ref": "./examples/ApiKeys_CreateOrUpdate.json" + } + } + }, + "delete": { + "operationId": "ApiKeys_Delete", + "tags": [ + "NginxDeploymentApiKeyResponses" + ], + "description": "Delete API key for Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "apiKeyName", + "in": "path", + "description": "The resource name of the API key", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Resource deleted successfully." + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "ApiKeys_Delete": { + "$ref": "./examples/ApiKeys_Delete.json" + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/certificates": { + "get": { + "operationId": "Certificates_List", + "tags": [ + "NginxCertificates" + ], + "description": "List all certificates of given NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxCertificateListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Certificates_List": { + "$ref": "./examples/Certificates_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/certificates/{certificateName}": { + "get": { + "operationId": "Certificates_Get", + "tags": [ + "NginxCertificates" + ], + "description": "Get a certificate of given NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "certificateName", + "in": "path", + "description": "The name of certificate", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Certificates_Get": { + "$ref": "./examples/Certificates_Get.json" + } + } + }, + "put": { + "operationId": "Certificates_CreateOrUpdate", + "tags": [ + "NginxCertificates" + ], + "description": "Create or update the NGINX certificates for given NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "certificateName", + "in": "path", + "description": "The name of certificate", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "The certificate", + "required": false, + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + } + ], + "responses": { + "200": { + "description": "Resource 'NginxCertificate' update operation succeeded", + "schema": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "201": { + "description": "Resource 'NginxCertificate' create operation succeeded", + "schema": { + "$ref": "#/definitions/NginxCertificate" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Certificates_CreateOrUpdate": { + "$ref": "./examples/Certificates_CreateOrUpdate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/NginxCertificate" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Certificates_Delete", + "tags": [ + "NginxCertificates" + ], + "description": "Deletes a certificate from the NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "certificateName", + "in": "path", + "description": "The name of certificate", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Certificates_Delete": { + "$ref": "./examples/Certificates_Delete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations": { + "get": { + "operationId": "Configurations_List", + "tags": [ + "NginxConfigurationResponses" + ], + "description": "List the NGINX configuration of given NGINX deployment.", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxConfigurationListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_List": { + "$ref": "./examples/Configurations_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations/{configurationName}": { + "get": { + "operationId": "Configurations_Get", + "tags": [ + "NginxConfigurationResponses" + ], + "description": "Get the NGINX configuration of given NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "configurationName", + "in": "path", + "description": "The name of configuration, only 'default' is supported value due to the singleton of NGINX conf", + "required": true, + "type": "string", + "pattern": "^[a-z][a-z0-9]*$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_Get": { + "$ref": "./examples/Configurations_Get.json" + } + } + }, + "put": { + "operationId": "Configurations_CreateOrUpdate", + "tags": [ + "NginxConfigurationResponses" + ], + "description": "Create or update the NGINX configuration for given NGINX deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "configurationName", + "in": "path", + "description": "The name of configuration, only 'default' is supported value due to the singleton of NGINX conf", + "required": true, + "type": "string", + "pattern": "^[a-z][a-z0-9]*$" + }, + { + "name": "body", + "in": "body", + "description": "The NGINX configuration", + "required": false, + "schema": { + "$ref": "#/definitions/NginxConfigurationRequest" + } + } + ], + "responses": { + "200": { + "description": "Resource 'NginxConfigurationResponse' update operation succeeded", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "201": { + "description": "Resource 'NginxConfigurationResponse' create operation succeeded", + "schema": { + "$ref": "#/definitions/NginxConfigurationResponse" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_CreateOrUpdate": { + "$ref": "./examples/Configurations_CreateOrUpdate.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/NginxConfigurationResponse" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "Configurations_Delete", + "tags": [ + "NginxConfigurationResponses" + ], + "description": "Reset the NGINX configuration of given NGINX deployment to default", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "configurationName", + "in": "path", + "description": "The name of configuration, only 'default' is supported value due to the singleton of NGINX conf", + "required": true, + "type": "string", + "pattern": "^[a-z][a-z0-9]*$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "Configurations_Delete": { + "$ref": "./examples/Configurations_Delete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/configurations/{configurationName}/analyze": { + "post": { + "operationId": "Configurations_Analysis", + "tags": [ + "NginxConfigurationResponses" + ], + "description": "Analyze an NGINX configuration without applying it to the NGINXaaS deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "configurationName", + "in": "path", + "description": "The name of configuration, only 'default' is supported value due to the singleton of NGINX conf", + "required": true, + "type": "string", + "pattern": "^[a-z][a-z0-9]*$" + }, + { + "name": "body", + "in": "body", + "description": "The NGINX configuration to analyze", + "required": false, + "schema": { + "$ref": "#/definitions/AnalysisCreate" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/AnalysisResult" + } + }, + "default": { + "description": "An unexpected 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}/listDefaultWafPolicies": { + "post": { + "operationId": "DefaultWafPolicy_List", + "tags": [ + "NginxDeployments" + ], + "description": "Get the Nginx Waf Policy of given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentDefaultWafPolicyListResponse" + } + }, + "default": { + "description": "An unexpected 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": { + "operationId": "WafPolicy_List", + "tags": [ + "NginxDeployments" + ], + "description": "List Waf Policies of given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicyListResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "WafPolicy_List": { + "$ref": "./examples/WafPolicy_List.json" + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/wafPolicies/{wafPolicyName}": { + "get": { + "operationId": "WafPolicy_Get", + "tags": [ + "NginxDeploymentWafPolicies" + ], + "description": "Get the Nginx Waf Policy of given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "wafPolicyName", + "in": "path", + "description": "The name of Waf Policy", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "WafPolicy_Get": { + "$ref": "./examples/WafPolicy_Get.json" + } + } + }, + "put": { + "operationId": "WafPolicy_Create", + "tags": [ + "NginxDeploymentWafPolicies" + ], + "description": "Create or update the Nginx Waf Policy for given Nginx deployment", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "wafPolicyName", + "in": "path", + "description": "The name of Waf Policy", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "Resource create parameters.", + "required": false, + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + } + ], + "responses": { + "200": { + "description": "Resource 'NginxDeploymentWafPolicy' update operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + } + }, + "201": { + "description": "Resource 'NginxDeploymentWafPolicy' create operation succeeded", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicy" + }, + "headers": { + "Azure-AsyncOperation": { + "type": "string", + "description": "A link to the status monitor" + }, + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "WafPolicy_Create": { + "$ref": "./examples/WafPolicy_Create.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation", + "final-state-schema": "#/definitions/NginxDeploymentWafPolicy" + }, + "x-ms-long-running-operation": true + }, + "delete": { + "operationId": "WafPolicy_Delete", + "tags": [ + "NginxDeploymentWafPolicies" + ], + "description": "Reset the Nginx Waf Policy of given Nginx deployment to default", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "wafPolicyName", + "in": "path", + "description": "The name of Waf Policy", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + } + ], + "responses": { + "202": { + "description": "Resource deletion accepted.", + "headers": { + "Location": { + "type": "string", + "description": "The Location header contains the URL where the status of the long running operation can be checked." + }, + "Retry-After": { + "type": "integer", + "format": "int32", + "description": "The Retry-After header can indicate how long the client should wait before polling the operation status." + } + } + }, + "204": { + "description": "Resource does not exist." + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "WafPolicy_Delete": { + "$ref": "./examples/WafPolicy_Delete.json" + } + }, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "x-ms-long-running-operation": true + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Nginx.NginxPlus/nginxDeployments/{deploymentName}/wafPolicies/{wafPolicyName}/analyzeWafPolicy": { + "post": { + "operationId": "NginxDeploymentWafPolicies_Analysis", + "tags": [ + "NginxDeploymentWafPolicies" + ], + "description": "Analyze an Nginx Waf Policy", + "parameters": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/parameters/ResourceGroupNameParameter" + }, + { + "name": "deploymentName", + "in": "path", + "description": "The name of targeted NGINX deployment", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "wafPolicyName", + "in": "path", + "description": "The name of Waf Policy", + "required": true, + "type": "string", + "pattern": "^([a-z0-9A-Z][a-z0-9A-Z-]{0,28}[a-z0-9A-Z]|[a-z0-9A-Z])$" + }, + { + "name": "body", + "in": "body", + "description": "The content of the action request", + "required": false, + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicyAnalysisCreateRequest" + } + } + ], + "responses": { + "200": { + "description": "Azure operation completed successfully.", + "schema": { + "$ref": "#/definitions/NginxDeploymentWafPolicyAnalysisResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ErrorResponse" + } + } + }, + "x-ms-examples": { + "NginxDeploymentWafPolicies_Analysis": { + "$ref": "./examples/NginxDeploymentWafPolicies_Analysis.json" + } + } + } + } + }, + "definitions": { + "ActivationState": { + "type": "string", + "description": "The activation state of the WAF. Use 'Enabled' to enable the WAF and 'Disabled' to disable it.", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "ActivationState", + "modelAsString": true, + "values": [ + { + "name": "Enabled", + "value": "Enabled" + }, + { + "name": "Disabled", + "value": "Disabled" + } + ] + } + }, + "AnalysisCreate": { + "type": "object", + "description": "The request body for creating an analysis for an NGINX configuration.", + "properties": { + "config": { + "$ref": "#/definitions/AnalysisCreateConfig", + "x-ms-client-flatten": true + } + }, + "required": [ + "config" + ] + }, + "AnalysisCreateConfig": { + "type": "object", + "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", + "description": "Nginx Configuration Package" + } + } + }, + "AnalysisDiagnostic": { + "type": "object", + "description": "An error object found during the analysis of an NGINX configuration.", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the error" + }, + "directive": { + "type": "string" + }, + "description": { + "type": "string" + }, + "file": { + "type": "string", + "description": "the filepath of the most relevant config file" + }, + "line": { + "type": "number", + "format": "float" + }, + "message": { + "type": "string" + }, + "rule": { + "type": "string" + } + }, + "required": [ + "directive", + "description", + "file", + "line", + "message", + "rule" + ] + }, + "AnalysisResult": { + "type": "object", + "description": "The response body for an analysis request. Contains the status of the analysis and any errors.", + "properties": { + "status": { + "type": "string", + "description": "The status of the analysis." + }, + "data": { + "$ref": "#/definitions/AnalysisResultData", + "x-ms-client-flatten": true + } + }, + "required": [ + "status" + ] + }, + "AnalysisResultData": { + "type": "object", + "properties": { + "errors": { + "type": "array", + "items": { + "$ref": "#/definitions/AnalysisDiagnostic" + } + }, + "diagnostics": { + "type": "array", + "items": { + "$ref": "#/definitions/DiagnosticItem" + } + } + } + }, + "AutoUpgradeProfile": { + "type": "object", + "description": "Autoupgrade settings of a deployment.", + "properties": { + "upgradeChannel": { + "type": "string", + "description": "Channel used for autoupgrade." + } + }, + "required": [ + "upgradeChannel" + ] + }, + "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.", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the diagnostic." + }, + "directive": { + "type": "string" + }, + "description": { + "type": "string" + }, + "file": { + "type": "string", + "description": "The filepath of the most relevant config file." + }, + "line": { + "type": "number", + "format": "float" + }, + "message": { + "type": "string" + }, + "rule": { + "type": "string" + }, + "level": { + "$ref": "#/definitions/Level", + "description": "Warning or Info" + }, + "category": { + "type": "string", + "description": "Category of warning like Best-practices, Recommendation, Security etc." + } + }, + "required": [ + "directive", + "description", + "file", + "line", + "message", + "rule", + "level" + ] + }, + "IdentityProperties": { + "type": "object", + "description": "Identity Properties", + "properties": { + "principalId": { + "type": "string", + "readOnly": true + }, + "tenantId": { + "type": "string", + "readOnly": true + }, + "type": { + "$ref": "#/definitions/IdentityType", + "description": "Identity Type" + }, + "userAssignedIdentities": { + "type": "object", + "description": "Dictionary of ", + "additionalProperties": { + "$ref": "#/definitions/UserIdentityProperties" + } + } + } + }, + "IdentityType": { + "type": "string", + "description": "Identity Type", + "enum": [ + "SystemAssigned", + "UserAssigned", + "SystemAssigned, UserAssigned", + "None" + ], + "x-ms-enum": { + "name": "IdentityType", + "modelAsString": true, + "values": [ + { + "name": "SystemAssigned", + "value": "SystemAssigned" + }, + { + "name": "UserAssigned", + "value": "UserAssigned" + }, + { + "name": "SystemAssigned, UserAssigned", + "value": "SystemAssigned, UserAssigned" + }, + { + "name": "None", + "value": "None" + } + ] + } + }, + "Level": { + "type": "string", + "description": "Warning or Info", + "enum": [ + "Info", + "Warning" + ], + "x-ms-enum": { + "name": "Level", + "modelAsString": true, + "values": [ + { + "name": "Info", + "value": "Info" + }, + { + "name": "Warning", + "value": "Warning" + } + ] + } + }, + "NginxCertificate": { + "type": "object", + "description": "Nginx Certificate", + "properties": { + "properties": { + "$ref": "#/definitions/NginxCertificateProperties", + "description": "Nginx Certificate Properties" + }, + "location": { + "type": "string", + "description": "The geo-location where the resource lives", + "x-ms-mutability": [ + "read", + "create" + ] + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource" + } + ] + }, + "NginxCertificateErrorResponseBody": { + "type": "object", + "description": "Nginx Certificate Error Response Body", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + } + }, + "NginxCertificateListResponse": { + "type": "object", + "description": "Nginx Certificate List Response", + "properties": { + "value": { + "type": "array", + "description": "The NginxCertificate items on this page", + "items": { + "$ref": "#/definitions/NginxCertificate" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "NginxCertificateProperties": { + "type": "object", + "description": "Nginx Certificate Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "keyVirtualPath": { + "type": "string" + }, + "certificateVirtualPath": { + "type": "string" + }, + "keyVaultSecretId": { + "type": "string" + }, + "sha1Thumbprint": { + "type": "string", + "readOnly": true + }, + "keyVaultSecretVersion": { + "type": "string", + "readOnly": true + }, + "keyVaultSecretCreated": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "certificateError": { + "$ref": "#/definitions/NginxCertificateErrorResponseBody", + "description": "Nginx Certificate Error Response Body" + } + } + }, + "NginxConfigurationFile": { + "type": "object", + "description": "Nginx Configuration File", + "properties": { + "content": { + "type": "string" + }, + "virtualPath": { + "type": "string" + } + } + }, + "NginxConfigurationListResponse": { + "type": "object", + "description": "Response of a list operation.", + "properties": { + "value": { + "type": "array", + "description": "The NginxConfigurationResponse items on this page", + "items": { + "$ref": "#/definitions/NginxConfigurationResponse" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "NginxConfigurationPackage": { + "type": "object", + "description": "Nginx Configuration Package", + "properties": { + "data": { + "type": "string" + }, + "protectedFiles": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "NginxConfigurationProtectedFileRequest": { + "type": "object", + "description": "Nginx Configuration Protected File Request", + "properties": { + "content": { + "type": "string", + "format": "password", + "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.", + "x-ms-secret": true + }, + "virtualPath": { + "type": "string", + "description": "The virtual path of the protected file." + }, + "contentHash": { + "type": "string", + "description": "The hash of the content of the file. This value is used to determine if the file has changed." + } + } + }, + "NginxConfigurationProtectedFileResponse": { + "type": "object", + "description": "Nginx Configuration Protected File Response", + "properties": { + "virtualPath": { + "type": "string", + "description": "The virtual path of the protected file." + }, + "contentHash": { + "type": "string", + "description": "The hash of the content of the file. This value is used to determine if the file has changed." + } + } + }, + "NginxConfigurationRequest": { + "type": "object", + "description": "Nginx Configuration Request", + "properties": { + "id": { + "type": "string", + "readOnly": true + }, + "name": { + "type": "string", + "readOnly": true + }, + "type": { + "type": "string", + "readOnly": true + }, + "properties": { + "$ref": "#/definitions/NginxConfigurationRequestProperties", + "description": "Nginx Configuration Request Properties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true + } + } + }, + "NginxConfigurationRequestProperties": { + "type": "object", + "description": "Nginx Configuration Request Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationFile" + }, + "x-ms-identifiers": [] + }, + "protectedFiles": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationProtectedFileRequest" + }, + "x-ms-identifiers": [] + }, + "package": { + "$ref": "#/definitions/NginxConfigurationPackage", + "description": "Nginx Configuration Package" + }, + "rootFile": { + "type": "string" + } + } + }, + "NginxConfigurationResponse": { + "type": "object", + "description": "Nginx Configuration Response", + "properties": { + "properties": { + "$ref": "#/definitions/NginxConfigurationResponseProperties", + "description": "Nginx Configuration Response Properties" + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource" + } + ] + }, + "NginxConfigurationResponseProperties": { + "type": "object", + "description": "Nginx Configuration Response Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "files": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationFile" + }, + "x-ms-identifiers": [] + }, + "protectedFiles": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxConfigurationProtectedFileResponse" + }, + "x-ms-identifiers": [] + }, + "package": { + "$ref": "#/definitions/NginxConfigurationPackage", + "description": "Nginx Configuration Package" + }, + "rootFile": { + "type": "string" + } + } + }, + "NginxDeployment": { + "type": "object", + "description": "Nginx Deployment", + "properties": { + "properties": { + "$ref": "#/definitions/NginxDeploymentProperties", + "description": "Nginx Deployment Properties" + }, + "identity": { + "$ref": "#/definitions/IdentityProperties", + "description": "Identity Properties" + }, + "sku": { + "$ref": "#/definitions/ResourceSku", + "description": "Resource Sku" + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/TrackedResource" + } + ] + }, + "NginxDeploymentApiKeyListResponse": { + "type": "object", + "description": "Nginx Deployment Api Key List Response", + "properties": { + "value": { + "type": "array", + "description": "The NginxDeploymentApiKeyResponse items on this page", + "items": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponse" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "NginxDeploymentApiKeyRequest": { + "type": "object", + "description": "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", + "description": "Nginx Deployment Api Key Request Properties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true + } + } + }, + "NginxDeploymentApiKeyRequestProperties": { + "type": "object", + "description": "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": { + "type": "string", + "format": "date-time", + "description": "The time after which this Dataplane API Key is no longer valid." + } + } + }, + "NginxDeploymentApiKeyResponse": { + "type": "object", + "description": "Nginx Deployment Api Key Response", + "properties": { + "properties": { + "$ref": "#/definitions/NginxDeploymentApiKeyResponseProperties", + "description": "Nginx Deployment Api Key Response Properties" + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource" + } + ] + }, + "NginxDeploymentApiKeyResponseProperties": { + "type": "object", + "description": "Nginx Deployment Api Key Response Properties", + "properties": { + "hint": { + "type": "string", + "description": "The first three characters of the secret text to help identify it in use. This property is read-only.", + "readOnly": true + }, + "endDateTime": { + "type": "string", + "format": "date-time", + "description": "The time after which this Dataplane API Key is no longer valid." + } + } + }, + "NginxDeploymentDefaultWafPolicyListResponse": { + "type": "object", + "description": "Nginx Deployment Default Waf Policy List Response", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/NginxDeploymentDefaultWafPolicyProperties" + }, + "x-ms-identifiers": [] + }, + "nextLink": { + "type": "string" + } + } + }, + "NginxDeploymentDefaultWafPolicyProperties": { + "type": "object", + "description": "Nginx Deployment Default Waf Policy Properties", + "properties": { + "content": { + "type": "string", + "format": "byte", + "readOnly": true + }, + "filepath": { + "type": "string", + "readOnly": true + } + } + }, + "NginxDeploymentListResponse": { + "type": "object", + "description": "Nginx Deployment List Response", + "properties": { + "value": { + "type": "array", + "description": "The NginxDeployment items on this page", + "items": { + "$ref": "#/definitions/NginxDeployment" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "NginxDeploymentProperties": { + "type": "object", + "description": "Nginx Deployment Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "nginxVersion": { + "type": "string", + "readOnly": true + }, + "networkProfile": { + "$ref": "#/definitions/NginxNetworkProfile", + "description": "Nginx Network Profile" + }, + "ipAddress": { + "type": "string", + "description": "The IP address of the deployment.", + "readOnly": true + }, + "enableDiagnosticsSupport": { + "type": "boolean" + }, + "logging": { + "$ref": "#/definitions/NginxLogging", + "description": "Nginx Logging" + }, + "scalingProperties": { + "$ref": "#/definitions/NginxDeploymentScalingProperties", + "description": "Information on how the deployment will be scaled." + }, + "autoUpgradeProfile": { + "$ref": "#/definitions/AutoUpgradeProfile", + "description": "Autoupgrade settings of a deployment." + }, + "userProfile": { + "$ref": "#/definitions/NginxDeploymentUserProfile", + "description": "Nginx Deployment User Profile" + }, + "nginxAppProtect": { + "$ref": "#/definitions/NginxDeploymentPropertiesNginxAppProtect", + "description": "Settings for NGINX App Protect (NAP)", + "x-ms-client-flatten": true + }, + "dataplaneApiEndpoint": { + "type": "string", + "description": "Dataplane API endpoint for the caller to update the NGINX state of the deployment.", + "readOnly": true + } + } + }, + "NginxDeploymentPropertiesNginxAppProtect": { + "type": "object", + "description": "Settings for NGINX App Protect (NAP)", + "properties": { + "webApplicationFirewallSettings": { + "$ref": "#/definitions/WebApplicationFirewallSettings", + "description": "Settings for the NGINX App Protect Web Application Firewall (WAF)" + }, + "webApplicationFirewallStatus": { + "$ref": "#/definitions/WebApplicationFirewallStatus", + "description": "The status of the NGINX App Protect Web Application Firewall", + "readOnly": true + } + }, + "required": [ + "webApplicationFirewallSettings" + ] + }, + "NginxDeploymentScalingProperties": { + "type": "object", + "description": "Information on how the deployment will be scaled.", + "properties": { + "capacity": { + "type": "integer", + "format": "int32" + }, + "autoScaleSettings": { + "$ref": "#/definitions/NginxDeploymentScalingPropertiesAutoScaleSettings", + "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 + } + } + }, + "NginxDeploymentScalingPropertiesAutoScaleSettings": { + "type": "object", + "description": "The settings for enabling automatic scaling of the deployment. If this field is specified, 'scale.capacity' must be empty.", + "properties": { + "profiles": { + "type": "array", + "items": { + "$ref": "#/definitions/ScaleProfile" + }, + "x-ms-identifiers": [] + } + }, + "required": [ + "profiles" + ] + }, + "NginxDeploymentUpdateParameters": { + "type": "object", + "description": "Nginx Deployment Update Parameters", + "properties": { + "identity": { + "$ref": "#/definitions/IdentityProperties", + "description": "Identity Properties" + }, + "tags": { + "type": "object", + "description": "Dictionary of ", + "additionalProperties": { + "type": "string" + } + }, + "sku": { + "$ref": "#/definitions/ResourceSku", + "description": "Resource Sku" + }, + "location": { + "type": "string", + "description": "The geo-location where the resource lives", + "x-ms-mutability": [ + "read", + "create" + ] + }, + "properties": { + "$ref": "#/definitions/NginxDeploymentUpdateProperties", + "description": "Nginx Deployment Update Properties" + } + } + }, + "NginxDeploymentUpdateProperties": { + "type": "object", + "description": "Nginx Deployment Update Properties", + "properties": { + "enableDiagnosticsSupport": { + "type": "boolean" + }, + "logging": { + "$ref": "#/definitions/NginxLogging", + "description": "Nginx Logging" + }, + "scalingProperties": { + "$ref": "#/definitions/NginxDeploymentScalingProperties", + "description": "Information on how the deployment will be scaled." + }, + "userProfile": { + "$ref": "#/definitions/NginxDeploymentUserProfile", + "description": "Nginx Deployment User Profile" + }, + "networkProfile": { + "$ref": "#/definitions/NginxNetworkProfile", + "description": "Nginx Network Profile" + }, + "autoUpgradeProfile": { + "$ref": "#/definitions/AutoUpgradeProfile", + "description": "Autoupgrade settings of a deployment." + }, + "nginxAppProtect": { + "$ref": "#/definitions/NginxDeploymentUpdatePropertiesNginxAppProtect", + "description": "Update settings for NGINX App Protect (NAP)", + "x-ms-client-flatten": true + } + } + }, + "NginxDeploymentUpdatePropertiesNginxAppProtect": { + "type": "object", + "description": "Update settings for NGINX App Protect (NAP)", + "properties": { + "webApplicationFirewallSettings": { + "$ref": "#/definitions/WebApplicationFirewallSettings", + "description": "Settings for the NGINX App Protect Web Application Firewall (WAF)" + } + } + }, + "NginxDeploymentUserProfile": { + "type": "object", + "description": "Nginx Deployment User Profile", + "properties": { + "preferredEmail": { + "type": "string", + "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.", + "pattern": "^$|^[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}$" + } + } + }, + "NginxDeploymentWafPolicy": { + "type": "object", + "description": "Nginx Deployment Waf Policy", + "properties": { + "properties": { + "$ref": "#/definitions/NginxDeploymentWafPolicyProperties", + "description": "Nginx Deployment Waf Policy Properties" + } + }, + "allOf": [ + { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource" + } + ] + }, + "NginxDeploymentWafPolicyAnalysisCreateRequest": { + "type": "object", + "description": "Nginx Deployment Waf Policy Analysis Create Request", + "properties": { + "content": { + "type": "string", + "format": "byte", + "description": "The byte content of the policy" + }, + "filepath": { + "type": "string", + "description": "The absolute file path of the policy as in the virtual machine" + } + } + }, + "NginxDeploymentWafPolicyAnalysisData": { + "type": "object", + "description": "Nginx Deployment Waf Policy Analysis Data", + "properties": { + "errors": { + "type": "array", + "description": "List of errors found during analysis", + "items": { + "$ref": "#/definitions/NginxDeploymentWafPolicyError" + }, + "x-ms-identifiers": [] + } + } + }, + "NginxDeploymentWafPolicyAnalysisResponse": { + "type": "object", + "description": "Nginx Deployment Waf Policy Analysis Response", + "properties": { + "status": { + "type": "string", + "description": "The status of the analysis. The possible values can be arbitrary" + }, + "data": { + "$ref": "#/definitions/NginxDeploymentWafPolicyAnalysisData", + "description": "The analysis data containing errors" + } + } + }, + "NginxDeploymentWafPolicyApplyingStatus": { + "type": "object", + "description": "Nginx Deployment Waf Policy Applying Status", + "properties": { + "code": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatusCode", + "description": "Machine readable code indicating the applying status code of a WAF Policy.", + "readOnly": true + }, + "displayStatus": { + "type": "string", + "description": "A readable string of the current status, and sometimes have the reason for the current state.", + "readOnly": true + }, + "time": { + "type": "string", + "description": "The date and time in UTC the current applying status was set.", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyApplyingStatusCode": { + "type": "string", + "description": "Machine readable code indicating the applying status code of a WAF Policy.", + "enum": [ + "NotApplied", + "Applying", + "Succeeded", + "Failed", + "Removing" + ], + "x-ms-enum": { + "name": "NginxDeploymentWafPolicyApplyingStatusCode", + "modelAsString": true, + "values": [ + { + "name": "NotApplied", + "value": "NotApplied", + "description": "The policy is not referenced in the nginx config and not applied." + }, + { + "name": "Applying", + "value": "Applying", + "description": "The policy is referenced in the nginx config and is applying." + }, + { + "name": "Succeeded", + "value": "Succeeded", + "description": "The policy is referenced in the nginx config and that config has been successfully applied." + }, + { + "name": "Failed", + "value": "Failed", + "description": "The policy is referenced in the nginx config and that config failed to apply." + }, + { + "name": "Removing", + "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", + "description": "Nginx Deployment Waf Policy Compiling Status", + "properties": { + "code": { + "$ref": "#/definitions/NginxDeploymentWafPolicyCompilingStatusCode", + "description": "Machine readable code indicating the compilation status of a WAF Policy.", + "readOnly": true + }, + "displayStatus": { + "type": "string", + "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.", + "readOnly": true + }, + "time": { + "type": "string", + "description": "The date and time the policy was compiled in UTC.", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyCompilingStatusCode": { + "type": "string", + "description": "Machine readable code indicating the compilation status of a WAF Policy.", + "enum": [ + "NotStarted", + "InProgress", + "Succeeded", + "Failed" + ], + "x-ms-enum": { + "name": "NginxDeploymentWafPolicyCompilingStatusCode", + "modelAsString": true, + "values": [ + { + "name": "NotStarted", + "value": "NotStarted", + "description": "The compilation of the custom waf policy has not started" + }, + { + "name": "InProgress", + "value": "InProgress", + "description": "The compilation of the custom waf policy is in progress" + }, + { + "name": "Succeeded", + "value": "Succeeded", + "description": "The compilation of the custom waf policy is completed successfully and can now be referenced in the nginx config." + }, + { + "name": "Failed", + "value": "Failed", + "description": "The compilation of the custom waf policy failed." + } + ] + } + }, + "NginxDeploymentWafPolicyError": { + "type": "object", + "description": "Nginx Deployment Waf Policy Error", + "properties": { + "code": { + "type": "string", + "description": "Error code" + }, + "field": { + "type": "string", + "description": "Field that caused the error" + }, + "message": { + "type": "string", + "description": "Error message" + } + } + }, + "NginxDeploymentWafPolicyListResponse": { + "type": "object", + "description": "Nginx Deployment Waf Policy List Response", + "properties": { + "value": { + "type": "array", + "description": "The NginxDeploymentWafPolicyMetadata items on this page", + "items": { + "$ref": "#/definitions/NginxDeploymentWafPolicyMetadata" + } + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "required": [ + "value" + ] + }, + "NginxDeploymentWafPolicyMetadata": { + "type": "object", + "description": "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", + "description": "Nginx Deployment Waf Policy Metadata Properties" + }, + "systemData": { + "$ref": "../../../../../common-types/resource-management/v6/types.json#/definitions/systemData", + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyMetadataProperties": { + "type": "object", + "description": "Nginx Deployment Waf Policy Metadata Properties", + "properties": { + "filepath": { + "type": "string", + "readOnly": true + }, + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "compilingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyCompilingStatus", + "description": "Nginx Deployment Waf Policy Compiling Status", + "readOnly": true + }, + "applyingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatus", + "description": "Nginx Deployment Waf Policy Applying Status", + "readOnly": true + } + } + }, + "NginxDeploymentWafPolicyProperties": { + "type": "object", + "description": "Nginx Deployment Waf Policy Properties", + "properties": { + "provisioningState": { + "$ref": "#/definitions/ProvisioningState", + "description": "Provisioning State", + "readOnly": true + }, + "content": { + "type": "string", + "format": "byte", + "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", + "description": "Nginx Deployment Waf Policy Compiling Status", + "readOnly": true + }, + "applyingState": { + "$ref": "#/definitions/NginxDeploymentWafPolicyApplyingStatus", + "description": "Nginx Deployment Waf Policy Applying Status", + "readOnly": true + } + } + }, + "NginxFrontendIPConfiguration": { + "type": "object", + "description": "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": [] + } + } + }, + "NginxLogging": { + "type": "object", + "description": "Nginx Logging", + "properties": { + "storageAccount": { + "$ref": "#/definitions/NginxStorageAccount", + "description": "Nginx Storage Account" + } + } + }, + "NginxNetworkInterfaceConfiguration": { + "type": "object", + "description": "Nginx Network Interface Configuration", + "properties": { + "subnetId": { + "type": "string" + } + } + }, + "NginxNetworkProfile": { + "type": "object", + "description": "Nginx Network Profile", + "properties": { + "frontEndIPConfiguration": { + "$ref": "#/definitions/NginxFrontendIPConfiguration", + "description": "Nginx Frontend IP Configuration" + }, + "networkInterfaceConfiguration": { + "$ref": "#/definitions/NginxNetworkInterfaceConfiguration", + "description": "Nginx Network Interface Configuration" + } + } + }, + "NginxPrivateIPAddress": { + "type": "object", + "description": "Nginx Private IP Address", + "properties": { + "privateIPAddress": { + "type": "string" + }, + "privateIPAllocationMethod": { + "$ref": "#/definitions/NginxPrivateIPAllocationMethod", + "description": "Nginx Private IP Allocation Method" + }, + "subnetId": { + "type": "string" + } + } + }, + "NginxPrivateIPAllocationMethod": { + "type": "string", + "description": "Nginx Private IP Allocation Method", + "enum": [ + "Static", + "Dynamic" + ], + "x-ms-enum": { + "name": "NginxPrivateIPAllocationMethod", + "modelAsString": true, + "values": [ + { + "name": "Static", + "value": "Static" + }, + { + "name": "Dynamic", + "value": "Dynamic" + } + ] + } + }, + "NginxPublicIPAddress": { + "type": "object", + "description": "Nginx Public IP Address", + "properties": { + "id": { + "type": "string" + } + } + }, + "NginxStorageAccount": { + "type": "object", + "description": "Nginx Storage Account", + "properties": { + "accountName": { + "type": "string" + }, + "containerName": { + "type": "string" + } + } + }, + "ProvisioningState": { + "type": "string", + "description": "Provisioning State", + "enum": [ + "Accepted", + "Creating", + "Updating", + "Deleting", + "Succeeded", + "Failed", + "Canceled", + "Deleted", + "NotSpecified" + ], + "x-ms-enum": { + "name": "ProvisioningState", + "modelAsString": true, + "values": [ + { + "name": "Accepted", + "value": "Accepted" + }, + { + "name": "Creating", + "value": "Creating" + }, + { + "name": "Updating", + "value": "Updating" + }, + { + "name": "Deleting", + "value": "Deleting" + }, + { + "name": "Succeeded", + "value": "Succeeded" + }, + { + "name": "Failed", + "value": "Failed" + }, + { + "name": "Canceled", + "value": "Canceled" + }, + { + "name": "Deleted", + "value": "Deleted" + }, + { + "name": "NotSpecified", + "value": "NotSpecified" + } + ] + } + }, + "ResourceSku": { + "type": "object", + "description": "Resource Sku", + "properties": { + "name": { + "type": "string", + "description": "Name of the SKU." + } + }, + "required": [ + "name" + ] + }, + "ScaleProfile": { + "type": "object", + "description": "The autoscale profile.", + "properties": { + "name": { + "type": "string" + }, + "capacity": { + "$ref": "#/definitions/ScaleProfileCapacity", + "description": "The capacity parameters of the profile.", + "x-ms-client-flatten": true + } + }, + "required": [ + "name", + "capacity" + ] + }, + "ScaleProfileCapacity": { + "type": "object", + "description": "The capacity parameters of the profile.", + "properties": { + "min": { + "type": "integer", + "format": "int32", + "description": "The minimum number of NCUs the deployment can be autoscaled to." + }, + "max": { + "type": "integer", + "format": "int32", + "description": "The maximum number of NCUs the deployment can be autoscaled to." + } + }, + "required": [ + "min", + "max" + ] + }, + "UserIdentityProperties": { + "type": "object", + "description": "User Identity Properties", + "properties": { + "principalId": { + "type": "string", + "readOnly": true + }, + "clientId": { + "type": "string", + "readOnly": true + } + } + }, + "WebApplicationFirewallComponentVersions": { + "type": "object", + "description": "Versions of the NGINX App Protect Web Application Firewall (WAF) components.", + "properties": { + "wafEngineVersion": { + "type": "string", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) engine." + }, + "wafNginxVersion": { + "type": "string", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) module for NGINX." + } + }, + "required": [ + "wafEngineVersion", + "wafNginxVersion" + ] + }, + "WebApplicationFirewallPackage": { + "type": "object", + "description": "NGINX App Protect Web Application Firewall (WAF) Package. Contains the version and revision date of the package.", + "properties": { + "version": { + "type": "string", + "description": "The version of the NGINX App Protect Web Application Firewall (WAF) package." + }, + "revisionDatetime": { + "type": "string", + "format": "date-time", + "description": "The date and time of the package revision." + } + }, + "required": [ + "version", + "revisionDatetime" + ] + }, + "WebApplicationFirewallSettings": { + "type": "object", + "description": "Settings for the NGINX App Protect Web Application Firewall (WAF)", + "properties": { + "activationState": { + "$ref": "#/definitions/ActivationState", + "description": "The activation state of the WAF. Use 'Enabled' to enable the WAF and 'Disabled' to disable it." + } + } + }, + "WebApplicationFirewallStatus": { + "type": "object", + "description": "The status of the NGINX App Protect Web Application Firewall", + "properties": { + "wafRelease": { + "type": "string", + "description": "NGINX App Protect WAF release version" + }, + "attackSignaturesPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "description": "Package containing attack signatures for the NGINX App Protect Web Application Firewall (WAF).", + "readOnly": true + }, + "botSignaturesPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "description": "Package containing bot signatures for the NGINX App Protect Web Application Firewall (WAF).", + "readOnly": true + }, + "threatCampaignsPackage": { + "$ref": "#/definitions/WebApplicationFirewallPackage", + "description": "Package containing threat campaigns for the NGINX App Protect Web Application Firewall (WAF).", + "readOnly": true + }, + "componentVersions": { + "$ref": "#/definitions/WebApplicationFirewallComponentVersions", + "description": "Versions of the NGINX App Protect Web Application Firewall (WAF) components.", + "readOnly": true + } + } + } + }, + "parameters": {} +} diff --git a/specification/nginx/resource-manager/readme.md b/specification/nginx/resource-manager/readme.md index 9301ea072831..8a5367a043bb 100644 --- a/specification/nginx/resource-manager/readme.md +++ b/specification/nginx/resource-manager/readme.md @@ -28,7 +28,7 @@ These are the global settings for the Nginx API. title: NginxManagementClient openapi-type: arm openapi-subtype: rpaas -tag: package-preview-2025-03-01 +tag: package-2025-11-01 ``` ### Tag: package-2021-05-01-preview @@ -103,6 +103,7 @@ input-file: - Nginx.NginxPlus/preview/2024-09-01-preview/swagger.json ``` + ### Tag: package-preview-2024-11-01 These settings apply only when `--tag=package-preview-2024-11-01` is specified on the command line. @@ -112,6 +113,7 @@ input-file: - Nginx.NginxPlus/preview/2024-11-01-preview/swagger.json ``` + ### Tag: package-preview-2025-03-01 These settings apply only when `--tag=package-preview-2025-03-01` is specified on the command line. @@ -121,18 +123,11 @@ input-file: - Nginx.NginxPlus/preview/2025-03-01-preview/swagger.json ``` -# Code Generation +### Tag: package-2025-11-01 -## Swagger to SDK +These settings apply only when `--tag=package-2025-11-01` is specified on the command line. -This section describes what SDK should be generated by the automatic system. -This is not used by Autorest itself. - -``` yaml $(swagger-to-sdk) -swagger-to-sdk: - - repo: azure-sdk-for-python -``` - -## Python - -See configuration in [readme.python.md](./readme.python.md) +```yaml $(tag) == 'package-2025-11-01' +input-file: + - Nginx.NginxPlus/stable/2025-11-01/swagger.json +``` \ No newline at end of file