{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-cache-for-redis/json-schema/microsoft-azure-cache-for-redis-database-list-schema.json",
  "title": "DatabaseList",
  "description": "The response of a list-all operation.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-cache-for-redis-databases-api-openapi.yml#/components/schemas/DatabaseList",
  "type": "object",
  "properties": {
    "value": {
      "type": "array",
      "description": "The Database items on this page",
      "items": {
        "$ref": "#/$defs/Database"
      }
    },
    "nextLink": {
      "type": "string",
      "format": "uri",
      "description": "The link to the next page of items"
    }
  },
  "required": [
    "value"
  ],
  "$defs": {
    "AccessKeysAuthentication": {
      "type": "string",
      "description": "This property can be Enabled/Disabled to allow or deny access with the current access keys. Can be updated even after database is created.",
      "enum": [
        "Disabled",
        "Enabled"
      ],
      "x-ms-enum": {
        "name": "AccessKeysAuthentication",
        "modelAsString": true,
        "values": [
          {
            "name": "Disabled",
            "value": "Disabled",
            "description": "Disabled"
          },
          {
            "name": "Enabled",
            "value": "Enabled",
            "description": "Enabled"
          }
        ]
      }
    },
    "AofFrequency": {
      "type": "string",
      "description": "Sets the frequency at which data is written to disk. Defaults to '1s', meaning 'every second'. Note that the 'always' setting is deprecated, because of its performance impact.",
      "enum": [
        "1s",
        "always"
      ],
      "x-ms-enum": {
        "name": "AofFrequency",
        "modelAsString": true,
        "values": [
          {
            "name": "OneS",
            "value": "1s",
            "description": "1s"
          },
          {
            "name": "Always",
            "value": "always",
            "description": "always"
          }
        ]
      }
    },
    "ClusteringPolicy": {
      "type": "string",
      "description": "Clustering policy - default is OSSCluster. This property can be updated only if the current value is NoCluster. If the value is OSSCluster or EnterpriseCluster, it cannot be updated without deleting the database.",
      "enum": [
        "EnterpriseCluster",
        "OSSCluster",
        "NoCluster"
      ],
      "x-ms-enum": {
        "name": "ClusteringPolicy",
        "modelAsString": true,
        "values": [
          {
            "name": "EnterpriseCluster",
            "value": "EnterpriseCluster",
            "description": "Enterprise clustering policy uses only the classic redis protocol, which does not support redis cluster commands."
          },
          {
            "name": "OSSCluster",
            "value": "OSSCluster",
            "description": "OSS clustering policy follows the redis cluster specification, and requires all clients to support redis clustering."
          },
          {
            "name": "NoCluster",
            "value": "NoCluster",
            "description": "The NoCluster policy is used for non-clustered Redis instances that do not require clustering features."
          }
        ]
      }
    },
    "Database": {
      "type": "object",
      "description": "Describes a database on the Redis Enterprise cluster",
      "properties": {
        "properties": {
          "$ref": "#/$defs/DatabaseCreateProperties",
          "description": "Other properties of the database.",
          "x-ms-client-flatten": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/ProxyResource"
        }
      ]
    },
    "DatabaseCreateProperties": {
      "type": "object",
      "description": "Properties for creating Redis Enterprise databases",
      "properties": {
        "accessKeysAuthentication": {
          "type": "string",
          "description": "This property can be Enabled/Disabled to allow or deny access with the current access keys. Can be updated even after database is created. Default is Disabled.",
          "default": "Disabled",
          "enum": [
            "Disabled",
            "Enabled"
          ],
          "x-ms-enum": {
            "name": "AccessKeysAuthentication",
            "modelAsString": true,
            "values": [
              {
                "name": "Disabled",
                "value": "Disabled",
                "description": "Disabled"
              },
              {
                "name": "Enabled",
                "value": "Enabled",
                "description": "Enabled"
              }
            ]
          }
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/DatabaseProperties"
        }
      ]
    },
    "DatabaseProperties": {
      "type": "object",
      "description": "Properties of Redis Enterprise databases, as opposed to general resource properties like location, tags",
      "properties": {
        "clientProtocol": {
          "$ref": "#/$defs/Protocol",
          "description": "Specifies whether redis clients can connect using TLS-encrypted or plaintext redis protocols. Default is TLS-encrypted."
        },
        "port": {
          "type": "integer",
          "format": "int32",
          "description": "TCP port of the database endpoint. Specified at create time. Defaults to an available port.",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "Current provisioning status of the database",
          "readOnly": true
        },
        "resourceState": {
          "$ref": "#/$defs/ResourceState",
          "description": "Current resource status of the database",
          "readOnly": true
        },
        "clusteringPolicy": {
          "$ref": "#/$defs/ClusteringPolicy",
          "description": "Clustering policy - default is OSSCluster. This property can be updated only if the current value is NoCluster. If the value is OSSCluster or EnterpriseCluster, it cannot be updated without deleting the database.",
          "x-ms-mutability": [
            "read",
            "update",
            "create"
          ]
        },
        "evictionPolicy": {
          "$ref": "#/$defs/EvictionPolicy",
          "description": "Redis eviction policy - default is VolatileLRU"
        },
        "persistence": {
          "$ref": "#/$defs/Persistence",
          "description": "Persistence settings"
        },
        "modules": {
          "type": "array",
          "description": "Optional set of redis modules to enable in this database - modules can only be added at creation time.",
          "items": {
            "$ref": "#/$defs/Module"
          },
          "x-ms-identifiers": [
            "name"
          ],
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "geoReplication": {
          "$ref": "#/$defs/DatabasePropertiesGeoReplication",
          "description": "Optional set of properties to configure geo replication for this database.",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "redisVersion": {
          "type": "string",
          "description": "Version of Redis the database is running on, e.g. '6.0'",
          "readOnly": true
        },
        "deferUpgrade": {
          "$ref": "#/$defs/DeferUpgradeSetting",
          "description": "Option to defer upgrade when newest version is released - default is NotDeferred. Learn more: https://aka.ms/redisversionupgrade"
        },
        "accessKeysAuthentication": {
          "$ref": "#/$defs/AccessKeysAuthentication",
          "description": "This property can be Enabled/Disabled to allow or deny access with the current access keys. Can be updated even after database is created."
        },
        "notifyKeyspaceEvents": {
          "type": "string",
          "description": "Specifies which keyspace events should trigger notifications. Default is an empty string, meaning this feature is disabled. When enabled, at least 'K' (keyspace events) or 'E' (keyevent events) must be present. For example, 'AKE' enables all standard events. See https://redis.io/docs/latest/develop/use/keyspace-notifications/ for the complete list of event types."
        }
      }
    },
    "DatabasePropertiesGeoReplication": {
      "type": "object",
      "description": "Optional set of properties to configure geo replication for this database.",
      "properties": {
        "groupNickname": {
          "type": "string",
          "description": "Name for the group of linked database resources",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "linkedDatabases": {
          "type": "array",
          "description": "List of database resources to link with this database",
          "items": {
            "$ref": "#/$defs/LinkedDatabase"
          }
        }
      }
    },
    "DeferUpgradeSetting": {
      "type": "string",
      "description": "Option to defer upgrade when newest version is released - default is NotDeferred. Learn more: https://aka.ms/redisversionupgrade",
      "enum": [
        "Deferred",
        "NotDeferred"
      ],
      "x-ms-enum": {
        "name": "DeferUpgradeSetting",
        "modelAsString": true,
        "values": [
          {
            "name": "Deferred",
            "value": "Deferred",
            "description": "Deferred"
          },
          {
            "name": "NotDeferred",
            "value": "NotDeferred",
            "description": "NotDeferred"
          }
        ]
      }
    },
    "EvictionPolicy": {
      "type": "string",
      "description": "Redis eviction policy - default is VolatileLRU",
      "enum": [
        "AllKeysLFU",
        "AllKeysLRU",
        "AllKeysRandom",
        "VolatileLRU",
        "VolatileLFU",
        "VolatileTTL",
        "VolatileRandom",
        "NoEviction"
      ],
      "x-ms-enum": {
        "name": "EvictionPolicy",
        "modelAsString": true,
        "values": [
          {
            "name": "AllKeysLFU",
            "value": "AllKeysLFU",
            "description": "AllKeysLFU"
          },
          {
            "name": "AllKeysLRU",
            "value": "AllKeysLRU",
            "description": "AllKeysLRU"
          },
          {
            "name": "AllKeysRandom",
            "value": "AllKeysRandom",
            "description": "AllKeysRandom"
          },
          {
            "name": "VolatileLRU",
            "value": "VolatileLRU",
            "description": "VolatileLRU"
          },
          {
            "name": "VolatileLFU",
            "value": "VolatileLFU",
            "description": "VolatileLFU"
          },
          {
            "name": "VolatileTTL",
            "value": "VolatileTTL",
            "description": "VolatileTTL"
          },
          {
            "name": "VolatileRandom",
            "value": "VolatileRandom",
            "description": "VolatileRandom"
          },
          {
            "name": "NoEviction",
            "value": "NoEviction",
            "description": "NoEviction"
          }
        ]
      }
    },
    "LinkState": {
      "type": "string",
      "description": "State of the link between the database resources.",
      "enum": [
        "Linked",
        "Linking",
        "Unlinking",
        "LinkFailed",
        "UnlinkFailed"
      ],
      "x-ms-enum": {
        "name": "LinkState",
        "modelAsString": true,
        "values": [
          {
            "name": "Linked",
            "value": "Linked",
            "description": "Linked"
          },
          {
            "name": "Linking",
            "value": "Linking",
            "description": "Linking"
          },
          {
            "name": "Unlinking",
            "value": "Unlinking",
            "description": "Unlinking"
          },
          {
            "name": "LinkFailed",
            "value": "LinkFailed",
            "description": "LinkFailed"
          },
          {
            "name": "UnlinkFailed",
            "value": "UnlinkFailed",
            "description": "UnlinkFailed"
          }
        ]
      }
    },
    "LinkedDatabase": {
      "type": "object",
      "description": "Specifies details of a linked database resource.",
      "properties": {
        "id": {
          "type": "string",
          "format": "arm-id",
          "description": "Resource ID of a database resource to link with this database.",
          "x-ms-mutability": [
            "read",
            "create"
          ],
          "x-ms-arm-id-details": {
            "allowedResources": [
              {
                "type": "Microsoft.Cache/redisEnterprise/databases"
              }
            ]
          }
        },
        "state": {
          "$ref": "#/$defs/LinkState",
          "description": "State of the link between the database resources.",
          "readOnly": true
        }
      }
    },
    "Module": {
      "type": "object",
      "description": "Specifies configuration of a redis module",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the module, e.g. 'RedisBloom', 'RediSearch', 'RedisTimeSeries'",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "args": {
          "type": "string",
          "description": "Configuration options for the module, e.g. 'ERROR_RATE 0.01 INITIAL_SIZE 400'.",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "version": {
          "type": "string",
          "description": "The version of the module, e.g. '1.0'.",
          "readOnly": true
        }
      },
      "required": [
        "name"
      ]
    },
    "Persistence": {
      "type": "object",
      "description": "Persistence-related configuration for the Redis Enterprise database",
      "properties": {
        "aofEnabled": {
          "type": "boolean",
          "description": "Sets whether AOF is enabled. Note that at most one of AOF or RDB persistence may be enabled."
        },
        "rdbEnabled": {
          "type": "boolean",
          "description": "Sets whether RDB is enabled. Note that at most one of AOF or RDB persistence may be enabled."
        },
        "aofFrequency": {
          "$ref": "#/$defs/AofFrequency",
          "description": "Sets the frequency at which data is written to disk. Defaults to '1s', meaning 'every second'. Note that the 'always' setting is deprecated, because of its performance impact."
        },
        "rdbFrequency": {
          "$ref": "#/$defs/RdbFrequency",
          "description": "Sets the frequency at which a snapshot of the database is created."
        }
      }
    },
    "Protocol": {
      "type": "string",
      "description": "Specifies whether redis clients can connect using TLS-encrypted or plaintext redis protocols. Default is TLS-encrypted.",
      "enum": [
        "Encrypted",
        "Plaintext"
      ],
      "x-ms-enum": {
        "name": "Protocol",
        "modelAsString": true,
        "values": [
          {
            "name": "Encrypted",
            "value": "Encrypted",
            "description": "Encrypted"
          },
          {
            "name": "Plaintext",
            "value": "Plaintext",
            "description": "Plaintext"
          }
        ]
      }
    },
    "ProvisioningState": {
      "type": "string",
      "description": "Current provisioning status",
      "enum": [
        "Succeeded",
        "Failed",
        "Canceled",
        "Creating",
        "Updating",
        "Deleting"
      ],
      "x-ms-enum": {
        "name": "ProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Succeeded",
            "value": "Succeeded",
            "description": "Succeeded"
          },
          {
            "name": "Failed",
            "value": "Failed",
            "description": "Failed"
          },
          {
            "name": "Canceled",
            "value": "Canceled",
            "description": "Canceled"
          },
          {
            "name": "Creating",
            "value": "Creating",
            "description": "Creating"
          },
          {
            "name": "Updating",
            "value": "Updating",
            "description": "Updating"
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "Deleting"
          }
        ]
      }
    },
    "ProxyResource": {
      "type": "object",
      "title": "Proxy Resource",
      "description": "The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location",
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ]
    },
    "RdbFrequency": {
      "type": "string",
      "description": "Sets the frequency at which a snapshot of the database is created.",
      "enum": [
        "1h",
        "6h",
        "12h"
      ],
      "x-ms-enum": {
        "name": "RdbFrequency",
        "modelAsString": true,
        "values": [
          {
            "name": "OneH",
            "value": "1h",
            "description": "1h"
          },
          {
            "name": "SixH",
            "value": "6h",
            "description": "6h"
          },
          {
            "name": "TwelveH",
            "value": "12h",
            "description": "12h"
          }
        ]
      }
    },
    "Resource": {
      "type": "object",
      "title": "Resource",
      "description": "Common fields that are returned in the response for all Azure Resource Manager resources",
      "properties": {
        "id": {
          "type": "string",
          "format": "arm-id",
          "description": "Fully qualified resource ID for the resource. E.g. \"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}\"",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of the resource",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The type of the resource. E.g. \"Microsoft.Compute/virtualMachines\" or \"Microsoft.Storage/storageAccounts\"",
          "readOnly": true
        },
        "systemData": {
          "$ref": "#/$defs/systemData",
          "description": "Azure Resource Manager metadata containing createdBy and modifiedBy information.",
          "readOnly": true
        }
      },
      "x-ms-azure-resource": true
    },
    "ResourceState": {
      "type": "string",
      "description": "Current resource status",
      "enum": [
        "Running",
        "Creating",
        "CreateFailed",
        "Updating",
        "UpdateFailed",
        "Deleting",
        "DeleteFailed",
        "Enabling",
        "EnableFailed",
        "Disabling",
        "DisableFailed",
        "Disabled",
        "Scaling",
        "ScalingFailed",
        "Moving"
      ],
      "x-ms-enum": {
        "name": "ResourceState",
        "modelAsString": true,
        "values": [
          {
            "name": "Running",
            "value": "Running",
            "description": "Running"
          },
          {
            "name": "Creating",
            "value": "Creating",
            "description": "Creating"
          },
          {
            "name": "CreateFailed",
            "value": "CreateFailed",
            "description": "CreateFailed"
          },
          {
            "name": "Updating",
            "value": "Updating",
            "description": "Updating"
          },
          {
            "name": "UpdateFailed",
            "value": "UpdateFailed",
            "description": "UpdateFailed"
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "Deleting"
          },
          {
            "name": "DeleteFailed",
            "value": "DeleteFailed",
            "description": "DeleteFailed"
          },
          {
            "name": "Enabling",
            "value": "Enabling",
            "description": "Enabling"
          },
          {
            "name": "EnableFailed",
            "value": "EnableFailed",
            "description": "EnableFailed"
          },
          {
            "name": "Disabling",
            "value": "Disabling",
            "description": "Disabling"
          },
          {
            "name": "DisableFailed",
            "value": "DisableFailed",
            "description": "DisableFailed"
          },
          {
            "name": "Disabled",
            "value": "Disabled",
            "description": "Disabled"
          },
          {
            "name": "Scaling",
            "value": "Scaling",
            "description": "Scaling"
          },
          {
            "name": "ScalingFailed",
            "value": "ScalingFailed",
            "description": "ScalingFailed"
          },
          {
            "name": "Moving",
            "value": "Moving",
            "description": "Moving"
          }
        ]
      }
    }
  }
}