Public, read-only API. Free for non-commercial use, rate-limited per IP. The reference below is generated from the live OpenAPI specification; endpoint and field names are language-neutral.
Open the interactive console/admin/commentsList comments for moderation (offset paginated; filter by status/user/work/flagged/deleted)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| status | query | — | |
| userId | query | — | |
| workId | query | — | |
| flagged | query |
| — |
| includeDeleted | query | — |
| sort | query | — |
200 — A page of comments in admin shape.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/admin/comments/{id}/approveApprove a pending comment| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The approved comment.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/admin/comments/{id}/rejectReject a pending or approved comment (reason ≥ 20 chars)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| reason | string | yes |
200 — The rejected comment.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
/admin/comments/{id}/restoreRestore a soft-deleted comment| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The restored comment.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/admin/submissionsList submissions (admin; offset-paginated; FIFO by submittedAt; defaults to pending)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| status | query | — | |
| entityType | query | — | |
| submitterId | query | — | |
| action | query | — |
200 — A page of submissions.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/submissions/{id}/approveApprove a pending submission — publishes the entity (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| notes | string | — |
200 — The approved submission and the published entity.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
/admin/submissions/{id}/rejectReject a pending submission (admin; reason ≥ 20 chars)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| reason | string | yes |
200 — The rejected submission.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
/admin/submissions/{id}/needs-revisionSend a pending submission back for revision (admin; notes ≥ 10 chars)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| notes | string | yes |
200 — The submission, now needs_revision.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
/admin/poetsCreate a poet (admin)| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | yes | |||||||||||||||||
| name | object | yes | |||||||||||||||||
| |||||||||||||||||||
| bioShort | object | yes | |||||||||||||||||
| |||||||||||||||||||
| bioFull | object | yes | |||||||||||||||||
| |||||||||||||||||||
| era | enum | yes | |||||||||||||||||
| languagesWrittenIn | array<string> | yes | |||||||||||||||||
| copyrightStatus | enum | yes | |||||||||||||||||
| sourceAttribution | string | yes | |||||||||||||||||
201 — Poet created.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/poets/{id}Update a poet (admin, If-Match required)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| If-Match | header | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | — | |||||||||||||||||
| name | object | — | |||||||||||||||||
| |||||||||||||||||||
| bioShort | object | — | |||||||||||||||||
| |||||||||||||||||||
| bioFull | object | — | |||||||||||||||||
| |||||||||||||||||||
| era | enum | — | |||||||||||||||||
| languagesWrittenIn | array<string> | — | |||||||||||||||||
| copyrightStatus | enum | — | |||||||||||||||||
| sourceAttribution | string | — | |||||||||||||||||
200 — Poet updated.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/poets/{id}Soft-delete a poet (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Poet soft-deleted.
/admin/poets/{id}/restoreRestore a soft-deleted poet (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Poet restored.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
/admin/worksCreate a work (admin, sher only in Phase 1)| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| type | enum | yes | |||||||||||||||||
| poetId | string | yes | |||||||||||||||||
| slug | string | yes | |||||||||||||||||
| body | object | yes | |||||||||||||||||
| |||||||||||||||||||
| tags | array<string> | yes | |||||||||||||||||
| language | enum | yes | |||||||||||||||||
| sourceAttribution | string | yes | |||||||||||||||||
201 — Work created.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/works/{id}Update a work (admin, If-Match required)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| If-Match | header | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| poetId | string | — | |||||||||||||||||
| slug | string | — | |||||||||||||||||
| body | object | — | |||||||||||||||||
| |||||||||||||||||||
| tags | array<string> | — | |||||||||||||||||
| language | enum | — | |||||||||||||||||
| sourceAttribution | string | — | |||||||||||||||||
200 — Work updated.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/works/{id}Soft-delete a work (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Work soft-deleted.
/admin/works/{id}/restoreRestore a soft-deleted work (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Work restored.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/admin/tagsCreate a tag (admin)| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | yes | |||||||||||||||||
| name | object | yes | |||||||||||||||||
| |||||||||||||||||||
| type | enum | yes | |||||||||||||||||
| sortPriority | number | — | |||||||||||||||||
| isFeatured | boolean | — | |||||||||||||||||
201 — Tag created.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/tags/{id}Update a tag (admin, If-Match required)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| If-Match | header | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | — | |||||||||||||||||
| name | object | — | |||||||||||||||||
| |||||||||||||||||||
| type | enum | — | |||||||||||||||||
| sortPriority | number | — | |||||||||||||||||
| isFeatured | boolean | — | |||||||||||||||||
200 — Tag updated.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/tags/{id}Soft-delete a tag (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Tag soft-deleted.
/admin/tags/{id}/restoreRestore a soft-deleted tag (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Tag restored.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
/admin/lughatCreate a dictionary entry (admin)| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | yes | |||||||||||||||||
| headword | object | yes | |||||||||||||||||
| |||||||||||||||||||
| meaning | object | yes | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | — | |||||||||||||||||
| exampleSherId | stringnull | — | |||||||||||||||||
201 — Dictionary entry created.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/lughat/{id}Update a dictionary entry (admin, If-Match required)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| If-Match | header | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | — | |||||||||||||||||
| headword | object | — | |||||||||||||||||
| |||||||||||||||||||
| meaning | object | — | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | — | |||||||||||||||||
| exampleSherId | stringnull | — | |||||||||||||||||
200 — Dictionary entry updated.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/lughat/{id}Soft-delete a dictionary entry (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Dictionary entry soft-deleted.
/admin/lughat/{id}/restoreRestore a soft-deleted dictionary entry (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Dictionary entry restored.
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
/admin/works/{id}/glossesList a work's Lughat glosses (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The work's glosses.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
/admin/works/{id}/glossesAdd a Lughat gloss to a work (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| token | object | yes | |||||||||||||||||
| |||||||||||||||||||
| coupletIndex | number | yes | |||||||||||||||||
| lineIndex | number | yes | |||||||||||||||||
| occurrence | number | — | |||||||||||||||||
| dictionaryEntryId | stringnull | — | |||||||||||||||||
| meaning | objectnull | — | |||||||||||||||||
| |||||||||||||||||||
| displayPriority | number | — | |||||||||||||||||
201 — Gloss created.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/works/{id}/glosses/{glossId}Remove a Lughat gloss from a work (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| glossId | path | yes |
204 — Gloss removed.
/admin/featured-todayList pinned featured-today days, newest first (admin)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — |
200 — A page of pinned days.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/admin/featured-todayPin a featured-today day (admin)| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| date | string | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| topSherIds | array<string> | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| featuredPoetId | string | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| featuredCollectionId | stringnull | — | ||||||||||||||||||||||||||||||||||||||||||||||||
| wordOfDay | object | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
| recommendedPoetIds | array<string> | yes | ||||||||||||||||||||||||||||||||||||||||||||||||
201 — Day pinned.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/featured-today/{id}Update a pinned day (admin; date is immutable)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| date | string | — | ||||||||||||||||||||||||||||||||||||||
| topSherIds | array<string> | — | ||||||||||||||||||||||||||||||||||||||
| featuredPoetId | string | — | ||||||||||||||||||||||||||||||||||||||
| featuredCollectionId | stringnull | — | ||||||||||||||||||||||||||||||||||||||
| wordOfDay | object | — | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||
| recommendedPoetIds | array<string> | — | ||||||||||||||||||||||||||||||||||||||
200 — Day updated.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/featured-today/{id}Delete a pinned day (admin, hard delete)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Day deleted.
/admin/featured-today/calendarCalendar of pinned days over a range (default today + 14d), entries hydrated (admin)| Name | In | Required | Description |
|---|---|---|---|
| startDate | query | — | |
| endDate | query | — |
200 — Days in the range, each with its entry or null.
| Field | Type | Required | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||
| |||||||||||||||||||||||||||
/admin/featured-today/preview-todayToday's pinned day, hydrated (admin) — what the home page will show200 — Today's hydrated entry, or null.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | object | — |
/admin/collectionsList collections including unpublished (admin, offset-paginated)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| category | query | — | |
| isFeatured | query | — | |
| includeDeleted | query | — |
200 — A page of collections.
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | ||||||||||||||||||||||||||||||||
| data | array<object> | yes | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||
/admin/collectionsCreate a collection (admin)| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | yes | ||||||||||||||||||||||||||||||||||||
| title | object | yes | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| description | objectnull | — | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| works | array<object> | — | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| coverImageUrl | stringnull | — | ||||||||||||||||||||||||||||||||||||
| coverColor | stringnull | — | ||||||||||||||||||||||||||||||||||||
| category | enum | — | ||||||||||||||||||||||||||||||||||||
| tags | array<string> | — | ||||||||||||||||||||||||||||||||||||
| displayPriority | number | — | ||||||||||||||||||||||||||||||||||||
| isFeatured | boolean | — | ||||||||||||||||||||||||||||||||||||
| isPublished | boolean | — | ||||||||||||||||||||||||||||||||||||
201 — Collection created.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/collections/{id}Get a collection by id with hydrated works (admin; incl. unpublished + soft-deleted)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The collection with hydrated works.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
/admin/collections/{id}Update a collection (admin, If-Match required)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| If-Match | header | yes |
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| slug | string | — | ||||||||||||||||||||||||||||||||||||
| title | object | — | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| description | objectnull | — | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| works | array<object> | — | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| coverImageUrl | stringnull | — | ||||||||||||||||||||||||||||||||||||
| coverColor | stringnull | — | ||||||||||||||||||||||||||||||||||||
| category | enum | — | ||||||||||||||||||||||||||||||||||||
| tags | array<string> | — | ||||||||||||||||||||||||||||||||||||
| displayPriority | number | — | ||||||||||||||||||||||||||||||||||||
| isFeatured | boolean | — | ||||||||||||||||||||||||||||||||||||
| isPublished | boolean | — | ||||||||||||||||||||||||||||||||||||
200 — Collection updated.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/collections/{id}Soft-delete a collection (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Collection soft-deleted.
/admin/collections/{id}/restoreRestore a soft-deleted collection (admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Collection restored.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
/admin/collections/{id}/worksAdd a work to a collection (admin; appends or inserts at an order)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| workId | string | yes | |||||||||||||||||
| order | integer | — | |||||||||||||||||
| editorialNote | object | — | |||||||||||||||||
| |||||||||||||||||||
200 — The updated collection.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/collections/{id}/works/reorderReorder a collection's works (admin; must cover every work)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| order | array<object> | yes | |||||||||||||
| |||||||||||||||
200 — The updated collection.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/admin/collections/{id}/works/{workId}Remove a work from a collection (admin; the Work itself is untouched)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| workId | path | yes |
200 — The updated collection.
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | ||||||||||||||||||||||||||||||||||||||||
| data | object | yes | ||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||
/admin/related-worksList related-works links, offset-paginated, filterable by fromWorkId (admin)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| fromWorkId | query | — |
200 — A page of links.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
/admin/related-worksCreate a related-works link (admin)| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| fromWorkId | string | yes | |||||||||||||||||
| toWorkId | string | yes | |||||||||||||||||
| relationshipType | enum | yes | |||||||||||||||||
| editorialNote | objectnull | — | |||||||||||||||||
| |||||||||||||||||||
| bidirectional | boolean | — | |||||||||||||||||
| displayPriority | number | — | |||||||||||||||||
201 — Link created.
| Field | Type | Required | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||
| |||||||||||||||||||||||
/admin/related-works/{id}Delete a related-works link (admin, hard delete)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Link deleted.
/auth/csrfBootstrap a CSRF tokenSets the `meeras_csrf` cookie and returns its value in the body. Frontend echoes the value in `X-CSRF-Token` on every state-changing request. CSRF-exempt (the bootstrapping endpoint).
200 — CSRF token issued.
| Field | Type | Required | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||
| data | object | yes | |||||||||
| |||||||||||
/auth/registerRegister a new userCreates a user with `isEmailVerified=false` and queues a verification email. Rate-limited 5/15min per IP. No cookies set; user cannot log in until verified.
| Field | Type | Required | Description |
|---|---|---|---|
| string | yes | ||
| password | string | yes | |
| displayName | string | yes |
201 — Created.
| Field | Type | Required | Description |
|---|---|---|---|
/auth/verify-emailVerify email + auto-loginConsumes the verification token, sets `isEmailVerified=true`, and issues access/refresh/csrf cookies (auto-login per BACKEND_ARCHITECTURE §4.4).
| Field | Type | Required | Description |
|---|---|---|---|
| token | string | yes |
200 — Verified + auto-logged in.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | object | yes | |
/auth/resend-verificationResend a verification email (enumeration-safe)Always returns 200 regardless of whether the email matches a real user (email enumeration prevention). Rate-limited 5/15min per IP.
| Field | Type | Required | Description |
|---|---|---|---|
| string | yes |
200 — OK (silent for unknown emails).
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | object | yes | |
/auth/loginLog in with email + passwordIssues access/refresh/csrf cookies on success. Unknown-email and wrong-password both return the same 401 INVALID_CREDENTIALS (email enumeration prevention). Rate-limited 10/15min per IP.
| Field | Type | Required | Description |
|---|---|---|---|
| string | yes | ||
| password | string | yes |
200 — Logged in.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes |
/auth/refreshRotate refresh token (with reuse detection)Rotates the refresh JWT in the same family. Replaying a previously-rotated token triggers immediate family revocation and returns 401 REFRESH_REUSE_DETECTED. Rate-limited 30/15min per IP.
200 — Rotated.
| Field | Type | Required | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||
| data | object | yes | |||||||||
| |||||||||||
/auth/logoutLog out and revoke the refresh familyRevokes every refresh token in the current family with `revokeReason="logout"` and clears all three auth cookies. Idempotent.
200 — Logged out.
| Field | Type | Required | Description | ||||
|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||
| data | object | yes | |||||
| |||||||
/auth/request-password-resetRequest a password-reset email (enumeration-safe)Always returns 200 regardless of whether the email matches a real user (email enumeration prevention). Rate-limited 5/15min per IP.
| Field | Type | Required | Description |
|---|---|---|---|
| string | yes |
200 — OK (silent for unknown emails).
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | object | yes | |
/auth/reset-passwordReset password + revoke all refresh familiesSets a new password (subject to strength + common-list validation) and revokes EVERY refresh family for the user — all devices are logged out.
| Field | Type | Required | Description |
|---|---|---|---|
| token | string | yes | |
| newPassword | string | yes |
200 — Password reset.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes |
/collectionsList published collections (public, cursor-paginated, filterable)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| category | query | — | |
| isFeatured | query | — | |
| tags | query | — | |
| sort | query | — |
200 — A page of collections.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/collections/{slug}Get a published collection by slug with its works hydrated (public)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes |
200 — The collection with hydrated works.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/works/{id}/commentsList approved comments on a work (public; cursor-paginated; no-store)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| limit | query | — | |
| cursor | query | — |
200 — A page of approved comments with author displayName.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
/works/{id}/commentsPost a comment on a work (auth + verified email; rate limited; enters pending)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| text | string | yes | |
| language | string | — |
201 — The created (pending) comment.
/comments/{id}Edit your own still-pending comment (owner only)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| text | string | yes |
200 — The updated comment.
| Field | Type | Required | Description |
|---|
/comments/{id}Soft-delete a comment (owner or admin)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Soft-deleted.
/works/{id}/likeLike a work (auth + verified email; per-user rate limited)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Liked.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/works/{id}/likeUnlike a work (idempotent; auth + verified email)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Unliked (idempotent — succeeds even if no like existed).
/works/{id}/bookmarkBookmark a work (auth + verified email; per-user rate limited)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — Bookmarked.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/works/{id}/bookmarkRemove a bookmark (idempotent; auth + verified email)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
204 — Un-bookmarked (idempotent — succeeds even if none existed).
/homeThe homepage's featured-today curation (today's pinned day, else the most recent).200 — The featured-today payload, or null when nothing has ever been pinned.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | objectnull | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
/lughatList dictionary entries (public, cacheable, searchable by q)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| q | query | — | |
| sort | query | — |
200 — A page of dictionary entries.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||
/lughat/{slug}Get a dictionary entry by slug (public, cacheable)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes |
200 — The dictionary entry.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/me/submissionsList your own submissions (auth; cursor-paginated; filterable by status)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| status | query | — |
200 — A page of your submissions.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
/me/submissionsSave a new draft submission (poet role; 5/hour rate limit)| Field | Type | Required | Description |
|---|---|---|---|
| entityType | string | yes | |
| entityId | string | — | |
| action | string | yes | |
| payload | object | yes | |
| licenseType | string | yes | |
| licenseAttestation | string | yes |
/me/submissions/{id}Edit your draft (owner only; requires If-Match version)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| payload | object | yes |
200 — The updated draft.
| Field | Type | Required | Description |
|---|
/me/submissions/{id}Cancel your draft (soft-delete; owner only)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The cancelled (soft-deleted) submission.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/me/submissions/{id}/submitSubmit your draft for review (draft|needs_revision → pending)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The submission, now pending.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | object | yes | |
/me/bookmarksList your bookmarks with the embedded work + poet (auth; cursor-paginated)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — |
200 — A page of your bookmarks.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | array<object> | yes |
/poetsList poets (public, cursor-paginated, filterable by era/isFeatured/languagesWrittenIn)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| era | query | — | |
| isFeatured | query | — | |
| languagesWrittenIn | query | — | |
| sort | query | — |
200 — A page of poets.
| Field | Type | Required | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||
| |||||||||||||||||||||||||
/poets/{slug}Get a poet by slug (public)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes |
200 — The poet.
| Field | Type | Required | Description | ||
|---|---|---|---|---|---|
| success | enum | yes | |||
| data | object | yes | |||
| |||||
/poets/{slug}/worksList a poet's works (public, cursor-paginated, filterable by type)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes | |
| limit | query | — | |
| cursor | query | — | |
| type | query | — | |
| sort | query | — |
200 — A page of the poet’s works.
/searchCross-script search over works (Atlas Search backed; optional auth; rate-limited)| Name | In | Required | Description |
|---|---|---|---|
| q | query | yes | |
| type | query | — | |
| script | query | — | |
| limit | query | — | |
| cursor | query | — |
200 — A page of matching works plus meta.search { query, totalHits, tookMs }.
| Field | Type | Required | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||
| |||||||||||||||||||||||||||
/super-admin/usersList users with search + role filter (super-admin only)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| q | query | — | |
| role | query | — |
200 — Paginated user rows (includes email for the super-admin context).
| Field | Type | Required | Description | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
/super-admin/users/{id}/promoteChange a user’s role (super-admin only)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
| Field | Type | Required | Description |
|---|---|---|---|
| targetRole | enum | yes | |
| reason | string | yes |
200 — Role changed; returns the updated user.
/super-admin/audit-logsList audit-log entries (super-admin only)| Name | In | Required | Description |
|---|---|---|---|
| page | query | — | |
| pageSize | query | — | |
| actorId | query | — | |
| actorRole | query | — | |
| entityType | query | — | |
| entityId | query | — | |
| action |
/super-admin/audit-logs/{id}Get a single audit-log entry (super-admin only)| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — A single redacted audit-log entry.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/healthzLiveness probeReturns 200 with process uptime and version. Used by orchestration platforms to confirm the process is running. Does not check downstream dependencies.
200 — The process is alive.
| Field | Type | Required | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||
| data | object | yes | |||||||||||||||||
| |||||||||||||||||||
/readyzReadiness probeReturns 200 once the process can serve traffic (Mongo connection healthy). Returns 503 SERVICE_UNAVAILABLE while the database is unreachable. Orchestration platforms route traffic based on this.
200 — Ready to serve traffic.
| Field | Type | Required | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | ||||||||||
| data | object | yes | ||||||||||
| ||||||||||||
/tagsList tags (public, cacheable taxonomy, filterable by type)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| type | query | — | |
| sort | query | — |
200 — A page of tags.
| Field | Type | Required | Description | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | ||||||||||||||||||||||||||||||||
| data | array<object> | yes | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||
/tags/{slug}Get a tag by slug with a live works count (public, cacheable)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes |
200 — The tag plus recentWorksCount.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/tags/{slug}/worksList a tag's works (public, cursor-paginated, filterable by type)| Name | In | Required | Description |
|---|---|---|---|
| slug | path | yes | |
| limit | query | — | |
| cursor | query | — | |
| type | query | — | |
| sort | query | — |
200 — A page of the tag's works.
/ghazalsList ghazals (public, cursor-paginated, newest-first, live poets only)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — |
200 — A page of ghazals.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
/ghazals/{id}Get a single ghazal by id (public), with embedded poet summary| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The ghazal.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/nazmsList nazms (public, cursor-paginated, newest-first, live poets only)| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — |
200 — A page of nazms.
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | array<object> | yes |
/nazms/{id}Get a single nazm by id (public), with embedded poet summary| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The nazm.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/sherSher feed (public): recent (cursor-paginated) or random; filterable by tag slugs / poetId| Name | In | Required | Description |
|---|---|---|---|
| limit | query | — | |
| cursor | query | — | |
| mode | query | — | |
| tags | query | — | |
| poetId | query | — |
200 — A page of sher (live poets only).
/sher/{id}Get a single sher by id (public), with embedded poet summary| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes |
200 — The sher.
| Field | Type | Required | Description | |
|---|---|---|---|---|
| success | enum | yes | ||
| data | object | yes | ||
| ||||
/works/{id}/relatedPublic: related works for a work, hydrated with poet, in display-priority order| Name | In | Required | Description |
|---|---|---|---|
| id | path | yes | |
| limit | query | — |
200 — Related works (possibly empty).
| Field | Type | Required | Description |
|---|---|---|---|
| success | enum | yes | |
| data | array<object> | yes |
| flagCount |
| number |
| yes |
| createdAt | string | yes |
| action |
| string |
| yes |
| status | string | yes |
| reviewerId | stringnull | yes |
| reviewNotes | stringnull | yes |
| revisionNotes | stringnull | yes |
| submittedAt | stringnull | yes |
| resultingEntityId | stringnull | yes |
| createdAt | string | yes |
| yes |
| action | string | yes |
| status | string | yes |
| reviewerId | stringnull | yes |
| reviewNotes | stringnull | yes |
| revisionNotes | stringnull | yes |
| submittedAt | stringnull | yes |
| resultingEntityId | stringnull | yes |
| createdAt | string | yes |
| entity | object | yes |
| reviewerId |
| stringnull |
| yes |
| reviewNotes | stringnull | yes |
| revisionNotes | stringnull | yes |
| submittedAt | stringnull | yes |
| resultingEntityId | stringnull | yes |
| createdAt | string | yes |
| reviewerId |
| stringnull |
| yes |
| reviewNotes | stringnull | yes |
| revisionNotes | stringnull | yes |
| submittedAt | stringnull | yes |
| resultingEntityId | stringnull | yes |
| createdAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| era | enum | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| era | enum | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| version |
| number |
| yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| type | enum | yes |
| isFeatured | boolean | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| type | enum | yes |
| isFeatured | boolean | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| submissionStatus |
| string |
| yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| meaning | object | yes | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | yes |
| exampleSherId | stringnull | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| meaning | object | yes | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | yes |
| exampleSherId | stringnull | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| partOfSpeech | stringnull | yes |
| exampleSherId | stringnull | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| occurrence |
| number |
| yes |
| dictionaryEntryId | stringnull | yes |
| meaning | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| displayPriority | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| coupletIndex | number | yes |
| lineIndex | number | yes |
| occurrence | number | yes |
| dictionaryEntryId | stringnull | yes |
| meaning | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| displayPriority | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| updatedAt | string | yes |
| ur | string | yes |
| exampleSherId | stringnull | — |
| featuredCollectionId | stringnull | yes |
| recommendedPoetIds | array<string> | yes |
| createdBy | string | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| exampleSherId | stringnull | — |
| featuredCollectionId | stringnull | yes |
| recommendedPoetIds | array<string> | yes |
| createdBy | string | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| ur | string | yes |
| category | enum | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| category | enum | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| isFeatured |
| boolean |
| yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| category | enum | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| isFeatured |
| boolean |
| yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| category | enum | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| category | enum | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| isPublished | boolean | yes |
| isFeatured | boolean | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| yes |
| hi | string | yes |
| ur | string | yes |
| bidirectional | boolean | yes |
| displayPriority | number | yes |
| submissionStatus | string | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| editorialNote | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| bidirectional | boolean | yes |
| displayPriority | number | yes |
| submissionStatus | string | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| success |
| enum |
| yes |
| data | object | yes | |||||||||||||
| |||||||||||||||
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| user | object | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||
| data | object | yes |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||
| data | object | yes |
| |||||||
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| description | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| coverImageUrl | stringnull | yes |
| coverColor | stringnull | yes |
| category | enum | yes |
| tags | array<string> | yes |
| displayPriority | number | yes |
| isFeatured | boolean | yes |
| isPublished | boolean | yes |
| publishedAt | stringnull | yes |
| stats | object | yes | |||||||||
| |||||||||||
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | ||||||||||||||||||||||||||||||||||||
| slug | string | yes | ||||||||||||||||||||||||||||||||||||
| title | object | yes | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| description | objectnull | yes | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| coverImageUrl | stringnull | yes | ||||||||||||||||||||||||||||||||||||
| coverColor | stringnull | yes | ||||||||||||||||||||||||||||||||||||
| category | enum | yes | ||||||||||||||||||||||||||||||||||||
| tags | array<string> | yes | ||||||||||||||||||||||||||||||||||||
| displayPriority | number | yes | ||||||||||||||||||||||||||||||||||||
| isFeatured | boolean | yes | ||||||||||||||||||||||||||||||||||||
| isPublished | boolean | yes | ||||||||||||||||||||||||||||||||||||
| publishedAt | stringnull | yes | ||||||||||||||||||||||||||||||||||||
| stats | object | yes | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| version | number | yes | ||||||||||||||||||||||||||||||||||||
| createdAt | string | yes | ||||||||||||||||||||||||||||||||||||
| updatedAt | string | yes | ||||||||||||||||||||||||||||||||||||
| works | array<object> | yes | ||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| user |
| objectnull |
| yes |
| |||||||||||
| Field | Type | Required | Description |
|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| success | enum | yes |
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| liked | enum | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| bookmarked | enum | yes |
| |||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| exampleSher | objectnull | yes | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||
| yes |
| ur | string | yes |
| meaning | object | yes | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | yes |
| exampleSherId | stringnull | yes |
| submissionStatus | string | yes |
| version | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||
| slug | string | yes | |||||||||||||||||
| headword | object | yes | |||||||||||||||||
| |||||||||||||||||||
| meaning | object | yes | |||||||||||||||||
| |||||||||||||||||||
| partOfSpeech | stringnull | yes | |||||||||||||||||
| exampleSherId | stringnull | yes | |||||||||||||||||
| submissionStatus | string | yes | |||||||||||||||||
| version | number | yes | |||||||||||||||||
| createdAt | string | yes | |||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||
| revisionNotes |
| stringnull |
| yes |
| submittedAt | stringnull | yes |
| version | number | yes |
| createdAt | string | yes |
201 — The created draft.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |
| submitterId | string | yes | |
| entityType | string | yes | |
| entityId | stringnull | yes | |
| action | string | yes | |
| status | string | yes | |
| reviewNotes | stringnull | yes | |
| revisionNotes | stringnull | yes | |
| submittedAt | stringnull | yes | |
| version | number | yes | |
| createdAt | string | yes |
| Field |
|---|
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |
| submitterId | string | yes | |
| entityType | string | yes | |
| entityId | stringnull | yes | |
| action | string | yes | |
| status | string | yes | |
| reviewNotes | stringnull | yes | |
| revisionNotes | stringnull | yes | |
| submittedAt | stringnull | yes | |
| version | number | yes | |
| createdAt | string | yes |
| |||||||||||||||||||
| Required |
|---|
| Description |
|---|
| en | string | yes | |
| hi | string | yes | |
| ur | string | yes |
| era | enum | yes |
| isFeatured | boolean | yes |
| sortPriority | number | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||
| slug | string | yes | |||||||||||||||||
| name | object | yes | |||||||||||||||||
| |||||||||||||||||||
| era | enum | yes | |||||||||||||||||
| isFeatured | boolean | yes | |||||||||||||||||
| sortPriority | number | yes | |||||||||||||||||
| createdAt | string | yes | |||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||
| Field |
|---|
| Type |
|---|
| Required |
|---|
| Description |
|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
| language | string | yes |
| createdAt | string | yes |
| updatedAt | string | yes |
| createdAt | string | yes |
| Field | Type | Required | Description |
|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||
| data | object | yes | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||
| query |
| — |
| startDate | query | — |
| endDate | query | — |
| sort | query | — |
200 — Paginated, redacted audit-log entries.
| Field | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||
| actorId | string | yes | |||||||||
| actorRole | enum | yes | |||||||||
| action | string | yes | |||||||||
| entityType | string | yes | |||||||||
| entityId | string | yes | |||||||||
| before | object | — | |||||||||
| after | object | — | |||||||||
| metadata | objectnull | yes | |||||||||
| createdAt | string | yes | |||||||||
| actor | objectnull | yes | |||||||||
| |||||||||||
| entityLabel | stringnull | yes | |||||||||
| number |
| yes |
| version | string | yes |
| ur | string | yes |
| description | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| type | enum | yes |
| coverImageUrl | stringnull | yes |
| sortPriority | number | yes |
| isFeatured | boolean | yes |
| stats | object | yes | |||||||||||||
| |||||||||||||||
| createdAt | string | yes |
| updatedAt | string | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||
| slug | string | yes | |||||||||||||||||
| name | object | yes | |||||||||||||||||
| |||||||||||||||||||
| description | objectnull | yes | |||||||||||||||||
| |||||||||||||||||||
| type | enum | yes | |||||||||||||||||
| coverImageUrl | stringnull | yes | |||||||||||||||||
| sortPriority | number | yes | |||||||||||||||||
| isFeatured | boolean | yes | |||||||||||||||||
| stats | object | yes | |||||||||||||||||
| |||||||||||||||||||
| createdAt | string | yes | |||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||
| recentWorksCount | number | yes | |||||||||||||||||
| Field |
|---|
| Type |
|---|
| Required |
|---|
| Description |
|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
| submissionStatus |
| string |
| yes |
| isFeatured | boolean | yes |
| poet | object | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| createdAt | string | yes |
| updatedAt | string | yes |
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||||||||||||||||||
| type | enum | yes | |||||||||||||||||||||||||||||||||
| poetId | string | yes | |||||||||||||||||||||||||||||||||
| slug | string | yes | |||||||||||||||||||||||||||||||||
| body | object | — | |||||||||||||||||||||||||||||||||
| matlaCoupletIndex | numbernull | yes | |||||||||||||||||||||||||||||||||
| maqtaCoupletIndex | numbernull | yes | |||||||||||||||||||||||||||||||||
| language | string | yes | |||||||||||||||||||||||||||||||||
| submissionStatus | string | yes | |||||||||||||||||||||||||||||||||
| isFeatured | boolean | yes | |||||||||||||||||||||||||||||||||
| poet | object | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| createdAt | string | yes | |||||||||||||||||||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||||||||||||||||||
| type | enum | yes | |||||||||||||||||||||||||||||||||
| poetId | string | yes | |||||||||||||||||||||||||||||||||
| slug | string | yes | |||||||||||||||||||||||||||||||||
| body | object | — | |||||||||||||||||||||||||||||||||
| language | string | yes | |||||||||||||||||||||||||||||||||
| submissionStatus | string | yes | |||||||||||||||||||||||||||||||||
| isFeatured | boolean | yes | |||||||||||||||||||||||||||||||||
| poet | object | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| createdAt | string | yes | |||||||||||||||||||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||||||||||||||||||
| Field |
|---|
| Type |
|---|
| Required |
|---|
| Description |
|---|
| success | enum | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| data | array<object> | yes | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Type |
|---|
| Required |
|---|
| Description |
|---|
| _id | string | yes | |||||||||||||||||||||||||||||||||
| type | enum | yes | |||||||||||||||||||||||||||||||||
| poetId | string | yes | |||||||||||||||||||||||||||||||||
| slug | string | yes | |||||||||||||||||||||||||||||||||
| body | object | — | |||||||||||||||||||||||||||||||||
| language | string | yes | |||||||||||||||||||||||||||||||||
| submissionStatus | string | yes | |||||||||||||||||||||||||||||||||
| isFeatured | boolean | yes | |||||||||||||||||||||||||||||||||
| poet | object | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| createdAt | string | yes | |||||||||||||||||||||||||||||||||
| updatedAt | string | yes | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||