Create Post
Create a new post. The backend uses api/Post; create is multipart/form-data with caption, visibility, optional mediaFiles, and optional mentions (JSON string).
Endpoint
POST /api/Post/users/{userId}
Authentication: Required
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| userId | string (GUID) | Yes | Author user ID |
Request Body (multipart/form-data)
Text Post
| Field | Type | Required | Description |
|---|---|---|---|
| caption | string | No | Post text/caption |
| visibility | string | No | Public, Friends, OnlyMe (default: Public) |
| mentions | string | No | JSON array of mention objects |
Post with Media
| Field | Type | Required | Description |
|---|---|---|---|
| caption | string | No | Post caption |
| visibility | string | No | Public, Friends, OnlyMe |
| mediaFiles | file[] | No | Images or videos (max 100MB per file) |
| mentions | string | No | JSON string of mention list |
Response
Success (200 OK)
{
"success": true,
"data": {
"id": "post-guid",
"caption": "Hello, world!",
"author": { "id": "user-id", "fullName": "John Doe", "username": "johndoe" },
"visibility": "Public",
"createdAt": "2024-01-01T00:00:00Z",
"media": []
}
}
Example
const formData = new FormData();
formData.append('caption', 'Hello, world!');
formData.append('visibility', 'Public');
// formData.append('mediaFiles', fileInput.files[0]);
const response = await fetch(`http://localhost:5000/api/Post/users/${userId}`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}` },
body: formData
});
Privacy (visibility)
- Public: Visible to everyone
- Friends: Visible to friends only
- OnlyMe: Private post