Posts

Public Posts

Create a new public post

post

Each post begins as a draft. A user can only have one active draft at a time. If a draft already exists, it must be published or deleted before a new one can be created.

Body
titlestringOptionalExample: My First Post
descriptionstringOptionalExample: This is the content of my first post.
tagsstring[]OptionalExample: ["example","firstPost"]
postTypestringOptionalExample: blog
Responses
201
Created
application/json
post
POST /posts HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 128

{
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog"
}
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Retrieve a list of public posts

get

Retrieves a list of public posts with optional filtering. Users can filter by tags, creation date, status (draft or published), or post type.

Query parameters
tagsstring[]Optional

Filter posts by specific tags

statusstring · enumOptional

Filter posts by status

Possible values:
createdAfterstring · date-timeOptional

Filter posts created after a specific date

postTypestringOptional

Filter posts by a specific type from the predefined list

Responses
200
A list of posts
application/json
get
GET /posts HTTP/1.1
Host: 
Accept: */*
200

A list of posts

[
  {
    "postId": "550e8400-e29b-41d4-a716-446655440000",
    "title": "My First Post",
    "description": "This is the content of my first post.",
    "tags": [
      "example",
      "firstPost"
    ],
    "postType": "blog",
    "accessType": "PUBLIC",
    "status": "DRAFT",
    "created_at": "2025-07-06T23:06:22.318Z",
    "updated_at": "2025-07-06T23:06:22.318Z",
    "deleted_at": "2025-07-06T23:06:22.318Z"
  }
]

Retrieve a public post by ID

get

Retrieves the details of a public post by its unique identifier.

Path parameters
idstringRequired
Responses
200
Post found
application/json
get
GET /posts/{id} HTTP/1.1
Host: 
Accept: */*
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Update an existing public post

put

Updates the title, content, tags, or post type of an existing public post.

Path parameters
idstringRequired
Body
titlestringOptionalExample: Updated Title
descriptionstringOptionalExample: Updated content of the post.
tagsstring[]OptionalExample: ["updated","post"]
postTypestringOptionalExample: news
Responses
200
Updated successfully
application/json
put
PUT /posts/{id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 114

{
  "title": "Updated Title",
  "description": "Updated content of the post.",
  "tags": [
    "updated",
    "post"
  ],
  "postType": "news"
}
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Delete a public post by ID

delete

Deletes a public post by its ID. This action is irreversible.

Path parameters
idstringRequired
Responses
204
No Content - Post successfully deleted
delete
DELETE /posts/{id} HTTP/1.1
Host: 
Accept: */*

No content

Create a new private post

post

Identical to creating a public post, but this post is private.

Body
titlestringOptionalExample: My First Private Post
descriptionstringOptionalExample: This is the content of my first private post.
tagsstring[]OptionalExample: ["example","privatePost"]
postTypestringOptionalExample: privateBlog
Responses
201
Created
application/json
post
POST /private/posts HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 153

{
  "title": "My First Private Post",
  "description": "This is the content of my first private post.",
  "tags": [
    "example",
    "privatePost"
  ],
  "postType": "privateBlog"
}
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Retrieve a list of private posts

get

Retrieves a list of private posts with optional filtering. Users can filter by tags, creation date, status (draft or published), or post type.

Query parameters
tagsstring[]Optional

Filter posts by specific tags

statusstring · enumOptional

Filter posts by status

Possible values:
createdAfterstring · date-timeOptional

Filter posts created after a specific date

postTypestringOptional

Filter posts by a specific type from the predefined list

Responses
200
A list of private posts
application/json
get
GET /private/posts HTTP/1.1
Host: 
Accept: */*
200

A list of private posts

[
  {
    "postId": "550e8400-e29b-41d4-a716-446655440000",
    "title": "My First Post",
    "description": "This is the content of my first post.",
    "tags": [
      "example",
      "firstPost"
    ],
    "postType": "blog",
    "accessType": "PUBLIC",
    "status": "DRAFT",
    "created_at": "2025-07-06T23:06:22.318Z",
    "updated_at": "2025-07-06T23:06:22.318Z",
    "deleted_at": "2025-07-06T23:06:22.318Z"
  }
]

Retrieve a private post by ID

get

Retrieves the details of a private post by its unique identifier.

Path parameters
idstringRequired
Responses
200
Post found
application/json
get
GET /private/posts/{id} HTTP/1.1
Host: 
Accept: */*
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Update an existing private post

put

Updates the title, content, tags, or post type of an existing private post.

Path parameters
idstringRequired
Body
titlestringOptionalExample: Updated Private Title
descriptionstringOptionalExample: Updated content of the private post.
tagsstring[]OptionalExample: ["updated","privatePost"]
postTypestringOptionalExample: privateNews
Responses
200
Updated successfully
application/json
put
PUT /private/posts/{id} HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 144

{
  "title": "Updated Private Title",
  "description": "Updated content of the private post.",
  "tags": [
    "updated",
    "privatePost"
  ],
  "postType": "privateNews"
}
{
  "postId": "550e8400-e29b-41d4-a716-446655440000",
  "title": "My First Post",
  "description": "This is the content of my first post.",
  "tags": [
    "example",
    "firstPost"
  ],
  "postType": "blog",
  "accessType": "PUBLIC",
  "status": "DRAFT",
  "created_at": "2025-07-06T23:06:22.318Z",
  "updated_at": "2025-07-06T23:06:22.318Z",
  "deleted_at": "2025-07-06T23:06:22.318Z"
}

Delete a private post by ID

delete

Deletes a private post by its ID. This action is irreversible.

Path parameters
idstringRequired
Responses
204
No Content - Post successfully deleted
delete
DELETE /private/posts/{id} HTTP/1.1
Host: 
Accept: */*

No content

Last updated