underwhelmingToaster
underwhelmingToaster

Reputation: 119

Which permissions are needed to upload files with mediawiki api?

I am using the mediawiki api to upload a file. I am sending a mutlipart POST request to

https://commons.wikimedia.org/w/api.php?format=json&action=upload&filename=xxx

In the header I include my Autherzation: Bearer accessToken123 and in the body I include my CSRF token, as well as my multipart file, all as per documentation.

However, the response I get from the server is the following:

{
  "error": {
    "code": "permissiondenied",
    "info": "The action you have requested is limited to users in one of the groups: *, [[Commons:Users|Users]].",
    "*": "See https://commons.wikimedia.org/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/postorius/lists/mediawiki-api-announce.lists.wikimedia.org/> for notice of API deprecations and breaking changes."
  },
  "servedby": "mw1448"
}

This would be quite self-explainatory by itself, however when I check my rights/groups with

https://commons.wikimedia.org/w/rest.php/oauth2/resource/profile

I get the following:

{"sub":xxxx,"username":"xxxxx","editcount":7,"confirmed_email":true,"blocked":false,"registered":"xxxx",
"groups":["*","user","autoconfirmed"],
"rights":["read","writeapi","viewmyprivateinfo","abusefilter-view","abusefilter-log","upload","upload_by_url","reupload-own","purge","reupload","autoconfirmed","editsemiprotected","skipcaptcha","abusefilter-log-detail","transcode-reset"],
"grants":["basic","uploadfile","uploadeditmovefile","privateinfo"],"realname":"","email":"xxxx"}

As you can see I am both a part of the required groups and also have the neccessairy upload right. The error message is quite clear, so I don't know what I am missing. It is not the CSRF token or access token, supplying these wrong results in a different error message. Any help is appreciated.

Upvotes: 1

Views: 279

Answers (1)

underwhelmingToaster
underwhelmingToaster

Reputation: 119

Well I finally figured it out: When requesting the app keys from mediawiki, you can select rights which the app has on behalf of the users. If you want to upload pictures to wikimedia commons, you do not only need the `

Interact with media: Upload new files; Upload, replace, and move files

right, but also the

Create, edit, and move pages

right, since you are creating a new page with each upload. I hope this helps someone else in the future :`)

Upvotes: 2

Related Questions