{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/jenkins-x-requirements/latest.json",
  "x-lintel": {
    "source": "https://jenkins-x.io/schemas/jx-requirements.json",
    "sourceSha256": "5c6911bc61982144472ad8c5e17776b33310510f70930579a52faa803619ab8d",
    "fileMatch": [
      "jx-requirements.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "$ref": "#/$defs/Requirements",
  "$defs": {
    "AutoUpdateConfig": {
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "schedule": {
          "type": "string"
        },
        "autoMerge": {
          "type": "boolean"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "AzureClusterNodesConfig": {
      "properties": {
        "clientID": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "AzureConfig": {
      "properties": {
        "registrySubscription": {
          "type": "string"
        },
        "dns": {
          "$ref": "#/$defs/AzureDNSConfig"
        },
        "secretStorage": {
          "$ref": "#/$defs/AzureSecretConfig"
        },
        "storage": {
          "$ref": "#/$defs/AzureStorageConfig"
        },
        "clusterNodes": {
          "$ref": "#/$defs/AzureClusterNodesConfig"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "AzureDNSConfig": {
      "properties": {
        "tenantId": {
          "type": "string"
        },
        "subscriptionId": {
          "type": "string"
        },
        "resourceGroup": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "AzureSecretConfig": {
      "properties": {
        "keyVaultName": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "AzureStorageConfig": {
      "properties": {
        "storageAccountName": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "ClusterConfig": {
      "properties": {
        "chartRepository": {
          "type": "string"
        },
        "chartKind": {
          "type": "string"
        },
        "chartSecret": {
          "type": "string"
        },
        "registry": {
          "type": "string"
        },
        "dockerRegistryOrg": {
          "type": "string"
        },
        "kanikoFlags": {
          "type": "string"
        },
        "environmentGitOwner": {
          "type": "string"
        },
        "azure": {
          "$ref": "#/$defs/AzureConfig"
        },
        "gke": {
          "$ref": "#/$defs/GKEConfig"
        },
        "environmentGitPublic": {
          "type": "boolean"
        },
        "gitPublic": {
          "type": "boolean"
        },
        "provider": {
          "type": "string"
        },
        "project": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "zone": {
          "type": "string"
        },
        "gitName": {
          "type": "string"
        },
        "gitKind": {
          "type": "string"
        },
        "gitServer": {
          "type": "string"
        },
        "externalDNSSAName": {
          "type": "string"
        },
        "kanikoSAName": {
          "type": "string"
        },
        "issueProvider": {
          "$ref": "#/$defs/IssueTracker"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "EnvironmentConfig": {
      "properties": {
        "key": {
          "type": "string"
        },
        "owner": {
          "type": "string"
        },
        "repository": {
          "type": "string"
        },
        "gitServer": {
          "type": "string"
        },
        "gitKind": {
          "type": "string"
        },
        "gitUrl": {
          "type": "string"
        },
        "ingress": {
          "$ref": "#/$defs/IngressConfig"
        },
        "remoteCluster": {
          "type": "boolean"
        },
        "promotionStrategy": {
          "type": "string"
        },
        "reusePullRequest": {
          "type": "boolean"
        },
        "namespace": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "GKEConfig": {
      "properties": {
        "projectNumber": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "IngressConfig": {
      "properties": {
        "apiVersion": {
          "type": "string"
        },
        "externalDNS": {
          "type": "boolean"
        },
        "cloud_dns_secret_name": {
          "type": "string"
        },
        "domain": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "ignoreLoadBalancer": {
          "type": "boolean"
        },
        "namespaceSubDomain": {
          "type": "string"
        },
        "tls": {
          "$ref": "#/$defs/TLSConfig"
        },
        "annotations": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "IssueTracker": {
      "properties": {
        "jira": {
          "$ref": "#/$defs/JiraTracker"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "JiraTracker": {
      "properties": {
        "serverUrl": {
          "type": "string"
        },
        "userName": {
          "type": "string"
        },
        "project": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "MavenRepositoryConfig": {
      "properties": {
        "releaseUrl": {
          "type": "string"
        },
        "snapshotUrl": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "RepositoryConfig": {
      "properties": {
        "maven": {
          "$ref": "#/$defs/MavenRepositoryConfig"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "Requirements": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "apiVersion": {
          "type": "string"
        },
        "spec": {
          "$ref": "#/$defs/RequirementsConfig"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "RequirementsConfig": {
      "properties": {
        "autoUpdate": {
          "$ref": "#/$defs/AutoUpdateConfig"
        },
        "cluster": {
          "$ref": "#/$defs/ClusterConfig"
        },
        "environments": {
          "items": {
            "$ref": "#/$defs/EnvironmentConfig"
          },
          "type": "array"
        },
        "extraDomains": {
          "items": {
            "$ref": "#/$defs/IngressConfig"
          },
          "type": "array"
        },
        "ingress": {
          "$ref": "#/$defs/IngressConfig"
        },
        "kuberhealthy": {
          "type": "boolean"
        },
        "pipelineUser": {
          "$ref": "#/$defs/UserNameEmailConfig"
        },
        "repository": {
          "type": "string"
        },
        "repositories": {
          "$ref": "#/$defs/RepositoryConfig"
        },
        "secretStorage": {
          "type": "string"
        },
        "storage": {
          "items": {
            "$ref": "#/$defs/StorageConfig"
          },
          "type": "array"
        },
        "terraform": {
          "type": "boolean"
        },
        "terraformVault": {
          "type": "boolean"
        },
        "vault": {
          "$ref": "#/$defs/VaultConfig"
        },
        "webhook": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "StorageConfig": {
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "TLSConfig": {
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "email": {
          "type": "string"
        },
        "production": {
          "type": "boolean"
        },
        "secretName": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "UserNameEmailConfig": {
      "properties": {
        "username": {
          "type": "string"
        },
        "email": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "VaultAWSConfig": {
      "properties": {
        "kmsKeyId": {
          "type": "string"
        },
        "kmsRegion": {
          "type": "string"
        },
        "s3Bucket": {
          "type": "string"
        },
        "s3Prefix": {
          "type": "string"
        },
        "s3Region": {
          "type": "string"
        },
        "autoCreate": {
          "type": "boolean"
        },
        "dynamoDBTable": {
          "type": "string"
        },
        "dynamoDBRegion": {
          "type": "string"
        },
        "iamUserName": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "VaultAzureConfig": {
      "properties": {
        "tenantId": {
          "type": "string"
        },
        "vaultName": {
          "type": "string"
        },
        "keyName": {
          "type": "string"
        },
        "storageAccountName": {
          "type": "string"
        },
        "containerName": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "VaultConfig": {
      "properties": {
        "name": {
          "type": "string"
        },
        "bucket": {
          "type": "string"
        },
        "recreateBucket": {
          "type": "boolean"
        },
        "keyring": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "disableURLDiscovery": {
          "type": "boolean"
        },
        "aws": {
          "$ref": "#/$defs/VaultAWSConfig"
        },
        "azure": {
          "$ref": "#/$defs/VaultAzureConfig"
        },
        "url": {
          "type": "string"
        },
        "serviceAccount": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "secretEngineMountPoint": {
          "type": "string"
        },
        "kubernetesAuthPath": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  }
}
