{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-service-fabric/json-schema/microsoft-azure-service-fabric-application-resource-list-schema.json",
  "title": "ApplicationResourceList",
  "description": "The list of application resources.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-service-fabric-applications-api-openapi.yml#/components/schemas/ApplicationResourceList",
  "type": "object",
  "properties": {
    "value": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ApplicationResource"
      }
    },
    "nextLink": {
      "type": "string",
      "description": "URL to get the next set of application list results if there are any.",
      "readOnly": true
    }
  },
  "$defs": {
    "ApplicationMetricDescription": {
      "type": "object",
      "description": "Describes capacity information for a custom resource balancing metric. This can be used to limit the total consumption of this metric by the services of this application.\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the metric."
        },
        "maximumCapacity": {
          "type": "integer",
          "format": "int64",
          "description": "The maximum node capacity for Service Fabric application.\nThis is the maximum Load for an instance of this application on a single node. Even if the capacity of node is greater than this value, Service Fabric will limit the total load of services within the application on each node to this value.\nIf set to zero, capacity for this metric is unlimited on each node.\nWhen creating a new application with application capacity defined, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.\nWhen updating existing application with application capacity, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.\n"
        },
        "reservationCapacity": {
          "type": "integer",
          "format": "int64",
          "description": "The node reservation capacity for Service Fabric application.\nThis is the amount of load which is reserved on nodes which have instances of this application.\nIf MinimumNodes is specified, then the product of these values will be the capacity reserved in the cluster for the application.\nIf set to zero, no capacity is reserved for this metric.\nWhen setting application capacity or when updating application capacity; this value must be smaller than or equal to MaximumCapacity for each metric.\n"
        },
        "totalApplicationCapacity": {
          "description": "The total metric capacity for Service Fabric application.\nThis is the total metric capacity for this application in the cluster. Service Fabric will try to limit the sum of loads of services within the application to this value.\nWhen creating a new application with application capacity defined, the product of MaximumNodes and MaximumCapacity must always be smaller than or equal to this value.\n",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "ApplicationMetricDescriptionList": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ApplicationMetricDescription"
      },
      "description": "List of application capacity metric description."
    },
    "ApplicationParameterList": {
      "type": "object",
      "description": "List of application parameters with overridden values from their default values specified in the application manifest.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "ApplicationResource": {
      "type": "object",
      "description": "The application resource.",
      "properties": {
        "identity": {
          "$ref": "#/$defs/ManagedIdentity"
        },
        "properties": {
          "$ref": "#/$defs/ApplicationResourceProperties"
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/ProxyResource"
        }
      ]
    },
    "ApplicationResourceProperties": {
      "type": "object",
      "description": "The application resource properties.",
      "allOf": [
        {
          "$ref": "#/$defs/ApplicationResourceUpdateProperties"
        }
      ],
      "properties": {
        "provisioningState": {
          "readOnly": true,
          "type": "string",
          "description": "The current deployment or provisioning state, which only appears in the response"
        },
        "typeName": {
          "$ref": "#/$defs/ApplicationTypeName"
        }
      }
    },
    "ApplicationResourceUpdateProperties": {
      "type": "object",
      "description": "The application resource properties for patch operations.",
      "properties": {
        "typeVersion": {
          "$ref": "#/$defs/ApplicationTypeVersion"
        },
        "parameters": {
          "$ref": "#/$defs/ApplicationParameterList"
        },
        "upgradePolicy": {
          "$ref": "#/$defs/ApplicationUpgradePolicy"
        },
        "minimumNodes": {
          "type": "integer",
          "format": "int64",
          "description": "The minimum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. The value of this property cannot be more than the value of the MaximumNodes property.",
          "minimum": 0
        },
        "maximumNodes": {
          "type": "integer",
          "format": "int64",
          "description": "The maximum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. By default, the value of this property is zero and it means that the services can be placed on any node.",
          "minimum": 0,
          "default": 0
        },
        "removeApplicationCapacity": {
          "type": "boolean",
          "description": "Remove the current application capacity settings."
        },
        "metrics": {
          "$ref": "#/$defs/ApplicationMetricDescriptionList"
        },
        "managedIdentities": {
          "description": "List of user assigned identities for the application, each mapped to a friendly name.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/ApplicationUserAssignedIdentity"
          }
        }
      }
    },
    "ApplicationTypeName": {
      "type": "string",
      "description": "The application type name as defined in the application manifest."
    },
    "ApplicationTypeVersion": {
      "type": "string",
      "description": "The version of the application type as defined in the application manifest."
    },
    "ApplicationUpgradePolicy": {
      "type": "object",
      "description": "Describes the policy for a monitored application upgrade.",
      "properties": {
        "upgradeReplicaSetCheckTimeout": {
          "type": "string",
          "description": "The maximum amount of time to block processing of an upgrade domain and prevent loss of availability when there are unexpected issues. When this timeout expires, processing of the upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the start of each upgrade domain. Valid values are between 0 and 42949672925 inclusive. (unsigned 32-bit integer)."
        },
        "forceRestart": {
          "$ref": "#/$defs/ForceRestart"
        },
        "rollingUpgradeMonitoringPolicy": {
          "$ref": "#/$defs/ArmRollingUpgradeMonitoringPolicy"
        },
        "applicationHealthPolicy": {
          "$ref": "#/$defs/ArmApplicationHealthPolicy"
        },
        "upgradeMode": {
          "$ref": "#/$defs/RollingUpgradeMode"
        },
        "recreateApplication": {
          "type": "boolean",
          "description": "Determines whether the application should be recreated on update. If value=true, the rest of the upgrade policy parameters are not allowed and it will result in availability loss."
        }
      }
    },
    "ApplicationUserAssignedIdentity": {
      "type": "object",
      "required": [
        "name",
        "principalId"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The friendly name of user assigned identity."
        },
        "principalId": {
          "type": "string",
          "description": "The principal id of user assigned identity."
        }
      }
    },
    "ArmApplicationHealthPolicy": {
      "type": "object",
      "description": "Defines a health policy used to evaluate the health of an application or one of its children entities.\n",
      "properties": {
        "considerWarningAsError": {
          "type": "boolean",
          "description": "Indicates whether warnings are treated with the same severity as errors.",
          "default": false
        },
        "maxPercentUnhealthyDeployedApplications": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum allowed percentage of unhealthy deployed applications. Allowed values are Byte values from zero to 100.\nThe percentage represents the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error.\nThis is calculated by dividing the number of unhealthy deployed applications over the number of nodes where the application is currently deployed on in the cluster.\nThe computation rounds up to tolerate one failure on small numbers of nodes. Default percentage is zero.\n",
          "default": 0
        },
        "defaultServiceTypeHealthPolicy": {
          "$ref": "#/$defs/ArmServiceTypeHealthPolicy"
        },
        "serviceTypeHealthPolicyMap": {
          "$ref": "#/$defs/ArmServiceTypeHealthPolicyMap"
        }
      }
    },
    "ArmRollingUpgradeMonitoringPolicy": {
      "type": "object",
      "description": "The policy used for monitoring the application upgrade",
      "properties": {
        "failureAction": {
          "type": "string",
          "description": "The activation Mode of the service package",
          "enum": [
            "Rollback",
            "Manual"
          ],
          "x-ms-enum": {
            "name": "ArmUpgradeFailureAction",
            "modelAsString": true,
            "values": [
              {
                "value": "Rollback",
                "description": "Indicates that a rollback of the upgrade will be performed by Service Fabric if the upgrade fails."
              },
              {
                "value": "Manual",
                "description": "Indicates that a manual repair will need to be performed by the administrator if the upgrade fails. Service Fabric will not proceed to the next upgrade domain automatically."
              }
            ]
          }
        },
        "healthCheckWaitDuration": {
          "$ref": "#/$defs/HealthCheckWaitDuration"
        },
        "healthCheckStableDuration": {
          "$ref": "#/$defs/HealthCheckStableDuration"
        },
        "healthCheckRetryTimeout": {
          "$ref": "#/$defs/HealthCheckRetryTimeout"
        },
        "upgradeTimeout": {
          "$ref": "#/$defs/UpgradeTimeout"
        },
        "upgradeDomainTimeout": {
          "$ref": "#/$defs/UpgradeDomainTimeout"
        }
      }
    },
    "ArmServiceTypeHealthPolicy": {
      "type": "object",
      "description": "Represents the health policy used to evaluate the health of services belonging to a service type.\n",
      "properties": {
        "maxPercentUnhealthyServices": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum percentage of services allowed to be unhealthy before your application is considered in error.\n",
          "default": 0,
          "minimum": 0,
          "maximum": 100
        },
        "maxPercentUnhealthyPartitionsPerService": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum percentage of partitions per service allowed to be unhealthy before your application is considered in error.\n",
          "default": 0,
          "minimum": 0,
          "maximum": 100
        },
        "maxPercentUnhealthyReplicasPerPartition": {
          "type": "integer",
          "format": "int32",
          "description": "The maximum percentage of replicas per partition allowed to be unhealthy before your application is considered in error.\n",
          "default": 0,
          "minimum": 0,
          "maximum": 100
        }
      }
    },
    "ArmServiceTypeHealthPolicyMap": {
      "type": "object",
      "description": "Defines a ServiceTypeHealthPolicy per service type name.\n\nThe entries in the map replace the default service type health policy for each specified service type.\nFor example, in an application that contains both a stateless gateway service type and a stateful engine service type, the health policies for the stateless and stateful services can be configured differently.\nWith policy per service type, there's more granular control of the health of the service.\n\nIf no policy is specified for a service type name, the DefaultServiceTypeHealthPolicy is used for evaluation.\n",
      "additionalProperties": {
        "$ref": "#/$defs/ArmServiceTypeHealthPolicy"
      }
    },
    "ForceRestart": {
      "type": "boolean",
      "description": "If true, then processes are forcefully restarted during upgrade even when the code version has not changed (the upgrade only changes configuration or data).",
      "default": false
    },
    "HealthCheckRetryTimeout": {
      "type": "string",
      "description": "The amount of time to retry health evaluation when the application or cluster is unhealthy before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.",
      "default": "PT0H10M0S"
    },
    "HealthCheckStableDuration": {
      "type": "string",
      "description": "The amount of time that the application or cluster must remain healthy before the upgrade proceeds to the next upgrade domain. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.",
      "default": "PT0H2M0S"
    },
    "HealthCheckWaitDuration": {
      "type": "string",
      "description": "The amount of time to wait after completing an upgrade domain before applying health policies. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.",
      "default": "0"
    },
    "ManagedIdentity": {
      "type": "object",
      "description": "Describes the managed identities for an Azure resource.",
      "properties": {
        "principalId": {
          "type": "string",
          "readOnly": true,
          "description": "The principal id of the managed identity. This property will only be provided for a system assigned identity."
        },
        "tenantId": {
          "type": "string",
          "readOnly": true,
          "description": "The tenant id of the managed identity. This property will only be provided for a system assigned identity."
        },
        "type": {
          "$ref": "#/$defs/ManagedIdentityType"
        },
        "userAssignedIdentities": {
          "$ref": "#/$defs/UserAssignedIdentityMap"
        }
      }
    },
    "ManagedIdentityType": {
      "type": "string",
      "description": "The type of managed identity for the resource.",
      "enum": [
        "SystemAssigned",
        "UserAssigned",
        "SystemAssigned, UserAssigned",
        "None"
      ],
      "x-ms-enum": {
        "name": "ManagedIdentityType",
        "modelAsString": false,
        "values": [
          {
            "value": "SystemAssigned",
            "description": "Indicates that system assigned identity is associated with the resource."
          },
          {
            "value": "UserAssigned",
            "description": "Indicates that user assigned identity is associated with the resource."
          },
          {
            "value": "SystemAssigned, UserAssigned",
            "description": "Indicates that both system assigned and user assigned identity are associated with the resource."
          },
          {
            "value": "None",
            "description": "Indicates that no identity is associated with the resource."
          }
        ]
      }
    },
    "ProxyResource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Azure resource identifier.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Azure resource name.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Azure resource type.",
          "readOnly": true
        },
        "location": {
          "type": "string",
          "description": "It will be deprecated in New API, resource location depends on the parent resource.",
          "x-ms-mutability": [
            "create",
            "read"
          ]
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Azure resource tags.",
          "x-ms-mutability": [
            "create",
            "read"
          ]
        },
        "etag": {
          "type": "string",
          "description": "Azure resource etag.",
          "readOnly": true
        },
        "systemData": {
          "$ref": "#/$defs/SystemData"
        }
      },
      "description": "The resource model definition for proxy-only resource.",
      "x-ms-azure-resource": true
    },
    "RollingUpgradeMode": {
      "type": "string",
      "description": "The mode used to monitor health during a rolling upgrade. The values are UnmonitoredAuto, UnmonitoredManual, and Monitored.",
      "enum": [
        "Invalid",
        "UnmonitoredAuto",
        "UnmonitoredManual",
        "Monitored"
      ],
      "default": "Monitored",
      "x-ms-enum": {
        "name": "RollingUpgradeMode",
        "modelAsString": true,
        "values": [
          {
            "value": "Invalid",
            "description": "Indicates the upgrade mode is invalid. All Service Fabric enumerations have the invalid type. The value is zero."
          },
          {
            "value": "UnmonitoredAuto",
            "description": "The upgrade will proceed automatically without performing any health monitoring. The value is 1"
          },
          {
            "value": "UnmonitoredManual",
            "description": "The upgrade will stop after completing each upgrade domain, giving the opportunity to manually monitor health before proceeding. The value is 2"
          },
          {
            "value": "Monitored",
            "description": "The upgrade will stop after completing each upgrade domain and automatically monitor health before proceeding. The value is 3"
          }
        ]
      }
    },
    "SystemData": {
      "description": "Metadata pertaining to creation and last modification of the resource.",
      "type": "object",
      "readOnly": true,
      "properties": {
        "createdBy": {
          "type": "string",
          "description": "The identity that created the resource."
        },
        "createdByType": {
          "type": "string",
          "description": "The type of identity that created the resource."
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of resource creation (UTC)."
        },
        "lastModifiedBy": {
          "type": "string",
          "description": "The identity that last modified the resource."
        },
        "lastModifiedByType": {
          "type": "string",
          "description": "The type of identity that last modified the resource."
        },
        "lastModifiedAt": {
          "type": "string",
          "format": "date-time",
          "description": "The timestamp of resource last modification (UTC)."
        }
      }
    },
    "UpgradeDomainTimeout": {
      "type": "string",
      "description": "The amount of time each upgrade domain has to complete before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.",
      "default": "P10675199DT02H48M05.4775807S"
    },
    "UpgradeTimeout": {
      "type": "string",
      "description": "The amount of time the overall upgrade has to complete before FailureAction is executed. It is first interpreted as a string representing an ISO 8601 duration. If that fails, then it is interpreted as a number representing the total number of milliseconds.",
      "default": "P10675199DT02H48M05.4775807S"
    },
    "UserAssignedIdentity": {
      "type": "object",
      "properties": {
        "principalId": {
          "type": "string",
          "readOnly": true,
          "description": "The principal id of user assigned identity."
        },
        "clientId": {
          "type": "string",
          "readOnly": true,
          "description": "The client id of user assigned identity."
        }
      }
    },
    "UserAssignedIdentityMap": {
      "type": "object",
      "description": "The list of user identities associated with the resource. The user identity dictionary key references will be ARM resource ids in the form:\n'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.\n",
      "additionalProperties": {
        "$ref": "#/$defs/UserAssignedIdentity"
      }
    }
  }
}