-
Notifications
You must be signed in to change notification settings - Fork 215
APIView
This guide helps Microsoft-internal contributors get up and running with APIView development. It covers project structure, setup steps, and contribution workflows for the ASP.NET backend and Angular frontend.
✅ You do not need to provision Azure resources.
⚠️ This guide assumes access to the existing APIView environment and the Azure SDK organization.
| Project | Description |
|---|---|
APIView |
Core functionality (used by backend and C# parser) |
APIViewWeb |
ASP.NET Core backend with all API endpoints and auth logic |
ClientSPA |
Angular-based Single Page Application UI (served from spa.apiview.dev) |
| Test Project | Status | Notes |
|---|---|---|
ApiViewUnitTests |
✅ Active | Covers API logic and backend functionality |
| Angular Unit Tests | ✅ Active | Run with ng test; lives in .spec.ts files |
APIViewIntegrationTests |
❌ Obsolete | Required Cosmos & Storage emulators. Can likely be deleted. |
APIViewUITests |
❌ Obsolete | Selenium-based, now obsolete. Angular has its own test suite. |
You must be part of the Azure SDK GitHub organization and have the following tools installed:
- Visual Studio (for backend development)
- VS Code or terminal (for frontend)
- Node.js
- Angular CLI
Run the following script to grant the required RBAC roles (Storage, Cosmos DB, App Config):
APIViewWeb/get-permissions.ps1You'll need:
- Your Microsoft email (
[email protected]) - Your user principal (
az ad signed-in-user show)
-
Right-click on
APIViewWeb→ Manage User Secrets - Insert the following JSON (replace placeholder values):
{
"AppConfigUrl": "https://<your-app-config>.azconfig.io",
"Github:ClientId": "<YOUR_CLIENT_ID>",
"Github:ClientSecret": "<YOUR_CLIENT_SECRET>",
"APIVIew-Host-Url": "http://localhost:5000",
"APIVIew-SPA-Host-Url": "https://localhost:4200"
}Secrets and service connections will be loaded automatically via App Configuration and Key Vault.
- Go to GitHub → Settings → Developer Settings → OAuth Apps
- Click “New OAuth App”
- Fill in:
-
App name:
APIViewLocal -
Homepage URL:
http://localhost:5000 -
Authorization callback URL:
http://localhost:5000
-
App name:
- After creation, copy the Client ID and Secret into your User Secrets (see above)
cd src\dotnet\APIView\APIViewWeb\Client
npm install
npm run-script build- Open
APIViewWebin Visual Studio - Press F5
cd src\dotnet\APIView\ClientSPA
npm install
npm run-script build
ng serve --ssl🔁 Backend changes may require restarting the server
✅ Hot reload works automatically for Angular
- Uses cookie-based login
- Cookies are valid across both
localhost:5000andlocalhost:4200 - Look for
[AllowAnonymous]attributes to identify public endpoints
You can test your local environment using an existing API review:
- Launch the app and log in via GitHub OAuth
- You should see the review list from staging
- Upload any valid token file or language-specific package to test upload
- Use Swagger UI to explore backend endpoints
- All Angular-visible APIs live in
LeanControllersand useLeanModels - Public API access is marked with
[AllowAnonymous] - Secrets and connections are managed via AppConfig + Key Vault
| Area | Modify If... |
|---|---|
| Backend (APIViewWeb) | You're changing API logic, endpoints, or auth |
| Frontend (ClientSPA) | You're updating UI components or views |
| APIView (core) | You're modifying backend functionality shared across components |
You do not need to modify or run language parsers (C#, Java, Python, etc.)
- Backend: Start Visual Studio debugger and verify functionality
-
Frontend: Use
ng servefor live preview; runng testfor unit tests - Swagger: Use the built-in UI to test endpoints manually
- Create a branch from
main - Make and test your changes
- Open a PR via GitHub
- The CLA bot will validate your contributor status (first-time only)
- Tag reviewers or your team lead as needed
| Name | Notes | |
|---|---|---|
| Travis Prescott | [email protected] | Current Dev |
| Alitzel Medez | [email protected] | Current Dev |
| Dozie Ononiwu | [email protected] | Prior Dev |
| Praveen Kuttappan | [email protected] | Prior Dev |
For additional documentation, visit:
🔗 Internal Wiki