{
  "openapi": "3.0.1",
  "info": {
    "title": "Helm Chart & Kubernetes Security Monitor (Artifact Hub)",
    "description": "Audit the Helm charts and Kubernetes packages you run: container-image CVEs, signatures, deprecation and abandonment — plus an alert when a chart you already trust picks up a critical vulnerability or loses its signature.",
    "version": "0.1",
    "x-build-id": "CnUsmcPNsUEeHQSWy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sashaebashu~k8s-package-security/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sashaebashu-k8s-package-security",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/sashaebashu~k8s-package-security/runs": {
      "post": {
        "operationId": "runs-sync-sashaebashu-k8s-package-security",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/sashaebashu~k8s-package-security/run-sync": {
      "post": {
        "operationId": "run-sync-sashaebashu-k8s-package-security",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "packages": {
            "title": "Packages",
            "type": "array",
            "description": "The charts and packages you actually run. Paste an Artifact Hub URL, a `kind/repository/name` path, or just `repository/name` (assumed to be a Helm chart). Leave empty to discover packages with the fields below instead.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Find packages by keyword instead of naming them, for example `postgres` or `ingress`."
          },
          "kind": {
            "title": "Package kind",
            "enum": [
              "",
              "helm",
              "olm",
              "container",
              "krew",
              "tekton-task",
              "kyverno",
              "gatekeeper",
              "kubewarden",
              "falco",
              "kcl",
              "headlamp",
              "meshery",
              "opa"
            ],
            "type": "string",
            "description": "Restrict discovery to one kind of package. Helm charts are 17,675 of the ~21,400 packages on Artifact Hub.",
            "default": ""
          },
          "repositories": {
            "title": "Repositories",
            "type": "array",
            "description": "Limit discovery to these Artifact Hub repositories, for example `bitnami` or `prometheus-community`.",
            "items": {
              "type": "string"
            }
          },
          "organizations": {
            "title": "Organizations",
            "type": "array",
            "description": "Limit discovery to these publishing organizations.",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort discovery by",
            "enum": [
              "relevance",
              "stars",
              "last_updated"
            ],
            "type": "string",
            "description": "How Artifact Hub orders the packages it returns.",
            "default": "relevance"
          },
          "onlyDeprecated": {
            "title": "Only deprecated packages",
            "type": "boolean",
            "description": "Keep only packages the publisher has marked deprecated — the ones that will quietly stop receiving fixes.",
            "default": false
          },
          "onlyUnsigned": {
            "title": "Only unsigned packages",
            "type": "boolean",
            "description": "Keep only packages with no signature, so you cannot verify who built what you deploy.",
            "default": false
          },
          "onlyWithVulnerabilities": {
            "title": "Only packages with critical or high vulnerabilities",
            "type": "boolean",
            "description": "Keep only packages whose scan actually found critical or high issues. Never-scanned packages are excluded, because an absent scan is not a finding.",
            "default": false
          },
          "onlyUnscanned": {
            "title": "Only never-scanned packages",
            "type": "boolean",
            "description": "Keep only packages with no security report at all — the blind spots in your supply chain.",
            "default": false
          },
          "minStars": {
            "title": "Minimum stars",
            "minimum": 0,
            "type": "integer",
            "description": "Skip packages below this many Artifact Hub stars. Useful for auditing only what has real adoption.",
            "default": 0
          },
          "staleAfterDays": {
            "title": "Treat as abandoned after (days)",
            "minimum": 30,
            "maximum": 3650,
            "type": "integer",
            "description": "How many days without a release make a package count as stale. Drives `isStale` and part of the risk score.",
            "default": 365
          },
          "includeVulnerabilities": {
            "title": "Include the vulnerability list",
            "type": "boolean",
            "description": "Download the full Trivy report per package: CVE ids, affected package, installed version and the version that fixes it. Adds one large request per scanned package.",
            "default": false
          },
          "minVulnerabilitySeverity": {
            "title": "Minimum severity to list",
            "enum": [
              "critical",
              "high",
              "medium",
              "low",
              "unknown"
            ],
            "type": "string",
            "description": "Only used when the vulnerability list is on. Severity counts in the summary always cover everything.",
            "default": "high"
          },
          "maxVulnerabilitiesPerPackage": {
            "title": "Maximum vulnerabilities listed per package",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Caps the list so one badly-aged image cannot produce a thousand-row record. Sorted worst first, so the cap keeps what matters.",
            "default": 25
          },
          "includeReleaseHistory": {
            "title": "Include release history",
            "type": "boolean",
            "description": "Adds total releases, the previous version, the first release date and the release count over the last 90 days. One extra request per discovered package; packages you name by hand get it for free.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum packages",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many packages.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Artifact Hub sits behind a burst limiter; 4 is comfortable. Raising this makes rate-limit pauses more likely, not the run faster.",
            "default": 4
          },
          "monitorMode": {
            "title": "Monitor mode",
            "type": "boolean",
            "description": "Compare against the previous run of the same scope and label what changed: new critical CVEs, deprecation, a lost signature, a new version.",
            "default": false
          },
          "onlyChanges": {
            "title": "Output only changed packages",
            "type": "boolean",
            "description": "With monitor mode on, skip packages where nothing moved — an empty run then means nothing needs your attention.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}