Rulesets API¶
Rulesets are collections of rules that can be applied together through policies. This API allows you to manage rulesets in Aegis.
Endpoints¶
List Rulesets¶
Retrieve a list of rulesets that match the specified name pattern.
GET /api/rulesets/{ruleset_name}
Path Parameters:
Parameter | Description |
---|---|
ruleset_name |
Name or pattern to filter rulesets (e.g., exact name or wildcard pattern) |
curl -X GET "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/demo" \
-H "Authorization: Bearer <your_token>"
[
{
"name": "demo",
"uuid": "6bc1814c-5705-5b6e-af99-104b91962282",
"description": "Kubernetes deployment security rules",
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-app-label",
"uuid": "a1b2c3d4-e5f6-7g8h-9i0j-1k2l3m4n5o6p",
"enforce": true,
"dryrun": false
}
],
"version": "1.0.0",
"createdAt": "2025-06-01T10:00:00Z",
"updatedAt": "2025-06-01T10:00:00Z"
}
]
Get Ruleset by UUID¶
Retrieve a specific ruleset by its UUID.
GET /api/rulesets/uuid/{uuid}
Path Parameters:
Parameter | Description |
---|---|
uuid |
The UUID of the ruleset to retrieve |
Query Parameters:
Parameter | Description |
---|---|
version |
Optional specific version to retrieve (e.g., "1.0.0") |
curl -X GET "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/uuid/6bc1814c-5705-5b6e-af99-104b91962282" \
-H "Authorization: Bearer <your_token>"
{
"name": "demo",
"uuid": "6bc1814c-5705-5b6e-af99-104b91962282",
"description": "Kubernetes deployment security rules",
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-app-label",
"uuid": "a1b2c3d4-e5f6-7g8h-9i0j-1k2l3m4n5o6p",
"enforce": true,
"dryrun": false
}
],
"version": "1.0.0",
"createdAt": "2025-06-01T10:00:00Z",
"updatedAt": "2025-06-01T10:00:00Z"
}
Create Ruleset¶
Create a new ruleset using natural language instructions.
POST /api/rulesets/{ruleset_name}
Path Parameters:
Parameter | Description |
---|---|
ruleset_name |
The name of the ruleset to create |
Request Body Fields:
Field | Description |
---|---|
instruction.rule |
Natural language description of the rule to create |
instruction.filter |
Filter criteria for resource selection |
instruction.tag |
Optional tag for the rule |
instruction.format |
Format of the input data. Valid formats are: hcl (for Terraform), dockerfile (for Docker), json (for Terraform Plan and custom), and yaml (for Kubernetes, CloudFormation, Cloud Build, Azure DevOps, GitLab CI, and GitHub Actions). |
instruction.category |
Category of the resource. Valid categories are: docker , terraform , terraform-plan , cloudformation , azure-resource (for ARM templates), kubernetes , custom , gitlab-pipeline , github-actions , azure-devops . |
instruction.type |
Specific resource type (e.g., "deployment", "aws_s3_bucket", "pod") |
labels |
Key-value pairs for organizing and filtering rulesets |
curl -X POST "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/demo" \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/x-yaml" \
-d @- <<EOF
instruction:
rule: ensure app label has a value
filter: ensure that at least one resource of type Deployment is present
tag: ''
format: json
category: kubernetes
type: deployment
labels:
platform: kubernetes
resource: deployment
EOF
instruction:
rule: ensure app label has a value
filter: ensure that at least one resource of type Deployment is present
tag: ''
format: json
category: kubernetes
type: deployment
labels:
platform: kubernetes
resource: deployment
{
"name": "demo",
"uuid": "6bc1814c-5705-5b6e-af99-104b91962282",
"description": "Ruleset for checking Kubernetes deployment app labels",
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-app-label",
"uuid": "a1b2c3d4-e5f6-7g8h-9i0j-1k2l3m4n5o6p",
"description": "Ensures app label is present and has a value",
"condition": "input.metadata.labels.app != null",
"message": "Deployment must have an app label",
"enforce": true,
"dryrun": false
}
],
"version": "1.0.0",
"createdAt": "2025-06-16T14:30:00Z"
}
Update Ruleset¶
Update an existing ruleset with additional rules using natural language instructions.
PUT /api/rulesets/{ruleset_name}
Path Parameters:
Parameter | Description |
---|---|
ruleset_name |
The name of the ruleset to update |
Request Body Fields:
Field | Description |
---|---|
instruction.rule |
Natural language description of the rule to add or modify |
instruction.filter |
Filter criteria for resource selection |
instruction.tag |
Optional tag for the rule |
instruction.format |
Format of the input data. Valid formats are: hcl (for Terraform), dockerfile (for Docker), json (for Terraform Plan and custom), and yaml (for Kubernetes, CloudFormation, Cloud Build, Azure DevOps, GitLab CI, and GitHub Actions). |
instruction.category |
Category of the resource. Valid categories are: docker , terraform , terraform-plan , cloudformation , azure-resource (for ARM templates), kubernetes , custom , gitlab-pipeline , github-actions , azure-devops . |
instruction.type |
Specific resource type (e.g., "deployment", "aws_s3_bucket", "pod") |
curl -X PUT "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/demo" \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/x-yaml" \
-d @- <<EOF
instruction:
rule: add a rule to check if spec/replicas is > 3
filter: ensure that at least one resource of type Deployment is present
tag: ''
format: json
category: kubernetes
type: deployment
EOF
instruction:
rule: add a rule to check if spec/replicas is > 3
filter: ensure that at least one resource of type Deployment is present
tag: ''
format: json
category: kubernetes
type: deployment
{
"name": "demo",
"uuid": "6bc1814c-5705-5b6e-af99-104b91962282",
"description": "Ruleset for checking Kubernetes deployment app labels",
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-app-label",
"uuid": "a1b2c3d4-e5f6-7g8h-9i0j-1k2l3m4n5o6p",
"description": "Ensures app label is present and has a value",
"condition": "input.metadata.labels.app != null",
"message": "Deployment must have an app label",
"enforce": true,
"dryrun": false
},
{
"name": "enforce-replicas-gt-3",
"uuid": "c916e0b6-d5f7-482e-8b1e-069c14146bd6",
"description": "Deployment must have at least 3 replicas for high availability",
"condition": "input.spec.replicas > 3",
"message": "Deployment replicas must be greater than 3",
"enforce": true,
"dryrun": false
}
],
"version": "1.0.1",
"createdAt": "2025-06-16T14:30:00Z",
"updatedAt": "2025-06-16T14:45:00Z"
}
Update Ruleset Properties¶
Update specific properties of a ruleset, including labels and rule enforcement settings.
PUT /api/rulesets/{ruleset_name}/props
Path Parameters:
Parameter | Description |
---|---|
ruleset_name |
The name of the ruleset to update |
curl -X PUT "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/demo/props" \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d @- <<EOF
{
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-replicas-gt-3-non-test-policy",
"uuid": "c916e0b6-d5f7-482e-8b1e-069c14146bd6",
"enforce": true,
"dryrun": false
}
]
}
EOF
{
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-replicas-gt-3-non-test-policy",
"uuid": "c916e0b6-d5f7-482e-8b1e-069c14146bd6",
"enforce": true,
"dryrun": false
}
]
}
{
"name": "demo",
"uuid": "6bc1814c-5705-5b6e-af99-104b91962282",
"description": "Ruleset for checking Kubernetes deployment app labels",
"labels": {
"platform": "kubernetes",
"resource": "deployment"
},
"rules": [
{
"name": "enforce-app-label",
"uuid": "a1b2c3d4-e5f6-7g8h-9i0j-1k2l3m4n5o6p",
"description": "Ensures app label is present and has a value",
"condition": "input.metadata.labels.app != null",
"message": "Deployment must have an app label",
"enforce": true,
"dryrun": false
},
{
"name": "enforce-replicas-gt-3-non-test-policy",
"uuid": "c916e0b6-d5f7-482e-8b1e-069c14146bd6",
"description": "Deployment must have at least 3 replicas for high availability",
"condition": "input.spec.replicas > 3",
"message": "Deployment replicas must be greater than 3",
"enforce": true,
"dryrun": false
}
],
"version": "1.0.2",
"createdAt": "2025-06-16T14:30:00Z",
"updatedAt": "2025-06-16T15:00:00Z"
}
Delete Ruleset¶
Delete a ruleset.
DELETE /api/rulesets/{ruleset_name}
Path Parameters:
Parameter | Description |
---|---|
ruleset_name |
The name of the ruleset to delete |
curl -X DELETE "https://<your-instance>.aegis.pegasys.cloud/api/rulesets/demo" \
-H "Authorization: Bearer <your_token>"
{
"message": "Ruleset demo deleted successfully"
}
Evaluation¶
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
}
}
}
EOF
{
"inputData": {
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "nginx",
"namespace": "kube-app",
"labels": {
"project": "nginx"
}
},
"spec": {
"replicas": 1
}
}
}
{
"ruleset": "demo",
"passed": false,
"results": [
{
"rule": "enforce-replicas-gt-3-non-test-policy",
"status": "failed",
"message": "Deployment must have at least 3 replicas for high availability"
},
{
"rule": "enforce-app-label",
"status": "failed",
"message": "Deployment must have an app label"
}
]
}