feat(phase-4): WS2 + WS3 — Developer Portal (Next.js 14) and CLI tool (sentryagent)
WS2: Developer Portal (portal/) - Standalone Next.js 14 + Tailwind CSS app — independent deployment - Home page: hero, feature grid, CTA to /get-started - /pricing: free tier limits table (10 agents, 1k calls/day) + paid tier CTA - /sdks: all 4 SDKs (Node.js, Python, Go, Java) with install + code examples - /api-explorer: Swagger UI from NEXT_PUBLIC_API_URL/openapi.json, persistAuthorization - /get-started: 4-step wizard (setup → register agent → credentials → SDK snippet) - Shared Nav component with active-link highlighting - Build: 8/8 static pages, zero TypeScript errors WS3: CLI Tool (cli/ — npm package: sentryagent) - configure, register-agent, list-agents, issue-token, rotate-credentials, tail-audit-log - Auto OAuth2 token fetch + 30s-buffer cache via client_credentials flow - chalk-formatted table output, confirmation prompts, bounded audit log dedup - bash + zsh shell completion scripts - README with installation, all commands, and completion setup - Build: tsc clean, node dist/index.js --help verified Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
38
portal/app/api-explorer/page.tsx
Normal file
38
portal/app/api-explorer/page.tsx
Normal file
@@ -0,0 +1,38 @@
|
||||
import type React from 'react';
|
||||
import { SwaggerExplorer } from '@/components/SwaggerExplorer';
|
||||
|
||||
export const metadata = {
|
||||
title: 'API Explorer — SentryAgent AgentIdP',
|
||||
description:
|
||||
'Interactively explore and test the SentryAgent AgentIdP REST API.',
|
||||
};
|
||||
|
||||
export default function ApiExplorerPage(): React.ReactElement {
|
||||
const apiUrl =
|
||||
process.env.NEXT_PUBLIC_API_URL ?? 'http://localhost:3000';
|
||||
|
||||
return (
|
||||
<div className="px-4 py-8">
|
||||
<div className="mx-auto max-w-7xl">
|
||||
<div className="mb-8">
|
||||
<h1 className="text-3xl font-extrabold text-slate-900">
|
||||
API Explorer
|
||||
</h1>
|
||||
<p className="mt-2 text-slate-600">
|
||||
Explore, authenticate, and test every AgentIdP endpoint directly
|
||||
from your browser. Use the Authorize button to set your Bearer
|
||||
token.
|
||||
</p>
|
||||
<p className="mt-1 text-sm text-slate-400">
|
||||
Spec loaded from:{' '}
|
||||
<code className="rounded bg-slate-100 px-1.5 py-0.5 text-xs">
|
||||
{apiUrl}/openapi.json
|
||||
</code>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<SwaggerExplorer apiUrl={apiUrl} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user