{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "VPC-SC egress policy",
  "type": "object",
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "properties": {
    "title": {
      "type": "string"
    },
    "from": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "access_levels": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "identity_type": {
          "type": "string",
          "enum": [
            "IDENTITY_TYPE_UNSPECIFIED",
            "ANY_IDENTITY",
            "ANY_USER_ACCOUNT",
            "ANY_SERVICE_ACCOUNT",
            ""
          ]
        },
        "identities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "to": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "external_resources": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "operations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "service_name"
            ],
            "additionalProperties": false,
            "properties": {
              "method_selectors": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "permission_selectors": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "service_name": {
                "type": "string"
              }
            }
          }
        },
        "resources": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}
