solverforge-deliveries / static /app /ui /api-guide.mjs
blackopsrepl's picture
docs: align deliveries release surface
bfdb677
export function buildApiGuideEndpoints() {
return [
endpoint('GET', '/health', 'Check service health'),
endpoint('GET', '/info', 'Fetch app and solver metadata'),
endpoint('GET', '/demo-data', 'List available city demos'),
endpoint('GET', '/demo-data/PHILADELPHIA', 'Load a canonical delivery plan'),
endpoint('POST', '/jobs', 'Start a retained solve job', true, '@plan.json'),
endpoint('GET', '/jobs/{id}', 'Fetch retained job status'),
endpoint('GET', '/jobs/{id}/status', 'Fetch retained job status through the stock UI alias'),
endpoint('GET', '/jobs/{id}/snapshot', 'Fetch the latest retained snapshot'),
endpoint('GET', '/jobs/{id}/analysis?snapshot_revision={n}', 'Analyze an exact snapshot revision'),
endpoint('GET', '/jobs/{id}/routes?snapshot_revision={n}', 'Fetch encoded route geometry for a retained snapshot'),
endpoint('POST', '/jobs/{id}/pause', 'Pause a retained job'),
endpoint('POST', '/jobs/{id}/resume', 'Resume a retained job'),
endpoint('POST', '/jobs/{id}/cancel', 'Cancel a retained job'),
endpoint('DELETE', '/jobs/{id}', 'Delete a terminal retained job'),
endpoint('GET', '/jobs/{id}/events', 'Stream retained job events'),
endpoint('POST', '/recommendations/delivery-insertions', 'Rank candidate insertions for one delivery', true),
];
}
function endpoint(method, path, description, json = false, data = null) {
const parts = ['curl'];
if (method !== 'GET') parts.push('-X', method);
if (json) parts.push('-H', '"Content-Type: application/json"');
parts.push(`${window.location.origin}${path}`);
if (data) parts.push('-d', data);
return { method, path, description, curl: parts.join(' ') };
}