# Story Partner API Documentation
## Overview
The Story Partner API provides endpoints for managing story partner interactions and user task management. Built with Elysia.js, it includes Swagger documentation and implements secure API key authentication.
## API Base URL
https://partner-api-production.up.railway.app/
## Swagger Documentation
Swagger UI is available at `/swagger` endpoint.
## Authentication
All protected endpoints require an API key to be included in the request headers:
```
x-partner-api-key: YOUR_API_KEY
```
## API Endpoints
### Health Check
GET /
Checks if the API is running and healthy.
**Response**
```json
{
"status": 200,
"message": "Story Partner API!"
}
```
### Create User Task
POST /postUserTask
Creates or updates a task for a specific user identified by their wallet address.
**Request Headers**
```
x-partner-api-key: YOUR_API_KEY
Content-Type: application/json
```
**Request Body**
```json
{
"walletAddress": "0x1234...", // 42 characters long Ethereum address
"task": "string" // Task description
}
```
**Validation Rules**
- `walletAddress`: Must be a valid Ethereum address (0x followed by 40 hexadecimal characters)
- `task`: Cannot be empty
**Success Response (200)**
```json
{
"status": 200,
"message": "Task stored successfully"
}
```
**New User Creation Response (200)**
```json
{
"status": 200,
"message": "New user created and task stored successfully"
}
```
**Duplicate Task Response (200)**
```json
{
"status": 200,
"message": "Task already exists"
}
```
**Bad Request Response (400)**
```json
{
"status": 400,
"message": "Failed to store task",
"error": "Error message details"
}
```
**Server Error Response (500)**
```json
{
"status": 500,
"message": "Internal Server Error",
"error": "Error message details"
}
```
## Database Schema
### User Document
```typescript
interface User {
walletAddress: string;
tasks: Array<{
projectId: string;
task: string;
createdAt: Date;
}>;
createdAt: Date;
lastUpdatedAt: Date;
}
```