{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-data-factory/json-schema/microsoft-azure-data-factory-factory-schema.json",
  "title": "Factory",
  "description": "Factory resource type.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_superseded/microsoft-azure-data-factory-factories-api-openapi.yml#/components/schemas/Factory",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/FactoryProperties",
      "description": "Properties of the factory.",
      "x-ms-client-flatten": true
    },
    "identity": {
      "$ref": "#/$defs/FactoryIdentity",
      "description": "Managed service identity of the factory."
    },
    "location": {
      "type": "string",
      "description": "The resource location.",
      "x-ms-mutability": [
        "read",
        "create"
      ]
    },
    "tags": {
      "type": "object",
      "description": "The resource tags.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "eTag": {
      "type": "string",
      "description": "If eTag is provided in the response body, it may also be provided as a header per the normal etag convention.  Entity tags are used for comparing two or more entities from the same requested resource. HTTP/1.1 uses entity tags in the etag (section 14.19), If-Match (section 14.24), If-None-Match (section 14.26), and If-Range (section 14.27) header fields.",
      "readOnly": true
    }
  },
  "additionalProperties": {},
  "allOf": [
    {
      "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/ProxyResource"
    }
  ],
  "$defs": {
    "Azure.Core.uuid": {
      "type": "string",
      "format": "uuid",
      "description": "Universally Unique Identifier"
    },
    "CMKIdentityDefinition": {
      "type": "object",
      "description": "Managed Identity used for CMK.",
      "properties": {
        "userAssignedIdentity": {
          "type": "string",
          "description": "The resource id of the user assigned identity to authenticate to customer's key vault."
        }
      }
    },
    "EncryptionConfiguration": {
      "type": "object",
      "description": "Definition of CMK for the factory.",
      "properties": {
        "keyName": {
          "type": "string",
          "description": "The name of the key in Azure Key Vault to use as Customer Managed Key."
        },
        "vaultBaseUrl": {
          "type": "string",
          "description": "The url of the Azure Key Vault used for CMK."
        },
        "keyVersion": {
          "type": "string",
          "description": "The version of the key used for CMK. If not provided, latest version will be used."
        },
        "identity": {
          "$ref": "#/$defs/CMKIdentityDefinition",
          "description": "User assigned identity to use to authenticate to customer's key vault. If not provided Managed Service Identity will be used."
        }
      },
      "required": [
        "keyName",
        "vaultBaseUrl"
      ]
    },
    "FactoryIdentity": {
      "type": "object",
      "description": "Identity properties of the factory resource.",
      "properties": {
        "type": {
          "$ref": "#/$defs/FactoryIdentityType",
          "description": "The identity type."
        },
        "principalId": {
          "$ref": "#/$defs/Azure.Core.uuid",
          "description": "The principal id of the identity.",
          "readOnly": true
        },
        "tenantId": {
          "$ref": "#/$defs/Azure.Core.uuid",
          "description": "The client tenant id of the identity.",
          "readOnly": true
        },
        "userAssignedIdentities": {
          "type": "object",
          "description": "List of user assigned identities for the factory.",
          "additionalProperties": {}
        }
      },
      "required": [
        "type"
      ]
    },
    "FactoryIdentityType": {
      "type": "string",
      "description": "The identity type.",
      "enum": [
        "SystemAssigned",
        "UserAssigned",
        "SystemAssigned,UserAssigned"
      ],
      "x-ms-enum": {
        "name": "FactoryIdentityType",
        "modelAsString": true,
        "values": [
          {
            "name": "SystemAssigned",
            "value": "SystemAssigned",
            "description": "SystemAssigned"
          },
          {
            "name": "UserAssigned",
            "value": "UserAssigned",
            "description": "UserAssigned"
          },
          {
            "name": "SystemAssigned,UserAssigned",
            "value": "SystemAssigned,UserAssigned",
            "description": "SystemAssigned,UserAssigned"
          }
        ]
      }
    },
    "FactoryProperties": {
      "type": "object",
      "description": "Factory resource properties.",
      "properties": {
        "provisioningState": {
          "type": "string",
          "description": "Factory provisioning state, example Succeeded.",
          "readOnly": true
        },
        "createTime": {
          "type": "string",
          "format": "date-time",
          "description": "Time the factory was created in ISO8601 format.",
          "readOnly": true
        },
        "version": {
          "type": "string",
          "description": "Version of the factory.",
          "readOnly": true
        },
        "purviewConfiguration": {
          "$ref": "#/$defs/PurviewConfiguration",
          "description": "Purview information of the factory."
        },
        "repoConfiguration": {
          "$ref": "#/$defs/FactoryRepoConfiguration",
          "description": "Git repo information of the factory."
        },
        "globalParameters": {
          "type": "object",
          "description": "List of parameters for factory.",
          "additionalProperties": {
            "$ref": "#/$defs/GlobalParameterSpecification"
          }
        },
        "encryption": {
          "$ref": "#/$defs/EncryptionConfiguration",
          "description": "Properties to enable Customer Managed Key for the factory."
        },
        "publicNetworkAccess": {
          "$ref": "#/$defs/PublicNetworkAccess",
          "description": "Whether or not public network access is allowed for the data factory."
        }
      }
    },
    "FactoryRepoConfiguration": {
      "type": "object",
      "description": "Factory's git repo information.",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of repo configuration."
        },
        "accountName": {
          "type": "string",
          "description": "Account name."
        },
        "repositoryName": {
          "type": "string",
          "description": "Repository name."
        },
        "collaborationBranch": {
          "type": "string",
          "description": "Collaboration branch."
        },
        "rootFolder": {
          "type": "string",
          "description": "Root folder."
        },
        "lastCommitId": {
          "type": "string",
          "description": "Last commit id."
        },
        "disablePublish": {
          "type": "boolean",
          "description": "Disable manual publish operation in ADF studio to favor automated publish."
        }
      },
      "required": [
        "type",
        "accountName",
        "repositoryName",
        "collaborationBranch",
        "rootFolder"
      ]
    },
    "GlobalParameterSpecification": {
      "type": "object",
      "description": "Definition of a single parameter for an entity.",
      "properties": {
        "type": {
          "$ref": "#/$defs/GlobalParameterType",
          "description": "Global Parameter type."
        },
        "value": {
          "description": "Value of parameter."
        }
      },
      "required": [
        "type",
        "value"
      ]
    },
    "GlobalParameterType": {
      "type": "string",
      "description": "Global Parameter type.",
      "enum": [
        "Object",
        "String",
        "Int",
        "Float",
        "Bool",
        "Array"
      ],
      "x-ms-enum": {
        "name": "GlobalParameterType",
        "modelAsString": true,
        "values": [
          {
            "name": "Object",
            "value": "Object",
            "description": "Object"
          },
          {
            "name": "String",
            "value": "String",
            "description": "String"
          },
          {
            "name": "Int",
            "value": "Int",
            "description": "Int"
          },
          {
            "name": "Float",
            "value": "Float",
            "description": "Float"
          },
          {
            "name": "Bool",
            "value": "Bool",
            "description": "Bool"
          },
          {
            "name": "Array",
            "value": "Array",
            "description": "Array"
          }
        ]
      }
    },
    "PublicNetworkAccess": {
      "type": "string",
      "description": "Whether or not public network access is allowed for the data factory.",
      "enum": [
        "Enabled",
        "Disabled"
      ],
      "x-ms-enum": {
        "name": "PublicNetworkAccess",
        "modelAsString": true,
        "values": [
          {
            "name": "Enabled",
            "value": "Enabled",
            "description": "Enabled"
          },
          {
            "name": "Disabled",
            "value": "Disabled",
            "description": "Disabled"
          }
        ]
      }
    },
    "PurviewConfiguration": {
      "type": "object",
      "description": "Purview configuration.",
      "properties": {
        "purviewResourceId": {
          "type": "string",
          "description": "Purview resource id."
        }
      }
    }
  }
}