CI/CD Automation & Developer API
Integrate AuditBloc into your deployment pipelines. Prevent WCAG violations, unconsented cookies, and AI transparency gaps from ever reaching production.
GitHub Actions Compliance Gate
Automatically audits staging URLs on pull requests and blocks merging if score drops below 85.
name: AuditBloc Compliance Gate
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
compliance-audit:
name: Audit Website Compliance (WCAG + GDPR + AI)
runs-on: ubuntu-latest
steps:
- name: Trigger AuditBloc Scan
id: scan
run: |
RESPONSE=$(curl -s -X POST https://auditbloc.taylancetech.com/api/scan \
-H "Content-Type: application/json" \
-d '{"url":"https://staging.yourwebsite.com","checks":{"accessibility":true,"cookie":true,"aiDisclosure":true}}')
SCAN_ID=$(echo $RESPONSE | jq -r .scanId)
REPORT_ID=$(echo $RESPONSE | jq -r .reportId)
echo "scan_id=$SCAN_ID" >> $GITHUB_OUTPUT
echo "report_id=$REPORT_ID" >> $GITHUB_OUTPUT
- name: Wait for Scan Completion
run: |
SCAN_ID="${{ steps.scan.outputs.scan_id }}"
for i in {1..30}; do
STATUS=$(curl -s "https://auditbloc.taylancetech.com/api/scan/$SCAN_ID/status" | jq -r .status)
echo "Current status: $STATUS"
if [ "$STATUS" = "complete" ]; then
break
fi
sleep 2
done
- name: Fetch Final Report & Evaluate Gate
run: |
REPORT_ID="${{ steps.scan.outputs.report_id }}"
DATA=$(curl -s "https://auditbloc.taylancetech.com/api/report/$REPORT_ID")
SCORE=$(echo $DATA | jq -r .scanResult.overallScore)
echo "Overall Compliance Score: $SCORE/100"
if [ "$SCORE" -lt 85 ]; then
echo "::error::Compliance gate failed: Score $SCORE is below threshold 85"
exit 1
ficURL Terminal Trigger
curl -X POST https://auditbloc.taylancetech.com/api/scan \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourwebsite.com",
"checks": {
"accessibility": true,
"cookie": true,
"aiDisclosure": true
}
}'Node.js SDK / Script
// Trigger an automated scan via Node.js
async function runComplianceScan(targetUrl) {
const initRes = await fetch("https://auditbloc.taylancetech.com/api/scan", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
url: targetUrl,
checks: { accessibility: true, cookie: true, aiDisclosure: true }
})
});
const { scanId, reportId } = await initRes.json();
console.log(`Scan initiated: ${scanId}. Monitoring...`);
// Poll status until complete
while (true) {
await new Promise(r => setTimeout(r, 1500));
const statusRes = await fetch(`https://auditbloc.taylancetech.com/api/scan/${scanId}/status`);
const statusData = await statusRes.json();
if (statusData.status === "complete") {
console.log(`Report ready: https://auditbloc.taylancetech.com/audit/${reportId}`);
return statusData;
}
}
}