Skip to content

Eval API

The Eval API allows you to evaluate policies and rulesets against various types of input data.

Endpoints

Evaluate Policy

Evaluate a policy against a provided input.

POST /api/eval/policies/{policy_name}

Path Parameters:

Parameter Description
policy_name The name of the policy to evaluate
curl -X POST "https://<your-instance>.aegis.pegasys.cloud/api/eval/policies/demo" \
  -H "Authorization: Bearer <your_token>" \
  -H "Content-Type: application/json" \
  -d @- <<EOF
            {
              "_filters": "name=demo or name=deployment",
              "labels": {
                "source": "api",
                "user": "user@example.com"
              },
              "inputData": {
                "apiVersion": "apps/v1",
                "kind": "Deployment",
                "metadata": {
                  "name": "nginx",
                  "namespace": "kube-app",
                  "labels": {
                    "env": "prod",
                    "app-id": "nginx",
                    "platform": "kubernetes",
                    "resource": "deployment"
                  }
                },
                "spec": {
                  "replicas": 0
                }
              }
            }
        EOF
{
  "_filters": "name=demo or name=deployment",
  "labels": {
    "source": "api",
    "user": "user@example.com"
  },
  "inputData": {
    "apiVersion": "apps/v1",
    "kind": "Deployment",
    "metadata": {
      "name": "nginx",
      "namespace": "kube-app",
      "labels": {
        "env": "prod",
        "app-id": "nginx",
        "platform": "kubernetes",
        "resource": "deployment"
      }
    },
    "spec": {
      "replicas": 0
    }
  }
}
{
  "policy": "demo",
  "passed": false,
  "rulesets": [
    {
      "name": "kubernetes-deployment-security",
      "passed": false,
      "results": [
        {
          "rule": "enforce-replicas-gt-3",
          "status": "failed",
          "message": "Deployment must have at least 3 replicas for high availability"
        }
      ]
    }
  ]
}

Evaluate Ruleset

Evaluate a ruleset against a provided input.

POST /api/eval/rulesets/{ruleset_name}

Path Parameters:

