---
title: "suggest an edit to an already-approved person's own fields - any logged-in user, same as suggesting a poem correction. Goes into the pending queue; does not change the person. (Auth)"
method: POST
path: "/api/people/{id}/editsuggestion"
tags: ["GanjoorRelatedPerson"]
---

# suggest an edit to an already-approved person's own fields - any logged-in user, same as suggesting a poem correction. Goes into the pending queue; does not change the person. (Auth)

`POST /api/people/{id}/editsuggestion`

## Request

- Base URL: `https://api.ganjoor.net` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ganjoor.net/api/people/{id}/editsuggestion`
- Auth: API key in header `Authorization`

## Path parameters

- `id` integer, required

## Request body

- GanjoorPersonEditSuggestion: a contributor's suggested edit to an existing, already-approved GanjoorRelatedPerson's own fields (name, bio, birth/death info, family tree caption, ...). Reviewed/approved the same way a GanjoorPoemGeoDateTagCorrection is - see GanjoorService-ModeratePersonEditSuggestion.cs - but standalone: it targets a person directly, not a poem/couplet. There is no admin-only direct-edit path for GanjoorRelatedPerson; this suggestion queue is the only way any of its fields change after it is first created.
  - `id` integer: suggestion id
  - `personId` integer: the person this suggestion proposes changes for
  - `person` GanjoorRelatedPerson: a person refered by a poem
    - `id` integer: id
    - `name` string, nullable: name
    - `description` string, nullable: description
    - `wikiUrl` string, nullable: wikipedia url
    - `birthYearInLHijri` integer: birth year in lunar hijri
    - `deathYearInLHijri` integer: death year in lunar hijri
    - `validBirthDate` boolean: BirthYearInLHijri, for some poets it is only indicator of their century of birth and should not be relied as their valid birth date
    - `validDeathDate` boolean: DeathYearInLHijri, for some poets it is only indicator of their century of death and should not be relied as their valid death date
    - `birthLocationId` integer, nullable: birth location id
    - `birthLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
      - `id` integer: id
      - `name` string, nullable: name
      - `latitude` number, double: Latitude
      - `longitude` number, double: Longitude
      - `machineGenerated` boolean: AI generated
    - `deathLocationId` integer, nullable: death location id
    - `deathLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
      - `id` integer: id
      - `name` string, nullable: name
      - `latitude` number, double: Latitude
      - `longitude` number, double: Longitude
      - `machineGenerated` boolean: AI generated
    - `machineGenerated` boolean: AI generated
    - `familyTreeCaption` string, nullable: optional caption for the family tree this person is treated as the root of (e.g. "ساسانیان", "آل برمک") - purely a display label for whoever a tree is being browsed from; nothing enforces that this person actually has no recorded ancestors themselves, and most people will leave this null (only whichever person a tree is "named after" needs one set).
    - `importance` 0 | 1 | 2: how editorially prominent a GanjoorRelatedPerson is treated as - purely a display/sizing hint (see GanjoorRelatedPerson.Importance, GanjoorPersonGraphNode.Importance and peoplegraph.js's nodeRadius()), never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
    - `gender` 0 | 1 | 2: a GanjoorRelatedPerson's gender - used only by the family-tree chart (familytree.js's buildLayout()) to break ties when a child has two recorded parents and both happen to have their own recorded ancestors (so neither side can be preferred on "continues a documented lineage" grounds alone): the father is preferred as the tree's spine parent, matching conventional patrilineal genealogy-chart practice, with the mother then drawn attached beside him. Never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
    - `aliases` string, nullable: other names this person is known by (epithets, titles, alternative spellings), separated by the Persian comma (،) - e.g. for رستم: «تهمتن، رستم دستان، پور زال». Used by the AI tagging jobs to match a name in a poem to this person, and filled automatically when two people are merged
  - `date` string, date-time: date
  - `userId` string, uuid: suggester's user id
  - `user` RAppUser: Application User
    - `id` string, uuid
    - `userName` string, nullable
    - `normalizedUserName` string, nullable
    - `email` string, nullable
    - `normalizedEmail` string, nullable
    - `emailConfirmed` boolean
    - `passwordHash` string, nullable
    - `securityStamp` string, nullable
    - `concurrencyStamp` string, nullable
    - `phoneNumber` string, nullable
    - `phoneNumberConfirmed` boolean
    - `twoFactorEnabled` boolean
    - `lockoutEnd` string, date-time, nullable
    - `lockoutEnabled` boolean
    - `accessFailedCount` integer
    - `firstName` string, nullable: First Name
    - `surName` string, nullable: Sur Name
    - `createDate` string, date-time, required: User Creation Date
    - `status` 0 | 1, required: User Status
    - `rImage` RImage: Image Files
      - `id` string, uuid: Id
      - `originalFileName` string, nullable: Original File Name
      - `contentType` string, nullable: content type
      - `fileSizeInBytes` integer: Original Image File Size In Byte
      - `imageWidth` integer: Original Image Width
      - `imageHeight` integer: Original Image Height
      - `folderName` string, nullable: پوشه محل ذخیره تصویر
      - `storedFileName` string, nullable: نام فایل ذخیره شده با بالاترین کیفیت
      - `dataTime` string, date-time: datetime
      - `lastModified` string, date-time: Last Modified for caching purposes
    - `rImageId` string, uuid, nullable: user image id
    - `nickName` string, nullable: nick name
    - `bio` string, nullable: biography
    - `website` string, nullable: web site
    - `screenName` string, nullable: user screen name
    - `lockoutMessage` string, nullable: if user is locked out purposely as some kind of temporary punishment put the message for him or her here
  - `suggestedName` string, nullable: suggested name
  - `suggestedDescription` string, nullable: suggested description
  - `suggestedWikiUrl` string, nullable: suggested wikipedia url
  - `suggestedBirthYearInLHijri` integer: suggested birth year in lunar hijri
  - `suggestedDeathYearInLHijri` integer: suggested death year in lunar hijri
  - `suggestedValidBirthDate` boolean: suggested ValidBirthDate
  - `suggestedValidDeathDate` boolean: suggested ValidDeathDate
  - `suggestedBirthLocationId` integer, nullable: suggested birth location id
  - `suggestedBirthLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
    - `id` integer: id
    - `name` string, nullable: name
    - `latitude` number, double: Latitude
    - `longitude` number, double: Longitude
    - `machineGenerated` boolean: AI generated
  - `suggestedDeathLocationId` integer, nullable: suggested death location id
  - `suggestedDeathLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
    - `id` integer: id
    - `name` string, nullable: name
    - `latitude` number, double: Latitude
    - `longitude` number, double: Longitude
    - `machineGenerated` boolean: AI generated
  - `suggestedFamilyTreeCaption` string, nullable: suggested family tree caption
  - `confirmedDuplicateFamilyTreeCaption` boolean: only meaningful alongside a non-null SuggestedFamilyTreeCaption. Normally, ModeratePersonEditSuggestionAsync rejects approving a caption when another person in the same connected kinship component already carries one (two separate "family tree" list entries would otherwise open to the exact same graph). Set this to true only when a second, distinct caption on the very same tree is genuinely intended (e.g. two commonly used alternate names for the same dynasty/family) to approve it anyway.
  - `suggestedAliases` string, nullable: suggested other names (GanjoorRelatedPerson.Aliases) separated by «،». null = this suggestion says nothing about them (aliases stay as they are); the contributor's form is pre-filled with the current aliases, so emptying the box entirely is also read as "no change" - removing every alias is a moderator-only action (Admin/MergePeople)
  - `suggestedImportance` 0 | 1 | 2: how editorially prominent a GanjoorRelatedPerson is treated as - purely a display/sizing hint (see GanjoorRelatedPerson.Importance, GanjoorPersonGraphNode.Importance and peoplegraph.js's nodeRadius()), never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
  - `suggestedGender` 0 | 1 | 2: a GanjoorRelatedPerson's gender - used only by the family-tree chart (familytree.js's buildLayout()) to break ties when a child has two recorded parents and both happen to have their own recorded ancestors (so neither side can be preferred on "continues a documented lineage" grounds alone): the father is preferred as the tree's spine parent, matching conventional patrilineal genealogy-chart practice, with the mother then drawn attached beside him. Never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
  - `suggestedForDeletion` boolean: true if this suggestion is actually a request to delete the person outright, not to change their fields - when true, every Suggested* field above is ignored on approval (they still carry whatever the contributor's pre-filled form happened to hold) and ModeratePersonEditSuggestionAsync removes the person and every relation/affiliation/tag reference to them instead. Kept on this same entity rather than a separate one so the existing suggest/review UI and permissions are reused as-is.
  - `operation` 0 | 1 | 2: what a GanjoorPersonEditSuggestion asks for (deleting a person is the SuggestedForDeletion flag of an Edit suggestion)
  - `mergeIntoPersonId` integer, nullable: Merge: the person that stays (PersonId is the duplicate that is merged into it and deleted). Deliberately no foreign key, so it never blocks deleting a person.
  - `splitFromPoemId` integer, nullable: Split: first poem (inclusive) of the part that belongs to the new person
  - `splitFromCoupletIndex` integer, nullable: Split: first couplet (inclusive) of SplitFromPoemId that belongs to the new person
  - `splitToPoemId` integer, nullable: Split: last poem (inclusive) of the part that belongs to the new person; null = up to the end of the book
  - `splitToCoupletIndex` integer, nullable: Split: last couplet (inclusive) of SplitToPoemId; null = the whole poem
  - `splitNewName` string, nullable: Split: name of the new person (empty = same name)
  - `splitNewDescription` string, nullable: Split: description of the new person
  - `resultReport` string, nullable: Merge/Split: report of what the approved operation did
  - `suggestionNote` string, nullable: suggester's note to the moderator
  - `reviewed` boolean: reviewed
  - `result` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18: correction review result
  - `reviewDate` string, date-time: review date
  - `reviewNote` string, nullable: review note
  - `reviewerUserId` string, uuid, nullable: reviewer's user id
  - `reviewerUser` RAppUser: Application User
    - `id` string, uuid
    - `userName` string, nullable
    - `normalizedUserName` string, nullable
    - `email` string, nullable
    - `normalizedEmail` string, nullable
    - `emailConfirmed` boolean
    - `passwordHash` string, nullable
    - `securityStamp` string, nullable
    - `concurrencyStamp` string, nullable
    - `phoneNumber` string, nullable
    - `phoneNumberConfirmed` boolean
    - `twoFactorEnabled` boolean
    - `lockoutEnd` string, date-time, nullable
    - `lockoutEnabled` boolean
    - `accessFailedCount` integer
    - `firstName` string, nullable: First Name
    - `surName` string, nullable: Sur Name
    - `createDate` string, date-time, required: User Creation Date
    - `status` 0 | 1, required: User Status
    - `rImage` RImage: Image Files
      - `id` string, uuid: Id
      - `originalFileName` string, nullable: Original File Name
      - `contentType` string, nullable: content type
      - `fileSizeInBytes` integer: Original Image File Size In Byte
      - `imageWidth` integer: Original Image Width
      - `imageHeight` integer: Original Image Height
      - `folderName` string, nullable: پوشه محل ذخیره تصویر
      - `storedFileName` string, nullable: نام فایل ذخیره شده با بالاترین کیفیت
      - `dataTime` string, date-time: datetime
      - `lastModified` string, date-time: Last Modified for caching purposes
    - `rImageId` string, uuid, nullable: user image id
    - `nickName` string, nullable: nick name
    - `bio` string, nullable: biography
    - `website` string, nullable: web site
    - `screenName` string, nullable: user screen name
    - `lockoutMessage` string, nullable: if user is locked out purposely as some kind of temporary punishment put the message for him or her here

## Response `200`

OK

- GanjoorPersonEditSuggestion: a contributor's suggested edit to an existing, already-approved GanjoorRelatedPerson's own fields (name, bio, birth/death info, family tree caption, ...). Reviewed/approved the same way a GanjoorPoemGeoDateTagCorrection is - see GanjoorService-ModeratePersonEditSuggestion.cs - but standalone: it targets a person directly, not a poem/couplet. There is no admin-only direct-edit path for GanjoorRelatedPerson; this suggestion queue is the only way any of its fields change after it is first created.
  - `id` integer: suggestion id
  - `personId` integer: the person this suggestion proposes changes for
  - `person` GanjoorRelatedPerson: a person refered by a poem
    - `id` integer: id
    - `name` string, nullable: name
    - `description` string, nullable: description
    - `wikiUrl` string, nullable: wikipedia url
    - `birthYearInLHijri` integer: birth year in lunar hijri
    - `deathYearInLHijri` integer: death year in lunar hijri
    - `validBirthDate` boolean: BirthYearInLHijri, for some poets it is only indicator of their century of birth and should not be relied as their valid birth date
    - `validDeathDate` boolean: DeathYearInLHijri, for some poets it is only indicator of their century of death and should not be relied as their valid death date
    - `birthLocationId` integer, nullable: birth location id
    - `birthLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
      - `id` integer: id
      - `name` string, nullable: name
      - `latitude` number, double: Latitude
      - `longitude` number, double: Longitude
      - `machineGenerated` boolean: AI generated
    - `deathLocationId` integer, nullable: death location id
    - `deathLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
      - `id` integer: id
      - `name` string, nullable: name
      - `latitude` number, double: Latitude
      - `longitude` number, double: Longitude
      - `machineGenerated` boolean: AI generated
    - `machineGenerated` boolean: AI generated
    - `familyTreeCaption` string, nullable: optional caption for the family tree this person is treated as the root of (e.g. "ساسانیان", "آل برمک") - purely a display label for whoever a tree is being browsed from; nothing enforces that this person actually has no recorded ancestors themselves, and most people will leave this null (only whichever person a tree is "named after" needs one set).
    - `importance` 0 | 1 | 2: how editorially prominent a GanjoorRelatedPerson is treated as - purely a display/sizing hint (see GanjoorRelatedPerson.Importance, GanjoorPersonGraphNode.Importance and peoplegraph.js's nodeRadius()), never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
    - `gender` 0 | 1 | 2: a GanjoorRelatedPerson's gender - used only by the family-tree chart (familytree.js's buildLayout()) to break ties when a child has two recorded parents and both happen to have their own recorded ancestors (so neither side can be preferred on "continues a documented lineage" grounds alone): the father is preferred as the tree's spine parent, matching conventional patrilineal genealogy-chart practice, with the mother then drawn attached beside him. Never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
    - `aliases` string, nullable: other names this person is known by (epithets, titles, alternative spellings), separated by the Persian comma (،) - e.g. for رستم: «تهمتن، رستم دستان، پور زال». Used by the AI tagging jobs to match a name in a poem to this person, and filled automatically when two people are merged
  - `date` string, date-time: date
  - `userId` string, uuid: suggester's user id
  - `user` RAppUser: Application User
    - `id` string, uuid
    - `userName` string, nullable
    - `normalizedUserName` string, nullable
    - `email` string, nullable
    - `normalizedEmail` string, nullable
    - `emailConfirmed` boolean
    - `passwordHash` string, nullable
    - `securityStamp` string, nullable
    - `concurrencyStamp` string, nullable
    - `phoneNumber` string, nullable
    - `phoneNumberConfirmed` boolean
    - `twoFactorEnabled` boolean
    - `lockoutEnd` string, date-time, nullable
    - `lockoutEnabled` boolean
    - `accessFailedCount` integer
    - `firstName` string, nullable: First Name
    - `surName` string, nullable: Sur Name
    - `createDate` string, date-time, required: User Creation Date
    - `status` 0 | 1, required: User Status
    - `rImage` RImage: Image Files
      - `id` string, uuid: Id
      - `originalFileName` string, nullable: Original File Name
      - `contentType` string, nullable: content type
      - `fileSizeInBytes` integer: Original Image File Size In Byte
      - `imageWidth` integer: Original Image Width
      - `imageHeight` integer: Original Image Height
      - `folderName` string, nullable: پوشه محل ذخیره تصویر
      - `storedFileName` string, nullable: نام فایل ذخیره شده با بالاترین کیفیت
      - `dataTime` string, date-time: datetime
      - `lastModified` string, date-time: Last Modified for caching purposes
    - `rImageId` string, uuid, nullable: user image id
    - `nickName` string, nullable: nick name
    - `bio` string, nullable: biography
    - `website` string, nullable: web site
    - `screenName` string, nullable: user screen name
    - `lockoutMessage` string, nullable: if user is locked out purposely as some kind of temporary punishment put the message for him or her here
  - `suggestedName` string, nullable: suggested name
  - `suggestedDescription` string, nullable: suggested description
  - `suggestedWikiUrl` string, nullable: suggested wikipedia url
  - `suggestedBirthYearInLHijri` integer: suggested birth year in lunar hijri
  - `suggestedDeathYearInLHijri` integer: suggested death year in lunar hijri
  - `suggestedValidBirthDate` boolean: suggested ValidBirthDate
  - `suggestedValidDeathDate` boolean: suggested ValidDeathDate
  - `suggestedBirthLocationId` integer, nullable: suggested birth location id
  - `suggestedBirthLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
    - `id` integer: id
    - `name` string, nullable: name
    - `latitude` number, double: Latitude
    - `longitude` number, double: Longitude
    - `machineGenerated` boolean: AI generated
  - `suggestedDeathLocationId` integer, nullable: suggested death location id
  - `suggestedDeathLocation` GanjoorGeoLocation: Geo Locations (Cities) referred by Ganjoor Metadata
    - `id` integer: id
    - `name` string, nullable: name
    - `latitude` number, double: Latitude
    - `longitude` number, double: Longitude
    - `machineGenerated` boolean: AI generated
  - `suggestedFamilyTreeCaption` string, nullable: suggested family tree caption
  - `confirmedDuplicateFamilyTreeCaption` boolean: only meaningful alongside a non-null SuggestedFamilyTreeCaption. Normally, ModeratePersonEditSuggestionAsync rejects approving a caption when another person in the same connected kinship component already carries one (two separate "family tree" list entries would otherwise open to the exact same graph). Set this to true only when a second, distinct caption on the very same tree is genuinely intended (e.g. two commonly used alternate names for the same dynasty/family) to approve it anyway.
  - `suggestedAliases` string, nullable: suggested other names (GanjoorRelatedPerson.Aliases) separated by «،». null = this suggestion says nothing about them (aliases stay as they are); the contributor's form is pre-filled with the current aliases, so emptying the box entirely is also read as "no change" - removing every alias is a moderator-only action (Admin/MergePeople)
  - `suggestedImportance` 0 | 1 | 2: how editorially prominent a GanjoorRelatedPerson is treated as - purely a display/sizing hint (see GanjoorRelatedPerson.Importance, GanjoorPersonGraphNode.Importance and peoplegraph.js's nodeRadius()), never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
  - `suggestedGender` 0 | 1 | 2: a GanjoorRelatedPerson's gender - used only by the family-tree chart (familytree.js's buildLayout()) to break ties when a child has two recorded parents and both happen to have their own recorded ancestors (so neither side can be preferred on "continues a documented lineage" grounds alone): the father is preferred as the tree's spine parent, matching conventional patrilineal genealogy-chart practice, with the mother then drawn attached beside him. Never used to filter, rank or otherwise affect query results. New values can be appended safely later (stored as int).
  - `suggestedForDeletion` boolean: true if this suggestion is actually a request to delete the person outright, not to change their fields - when true, every Suggested* field above is ignored on approval (they still carry whatever the contributor's pre-filled form happened to hold) and ModeratePersonEditSuggestionAsync removes the person and every relation/affiliation/tag reference to them instead. Kept on this same entity rather than a separate one so the existing suggest/review UI and permissions are reused as-is.
  - `operation` 0 | 1 | 2: what a GanjoorPersonEditSuggestion asks for (deleting a person is the SuggestedForDeletion flag of an Edit suggestion)
  - `mergeIntoPersonId` integer, nullable: Merge: the person that stays (PersonId is the duplicate that is merged into it and deleted). Deliberately no foreign key, so it never blocks deleting a person.
  - `splitFromPoemId` integer, nullable: Split: first poem (inclusive) of the part that belongs to the new person
  - `splitFromCoupletIndex` integer, nullable: Split: first couplet (inclusive) of SplitFromPoemId that belongs to the new person
  - `splitToPoemId` integer, nullable: Split: last poem (inclusive) of the part that belongs to the new person; null = up to the end of the book
  - `splitToCoupletIndex` integer, nullable: Split: last couplet (inclusive) of SplitToPoemId; null = the whole poem
  - `splitNewName` string, nullable: Split: name of the new person (empty = same name)
  - `splitNewDescription` string, nullable: Split: description of the new person
  - `resultReport` string, nullable: Merge/Split: report of what the approved operation did
  - `suggestionNote` string, nullable: suggester's note to the moderator
  - `reviewed` boolean: reviewed
  - `result` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18: correction review result
  - `reviewDate` string, date-time: review date
  - `reviewNote` string, nullable: review note
  - `reviewerUserId` string, uuid, nullable: reviewer's user id
  - `reviewerUser` RAppUser: Application User
    - `id` string, uuid
    - `userName` string, nullable
    - `normalizedUserName` string, nullable
    - `email` string, nullable
    - `normalizedEmail` string, nullable
    - `emailConfirmed` boolean
    - `passwordHash` string, nullable
    - `securityStamp` string, nullable
    - `concurrencyStamp` string, nullable
    - `phoneNumber` string, nullable
    - `phoneNumberConfirmed` boolean
    - `twoFactorEnabled` boolean
    - `lockoutEnd` string, date-time, nullable
    - `lockoutEnabled` boolean
    - `accessFailedCount` integer
    - `firstName` string, nullable: First Name
    - `surName` string, nullable: Sur Name
    - `createDate` string, date-time, required: User Creation Date
    - `status` 0 | 1, required: User Status
    - `rImage` RImage: Image Files
      - `id` string, uuid: Id
      - `originalFileName` string, nullable: Original File Name
      - `contentType` string, nullable: content type
      - `fileSizeInBytes` integer: Original Image File Size In Byte
      - `imageWidth` integer: Original Image Width
      - `imageHeight` integer: Original Image Height
      - `folderName` string, nullable: پوشه محل ذخیره تصویر
      - `storedFileName` string, nullable: نام فایل ذخیره شده با بالاترین کیفیت
      - `dataTime` string, date-time: datetime
      - `lastModified` string, date-time: Last Modified for caching purposes
    - `rImageId` string, uuid, nullable: user image id
    - `nickName` string, nullable: nick name
    - `bio` string, nullable: biography
    - `website` string, nullable: web site
    - `screenName` string, nullable: user screen name
    - `lockoutMessage` string, nullable: if user is locked out purposely as some kind of temporary punishment put the message for him or her here

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden

## Changes

- **2026-10-13** `afb4560919ee`: 4 info
  - added the new optional request property `suggestedAliases` (media type: application/json)
  - added the new optional request property `suggestedAliases` (media type: text/json)
  - added the new optional request property `suggestedAliases` (media type: application/*+json)
  - added the optional property `suggestedAliases` to the response with the `200` status
- **2026-10-11** `7d4a8643c3db`: 36 info
  - added the new optional request property `mergeIntoPersonId` (media type: application/json)
  - added the new optional request property `mergeIntoPersonId` (media type: text/json)
  - added the new optional request property `mergeIntoPersonId` (media type: application/*+json)
  - added the new optional request property `operation` (media type: application/json)
  - …32 more
- **2026-10-10** `330e7bb195c1`: 4 info
  - added the new optional request property `person/aliases` (media type: application/json)
  - added the new optional request property `person/aliases` (media type: text/json)
  - added the new optional request property `person/aliases` (media type: application/*+json)
  - added the optional property `person/aliases` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/ganjoor/apis/rmuseum-api/changes/api/people/:id/editsuggestion/post.md)

---

[API](https://skmtc.dev/ganjoor/apis/rmuseum-api.md) - [All operations](https://skmtc.dev/ganjoor/apis/rmuseum-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ganjoor/apis/rmuseum-api/revisions/143b912b1085?raw)
