docs: master API surface list, all 86 frontend endpoints in one doc
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Generated directly from source (every this.http.get/post/patch/put/delete
call across core/, features/admin/, api.service.ts) rather than written
from memory - a census, not a design doc.
47 already match an existing Phase/Track contract exactly. 24 are inferred
from this codebase's own REST conventions with no contract doc stating them
- each flagged in source at its call site, not just in this doc, so backend
sees the reasoning next to the code. 15 are legacy endpoints
(/category, /cart, /qr, /websession, ...) with no contract anywhere,
still live today.
Biggest concrete gap surfaced: three full admin domains (transactions,
monitoring, moderation) have real UI and real gateways calling
/api/admin/v2/{resource} by convention, with zero backend contract written
for any of them.
One real bug found and fixed while building this, not just flagged:
connector-api.gateway.ts's replay() called
POST /api/admin/v2/integrations/dead-letter/{id}/replay, omitting the
{connectorId} segment the contract's own path requires
(PHASE-4-CONNECTOR-FRAMEWORK-CONTRACT.md §7). Fixed the interface, both
gateway implementations, and the doc entry in the same pass - no callers
existed yet, so this shipped without ever being exercised by a UI.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -23,9 +23,12 @@ export class ConnectorApiGateway implements ConnectorGateway {
|
||||
);
|
||||
}
|
||||
|
||||
replay(deadLetterId: string): Observable<void> {
|
||||
replay(connectorId: string, deadLetterId: string): Observable<void> {
|
||||
return this.http
|
||||
.post(`/api/admin/v2/integrations/dead-letter/${encodeURIComponent(deadLetterId)}/replay`, {})
|
||||
.post(
|
||||
`/api/admin/v2/integrations/${encodeURIComponent(connectorId)}/dead-letter/${encodeURIComponent(deadLetterId)}/replay`,
|
||||
{},
|
||||
)
|
||||
.pipe(map(() => undefined));
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Connector, DeadLetterEntry } from '../models/connector.model';
|
||||
export interface ConnectorGateway {
|
||||
loadConnectors(): Observable<Connector[]>;
|
||||
loadDeadLetter(connectorId: string): Observable<DeadLetterEntry[]>;
|
||||
replay(deadLetterId: string): Observable<void>;
|
||||
replay(connectorId: string, deadLetterId: string): Observable<void>;
|
||||
pause(connectorId: string): Observable<void>;
|
||||
resume(connectorId: string): Observable<void>;
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ export class ConnectorLocalGateway implements ConnectorGateway {
|
||||
return of([]);
|
||||
}
|
||||
|
||||
replay(_deadLetterId: string): Observable<void> {
|
||||
replay(_connectorId: string, _deadLetterId: string): Observable<void> {
|
||||
return of(void 0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user