# Registration Function Azure Function (isolated worker, .NET 8) for managing prospect registration in AdPlatform. ## Architecture ``` Prospect → Registration Function → dbRegistration (future) Admin Panel → Management API → Registration Function (proxy) → spClientManagement (approve → dbAdPlatform) ``` Management validates admin sessions, then proxies registration calls to this Function. The Function never touches `dbAdPlatform`. Management never touches `dbRegistration`. ## Endpoints | Method | Route | Auth | Description | |--------|-------|------|-------------| | GET | `/api/registration/pending` | Function Key | List pending applicants | | GET | `/api/registration/{id}` | Function Key | Get single applicant | | POST | `/api/registration/register` | Function Key | New prospect signup | | POST | `/api/registration/{id}/reject` | Function Key | Reject applicant | | POST | `/api/registration/{id}/complete` | Function Key | Mark approved (called after platform client created) | | GET | `/api/registration/health` | Anonymous | Health check | ## Mock Mode (Current) Starts with 4 realistic test applicants in memory. State persists within a Function host lifecycle and resets on cold start. No database required. To switch to mock mode, in `Program.cs`: ```csharp services.AddSingleton(); ``` ## Database Mode (Future) When `dbRegistration` is ready: 1. Create the database and run the `spRegistration` stored proc migration 2. Set `ConnectionStrings:Sql` to the registration database connection string 3. In `Program.cs`, swap DI registration: ```csharp services.AddSingleton(); services.AddSingleton(); ``` The `SqlDataService` calls `dbo.spRegistration` with the standard `@action/@rqst/@resp OUTPUT` pattern used across all AdPlatform services. ## Local Development ```bash # Requires Azure Functions Core Tools func start ``` Test with: ```bash curl http://localhost:7071/api/registration/health curl http://localhost:7071/api/registration/pending ``` ## Deployment Deploy as an Azure Function App (Consumption or Flex Consumption plan). After deployment: 1. Copy the Function Key from Azure Portal → Function App → App Keys 2. Set in Management API config: - `Registration:BaseUrl` = `https://your-function-app.azurewebsites.net/api` - `Registration:FunctionKey` = `` These can be set as Azure Container App environment variables: ``` Registration__BaseUrl=https://your-function-app.azurewebsites.net/api Registration__FunctionKey= ``` ## Mock Applicants The mock data includes 4 test applicants representing the target market (small businesses with low ad spend thresholds): | Business | Category | Payment Verified | Days Waiting | |----------|----------|-----------------|-------------| | Bella's Boutique | Retail | Yes | 3 | | Pacific Coast Plumbing | Home Services | Yes | 1 | | Sunrise Dental Group | Healthcare | No | ~0.25 | | FreshBite Meal Prep | Food & Beverage | Yes | ~0.08 |