CI Workflow Audit
Audit a CI workflow for what it leaves movable or undeclared. Reports actions pinned to a tag rather than a commit - a tag can be moved by whoever owns the action, so the code a step runs can change without this file changing - missing permissions and timeouts, a job depending on one that is not declared, a pull_request_target trigger, and an expression interpolated straight into a shell command.
Offering
- Provider
- api.zfinia.com
- Method
- POST
- Offering type
- Api Endpoint
- Transport type
- http
- Category
- Security
- Delivery
- Not provided
- Pricing model
- Not provided
- x402 version
- 2
Endpoint context
- URL
https://api.zfinia.com/x402/v1/ci-workflow-contract-audit- MIME type
- application/json
- First seen
- 2026-10-16T01:50:38.788Z
- Last seen
- Tags
- configuration, continuous integration, supply chain hygiene, linting, developer tooling
Payment pricing
x402 payment terms are the authoritative price for calling this endpoint.
- Payment option 1
- 0.12 USDC
Atomic price: 120000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "120000",
"payTo": "0x25e8245f07d5e4873987293dad666afbe56a9608"
}
]Observed health
- Status
- Reachable
- Latest latency
- 1045 ms
- Average latency
- 1131 ms
- HTTP status
- 400
- Last checked
- Reachability
- 100% over 12 checks
Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.
Input schema
{
"body": {
"contract": {
"required_jobs": [
"build",
"publish",
"lint"
]
},
"workflow": {
"jobs": {
"build": {
"runs-on": "ubuntu-latest",
"steps": [
{
"uses": "actions/checkout@v4"
},
{
"uses": "actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8"
},
{
"name": "Greet",
"run": "echo \"Building ${{ github.event.pull_request.title }}\""
},
{
"run": "npm ci && npm test"
}
]
},
"notify": {
"needs": [
"publish",
"lint"
],
"runs-on": "ubuntu-latest",
"steps": [
{
"run": "echo done"
}
]
},
"publish": {
"needs": "build",
"permissions": {
"contents": "read",
"packages": "write"
},
"runs-on": "ubuntu-latest",
"steps": [
{
"uses": "actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3"
}
],
"timeout-minutes": 15
}
},
"name": "release",
"on": {
"pull_request_target": {},
"push": {
"branches": [
"main"
]
}
}
}
},
"bodyType": "json",
"method": "POST",
"type": "http"
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"contract": {
"additionalProperties": false,
"properties": {
"forbid_pull_request_target": {
"type": "boolean"
},
"require_permissions": {
"type": "boolean"
},
"require_pinned_actions": {
"type": "boolean"
},
"require_timeout": {
"type": "boolean"
},
"required_jobs": {
"items": {
"maxLength": 128,
"type": "string"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
}
},
"type": "object"
},
"workflow": {
"type": "object"
}
},
"required": [
"workflow"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}