{
  "description": "Represents a projected volume source",
  "properties": {
    "defaultMode": {
      "description": "defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
      "format": "int32",
      "type": [
        "integer",
        "null"
      ]
    },
    "sources": {
      "description": "sources is the list of volume projections",
      "items": {
        "description": "Projection that may be projected along with other supported volume types",
        "properties": {
          "configMap": {
            "description": "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode.",
            "properties": {
              "items": {
                "description": "items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.",
                "items": {
                  "description": "Maps a string key to a path within a volume.",
                  "properties": {
                    "key": {
                      "description": "key is the key to project.",
                      "type": "string"
                    },
                    "mode": {
                      "description": "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
                      "format": "int32",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "path": {
                      "description": "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "path"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "name": {
                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                "type": [
                  "string",
                  "null"
                ]
              },
              "optional": {
                "description": "optional specify whether the ConfigMap or its keys must be defined",
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "downwardAPI": {
            "description": "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode.",
            "properties": {
              "items": {
                "description": "Items is a list of DownwardAPIVolume file",
                "items": {
                  "description": "DownwardAPIVolumeFile represents information to create the file containing the pod field",
                  "properties": {
                    "fieldRef": {
                      "description": "ObjectFieldSelector selects an APIVersioned field of an object.",
                      "properties": {
                        "apiVersion": {
                          "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "fieldPath": {
                          "description": "Path of the field to select in the specified API version.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "fieldPath"
                      ],
                      "type": [
                        "object",
                        "null"
                      ],
                      "x-kubernetes-map-type": "atomic"
                    },
                    "mode": {
                      "description": "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
                      "format": "int32",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "path": {
                      "description": "Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'",
                      "type": "string"
                    },
                    "resourceFieldRef": {
                      "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format",
                      "properties": {
                        "containerName": {
                          "description": "Container name: required for volumes, optional for env vars",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "divisor": {
                          "oneOf": [
                            {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            {
                              "type": [
                                "number",
                                "null"
                              ]
                            }
                          ]
                        },
                        "resource": {
                          "description": "Required: resource to select",
                          "type": "string"
                        }
                      },
                      "required": [
                        "resource"
                      ],
                      "type": [
                        "object",
                        "null"
                      ],
                      "x-kubernetes-map-type": "atomic"
                    }
                  },
                  "required": [
                    "path"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": [
                  "array",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "secret": {
            "description": "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode.",
            "properties": {
              "items": {
                "description": "items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.",
                "items": {
                  "description": "Maps a string key to a path within a volume.",
                  "properties": {
                    "key": {
                      "description": "key is the key to project.",
                      "type": "string"
                    },
                    "mode": {
                      "description": "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
                      "format": "int32",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "path": {
                      "description": "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "path"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "name": {
                "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                "type": [
                  "string",
                  "null"
                ]
              },
              "optional": {
                "description": "optional field specify whether the Secret or its key must be defined",
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "serviceAccountToken": {
            "description": "ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).",
            "properties": {
              "audience": {
                "description": "audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "expirationSeconds": {
                "description": "expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.",
                "format": "int64",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "path": {
                "description": "path is the path relative to the mount point of the file to project the token into.",
                "type": "string"
              }
            },
            "required": [
              "path"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "type": [
          "object",
          "null"
        ]
      },
      "type": [
        "array",
        "null"
      ]
    }
  },
  "type": "object",
  "$schema": "http://json-schema.org/schema#"
}