Use when creating API services for backend communication with proper patterns for caching, error handling, and type safety.
Use when creating/modifying API services extending PlatformApiService for backend communication.
What kind of API service?
โโโ Standard CRUD โ extend PlatformApiService + get/post/put/deleteRequest
โโโ With caching โ + enableCache option in get() calls
โโโ File upload/download โ + postFormData() / getBlob()
โโโ External API โ + override getDefaultHeaders()
โโโ Search/autocomplete โ + debounce in component, cache short-lived
โโโ Validation endpoint โ return Observable<boolean>
grep "{Feature}ApiService" --include="*.ts"PlatformApiService with @Injectable({ providedIn: 'root' })apiUrl getter using environment.apiUrl + '/api/{Controller}'PlatformApiService (never use HttpClient directly)environment.apiUrl for base URL (never hardcode)Observable<T>{ enableCache: true, cacheKey, cacheDurationMs } for cacheable endpointspostFormData(), downloads use getBlob()tapResponse(), not in servicesrc/Frontend/libs/apps-domains/src/lib/{domain}/services/{feature}-api.service.ts
IMPORTANT: You MUST read these files before writing any code. Do NOT skip.
.claude/skills/shared/angular-design-system.md โ platform-core imports.claude/skills/frontend-angular-api-service/references/api-service-patterns.md โ CRUD, caching, upload, search patternsdocs/design-system/07-technical-guide.mdconstructor(private http: HttpClient) - must extend PlatformApiServicethis.get('https://api.example.com/...') - use environmentgetUser(id) - must be getUser(id): Observable<UserDto>this.get('/users') - must be this.get<UserDto[]>('/users')tapResponse()PlatformApiServiceapiUrl getter returns environment.apiUrl + '/api/{Controller}'Observable<T> return typepostFormData/getBlob@Injectable({ providedIn: 'root' }) decorator