Parameter Description
ruleset_name The name of the ruleset to evaluate
curl -X POST "https://<your-instance>.aegis.pegasys.cloud/api/eval/rulesets/demo" \
  -H "Authorization: Bearer <your_token>" \
  -H "Content-Type: application/json" \
  -d @- <<EOF
          {
            "inputData": {
              "apiVersion": "apps/v1",
              "kind": "Deployment",
              "metadata": {
                "name": "nginx",
                "namespace": "kube-app",
                "labels": {
                  "project": "nginx"
                }
              },
              "spec": {
                "replicas": 1
              }
            },
            "policyName": "deployments"
          }
      EOF
{
  "inputData": {
    "apiVersion": "apps/v1",
    "kind": "Deployment",
    "metadata": {
      "name": "nginx",
      "namespace": "kube-app",
      "labels": {
        "project": "nginx"
      }
    },
    "spec": {
      "replicas": 1
    }
  },
  "policyName": "deployments"
}
curl -X POST "https://<your-instance>.aegis.pegasys.cloud/api/eval/rulesets/cloudrun-plan-invoker" \
  -H "Authorization: Bearer <your_token>" \
  -H "Content-Type: application/json" \
  -d @- <<EOF
            {
                "inputData": {
                    "format_version": "1.0",
                    "terraform_version": "1.3.5",
                    "planned_values": {
                        "root_module": {
                            "resources": [
                                {
                                    "address": "google_cloud_run_service.default",
                                    "mode": "managed",
                                    "type": "google_cloud_run_service",
                                    "name": "default",
                                    "values": {
                                        "name": "my-cloud-run-service",
                                        "location": "us-central1",
                                        "template": {
                                            "spec": {
                                                "containers": [
                                                    {
                                                        "image": "registry.acme.com/my-project-id/my-app:latest",
                                                        "ports": [
                                                            {
                                                                "container_port": 8080
                                                            }
                                                        ]
                                                    }
                                                ]
                                            }
                                        }
                                    }
                                },
                                {
                                    "address": "google_cloud_run_service_iam_member.invoker_user",
                                    "mode": "managed",
                                    "type": "google_cloud_run_service_iam_member",
                                    "name": "invoker_user",
                                    "values": {
                                        "location": "us-central1",
                                        "service": "my-cloud-run-service",
                                        "role": "roles/run.invoker",
                                        "member": "user:example@example.com"
                                    }
                                },
                                {
                                    "address": "google_cloud_run_service_iam_member.invoker_public",
                                    "mode": "managed",
                                    "type": "google_cloud_run_service_iam_member",
                                    "name": "invoker_public",
                                    "values": {
                                        "location": "us-central1",
                                        "service": "my-cloud-run-service",
                                        "role": "roles/run.invoker",
                                        "member": "allUsers"
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        EOF
{
    "inputData": {
        "format_version": "1.0",
        "terraform_version": "1.3.5",
        "planned_values": {
            "root_module": {
                "resources": [
                    {
                        "address": "google_cloud_run_service.default",
                        "mode": "managed",
                        "type": "google_cloud_run_service",
                        "name": "default",
                        "values": {
                            "name": "my-cloud-run-service",
                            "location": "us-central1",
                            "template": {
                                "spec": {
                                    "containers": [
                                        {
                                            "image": "registry.acme.com/my-project-id/my-app:latest",
                                            "ports": [
                                                {
                                                    "container_port": 8080
                                                }
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    {
                        "address": "google_cloud_run_service_iam_member.invoker_user",
                        "mode": "managed",
                        "type": "google_cloud_run_service_iam_member",
                        "name": "invoker_user",
                        "values": {
                            "location": "us-central1",
                            "service": "my-cloud-run-service",
                            "role": "roles/run.invoker",
                            "member": "user:example@example.com"
                        }
                    },
                    {
                        "address": "google_cloud_run_service_iam_member.invoker_public",
                        "mode": "managed",
                        "type": "google_cloud_run_service_iam_member",
                        "name": "invoker_public",
                        "values": {
                            "location": "us-central1",
                            "service": "my-cloud-run-service",
                            "role": "roles/run.invoker",
                            "member": "allUsers"
                        }
                    }
                ]
            }
        }
    }
}
curl -X POST "https://<your-instance>.aegis.pegasys.cloud/api/eval/rulesets/cloudrun-tf" \
  -H "Authorization: Bearer <your_token>" \
  -H "Content-Type: application/x-yaml" \
  -d @- <<EOF
inputData: |
  provider "google" {
    project = "acme-12345678"
    region  = "us-central1"
  }

  resource "google_cloud_run_service" "default" {
    name     = "my-cloud-run-service"
    location = "us-central1"

    template {
      spec {
        containers {
          image = "gcr.io/acme-12345678/my-app:latest"
          ports {
            container_port = 8080
          }
        }
      }
    }

    traffic {
      percent         = 100
      latest_revision = true
    }
  }

  resource "google_cloud_run_service" "def-2" {
    name     = "my-cloud-run-service-2"
    location = "us-central1"

    template {
      spec {
        containers {
          image = "registry.acme.com/acme-12345678/my-app:latest"
          ports {
            container_port = 8080
          }
        }
      }
    }

    traffic {
      percent         = 100
      latest_revision = true
    }
  }

  resource "google_cloud_run_service_iam_policy" "public_access" {
    location    = google_cloud_run_service.default.location
    service     = google_cloud_run_service.default.name
    policy_data = data.google_iam_policy.noauth.policy_data
  }

  data "google_iam_policy" "noauth" {
    binding {
      role = "roles/run.invoker"
      members = [
        "allUsers",
      ]
    }
  }

  output "cloud_run_url" {
    value = google_cloud_run_service.default.status[0].url
  }
EOF
inputData: |
  provider "google" {
    project = "acme-12345678"
    region  = "us-central1"
  }

  resource "google_cloud_run_service" "default" {
    name     = "my-cloud-run-service"
    location = "us-central1"

    template {
      spec {
        containers {
          image = "gcr.io/acme-12345678/my-app:latest"
          ports {
            container_port = 8080
          }
        }
      }
    }

    traffic {
      percent         = 100
      latest_revision = true
    }
  }

  resource "google_cloud_run_service" "def-2" {
    name     = "my-cloud-run-service-2"
    location = "us-central1"

    template {
      spec {
        containers {
          image = "registry.acme.com/acme-12345678/my-app:latest"
          ports {
            container_port = 8080
          }
        }
      }
    }

    traffic {
      percent         = 100
      latest_revision = true
    }
  }

  resource "google_cloud_run_service_iam_policy" "public_access" {
    location    = google_cloud_run_service.default.location
    service     = google_cloud_run_service.default.name
    policy_data = data.google_iam_policy.noauth.policy_data
  }

  data "google_iam_policy" "noauth" {
    binding {
      role = "roles/run.invoker"
      members = [
        "allUsers",
      ]
    }
  }

  output "cloud_run_url" {
    value = google_cloud_run_service.default.status[0].url
  }