| name | adobe-data-handling |
| description | Implement data handling for Adobe APIs including PII redaction in logs,
Firefly content policy compliance, PDF document data classification,
and GDPR/CCPA data subject access requests via Adobe Privacy Service.
Trigger with phrases like "adobe data", "adobe PII",
"adobe GDPR", "adobe data retention", "adobe privacy", "adobe content policy".
|
| allowed-tools | Read, Write, Edit |
| version | 1.6.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","design","adobe"] |
| compatibility | Designed for Claude Code |
Adobe Data Handling
Overview
Handle sensitive data correctly when integrating with Adobe APIs. Key concerns include Firefly content policy compliance, PII in PDF extraction results, credential redaction in logs, and GDPR/CCPA compliance using Adobe Privacy Service API.
Prerequisites
- Understanding of your data classification requirements
- Adobe SDK with appropriate API access
- Database for audit logging
- Familiarity with GDPR/CCPA obligations
Instructions
Step 1: Data Classification for Adobe API Data
| Category | Examples | Handling |
|---|
| Credentials | client_secret, access tokens | Never log; rotate regularly |
| User Content | Uploaded images, PDFs | Encrypt at rest; delete per retention policy |
| Generated Content | Firefly outputs, processed PDFs | Time-limited URLs (24h); cache intentionally |
| Extraction Results | PDF text, tables, structured data | May contain PII; scan and redact |
| API Metadata | Job IDs, request IDs, timestamps | Safe to log; useful for debugging |
Step 2: PII Detection in PDF Extraction Results
PDF Extract API returns raw text that may contain customer PII:
const PII_PATTERNS = [
{ type: 'email', regex: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g },
{ type: 'phone', regex: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g },
{ type: 'ssn', regex: /\b\d{3}-\d{2}-\d{4}\b/g },
{ type: 'credit_card', regex: },
];
{
: ;
: ;
}
(): [] {
.( {
matches = text.(pattern.);
count = [...matches].;
count > ? { : pattern., count } : ;
})
.() [];
}
(): {
redacted = text;
( pattern ) {
redacted = redacted.(pattern., );
}
redacted;
}
extracted = ();
piiFindings = (extracted.);
(piiFindings. > ) {
.(, piiFindings);
safeText = (extracted.);
}