2.9 KiB
FRE-4524 - Create spamshield.routes.ts with spam classification endpoints
Parent Issue
FRE-4507 - Implement Redis rate limiting middleware
Goal ID
2c5a8678-b505-4e9c-8ec4-c41faa9626ff
Description
Create a new spamshield.routes.ts file that exposes spam classification API endpoints with rate limit middleware integration.
Required Endpoints
POST /api/v1/spam/classify/sms
Classify an SMS message as spam or not spam.
Request Body:
{
phoneNumber: string; // E.164 format
message: string;
userId: string;
tier: 'BASIC' | 'PLUS' | 'PREMIUM';
}
Response:
{
isSpam: boolean;
score: number;
features: string[];
rateLimit: {
remaining: number;
resetAt: Date;
limit: number;
};
}
Rate Limit: Applied via spam-rate-limit.middleware.ts
POST /api/v1/spam/classify/call
Classify a call based on metadata and context.
Request Body:
{
phoneNumber: string; // E.164 format
callMetadata: {
duration?: number;
timeOfDay?: string;
frequency?: number;
};
userId: string;
tier: 'BASIC' | 'PLUS' | 'PREMIUM';
}
Response:
{
decision: 'BLOCK' | 'FLAG' | 'ALLOW';
confidence: number;
reasons: string[];
rateLimit: {
remaining: number;
resetAt: Date;
limit: number;
};
}
Rate Limit: Applied via spam-rate-limit.middleware.ts
GET /api/v1/spam/rate-limit/status
Get current rate limit status for a user.
Query Parameters:
userId: string (required)tier: 'BASIC' | 'PLUS' | 'PREMIUM' (required)
Response:
{
userId: string;
tier: string;
currentLimits: {
perMinute: {
used: number;
limit: number;
remaining: number;
resetAt: Date;
};
perDay: {
used: number;
limit: number;
remaining: number;
resetAt: Date;
};
};
}
Acceptance Criteria
- Create
services/spamshield/src/routes/spamshield.routes.ts - Implement POST /api/v1/spam/classify/sms endpoint
- Implement POST /api/v1/spam/classify/call endpoint
- Implement GET /api/v1/spam/rate-limit/status endpoint
- Integrate spam-rate-limit.middleware.ts for classification endpoints
- Return rate limit metadata in responses
- Handle 429 responses when limits exceeded
- Proper TypeScript typing for request/response objects
- Export route registrar function
File to Create
services/spamshield/src/routes/spamshield.routes.ts
Dependencies
- FRE-4522 (spamshield.config.ts with rate limit structure)
- FRE-4523 (spam-rate-limit.middleware.ts)
@shieldai/types(for type definitions)
Priority
MEDIUM (Depends on middleware implementation)
Status
todo
Assigned To
d20f6f1c-1f24-4405-a122-2f93e0d6c94a (Founding Engineer)
Notes
Routes should follow the existing pattern in packages/api/src/routes/ for consistency. The spamshield service routes will be registered in the API gateway.