{
  "$id": "https://paulkov.github.io/dpone/schemas/gitops/runtime-credential-projection.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "binding_set_sha256": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "type": "string"
    },
    "environment": {
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
      "type": "string"
    },
    "publish_authority_sha256": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "type": "string"
    },
    "release_id": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "type": "string"
    },
    "runtime_registry_sha256": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "type": "string"
    },
    "schema": {
      "const": "dpone.runtime-credential-projection.v1"
    },
    "source_registry_sha256": {
      "pattern": "^sha256:[0-9a-f]{64}$",
      "type": "string"
    },
    "sources": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "connection_id": {
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
            "type": "string"
          },
          "filename": {
            "const": "uri"
          },
          "mount_path": {
            "pattern": "^/run/secrets/dpone/airflow-connections/[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
            "type": "string"
          },
          "registry_ref": {
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
            "type": "string"
          },
          "secret_key": {
            "pattern": "^AIRFLOW_CONN_[A-Z0-9_]+$",
            "type": "string"
          },
          "secret_name": {
            "pattern": "^[a-z0-9](?:[-a-z0-9]{0,251}[a-z0-9])?$",
            "type": "string"
          }
        },
        "required": [
          "registry_ref",
          "connection_id",
          "secret_name",
          "secret_key",
          "mount_path",
          "filename"
        ],
        "type": "object"
      },
      "maxItems": 1024,
      "type": "array"
    },
    "workloads": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "connections": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "connection_ref": {
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
                  "type": "string"
                },
                "registry_ref": {
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
                  "type": "string"
                },
                "role": {
                  "enum": [
                    "workload",
                    "workspace_control"
                  ]
                }
              },
              "required": [
                "connection_ref",
                "registry_ref",
                "role"
              ],
              "type": "object"
            },
            "maxItems": 256,
            "minItems": 1,
            "type": "array"
          },
          "workload_id": {
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
            "type": "string"
          }
        },
        "required": [
          "workload_id",
          "connections"
        ],
        "type": "object"
      },
      "maxItems": 1024,
      "minItems": 1,
      "type": "array"
    },
    "workspace_authority_connection_ref": {
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$",
      "type": "string"
    }
  },
  "required": [
    "schema",
    "environment",
    "release_id",
    "binding_set_sha256",
    "source_registry_sha256",
    "runtime_registry_sha256",
    "publish_authority_sha256",
    "workspace_authority_connection_ref",
    "sources",
    "workloads"
  ],
  "title": "dpone GitOps deployment-owned runtime credential projection",
  "type": "object"
}
