{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--azure-auth-service-subschema.json",
  "title": "mlos_bench Azure FileShare Service config",
  "description": "config for an mlos_bench Azure Authentication Service",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/microsoft/MLOS/main/mlos_bench/mlos_bench/config/schemas/services/remote/azure/azure-auth-service-subschema.json",
    "sourceSha256": "0f3e21406e8ac79a8160a47273ba2b95a6948ce4ec3fd3525a16c4e6010ab4a6"
  },
  "type": "object",
  "properties": {
    "class": {
      "enum": [
        "mlos_bench.services.remote.azure.AzureAuthService",
        "mlos_bench.services.remote.azure.azure_auth.AzureAuthService"
      ]
    },
    "config": {
      "type": "object",
      "allOf": [
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--common-defs-subschemas.json#/$defs/poll_configs"
        },
        {
          "type": "object",
          "properties": {
            "tokenRequestInterval": {
              "description": "Time before token expiration to request a new token",
              "type": "number"
            },
            "spClientId": {
              "description": "Client ID of the Service Principal to authenticate as",
              "type": "string"
            },
            "keyVaultName": {
              "description": "Name of key vault to retrieve the certificate from, for authorizing the Service Principal",
              "type": "string"
            },
            "certName": {
              "description": "Name of the Service Principal's certificate in the key vault",
              "type": "string"
            },
            "tenant": {
              "description": "Tenant ID of the Service Principal",
              "type": "string"
            }
          }
        }
      ],
      "dependentSchemas": {
        "spClientId": {
          "required": [
            "keyVaultName",
            "certName",
            "tenant"
          ]
        }
      },
      "unevaluatedProperties": false
    }
  },
  "required": [
    "class"
  ]
}
