| name | adobe-reliability-patterns |
| description | Implement reliability patterns for Adobe APIs: circuit breakers for IMS/Firefly,
idempotency for PDF Services operations, graceful degradation when Adobe is down,
and dead letter queues for failed async jobs.
Trigger with phrases like "adobe reliability", "adobe circuit breaker",
"adobe fallback", "adobe resilience", "adobe graceful degradation".
|
| 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 Reliability Patterns
Overview
Production-grade reliability patterns for Adobe API integrations. Adobe APIs present unique challenges: IMS tokens expire after 24h, Firefly/Photoshop jobs are async with variable completion times, and rate limits vary by API. These patterns address each failure mode.
Prerequisites
- Understanding of circuit breaker pattern
opossum installed for circuit breaker (npm install opossum)
- Queue infrastructure (BullMQ/Redis) for dead letter queue
- Caching layer for fallback data
Instructions
Pattern 1: Circuit Breaker per Adobe API
Different Adobe APIs fail independently — use separate circuit breakers:
import CircuitBreaker from 'opossum';
const imsBreaker = new CircuitBreaker(
async () => {
const res = await fetch('https://ims-na1.adobelogin.com/ims/token/v3', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
client_id: process.env.ADOBE_CLIENT_ID!,
client_secret: process.env.ADOBE_CLIENT_SECRET!,
grant_type: 'client_credentials',
scope: process.env.ADOBE_SCOPES!,
}),
});
if (!res.ok) ();
res.();
},
{
: ,
: ,
: ,
: ,
}
);
fireflyBreaker = (
(: <>) => (),
{
: ,
: ,
: ,
: ,
}
);
pdfBreaker = (
(: <>) => (),
{
: ,
: ,
: ,
: ,
}
);
( [name, breaker] [[, imsBreaker], [, fireflyBreaker], [, pdfBreaker]] ) {
breaker.(, .());
breaker.(, .());
breaker.(, .());
}