### FastAPI Template

A template for FastAPI applications with user authentication

### Paths

#### /o/{tracking_id}.png  
**Summary:** Short Track Email Open  
**Description:** Track email opens via a 1x1 transparent PNG pixel (short URL). This endpoint is embedded in HTML emails as an invisible image. Requests arrive at t.skyp.ai/o/{tracking_id}.png.  
**Parameters:**  
- **tracking_id** (path, required): Tracking Id  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /c/{tracking_id}  
**Summary:** Short Track Link Click  
**Description:** Track link clicks and redirect to the original URL (short URL). Requests arrive at t.skyp.ai/c/{tracking_id}.  
**Parameters:**  
- **tracking_id** (path, required): Tracking Id  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /u/{token}  
**Summary:** Short One Click Unsubscribe  
**Description:** Branded subdomain variant of one_click_unsubscribe.  
**Parameters:**  
- **token** (path, required): Token  
**Responses:**  
- **204:** Successful Response  
- **422:** Validation Error

**Summary:** Short Unsubscribe Page  
**Description:** Branded subdomain variant of unsubscribe_page.  
**Parameters:**  
- **token** (path, required): Token  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /.well-known/oauth-authorization-server  
**Summary:** Authorization Server Metadata  
**Responses:**  
- **200:** Successful Response

#### /.well-known/oauth-protected-resource/mcp  
**Summary:** Protected Resource Metadata  
**Responses:**  
- **200:** Successful Response

#### /.well-known/oauth-protected-resource  
**Summary:** Protected Resource Metadata  
**Responses:**  
- **200:** Successful Response

#### /oauth/register  
**Summary:** Register Client  
**Request Body:**  
- **Content Type:** application/json  
- **Required:** true  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/authorize  
**Summary:** Authorize  
**Parameters:**  
- **response_type** (query, required)  
- **client_id** (query, required)  
- **redirect_uri** (query, required)  
- **code_challenge** (query, required)  
- **code_challenge_method** (query, optional)  
- **scope** (query, optional)  
- **state** (query, optional)  
- **resource** (query, optional)  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/authorize/details  
**Summary:** Authorize Details  
**Description:** Return client metadata for the consent screen. No auth required.  
**Parameters:**  
- **ticket** (query, required): Ticket  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/authorize/consent  
**Summary:** Authorize Consent  
**Description:** Complete the authorization request.  
**Request Body:**  
- **Content Type:** application/json  
- **Required:** true  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/authorize/status  
**Summary:** Authorize Status  
**Parameters:**  
- **code_id** (query, required): Code Id  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/token  
**Summary:** Token  
**Parameters:**  
- **authorization** (header, optional): Authorization  
**Request Body:**  
- **Required:** true  
- **Content Type:** application/x-www-form-urlencoded  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /oauth/userinfo  
**Summary:** Userinfo  
**Description:** Return identity info for the bearer token's owner.  
**Parameters:**  
- **authorization** (header, required): Authorization  
**Responses:**  
- **200:** Successful Response  
- **422:** Validation Error

#### /SKILL.md  
**Summary:** Serve Skill Md  
**Responses:**  
- **200:** Successful Response

#### /SKILL_ADMIN.md  
**Summary:** Serve Skill Admin Md  
**Responses:**  
- **200:** Successful Response

#### /  
**Summary:** Root  
**Responses:**  
- **200:** Successful Response

#### /health  
**Summary:** Health  
**Description:** Deploy healthcheck: 200 only when the app is serving AND the database is reachable.  
**Responses:**  
- **200:** Successful Response

### Components

#### Schemas

- **AuthorizeDetailsResponse**  
- **Body_token_oauth_token_post**  
- **ClientRegistrationRequest**  
- **ClientRegistrationResponse**  
- **CodeStatusResponse**  
- **ConsentRequest**  
- **ConsentResponse**  
- **HTTPValidationError**  
- **TokenResponse**  
- **ValidationError**

### Security Schemes

- **OAuth2PasswordBearer**
