Schema Sample Redactor
schema.redact_schema_samples
Overview
You send a JSON Schema, an OpenAPI document, or any JSON object, and we replace the values that look sensitive — addresses, JWTs, AWS keys, private keys, card and IBAN numbers, and anything under a credential-sounding field name — with a safe placeholder or a mask. The structure, the keys, and the schema constraints all stay exactly as they were, so the document still validates and still reads the same. This catches the common shapes rather than everything, so it is a strong safety net before you publish and not a compliance guarantee.
Example values are written in a hurry against a real account, and then they live in the docs forever. Reading a whole document looking for the one address or token that should not be public is exactly the job a machine should do.
Reliability
Best-effort by design, and repeatable: the same document and options always produce the same replacements in the same order. We match on known shapes, so an unusual secret format can slip through, and in strict mode a long random-looking identifier that is perfectly public can be redacted anyway — read the findings before you trust the output. Masking keeps the first and last two characters, which reveals a little; use the placeholder style when even that is too much. We reject the call, and an unchanged retry will not help, when document is missing or is not an object, when documentKind, policy, or replacementStyle is not one of the listed values, or when maxFindings falls outside 1 to 10000.
Context footprint
The document is capped at 2000000 bytes and comes back once in full; the report adds one short row per replacement, up to maxFindings. A successful call costs 2 execution credits.
When to use it
Just before a schema, OpenAPI document, or sample payload leaves your control — published, attached to a ticket, or handed to another tool.
When you need an auditable guarantee that no personal data remains, or when the secrets live in prose or source code rather than in JSON values.
Scope
Non-goals
- We never promise complete removal; this catches known shapes, not everything
- We never touch schema constraints, so a format of email still says email
- We never scan free-running prose for secrets — that is security.detect_secrets
Properties
Capabilities
Cost & billing
Flat rate per invocation
File handling
How we handle your data
What this means
This skill is designed to detect, mask, redact, validate, or otherwise process sensitive data.
Squillify guarantees
- Runs inside Squillify
- This skill runs inside Squillify.
- Payloads are not sent to an external service by this skill.
- Squillify does not permanently store submitted payloads.
- Telemetry records metadata only, not submitted content.
- Submitted payloads are not used for training.
- Submitted payloads are not reviewed by humans.
- Targets sensitive data
- The response does not contain submitted content.
Your responsibility
Squillify does not determine whether submitted content is sensitive. Your application is responsible for deciding what data it is allowed to submit. Your application is responsible for securing the response.
Input schema
| Field | Type | Required | Description |
|---|---|---|---|
| document | object | Yes | JSON object to clean; extra keys are document fields and only string values are ever replaced. — unconstrained RFC 8259 JSON items. |
| documentKind | string | No | How widely to look for sensitive strings; omit it for generic_json. |
| policy | string | No | How aggressively to match secrets; omit it for standard. |
| replacementStyle | string | No | Whether to swap a labelled placeholder or a length-preserving mask; omit it for placeholder. |
| includeReport | boolean | No | Whether the findings list is returned; omit it for true. |
| maxFindings | integer | No | How many findings to list, 1 through 10000; omit it for 1000. |
Output schema
| Field | Type | Required | Description |
|---|---|---|---|
| redacted | object | Yes | Document with sensitive strings replaced and key order unchanged; extra keys are the original fields. — unconstrained RFC 8259 JSON items. |
| findingCount | integer | Yes | How many values were replaced in total, including those past maxFindings. |
| findings | array | No | Replaced values in walk order, 0 through 10000 closed objects; omit the field entirely when includeReport is false. |
API contract
POST /v1/executecurl -sS -X POST "$BASE/v1/execute" -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"skillKey":"schema.redact_schema_samples","input":{"document":{"example":"[email protected]"}}}'import { Squillify } from "@squillify/sdk";
const sq = new Squillify({ apiKey: process.env.SQUILLIFY_API_KEY });
const { output } = await sq.execute("schema.redact_schema_samples", {"document":{"example":"[email protected]"},"documentKind":"generic_json"});Errors
| Code | HTTP | Retryable | Description |
|---|---|---|---|
| VALIDATION_ERROR | 400 | No | The request payload failed schema validation. |
| UNAUTHORIZED | 401 | No | Missing or invalid API key. |
| SKILL_NOT_ACCESSIBLE | 403 | No | The API key is not granted access to this skill. |
| SKILL_NOT_AVAILABLE_FOR_PLAN | 403 | No | This skill is not included in your current plan. |
| PLAN_ELIGIBILITY_UNAVAILABLE | 503 | Yes | Plan eligibility could not be decided. Retry after backoff. |
| SKILL_NOT_FOUND | 404 | No | The requested skill or version does not exist. |
| TENANT_RATE_LIMITED | 429 | Yes | Request rate limit exceeded. Retry after backoff. |
| QUOTA_EXCEEDED | 429 | Yes | Plan quota exhausted. Retryable once the quota period resets. |
| EXECUTION_TIMEOUT | 504 | Yes | Execution exceeded the allowed time budget. |
Other limits
| Limit | Value |
|---|---|
| Recommended inline bytes | 32 KiB |
Limitations
- We never promise complete removal; this catches known shapes, not everything
- We never touch schema constraints, so a format of email still says email
- We never scan free-running prose for secrets — that is security.detect_secrets
- Anything that needs a guarantee of complete personal-data removal
- Scanning free text or source files for secrets (security.detect_secrets)
How to call
POST /v1/execute (requires authentication)
{
"skillKey": "schema.redact_schema_samples",
"input": {
"document": {
"example": "[email protected]"
},
"documentKind": "generic_json"
}
}Examples
Redact an email example
{
"document": {
"example": "[email protected]"
},
"documentKind": "generic_json"
}{
"redacted": {
"example": "<REDACTED:email>"
},
"findings": [
{
"kind": "email",
"path": "/example",
"confidence": 0.8,
"replacement": "<REDACTED:email>"
}
],
"findingCount": 1
}Strict policy with mask style
{
"includeReport": false,
"replacementStyle": "mask",
"policy": "strict",
"document": {
"token": "sk_live_abc123"
}
}{
"findingCount": 1,
"redacted": {
"token": "sk**********23"
}
}Recommended use cases
- Clean the example values before you publish API documentation
- Share a schema or payload with an outside tool without shipping real data
- Catch the credential someone pasted into an OpenAPI example months ago
Avoid for
- Anything that needs a guarantee of complete personal-data removal
- Scanning free text or source files for secrets (security.detect_secrets)
Related skills
Composable with
Safety & privacy
- Runs without calling any external service.
- Your payloads are never stored permanently.
- Telemetry captures metadata only — never your payload contents.
- We never train models on your payloads.
- No human reviews your payloads.