Books — entry 007 of 22
Ganjoor
REST API behind the Ganjoor open-source classical Persian poetry archive, covering hundreds of poets (Hafez, Rumi, Ferdowsi, and more) with full poem text, biographical metadata, manuscript images, and audio recitations. Every read endpoint (poets, poem categories, verses) is fully keyless; only the write endpoints used by the project's own contributor tools require an OAuth2 bearer token.
GreatAPIs Score
Auth quickstart
- No key needed — call it now.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Endpoints
AppUser32
GET/api/usersPaginated Users Information (if user does not have user:view permission list only contains him/her information) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
filterByEmail | query | no | string |
filterByNickName | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/usersadd a new user (if you are trying to add an admin user you yourself should be admin) (Auth policies: user:add)
application/json — RegisterRAppUser
| Status | Description | Schema |
|---|---|---|
200 | OK | RegisterRAppUser |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/users/base64imageGet User Image in base 64 (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/behaviour/loglog user bad behaviuor (Auth policies: user:administer)
application/json — UserCauseViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBehaviourLog |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/users/behaviour/log/{userId}get user behaviour logs (Auth policies: user:administer)
| Name | In | Required | Type |
|---|---|---|---|
userId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/users/captchaimageget a captcha image for signup or forgot password
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/users/checkmysessionCheck if my session is valid (Auth)
| Name | In | Required | Type |
|---|---|---|---|
sessionId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/users/delsessionLogout user (users need user:delothersession to logout other users) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
userId | query | no | string |
sessionId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/users/email/change/{newmail}/{secret} (Auth)
| Name | In | Required | Type |
|---|---|---|---|
newmail | path | yes | string |
secret | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/email/request/change/{newmail} (Auth)
| Name | In | Required | Type |
|---|---|---|---|
newmail | path | yes | string |
application/json — ChangeEmailViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/finalizesignupfinalize signup process
application/json — VerifiedSignUpViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/users/forgotpasswordstart forgot password process by email
application/json — UnverifiedSignUpViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/users/imageGet User Image (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/imageSet User Image (via FormData, specifying userId as 'id' in formData ) - if Files.count is 0 image would be removed - (users need user:modify to change other users image) (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/users/isadminChecks if user is admin (Auth)
| Name | In | Required | Type |
|---|---|---|---|
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/kickoutkick out a user (Auth policies: user:administer)
application/json — UserCauseViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBehaviourLog |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/users/loginlogin
application/json — LoginViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | LoggedOnUserModel |
400 | Bad Request | — |
PUT/api/users/relogin/{sessionId}renew an expired session
| Name | In | Required | Type |
|---|---|---|---|
sessionId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | LoggedOnUserModel |
400 | Bad Request | — |
POST/api/users/resetpasswordreset password
application/json — ResetPasswordViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/users/securableitemsget logged on user securableitems (permissions) (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/users/selfdelete/finalize/{code}finalize user self delete (Auth)
| Name | In | Required | Type |
|---|---|---|---|
code | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/selfdelete/startstart user self delete process (send a verification email to user) (Auth)
application/json — SelfDeleteViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/users/sessionsView User Sessions (user needs user:sessions permission to view other users sessions) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/setmypasswordset my password (Auth)
application/json — SetPasswordModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/users/signupsignup
application/json — UnverifiedSignUpViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/users/verifyverify signup / forgot password / self delete user
| Name | In | Required | Type |
|---|---|---|---|
type | query | no | — |
secret | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/users/{id}returns user information (if user does not have user:view permission trying to view other users' information fails with a forbidden error) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | PublicRAppUser |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/users/{id}update existing user (if you are trying to update an admin user you yourself should be admin) (if user does not have user:modify permission trying to modify other users' information fails with a forbidden error) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — RegisterRAppUser
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/users/{id}delete user (only admin users can delete other admin users, a user cannot delete himself/herself) (Auth policies: user:delete)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/users/{id}/rolesreturns user roles (if user does not have user:view permission trying to view other users' information fails with a forbidden error) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/users/{id}/roles/{role}add user to role (Auth policies: user:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
role | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/users/{id}/roles/{role}remove user from role (Auth policies: user:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
role | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Artifact86
GET/api/artifactsget all published artifacts (including CoverImage info but not items info)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/artifactsAdd new artifact (multipart/form-data)
const data = new FormData();
data.append('name', 'تست');
data.append('description', '');
data.append('srcUrl', '');
data.append('picTitle', 'تست');
data.append('picDescription', '');
data.append('file', this.file);
data.append('picSrcUrl', ''); (Auth policies: artifact:add)
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecord |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ai/create/imagescreate images for ganjoor (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
startPoetId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ai/create/images/offlinecreate images for ganjoor - offline (Auth policies: artifact:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/bookmarkuser bookmarks (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/bookmark/item/{itemId}item bookmarks info (Auth)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/bookmark/item/{itemId}bookmark item (Auth)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBookmark |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/bookmark/{artifactId}artifact bookmarks info (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/bookmark/{artifactId}bookmark artifact (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBookmark |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/bookmark/{bookmarkId}item bookmarks info (Auth)
| Name | In | Required | Type |
|---|---|---|---|
bookmarkId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/favuser favorites (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/fav/item/{itemId}fav item (Auth)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBookmark |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/fav/{artifactId}fav artifact (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserBookmark |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/ganjoorget suggested ganjoor links (Auth)
| Name | In | Required | Type |
|---|---|---|---|
status | query | no | — |
notSynced | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/ganjoorsuggest ganjoor link (Auth)
application/json — LinkSuggestion
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorLinkViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/ganjoorremove ganjoor link (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | query | no | string |
removeItemLink | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/ganjoor/nextunsychedimagefinds next unsynchronized suggested link with an aleady synched one from the artificat if exists,
return value might be null or an array with length 1 or 2 (has paging-headers) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ganjoor/review/{linkId}/{result}review suggested ganjoor link (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | path | yes | string |
result | path | yes | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ganjoor/sync/{linkId}/{displayOnPage}mark suggested ganjoor link as synchronized (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | path | yes | string |
displayOnPage | path | yes | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ganjoor/toctoc / temporary one time api / to be removed (Auth policies: artifact:ganjoor)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ganjoorlink/fillsourcestart filling GanjoorLink table OriginalSource values (Auth policies: artifact:ganjoor)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/ganjoorlink/settextorigin/{ganjoorCatId}/{artifactId}start setting an artifact items as a category poems text original source (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
ganjoorCatId | path | yes | integer |
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/importimport from external resources (Auth policies: artifact:import)
| Name | In | Required | Type |
|---|---|---|---|
srcType | query | no | string |
resourceNumber | query | no | string |
friendlyUrl | query | no | string |
resourcePrefix | query | no | string |
skipUpload | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/itemupdate an artifact item info
application/json — RArtifactItemRecord
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/artifacts/item/{artifactFriendlyUrl}add a new item to an artifact (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
artifactFriendlyUrl | path | yes | string |
multipart/form-data
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactItemRecord |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/itemsof/{id}/{start}/{count}get artifact images according to start and count params
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
start | path | yes | integer |
count | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/artifacts/itemtagvalue/{itemId}add new tag value to item (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
application/json — RTag
| Status | Description | Schema |
|---|---|---|
200 | OK | RTagValue |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/itemtagvalue/{itemId}/{global}edit item attribute value (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
global | query | no | boolean |
application/json — RTagValue
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/artifacts/itemtagvalue/{itemId}/{tagId}/{valueId}/move/{upordown}changes order of tag values based on their position in an item (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
tagId | path | yes | string |
valueId | path | yes | string |
upordown | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/itemtagvalue/{itemId}/{tagValueId}remove tag from item (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
tagValueId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/jobs (Auth policies: artifact:add)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/keep-alivekeep alive (for import background service)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/artifacts/limited/{friendlyUrl}/{count}get specific artifact info with limited number of images
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
count | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/artifacts/noteadd note for artifact (Auth)
application/json — PostUserNote
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserNoteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/note/allall users public notes
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/artifacts/note/itemadd note for artifact item (Auth)
application/json — PostUserNote
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserNoteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/note/item/private/{itemId}get private notes for artifact item (Auth)
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/note/item/{itemId}get public notes for artifact item
| Name | In | Required | Type |
|---|---|---|---|
itemId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/artifacts/note/privateuser public notes (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/note/private/{artifactId}get private notes for artifact (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/note/publicuser public notes (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/note/reportreport a public note (Auth)
application/json — PostRUserNoteAbuseReportViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/note/report/{id}delete a report for abuse in public user notes (Auth policies: note:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/note/reported/moderate/{reportid}delete a reported user note (accept the complaint) (Auth policies: note:moderate)
| Name | In | Required | Type |
|---|---|---|---|
reportid | path | yes | string |
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/note/{artifactId}get private notes for artifact
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/artifacts/note/{noteId}Edit User Notes (Auth)
| Name | In | Required | Type |
|---|---|---|---|
noteId | path | yes | string |
application/json — PostUserNote
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserNoteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/note/{noteId}delete user notes (Auth)
| Name | In | Required | Type |
|---|---|---|---|
noteId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/notes/reportedGet a list of reported notes (Auth policies: note:moderate)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/originalimages/removestart removing original images (Auth policies: artifact:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/pinterestget suggested pinterest links (Auth)
| Name | In | Required | Type |
|---|---|---|---|
status | query | no | — |
notSynced | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/pinterestsuggest pinterest link for ganjoor (Auth)
application/json — PinterestSuggestion
| Status | Description | Schema |
|---|---|---|
200 | OK | PinterestLinkViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/pinterestremove pinterest link (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/pinterest/review/{linkId}/{result}review suggested ganjoor pinterest link (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | path | yes | string |
altText | query | no | string |
result | path | yes | — |
reviewDesc | query | no | string |
imageUrl | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/pinterest/sync/{linkId}mark suggested pinterest ganjoor link as synchronized (Auth policies: artifact:ganjoor)
| Name | In | Required | Type |
|---|---|---|---|
linkId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/reexamineimportdue to a bug in loc json outputs some artifacts with more than 1000 pages were downloaded incompletely (Auth policies: artifact:import)
| Name | In | Required | Type |
|---|---|---|---|
pass | query | no | string |
skipUpload | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/retryimportretry import (Auth policies: artifact:import)
| Name | In | Required | Type |
|---|---|---|---|
jobType | query | no | — |
skipUpload | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/searchsearch artifacts
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
term | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/artifacts/search/itemssearch artifact items
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
term | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/artifacts/secureget all artifacts visible by user (including CoverImage info but not items info) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/secure/limited/{friendlyUrl}/{count}gets specified publish artifact info (including CoverImage + images) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
count | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/secure/{artifactUrl}/{itemUrl}gets specified publish artifact item info (including images + attributes) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artifactUrl | path | yes | string |
itemUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactItemRecordViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/secure/{friendlyUrl}gets specified publish artifact info (including CoverImage + images) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/secure/{friendlyUrl}/filteritemsbytag/{tagFriendlyUrl}gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag (Auth)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
tagFriendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/secure/{friendlyUrl}/filteritemsbytag/{tagFriendlyUrl}/{valueFriendlyUrl}gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag (Auth)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
tagFriendlyUrl | path | yes | string |
valueFriendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/tagget all tags
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/artifacts/tagadd new tag (Auth policies: tag:modify)
application/json — RTag
| Status | Description | Schema |
|---|---|---|
200 | OK | RTag |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/tag/move/{tagid}/in/item/{itemId}/{upordown}changes order of tags based on their position in artifact items (Auth policies: tag:modify)
| Name | In | Required | Type |
|---|---|---|---|
tagId | path | yes | string |
itemId | path | yes | string |
upordown | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/tag/move/{tagid}/in/{artifactId}/{upordown}changes order of tags based on their position in artifacts (Auth policies: tag:modify)
| Name | In | Required | Type |
|---|---|---|---|
tagId | path | yes | string |
artifactId | path | yes | string |
upordown | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/tag/{friendlyUrl}
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RTag |
400 | Bad Request | — |
PUT/api/artifacts/tag/{tagid}edit tag (Auth policies: tag:modify)
| Name | In | Required | Type |
|---|---|---|---|
tagid | path | yes | string |
application/json — RTag
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/artifacts/tagbundle/{friendlyUrl}get tag bundle by frindly url
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RTagBundleViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/artifacts/tagbundle/{friendlyUrl}/{valueUrl}get tag value bundle by frindly url
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
valueUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactTagViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/artifacts/tagged/{tagUrl}/{valueUrl}
| Name | In | Required | Type |
|---|---|---|---|
tagUrl | path | yes | string |
valueUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
DELETE/api/artifacts/tagvalue/{artifactId}/{tagValueId}remove tag from artifact (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
tagValueId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/artifacts/tagvalue/{artifactid}add new tag value to artifact (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
application/json — RTag
| Status | Description | Schema |
|---|---|---|
200 | OK | RTagValue |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/artifacts/tagvalue/{artifactid}/{global}edit artifact attribute value (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
artifactid | path | yes | string |
global | query | no | boolean |
application/json — RTagValue
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/artifacts/tagvalue/{artifactid}/{tagId}/{valueId}/move/{upordown}changes order of tag values based on their position in an artifact (Auth policies: artifact:edittag)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
tagId | path | yes | string |
valueId | path | yes | string |
upordown | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/tagvalue/{tagId}/{friendlyUrl}get tag value by frindly url
| Name | In | Required | Type |
|---|---|---|---|
tagId | path | yes | string |
friendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RTagValue |
400 | Bad Request | — |
PUT/api/artifacts/upload/external/{friendlyUrl}upload artifact to external server (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
skipUpload | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/artifacts/{artifactId}remove unpublished artifact having no notes and not bookmarked (Auth policies: artifact:delete)
| Name | In | Required | Type |
|---|---|---|---|
artifactId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/artifacts/{artifactUrl}/{itemUrl}gets specified publish artifact item info (including images + attributes)
| Name | In | Required | Type |
|---|---|---|---|
artifactUrl | path | yes | string |
itemUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactItemRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/artifacts/{friendlyUrl}gets specified publish artifact info (including CoverImage + images)
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/artifacts/{friendlyUrl}/filteritemsbytag/{tagFriendlyUrl}gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
tagFriendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/artifacts/{friendlyUrl}/filteritemsbytag/{tagFriendlyUrl}/{valueFriendlyUrl}gets specified publish artifact info (including CoverImage + images) where its items are filteted by tag
| Name | In | Required | Type |
|---|---|---|---|
friendlyUrl | path | yes | string |
tagFriendlyUrl | path | yes | string |
valueFriendlyUrl | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RArtifactMasterRecordViewModel |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/artifacts/{id}edit artifactt master record (user should have additional permissions artifact:awaiting and artifact:publish to change status of artifact) (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json — RArtifactMasterRecord
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/artifacts/{id}/coverSet Artifact Cover Item Index (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
AuditLog1
GET/api/auditlogsget all audit logs ordered by time (Auth policies: audit:view)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
userName | query | no | string |
orderByTimeDescending | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
ContributionStats4
GET/api/contributions/{dataType}/by/userdatatype grouped by user
| Name | In | Required | Type |
|---|---|---|---|
dataType | path | yes | string |
PageNumber | query | no | integer |
PageSize | query | no | integer |
day | query | no | string |
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/contributions/{dataType}/dailydaily stats
| Name | In | Required | Type |
|---|---|---|---|
dataType | path | yes | string |
PageNumber | query | no | integer |
PageSize | query | no | integer |
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/contributions/{dataType}/summarysummed up stats of data
| Name | In | Required | Type |
|---|---|---|---|
dataType | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | SummedUpViewModel |
400 | Bad Request | — |
GET/api/contributions/{userId}user contribution
| Name | In | Required | Type |
|---|---|---|---|
userId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | UserContributionsViewModel |
400 | Bad Request | — |
DonationAccounting13
GET/api/donationsreturns all donations
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/donationsadd donation + regenerate donations page (Auth policies: ganjoor:donations)
application/json — GanjoorDonationViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorDonationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/donations/accountinfo/visibleis account info settings is on or off (for deciding to regenerate donations page based on it) (Auth policies: ganjoor:donations)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/donations/expensereturns all expenses
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/donations/expenseadd expense + regenerate donations page (Auth policies: ganjoor:donations)
application/json — GanjoorExpense
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorDonationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/donations/expense/{id}expense by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorExpense |
400 | Bad Request | — |
PUT/api/donations/expense/{id}update expense date and description + regenerate donations page (Auth policies: ganjoor:donations)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — UpdateDateDescriptionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/donations/expense/{id}delete expense (Auth policies: ganjoor:donations)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/donations/onetimeimportone time import (Auth policies: ganjoor:donations)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/donations/pageregenerate donations page (Auth policies: ganjoor:donations)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/donations/{id}donation by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorDonationViewModel |
400 | Bad Request | — |
PUT/api/donations/{id}update donation date and donorname + regenerate donations page (Auth policies: ganjoor:donations)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — UpdateDateDescriptionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/donations/{id}delete donation + regenerate donations page (Auth policies: ganjoor:donations)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
ExternalFTP3
GET/api/ftpqueued ftp uploads (Auth policies: ftp:moderate)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ftp/resetreset ftp queue (Auth policies: ftp:moderate)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ftp/startprocess ftp queue (Auth policies: ftp:moderate)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
FAQ14
POST/api/faqadd a new faq item (Auth policies: faq:moderate)
application/json — FAQItem
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQCategory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/faqupdate an existing faq item (Auth policies: faq:moderate)
application/json — FAQItem
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQCategory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/catget published categories
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/faq/catadd a new faq category (Auth policies: faq:moderate)
application/json — FAQCategory
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQCategory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/faq/catupdate an existing faq category (Auth policies: faq:moderate)
application/json — FAQCategory
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQCategory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/cat/itemsget published category items
| Name | In | Required | Type |
|---|---|---|---|
catId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/faq/cat/items/secureget all category items (Auth policies: faq:moderate)
| Name | In | Required | Type |
|---|---|---|---|
catId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/cat/secureget all categories (Auth policies: faq:moderate)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/cat/secure/{id}get category by id (Auth policies: faq:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQCategory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/faq/cat/{id}delete a faq category (Auth policies: faq:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/pinnedget published pinned items
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/faq/secure/{id}get item by id (Auth policies: faq:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQItem |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/faq/{id}get published item by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | FAQItem |
400 | Bad Request | — |
DELETE/api/faq/{id}delete a faq item (Auth policies: faq:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Ganjoor209
PUT/api/ganjoor/ai/generate/poem/geogeo tag poems using AI (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
startFrom | query | no | integer |
count | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/ai/generate/poem/summariesfill poem summaries using open ai (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
startFrom | query | no | integer |
count | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/ai/generate/summariesfill couplet summaries using open ai (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
startFrom | query | no | integer |
count | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/bookmarkuser bookmarks (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
q | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/bookmark/switch/ret/{poemId}/{coupletIndex}switch bookmark and return bookmark id ('0' for switching off a bookmark) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/bookmark/switch/{poemId}/{coupletIndex}switch bookmark (Auth)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/bookmark/{bookmarkId}modify bookmark private note (Auth)
| Name | In | Required | Type |
|---|---|---|---|
bookmarkId | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/bookmark/{bookmarkId}delete bookmark (Auth)
| Name | In | Required | Type |
|---|---|---|---|
bookmarkId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/bookmark/{poemId}get poem user bookmarks (only Id, CoupletIndex and DateTime are valid in the output view model) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/bookmark/{poemId}/{coupletIndex}is the poem couplet is bookmarked by user (Auth)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/bookmark/{poemId}/{coupletIndex}Bookmark couplet if it is not (Auth)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/bookslist of books
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/catcat by full url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
poems | query | no | boolean |
mainSections | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/cat/correctionsend cat corrections (Auth)
application/json — GanjoorCatCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/cat/correction/last/{id}returns last unreviewed correction from the user for a cat (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/cat/correction/moderatemoderate cat correction (Auth policies: ganjoor:modify)
application/json — GanjoorCatCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/cat/correction/nextget next unreviewed cat correction (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
onlyUserCorrections | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/cat/correction/{id}get cat correction by id (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/cat/correction/{id}delete unreviewed user cat corrections for a poem (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/cat/corrections/allget list of all suggested cat corrections (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/cat/corrections/mineget list of user suggested cat corrections (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/extra/{id}set category extra info (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCatViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/cat/language/{id}/{language}set category poems language tag (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
language | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/poemformat/{id}/{poemformat}set category poems language tag (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
poemformat | path | yes | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/recaptionpoems/{id}batch rename cat poems (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — GanjoorBatchNamingModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/reslugpoems/{id}batch resulg category poems (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/startassigningrhymes/{id}/{retag} (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
retag | path | yes | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/startassigningrhythms/{id}/{retag}start assigning poem rhythms (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
retag | path | yes | boolean |
rhythm | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/subcats/startgentoc/{id}start generating sub cats TOC (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
ganjoorTOC | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/toc/regenregenerate TOCs (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/cat/toc/{id}/{options}generate category toc (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
options | path | yes | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/cat/toc/{id}/{options}directly insert generated TOC (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
options | path | yes | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/cat/{id}cat by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
poems | query | no | boolean |
mainSections | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
DELETE/api/ganjoor/cat/{id}delete a category (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/cat/{id}/corrections/effectiveeffective corrections for a cat
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/cat/{id}/geotagget a categoty poem tags
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/cat/{id}/imagesget category poem related images
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/cat/{id}/papersourcesget paper sources for a catgeory
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/cat/{id}/regenrelatedsectionsregenerate category related sections (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/centuriesgets list of poets grouped by centuries (first one is the pinned ones)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/ganjoor/commentpost new comment (Auth)
application/json — GanjoorCommentPostViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCommentSummaryViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/commentdelete user's own comment (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | integer |
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/comment/awaiting/deletedelete awaiting comment (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | integer |
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/comment/awaiting/publishpublish awaiting comment (Auth policies: ganjoor:moderate)
application/json
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/comment/reportreport a comment (Auth)
application/json — GanjoorPostReportCommentViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/comment/report/{id}delete a report (without deleting corresponding comment) (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/comment/reported/moderate/{reportid}delete reported other users comment (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
reportid | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/comment/{id}edit user's own comment (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json
| Status | Description | Schema |
|---|---|---|
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/comment/{id}/editlink/{coupletIndex}link or unlink user's own comment to a coupletIndex (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/commentsget recent comments
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
filterUserId | query | no | string |
term | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/comments/awaitingget awaiting comments (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/comments/mineget logged on users recent comments (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/comments/reportedget list of reported comments (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/comments/{id}get a single comment information (only published comments, replies are not included)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCommentFullViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/correction/moderatemoderate poem correction (Auth policies: ganjoor:modify)
application/json — GanjoorPoemCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/correction/{id}get correction by id (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/corrections/allget list of all suggested corrections (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
userId | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/corrections/mineget list of user suggested corrections (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/couplet/{poemId}/{coupletIndex}/sectionsget couplet sections
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/duplicates/finish/{srcCatId}/{destCatId}start removing category duplicates (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
srcCatId | path | yes | integer |
destCatId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/duplicates/manual/{srcCatId}/{srcPoemId}/{destPoemId}manually add a duplicate for a poems (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
srcCatId | path | yes | integer |
srcPoemId | path | yes | integer |
destPoemId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/duplicates/{catId}list of category saved duplicated poems (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/duplicates/{id}delete a duplicate (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/duplicates/{srcCatId}/{destCatId}Finding Category Poems Duplicates (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
srcCatId | path | yes | integer |
destCatId | path | yes | integer |
hardTry | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/fillpoemscoupletindicesstart filling poems couplet indices (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/fillsectioncoupletcountsfill section couplet counts (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/fixlongurlsincommentsexamine comments for long links (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/generatemissingbookcoversgenerate missing book covers (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/generaterelatedsectionsinfostart generating related sections info for wholepoem sections (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
regenerate | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/hafez/faalget a random poem from hafez
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCompleteViewModel |
400 | Bad Request | — |
POST/api/ganjoor/healthcheckexamine site pages for broken links (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/maintenance/regenfulltitlesregenerate poem full titles to fix an old bug (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/naskbansynchronize https:://naskban.ir links (logs in and then out to naskban.ir using auth info) (Auth policies: ganjoor:moderate)
application/json — LoginViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/naskban (Auth policies: ganjoor:moderate)
application/json — LoginViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/naskbandelete poem related naskban images by url (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
naskbanUrl | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/naskban/humanreviewed/{naskbanBookId}/{catId}/{humanReviewed}mark naskban links for poems of a categiory and its children as human reviewed (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
naskbanBookId | path | yes | integer |
catId | path | yes | integer |
humanReviewed | path | yes | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/naskban/import/matchingbooksimport naskban ganjoor matchings (Auth policies: ganjoor:moderate)
application/json — LoginViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/naskban/import/poetbooks/{poetId}discover poet naskban paper sources (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
application/json — LoginViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/naskban/textoriginal/{naskbanBookId}/{catId}/{textOriginal}mark naskban links a text original for a category (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
naskbanBookId | path | yes | integer |
catId | path | yes | integer |
textOriginal | path | yes | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/oldversion/{id}get old version of page (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorModifyPageViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/ontime/fixbandcoupletsstart band couplets fix (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/pagepage by url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
catPoems | query | no | boolean |
commentSortOrder | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/pageadd new page (Auth policies: ganjoor:modify)
application/json — GanjoorPage
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPage |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/page/cache/{id}clean cache by id (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/page/oldversions/{id}older versions of a page (modifications history except for current version) (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/page/{id}modify page (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — GanjoorModifyPageViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/page/{id}delete page (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/pageurlpage url by id
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/papersources/import/{poetid}import paper sources from museum (Auth policies: ganjoor:moderate)
| Name | In | Required | Type |
|---|---|---|---|
poetid | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/periodsregenerate half centuries (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poemget poem by url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
catInfo | query | no | boolean |
catPoems | query | no | boolean |
rhymes | query | no | boolean |
recitations | query | no | boolean |
images | query | no | boolean |
songs | query | no | boolean |
comments | query | no | boolean |
verseDetails | query | no | boolean |
navigation | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/poem/adminedit/{id}modify poem => only these fields: NoIndex, RedirectFromFullUrl, MixedModeOrder (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — GanjoorModifyPageViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poem/analysisrhyme/{id}find poem rhyme
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjooRhymeAnalysisResult |
400 | Bad Request | — |
GET/api/ganjoor/poem/analysisrhythm/{id}analysis poem to find its prosody information
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/ganjoor/poem/breakbreak a poem from a verse forward (Auth policies: ganjoor:modify)
application/json — PoemVerseOrder
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/poem/comment/{id}/rateRate a comment (like / dislike / clear rating) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
value | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorCommentRatingResultViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/poem/correctionsend poem corrections (Auth)
application/json — GanjoorPoemCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poem/correction/last/{id}returns last unreviewed correction from the user for a poem (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poem/correction/nextget next unreviewed correction (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
onlyUserCorrections | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/poem/correction/{id}delete unreviewed user corrections for a poem (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/poem/geotagadd poem geo tag (Auth policies: ganjoor:modify)
application/json — PoemGeoDateTag
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemGeoDateTag |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/poem/geotagupdate poem tag (Auth policies: ganjoor:modify)
application/json — PoemGeoDateTag
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/poem/geotag/{id}delete poem tag (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/poem/randomget a random poem from a poet (c.ganjoor.net replacement), 0 means random poet,
حافظ (2)، خیام (3)، ابوسعید ابوالخیر (26)، صائب (22)، سعدی (7)، باباطاهر (28)، مولوی (5)، اوحدی (19)، خواجو (20)، شهریار (35)، عراقی (21)، فروغی بسطامی (32)، سلمان ساوجی (40)، محتشم کاشانی (29)، امیرخسرو دهلوی (34)، سیف فرغانی (31)، عبید زاکانی (33)، هاتف اصفهانی (25) یا رهی معیری (41)
| Name | In | Required | Type |
|---|---|---|---|
poetId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCompleteViewModel |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}get poem by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
catInfo | query | no | boolean |
catPoems | query | no | boolean |
rhymes | query | no | boolean |
recitations | query | no | boolean |
images | query | no | boolean |
songs | query | no | boolean |
comments | query | no | boolean |
verseDetails | query | no | boolean |
navigation | query | no | boolean |
relatedpoems | query | no | boolean |
commentSortOrder | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
DELETE/api/ganjoor/poem/{id}delete a poem (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poem/{id}/commentsGet Poem Comments
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
coupletIndex | query | no | integer |
sortOrder | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/comments/myratingsget the logged on user's own rating values for a poem's comments
(meant to be merged client-side into an already fetched, anonymously cacheable comment list) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/poem/{id}/corrections/effectiveeffective corrections for poem
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/poem/{id}/geotagget poem tags ordered by LunarDateTotalNumber then by Id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/poem/{id}/imagesget poem images (PlainText/HtmlText are intentionally empty)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/quotedsget quoted poems for a poem
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
skip | query | no | integer |
itemsCount | query | no | integer |
onlyClaimedByBothPoets | query | no | boolean |
published | query | no | boolean |
chosenForMainList | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/quoteds/{relatedId}two poems quoted records
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
relatedId | path | yes | integer |
published | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/recitationsget poem recitations (PlainText/HtmlText are intentionally empty)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/recitations/upvotesget user upvoted recitations of a poem (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/poem/{id}/sections/regenerateregenerate poem sections (dangerous: wipes out existing data) (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/poem/{id}/songsget poem songs
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
approved | query | no | boolean |
trackType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poem/{id}/versesget poem verses by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
coupletIndex | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/poemformats/fillmissingfill missing poem formats (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/poems/searchsearch
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
term | query | no | string |
poetId | query | no | integer |
catId | query | no | integer |
e | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poems/similarGet Similar Poems accroding to prosody and rhyme informations
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
metre | query | no | string |
rhyme | query | no | string |
poetId | query | no | integer |
catId | query | no | integer |
language | query | no | string |
format | query | no | — |
term | query | no | string |
coupletCountsFrom | query | no | integer |
coupletCountsTo | query | no | integer |
e | query | no | array |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poetpoet by url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/poetcreate new poet (Auth policies: ganjoor:modify)
application/json — GanjoorPoetViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/poet/image/{id}set poet image (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/poet/image/{url}.gifget poet image
| Name | In | Required | Type |
|---|---|---|---|
url | path | yes | string |
nocache | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poet/image/{url}.pngget poet image with png ext
| Name | In | Required | Type |
|---|---|---|---|
url | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poet/{id}poet by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
catPoems | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/poet/{id}update poet info (except for image) (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — GanjoorPoetViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/poet/{id}starts deleting poet job
` (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/poetsget list of published poets without their biography
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/poets/secureget list of all poets (including unpublished ones) with their bio (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/probablemetre/dismiss/{id}dismiss ganjoor poem probable metre (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/probablemetre/listget a list of ganjoor poems probable metres
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/probablemetre/nextget next ganjoor poem probable metre
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSection |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/ganjoor/probablemetre/save/{id}save ganjoor poem probable metre (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/ganjoor/prosody/transfer/{srcId}/{destId}transfer poems and sections from a meter to another one and delete the source meter (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
srcId | path | yes | integer |
destId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/publicdata/batchexportstart exporting all published Ganjoor data to the public git-tracked JSON data set (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/publicdata/import(re)build local Ganjoor content from a public data export tree (local folder or HTTP) —
intended for local development use, not for production servers (Auth policies: ganjoor:import)
application/json — PublicDataImportRequestDto
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/quotedget quoted poems
| Name | In | Required | Type |
|---|---|---|---|
poetId | query | no | integer |
relatedPoetId | query | no | integer |
chosen | query | no | boolean |
published | query | no | boolean |
claimed | query | no | boolean |
indirect | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/ganjoor/quotedinsert quoted (Auth policies: ganjoor:modify)
application/json — GanjoorQuotedPoemViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorQuotedPoemViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/quotedupdate quoted (Auth policies: ganjoor:modify)
application/json — GanjoorQuotedPoemViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/quoteddelete quoted (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/quoted/discover/{poetId}/{relatedPoetId}/{breakOnFirstSimilar}/{relatedSubCatId}discover related poems (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
relatedPoetId | path | yes | integer |
breakOnFirstSimilar | path | yes | boolean |
relatedSubCatId | path | yes | integer |
insertReverse | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/quoted/extractextracting quoted poems (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/quoted/moderatemoderate quoted poems (Auth policies: ganjoor:modify)
application/json — GanjoorQuotedPoemModerationViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/quoted/pages/generateregenerate related poems pages (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/quoted/pages/generate/{poetId}/{relatedPoetId}regenerate two poets similar page (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
relatedPoetId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/quoted/suggestget list of user suggested corrections (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/quoted/suggestsuggest new quote (for normal users) (Auth)
application/json — GanjoorQuotedPoemViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorQuotedPoemViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/quoted/suggestion/nextnext unmoderated quoted poem (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorQuotedPoemViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/quoted/{id}get quoted by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorQuotedPoemViewModel |
400 | Bad Request | — |
PUT/api/ganjoor/rebuild/mundexstart updating mundex page (Auth policies: ganjoor:songrevu)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/rebuild/statsregenerate stats page (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/redirecturlget redirect url for a url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/refillcoupletindices/{poemId}refill couplet indices for poem (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/regenplaintext/{catId}separate verses in poem.PlainText with Environment.NewLine instead of SPACE (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/rhythmsreturns ganjoor metre list ordered by rhythm
| Name | In | Required | Type |
|---|---|---|---|
sortOnVerseCount | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/section/analyserhyme/{id}find poem section rhyming letters
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjooRhymeAnalysisResult |
400 | Bad Request | — |
POST/api/ganjoor/section/correctionsend a correction for a section (Auth)
application/json — GanjoorPoemSectionCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSectionCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/correction/last/{id}returns last unreviewed correction from the user for a section (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSectionCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/correction/nextget next unreviewed correction for poem sections (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
deletedUserSections | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSectionCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/correction/{id}get section correction by id (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSectionCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/ganjoor/section/correction/{id}delete unreviewed user corrections for a poem section (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/corrections/allget list of all suggested corrections (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/section/corrections/mineget list of user suggested corrections (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/section/moderatemoderate poem section correction (Auth policies: ganjoor:modify)
application/json — GanjoorPoemSectionCorrectionViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoemSectionCorrectionViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/{id}/corrections/effectiveeffective corrections for section
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/section/{poemId}/{sectionIndex}/relatedGet Section Related ones
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
sectionIndex | path | yes | integer |
skip | query | no | integer |
itemsCount | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
DELETE/api/ganjoor/section/{poemId}/{sectionIndex}/{convertVerses}delete a poem section (section should not be linked to a poem verse of types other than paragraphs or comments) (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
sectionIndex | path | yes | integer |
convertVerses | path | yes | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/section/{sectionId}get a specific poem section
| Name | In | Required | Type |
|---|---|---|---|
sectionId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/sections/tagged/languagelanguage tagged poem sections
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
language | query | no | string |
poetId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/ganjoor/sections/updaterelatedupdate related sections manually (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
metreId | query | no | integer |
rhyme | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/sections/{poemId}get all poem sections
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
POST/api/ganjoor/singlecouplets/startfindingrhymesstart finding rhymes (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/sitemapstart building sitemap (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/sitemap/tajikbuild tj.ganjoor.net site map (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/songget next unreviewed song (Auth)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
onlyMine | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
POST/api/ganjoor/songsuggest song for poem (Auth)
application/json — PoemMusicTrackViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/songreview song (Auth policies: ganjoor:songrevu)
application/json — PoemMusicTrackViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/ganjoor/songdelete a poem song by id (Auth policies: ganjoor:songrevu)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/song/adddirectly insert a poem related song (Auth policies: ganjoor:songadd)
application/json — PoemMusicTrackViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/song/mysuggestionsuser suggested songs (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/song/updatemodify a published song (Auth policies: ganjoor:songrevu)
application/json — PoemMusicTrackViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/song/user/stats/{userId}history of suggested songs by a user (Auth policies: ganjoor:songrevu)
| Name | In | Required | Type |
|---|---|---|---|
userId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | UserSongSuggestionsHistory |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/song/{id}get song by id (Auth policies: ganjoor:songrevu)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | PoemMusicTrackViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/ganjoor/sourcedigital source from tag
| Name | In | Required | Type |
|---|---|---|---|
sourceUrlSlug | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | DigitalSource |
400 | Bad Request | — |
POST/api/ganjoor/source/stats/rebuildupdate digital sources stats (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/source/{catId}tag category with source (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
application/json — DigitalSource
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/sqlite/batchexportstart exporting all poets (Auth policies: ganjoor:songrevu)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/sqlite/export/{poetId}export a poet to sqlite database (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/sqlite/import/cat/{catId}import category data from ganjoor SQLite database (form file) (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/sqlite/import/{poetId}imports data from ganjoor SQLite database (form file) (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/sqlite/update/{poetId}Apply corrections from sqlite (Auth policies: ganjoor:import)
| Name | In | Required | Type |
|---|---|---|---|
poetId | path | yes | integer |
note | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/startfindingmissingrhythmsStart Finding Missing Rhythms (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
onlyPoemsWithRhymes | query | no | boolean |
poemsNum | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/tajik/pagetajik page by url
| Name | In | Required | Type |
|---|---|---|---|
url | query | no | string |
catPoems | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPageCompleteViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/tajik/poetstajik poets
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/ganjoor/tajik/publicdata/batchexportstart exporting the Tajik (Cyrillic) overlay data to its own, separate public
git-tracked JSON data set — only poets/categories/poems with an actual Tajik
translation are included (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/tajik/regenerate-htmlre-runs the Tajik poet/category HTML generators for every already-imported poet and
category page, overwriting their stored TajikHtmlText. Needed one-time after changing
either generator function (e.g. adding poem excerpts to the table of contents), since
the normal SQLite import skips pages that already exist and never refreshes them.
Runs as a background job - check the Admin area's LongRunningJobs page for progress. (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/tajik/restore-poem-htmlrecovery job: regenerates TajikHtmlText for Tajik poems whose stored HTML currently
contains a link (the signature left by the CatPage id corruption bug) - use after
RegenerateTajikCatAndPoetHtmlText (or anything else) may have corrupted poem pages.
Check the Admin area's LongRunningJobs page for progress. (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/tajik/searchsearch tajik poems
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
term | query | no | string |
poetId | query | no | integer |
catId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/ganjoor/tajik/sqlite/onetime/import (Auth policies: ganjoor:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/user/profile/{id}Get user public profile
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorUserPublicProfile |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/ganjoor/wordcounts/bycatcomparison of word counts for poets
| Name | In | Required | Type |
|---|---|---|---|
term | query | no | string |
PageNumber | query | no | integer |
PageSize | query | no | integer |
catId | query | no | integer |
poetId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/wordcounts/bycat/countCategoryWordCount for a specific term in a category
| Name | In | Required | Type |
|---|---|---|---|
term | query | no | string |
catId | query | no | integer |
poetId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | CategoryWordCount |
400 | Bad Request | — |
PUT/api/ganjoor/wordcounts/fillwordcountsone time fixer for word counts new RowNmbrInCat fields (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/ganjoor/wordcounts/fillwordcountsummeriesone time fixer for category word count summries (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/ganjoor/wordcounts/rebuild/{poetId}build word counts (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
reset | query | no | boolean |
poetId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/ganjoor/wordcounts/{catId}category word counts
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
term | query | no | string |
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/ganjoor/wordsums/{catId}category words summary
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | CategoryWordCountSummary |
400 | Bad Request | — |
GanjoorPoetSuggestedPhotos7
POST/api/poetphotosadd a suggestion for poets photos (send form) with these fields: poetId, title, description, srcUrl and an image attachment (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedPictureViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/poetphotosmodify a suggestion for poets photos (Auth policies: ganjoor:photos)
application/json — GanjoorPoetSuggestedPictureViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/poetphotos/poet/{id}returns list of suggested photos for a poet
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/poetphotos/reject/{id}reject a suggestion for poets photos (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/poetphotos/unpublished/nextreturn the next unpublished suggested line for poets (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedPictureViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/poetphotos/{id}returns a single suggested photo (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedPictureViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/poetphotos/{id}delete published suggested photo (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GanjoorPoetSuggestedSpecLines7
POST/api/poetspecsadd a suggestion for poets spec lines (Auth)
application/json — GanjoorPoetSuggestedSpecLineViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedSpecLineViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/poetspecsmodify a suggestion for poets spec lines (Auth policies: ganjoor:photos)
application/json — GanjoorPoetSuggestedSpecLineViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/poetspecs/poet/{id}returns list of suggested spec lines for a poet
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/poetspecs/reject/{id}reject a suggestion for poets spec lines (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/poetspecs/unpublished/nextreturn the next unpublished suggested line for poets (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
skip | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedSpecLineViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/poetspecs/{id}returns specific suggested line for poets (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorPoetSuggestedSpecLineViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/poetspecs/{id}delete published suggested spec line (Auth policies: ganjoor:photos)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GeoLocation5
GET/api/locationsget all locations
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/locationsadd new location (Auth policies: ganjoor:modify)
application/json — GanjoorGeoLocation
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorGeoLocation |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/locationsupdate an existing location (Auth policies: ganjoor:modify)
application/json — GanjoorGeoLocation
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/locations/{id}get location by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorGeoLocation |
400 | Bad Request | — |
DELETE/api/locations/{id} (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Image5
GET/api/images/cropped/{id}Generate Cropped Image Based On ThumbnailCoordinates For Notes (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
left | query | no | number |
top | query | no | number |
width | query | no | number |
height | query | no | number |
| Status | Description | Schema |
|---|---|---|
200 | OK | RImage |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/images/replace/{id}replace an image (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
multipart/form-data
| Status | Description | Schema |
|---|---|---|
200 | OK | RPictureFile |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/images/{id}/{degIn90mul}Rotate Image in 90 deg. multiplicants: 90, 180 or 270 (Auth policies: artifact:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
degIn90mul | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | RPictureFile |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/images/{size}/{id}.jpgreturns image stream with image/jpeg MIME type
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
size | path | yes | string |
mimeForResized | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/images/{size}/{id}.webpreturns image stream with image/webp MIME type
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
size | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
MusicCatalogue2
GET/api/musiccatalogue/golha/collection/{id}/programsgolha collection programs
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/musiccatalogue/golha/program/{id}/tracksprogram tracks
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
Notification10
GET/api/notificationsGet User Notifications (Auth)
| Name | In | Required | Type |
|---|---|---|---|
notificationType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/notificationsDelete All Read Notifications (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/notifications/all/{email}notfy all users (Auth policies: notif:bulk)
| Name | In | Required | Type |
|---|---|---|---|
email | path | yes | boolean |
application/json — NewNotificationViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/notifications/allreadSet All User Notifications Status Read (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/notifications/allunreadSet All User Notifications Status Unread (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/notifications/paginatedGet User Notifications (Paginated Version) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
notificationType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/notifications/unread/countGet unread user notifications count (Auth)
| Name | In | Required | Type |
|---|---|---|---|
notificationType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/notifications/{notificationId}Switch Notification Status (Auth)
| Name | In | Required | Type |
|---|---|---|---|
notificationId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserNotificationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/notifications/{notificationId}Delete Notification (Auth)
| Name | In | Required | Type |
|---|---|---|---|
notificationId | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/notifications/{userId}notify a sepcific user (Auth policies: notif:add)
| Name | In | Required | Type |
|---|---|---|---|
userId | path | yes | string |
application/json — NewNotificationViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RUserNotificationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Numbering9
GET/api/numberingsget all numberings
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/numberingsadd new numbering (Auth policies: ganjoor:modify)
application/json — GanjoorNumbering
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorNumbering |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/numberingsupdate an existing numbering (Auth policies: ganjoor:modify)
application/json — GanjoorNumbering
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/numberings/cat/{id}get all numberings related to a category
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/numberings/couplet/{poemId}/{coupletIndex}get all numbering patterns for a couplet
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
coupletIndex | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/numberings/generatemissinggenerate missing default numberings and start counting (Auth policies: ganjoor:modify)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/numberings/recount/start/{id}recount a numbering (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/numberings/{id}get numbering by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorNumbering |
400 | Bad Request | — |
DELETE/api/numberings/{id} (Auth policies: ganjoor:modify)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Recitation40
GET/api/audioGets audio narrations, user must have recitation::moderate permission to be able to see all users narrations (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
allUsers | query | no | boolean |
status | query | no | — |
searchTerm | query | no | string |
mistakes | query | no | boolean |
recitationType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/audioReciation Upload (Auth)
| Name | In | Required | Type |
|---|---|---|---|
replace | query | no | boolean |
recitationType | query | no | — |
| Status | Description | Schema |
|---|---|---|
200 | OK | UploadSession |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/catany/{catId}check if a category has any recitations
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/cattop1/{catId}get category top one recitations
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
includePoemText | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/cattop1/{catId}/rssrss for category top one recitations
| Name | In | Required | Type |
|---|---|---|---|
catId | path | yes | integer |
includePoemText | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/audio/chownTransfer Recitations Ownership (for recitations owned by current user) (Auth)
| Name | In | Required | Type |
|---|---|---|---|
targetEmailAddress | query | no | string |
artistName | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/audio/errors/approved/{id}remove approved mistake (Auth policies: recitation:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/errors/reportget errors reported for recitations (Auth policies: recitation:moderate)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/audio/errors/reportreport an error in a recitation (Auth)
application/json — RecitationErrorReportViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RecitationErrorReportViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/audio/errors/report/accept/{id}accepts a reported error for recitations, change status of the recitation to rejected and notify the reporter and recitation owner (and deletes the report) (Auth policies: recitation:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/audio/errors/report/editedit approved mistake of a recitation text (Auth policies: recitation:moderate)
application/json — RecitationErrorReportViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/audio/errors/report/saveaccepts a reported error for recitations, add mistake to approve the mistake and notify the reporter and recitation owner (and deletes the report) (Auth policies: recitation:moderate)
application/json — RecitationErrorReportViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/audio/errors/report/{id}reject a reported error for recitations and notify the reporter (and deletes the report) (Auth policies: recitation:moderate)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
rejectionNote | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/audio/ffMakes recitations of فریدون فرحاندوز first recitations (Auth policies: recitation:import)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/audio/file/{id}.mp3get the corresponding mp3 file for the narration
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/audio/file/{id}.xmlget the corresponding xml file for the recitation
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/audio/healthcheckstarts checking recitaions with missing files and add them to reported errors list job (Auth policies: recitation:moderate)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/audio/moderate/{id}Moderate pending narration (for moderating other users' recitations you also need recitation:moderate permission) (Auth policies: recitation:publish)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — RecitationModerateViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RecitationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/audio/profileGet User Profiles (Auth)
| Name | In | Required | Type |
|---|---|---|---|
artistName | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/audio/profileAdd a narration profile (Auth)
application/json — UserRecitationProfileViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | UserRecitationProfileViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/audio/profileUpdate a narration profile (Auth)
application/json — UserRecitationProfileViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | UserRecitationProfileViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/profile/defGet User Default Profile (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | UserRecitationProfileViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/audio/profile/{id}Delete a narration profile (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/publishedreturns paginated published recitations (if poetId or catId is non-zero its ordered by poemId ascending if not it is ordered by publish date descending)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
searchTerm | query | no | string |
poetId | query | no | integer |
catId | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/published/rsscreates an RSS file from recent published recitations
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/published/{id}get published recitation by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | PublicRecitationViewModel |
400 | Bad Request | — |
404 | Not Found | — |
GET/api/audio/publishqueuepublishing tracker data (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
unfinished | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/audio/retrypublishretry publish unpublished narrations
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/syncqueueSynchronization Queue (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/uploadenabledupload, update, moderate and delete operations on recitations might temporarily become disabled,
this method gets the current status
remarks: the value of this flag is provided as a custom header called audio-upload-enabled in some common GET methods
in order to reduce the need for a separate query (Auth)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/uploadsGet User Uploads (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
allUsers | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/verses/{id}Gets Verse Sync Information
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
PUT/api/audio/vote/switch/{id}revoke recitaion up vote (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/audio/vote/{id}up vote a recitation (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/audio/vote/{id}revoke recitaion up vote (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/votesget user upvoted recitations (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/audio/votes/{poemId}/scorescompute poem recitations order (no update)
| Name | In | Required | Type |
|---|---|---|---|
poemId | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/audio/xml/{id}get the corresponding xml file contents (xml) for the narration
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
404 | Not Found | — |
PUT/api/audio/{id}updates narration metadata (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — RecitationViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | RecitationViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
DELETE/api/audio/{id}Delete a recitation (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
RGenericOptions8
GET/api/options/global/{name}get global option value, Security Warning: every authenticated user could see value of global options, so do not store sensitive data into them or you can override this behaviour in your derived class (Auth)
| Name | In | Required | Type |
|---|---|---|---|
name | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/options/global/{name}set global option value, Security Warning: every authenticated user could change value of global options, so do not store sensitive data into them or you can override this behaviour in your derived class (Auth)
| Name | In | Required | Type |
|---|---|---|---|
name | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/options/global/{workspace}/{name}get workspace global option value, Security Warning: every authenticated user in a workspace could see value of global options, so do not store sensitive data into them or you can override this behaviour in your derived class (Auth)
| Name | In | Required | Type |
|---|---|---|---|
workspace | path | yes | string |
name | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/options/global/{workspace}/{name}set global option value, Security Warning: every authenticated user could change value of global options, so do not store sensitive data into them or you can override this behaviour in your derived class (Auth)
| Name | In | Required | Type |
|---|---|---|---|
workspace | path | yes | string |
name | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/options/{name}get user level option, if option value is not found it returns empty string (Auth)
| Name | In | Required | Type |
|---|---|---|---|
name | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/options/{name}get user level option (Auth)
| Name | In | Required | Type |
|---|---|---|---|
name | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/options/{workspace}/{name}get user level option in a workspace, if option value is not found it returns empty string (Auth)
| Name | In | Required | Type |
|---|---|---|---|
workspace | path | yes | string |
name | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/options/{workspace}/{name}get user level option in a workspace (Auth)
| Name | In | Required | Type |
|---|---|---|---|
workspace | path | yes | string |
name | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
RImage2
POST/api/rimagestemporary api for uploading temporary images (Auth policies: audit:view)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/rimages/{id}.{ext}return image with custom extension
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
ext | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
RLongRunningJobs3
GET/api/rjobsget long running jobs (Auth policies: audit:view)
| Name | In | Required | Type |
|---|---|---|---|
succeeded | query | no | boolean |
failed | query | no | boolean |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/rjobsdelete a specific job record, this could be used for deleting records which are not cleanable using the "cleanup" method (Auth policies: audit:view)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/rjobs/cleanupclean up old jobs (Auth policies: audit:view)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Role8
GET/api/rolesAll Roles Information (Auth policies: role:view)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/rolesadd a new role (Auth policies: role:add)
application/json — RAppRole
| Status | Description | Schema |
|---|---|---|
200 | OK | RAppRole |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/roles/permissions/{roleName}lists role permissions (Auth policies: role:view)
| Name | In | Required | Type |
|---|---|---|---|
roleName | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/roles/permissions/{roleName}Saves role permissions (Auth policies: role:modify)
| Name | In | Required | Type |
|---|---|---|---|
roleName | path | yes | string |
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/roles/securableitemsGet All SecurableItems
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
GET/api/roles/{roleName}returns role information (Auth policies: role:view)
| Name | In | Required | Type |
|---|---|---|---|
roleName | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | RAppRole |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
PUT/api/roles/{roleName}update existing role (Auth policies: role:modify)
| Name | In | Required | Type |
|---|---|---|---|
roleName | path | yes | string |
application/json — RAppRole
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/roles/{roleName}delete role (Auth policies: role:delete)
| Name | In | Required | Type |
|---|---|---|---|
roleName | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
SiteBanners5
GET/api/bannersget all defined site banners (Auth policies: ganjoor:banners)
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/bannersadd site banner (send form) with these fields: alt, url and an image attachment (Auth policies: ganjoor:banners)
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorSiteBannerViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/bannersdelete site banner (Auth policies: ganjoor:banners)
| Name | In | Required | Type |
|---|---|---|---|
id | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
GET/api/banners/randomget a random active site banner
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorSiteBannerViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
404 | Not Found | — |
PUT/api/banners/{id}modify site banner (Auth policies: ganjoor:banners)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
application/json — GanjoorSiteBannerModifyViewModel
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
404 | Not Found | — |
Translation5
GET/api/translations/languagesget all languages
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
POST/api/translations/languagesadd new language (Auth policies: ganjoor:translations)
application/json — GanjoorLanguage
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorLanguage |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/translations/languagesupdate an existing language (Auth policies: ganjoor:translations)
application/json — GanjoorLanguage
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
GET/api/translations/languages/{id}get language by id
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorLanguage |
400 | Bad Request | — |
DELETE/api/translations/languages/{id} (Auth policies: ganjoor:translations)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
UserVisitsTracking4
GET/api/trackingget user history (Auth)
| Name | In | Required | Type |
|---|---|---|---|
PageNumber | query | no | integer |
PageSize | query | no | integer |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
POST/api/trackingadd a user history track (Auth)
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | GanjoorUserPrePoemVisitViewModel |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
PUT/api/trackingstart or stop tracking user (Auth)
application/json
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
DELETE/api/tracking/{id}delete a user history track (Auth)
| Name | In | Required | Type |
|---|---|---|---|
id | path | yes | string |
| Status | Description | Schema |
|---|---|---|
200 | OK | — |
400 | Bad Request | — |
401 | Unauthorized | — |
403 | Forbidden | — |
Try it
Developer reference
https://api.ganjoor.net- GET/api/ganjoor/poets
- GET/api/ganjoor/poet/{id}
- GET/api/ganjoor/poem
Availability
Changelog
- gained an OpenAPI spec
- 1 path added