MinMaxHub
Documentation
  • Introduction
  • Architecture
  • Frontend
Domains
  • Nodes
  • Entities
  • Consensus
  • Suggestions
Resources
  • API Reference

Copyright 2026 MinMaxHub

  • Documentation
  • Domains
  • API Reference
Information
Consensus
    Trigger consensus recomputation for an entitypostApprove or reject a suggestion via moderationpostList suggestions pending moderationgetGet consensus page data for SSR renderinggetResolve a full page by slug pathget
Entities
    Create a new entity under a nodepostGet an entity by its unique identifiergetUpdate an entity's title and statusputDelete an entitydeleteRefresh an entity's layout from its parent node templatespatchList entities belonging to a nodegetGet an entity by its full slug pathgetList all entity slug pathsget
Media
    Get a presigned URL for image uploadpost
Nodes
    Create a new node in the taxonomy treepostGet a node by its unique identifiergetArchive a nodepatchUpdate a node's layout templatesputList ancestor nodes for a slug pathgetList direct children of a nodegetList all descendants of a nodegetGet a node by its slug pathget
Rules
    List all rules in a foldergetGet a single rule by folder and component keygetUpdate an existing ruleputCreate a new rulepost
Suggestions
    Create a new content suggestionpostGet a suggestion by its unique identifiergetSoft-delete a suggestiondeleteUpdate a suggestion's value or statuspatchList suggestions by a specific authorgetList suggestions for a specific entitygetList suggestions by target (entity + topic + item)get
Users
    List all usersgetGet a user profile by IDgetGet a user profile by usernameget
Votes
    Cast or change a vote on a suggestionpostGet the authenticated user's votesget
Schemas
powered by Zudoku
MinMaxHub API
MinMaxHub API

Suggestions

Endpoint{apiBaseUrl}
Download schema

User-submitted content proposals (Write path). Each suggestion targets a specific topic within an entity and carries a value payload.


Create a new content suggestion

POST
{apiBaseUrl}
/suggestions

Submits a content suggestion for a specific topic within an entity. The value payload is validated against the topic's JSON Schema rule (schema-on-write). The suggestion enters the Write path for community voting. Requires authentication.

Create a new content suggestion › Request Body

Request body for creating a new suggestion. The value payload is validated against the topic's JSON Schema rule.
entityId
​string · minLength: 1 · required

Entity to submit the suggestion for

topicKey
​string · minLength: 1 · required

Topic key this suggestion targets

operation
​string · enum · required

The type of content operation

Enum values:
SET
ADD
UPDATE
DELETE
value
​required

The proposed content value

itemKey
​string | null · minLength: 1

Optional item key for collection-type topics

Create a new content suggestion › Responses

Suggestion created successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

A user-submitted content proposal targeting a specific topic within an entity. Part of the Write path — suggestions compete via community voting to become consensus.

POST/suggestions
curl --request POST \ --url %7BapiBaseUrl%7D/suggestions \ --header 'Content-Type: application/json' \ --data ' { "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "topicKey": "description", "operation": "SET", "value": { "text": "A bard who collects lore and stories from across the realms." } } '
shell
Example Request Body
{ "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "topicKey": "description", "operation": "SET", "value": { "text": "A bard who collects lore and stories from across the realms." } }
json
application/json
Example Responses
No example specified for this content type
application/json

Get a suggestion by its unique identifier

GET
{apiBaseUrl}
/suggestions/{id}

Retrieves a single suggestion including its value payload, vote counts, and metadata. No authentication required.

Get a suggestion by its unique identifier › path Parameters

id
​string · uuid · required

Unique identifier of the suggestion

Get a suggestion by its unique identifier › Responses

Suggestion retrieved successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

A user-submitted content proposal targeting a specific topic within an entity. Part of the Write path — suggestions compete via community voting to become consensus.

GET/suggestions/{id}
curl --request GET \ --url %7BapiBaseUrl%7D/suggestions/:id
shell
Example Responses
No example specified for this content type
application/json

Soft-delete a suggestion

DELETE
{apiBaseUrl}
/suggestions/{id}

Marks a suggestion as deleted. Only the original author can delete their own suggestions. The suggestion remains in the database but is excluded from consensus computation. Requires authentication.

Soft-delete a suggestion › path Parameters

id
​string · uuid · required

Unique identifier of the suggestion to delete

Soft-delete a suggestion › Responses

Suggestion deleted successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

data
​
DELETE/suggestions/{id}
curl --request DELETE \ --url %7BapiBaseUrl%7D/suggestions/:id
shell
Example Responses
No example specified for this content type
application/json

Update a suggestion's value or status

PATCH
{apiBaseUrl}
/suggestions/{id}

Updates an existing suggestion. Only the original author can update the value. Moderators can change the status via consensus moderation. The suggestionId is taken from the URL path, not the request body. Requires authentication.

Update a suggestion's value or status › path Parameters

id
​string · uuid · required

Unique identifier of the suggestion to update

Update a suggestion's value or status › Request Body

Request body for updating a suggestion. Both fields are optional but at least one must be provided. The suggestionId is taken from the URL path.
value
​

Updated content value

status
​string · enum

Updated suggestion status

Enum values:
active
rejected
merged
spam
deleted

Update a suggestion's value or status › Responses

Suggestion updated successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

A user-submitted content proposal targeting a specific topic within an entity. Part of the Write path — suggestions compete via community voting to become consensus.

PATCH/suggestions/{id}
curl --request PATCH \ --url %7BapiBaseUrl%7D/suggestions/:id \ --header 'Content-Type: application/json' \ --data ' { "value": { "text": "A bard who weaves magic through music and storytelling." } } '
shell
Example Request Body
{ "value": { "text": "A bard who weaves magic through music and storytelling." } }
json
application/json
Example Responses
No example specified for this content type
application/json

List suggestions by a specific author

GET
{apiBaseUrl}
/suggestions/author/{id}

Returns a paginated list of suggestions created by the specified author. Requires authentication.

List suggestions by a specific author › path Parameters

id
​string · uuid · required

Unique identifier of the author (userId)

List suggestions by a specific author › query Parameters

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page

Default: 50
nextToken
​string

Opaque cursor from a previous response for pagination

List suggestions by a specific author › Responses

200

Suggestions retrieved successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

Paginated list of suggestions.

GET/suggestions/author/{id}
curl --request GET \ --url %7BapiBaseUrl%7D/suggestions/author/:id
shell
Example Responses
{ "traceId": "req_abc123", "status": "OK", "message": "Success", "data": { "items": [ { "suggestionId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "authorId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "nodeId": "c3d4e5f6-a7b8-9012-cdef-123456789012", "topicKey": "description", "itemKey": null, "ruleKey": "SuperText", "operation": "SET", "value": { "text": "A bard who collects lore and stories from across the realms." }, "status": "active", "score": 7, "upvotes": 9, "downvotes": 2, "createdAt": "2026-02-01T12:00:00Z", "updatedAt": "2026-02-10T14:30:00Z", "createdBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "updatedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "deletedAt": null, "deletedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" } } ], "cursor": "eyJsYXN0S2V5Ijp7InBrIjoic3VnIn19" } }
json
application/json

