Developers
Menu

Why every change made through an app is checked first, and how reviewing works.

When people edit things on Street Art Cities themselves, trusted hunters' changes often go live straight away. Changes made through an app never do. They always go to the review queue first, so that apps can't flood the map with changes, even by accident.

What happens to an edit

  submitted ──▶ accepted ──▶ reverted
      │
      └──────▶ rejected
StatusMeaning
submittedWaiting in the review queue
acceptedA reviewer accepted it, and it's live
rejectedA reviewer rejected it. reviewComment often says why
revertedIt was accepted, but later undone

The person who suggested the edit gets a notification when it's accepted or rejected.

POST /api/edits/evaluate-permissions always answers "autoAccept": false for apps. It also tells you whether the person could accept the change themselves, with canAccept. Use both to choose the right words in your app, like "Suggest a change", or "Your change will be ready to review" when canAccept is true.

{
  "autoAccept": false,
  "canAccept": true
}

If canAccept is true, send the person to the review link, so they can check the change and accept it themselves. Don't accept it for them through the API (see below).

Every edit has a reviewUrl, like https://streetartcities.com/community/review-queue/b3d1c1f4-…. The page shows the change and its status to the person who suggested it, and to everyone who can review it. Link to it from your app, so people can follow their suggestions.

If the person is allowed to review the edit, they can accept or reject it on that page, including their own edits. That keeps them in charge, while making sure every app-made change is looked at by a person.

Reviewing through the API

Apps with the edits:review scope can review too, for people who are reviewers. This is only meant for apps that help people review other people's changes, like a review queue app for a city's hunters.

Never accept your own app's changes

Changes your app suggests must always be accepted by a person, who presses Accept by hand on the review link. Don't use edits:review to accept them, and don't accept changes without someone checking them first. We don't allow fully automated or bulk changes at the moment.

When GET /api/edits/:id answers "reviewable": true, your app can show it to the person, and accept or reject it once they've decided:

curl -X POST https://streetartcities.com/api/edits/b3d1c1f4-…/accept \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "reviewComment": "Checked it, thanks!" }'
EndpointWhat it does
POST /api/edits/:id/acceptApplies the change
POST /api/edits/:id/rejectRejects it. Use reviewComment to explain why
POST /api/edits/:id/revertUndoes an accepted change, as long as nothing else changed it since

Who can review depends on the edit: usually the hunters of the city an artwork is in, the country's managers, and admins. The edits:review scope doesn't change that, it only lets your app do it for them.