List suggestions for a specific entity

GET
{apiBaseUrl}
/suggestions/entity/{id}

Returns a paginated list of suggestions targeting the specified entity, across all topics. No authentication required.

List suggestions for a specific entity › path Parameters

id
​string · uuid · required

Unique identifier of the entity

List suggestions for a specific entity › query Parameters

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page

Default: 50
nextToken
​string

Opaque cursor from a previous response for pagination

List suggestions for a specific entity › Responses

200

Suggestions retrieved successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

Paginated list of suggestions.

GET/suggestions/entity/{id}
curl --request GET \ --url %7BapiBaseUrl%7D/suggestions/entity/:id
shell
Example Responses
{ "traceId": "req_abc123", "status": "OK", "message": "Success", "data": { "items": [ { "suggestionId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "authorId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "nodeId": "c3d4e5f6-a7b8-9012-cdef-123456789012", "topicKey": "description", "itemKey": null, "ruleKey": "SuperText", "operation": "SET", "value": { "text": "A bard who collects lore and stories from across the realms." }, "status": "active", "score": 7, "upvotes": 9, "downvotes": 2, "createdAt": "2026-02-01T12:00:00Z", "updatedAt": "2026-02-10T14:30:00Z", "createdBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "updatedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "deletedAt": null, "deletedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" } } ], "cursor": "eyJsYXN0S2V5Ijp7InBrIjoic3VnIn19" } }
json
application/json

List suggestions by target (entity + topic + item)

GET
{apiBaseUrl}
/suggestions/target

Returns a paginated list of suggestions filtered by entity, topic key, and optionally item key. Used to show all competing suggestions for a specific content slot. Requires authentication.

List suggestions by target (entity + topic + item) › query Parameters

entityId
​string · minLength: 1 · required

Entity to filter suggestions for

topicKey
​string · minLength: 1 · required

Topic key to filter suggestions for

itemKey
​string · minLength: 1

Optional item key for collection-type topics

limit
​integer · min: 1 · max: 100

Maximum number of items to return per page

Default: 50
nextToken
​string

Opaque cursor from a previous response for pagination

List suggestions by target (entity + topic + item) › Responses

200

Suggestions retrieved successfully

Standard response envelope wrapping all API responses. Every response includes a trace ID for debugging, a machine-readable status, and a human-readable message.
status
​string · enum · required

Machine-readable status code

Enum values:
OK
CREATED
ACCEPTED
NO_CONTENT
BAD_REQUEST
UNAUTHORIZED
FORBIDDEN
NOT_FOUND
message
​string · required

Human-readable status message

traceId
​string

Unique request trace ID for debugging and log correlation

​object

Paginated list of suggestions.

GET/suggestions/target
curl --request GET \ --url '%7BapiBaseUrl%7D/suggestions/target?entityId=%3Cstring%3E&topicKey=%3Cstring%3E'
shell
Example Responses
{ "traceId": "req_abc123", "status": "OK", "message": "Success", "data": { "items": [ { "suggestionId": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "authorId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "entityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "nodeId": "c3d4e5f6-a7b8-9012-cdef-123456789012", "topicKey": "description", "itemKey": null, "ruleKey": "SuperText", "operation": "SET", "value": { "text": "A bard who collects lore and stories from across the realms." }, "status": "active", "score": 7, "upvotes": 9, "downvotes": 2, "createdAt": "2026-02-01T12:00:00Z", "updatedAt": "2026-02-10T14:30:00Z", "createdBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "updatedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" }, "deletedAt": null, "deletedBy": { "userId": "d4e5f6a7-b8c9-0123-def0-123456789abc", "username": "dungeon_master_42", "photoUrl": "https://cdn.example.com/avatars/dm42.webp" } } ], "cursor": "eyJsYXN0S2V5Ijp7InBrIjoic3VnIn19" } }
json
application/json

RulesUsers