My current version of mediawiki installation is 1.32.0. I am trying to use Ansible to interface update Mediawiki.
There seems to be some contradictions in the API documentation.
* The Help:Creating a bot - Wikipediahttps://en.wikipedia.org/wiki/Help:Creating_a_bot#Logging_in says that lgname, lgpassword and lgtoken should be used in a POST,
* while the MediaWiki API helphttps://www.mediawiki.org/w/api.php?action=help&modules=login says that user id and password should be a part of the URI: api.php?action=login&lgname=user&lgpassword=passwordhttps://t-dokuwiki.it.ku.dk/dokuwiki/api.php?action=login&lgname=user&lgpassword=password.
* Also API:Main page - MediaWikihttps://www.mediawiki.org/wiki/API:Main_page says that "tokenshttps://www.mediawiki.org/w/api.php?action=help&modules=tokens is Deprecated. Get tokens for data-modifying actions".
From the ansible.builtin.uri - Interacts with webservices - Ansible Documentationhttps://docs.ansible.com/ansible/latest/collections/ansible/builtin/uri_module.html#examples, the way to POST, is to insert
body_format: form-urlencoded
body:
name: your_username
password: your_password
enter: Sign in
which I think must be
- name: Logging in to wiki.server uri: url: https://wiki.server/wiki/api.php?action=query&meta=tokens&type=login... method: POST force_basic_auth: yes
body_format: form-urlencoded
body:
lgname: your_username
lgpassword: your_password
lgtoken: Sign in
but this gives me
"warnings": {
"main": {
"*": "Unrecognized parameters: lgname, lgtoken, lgpassword."
}
What is the correct documentation?
Your sincerily
Henrik Rasmussen System administrator
All of the documentation that you link to looks right to me, *except* for the auto-generated example at https://www.mediawiki.org/w/api.php?action=help&modules=login. As you say, that example seems to imply that you'd call 'action=login' with a GET request and put everything in the URI; but in fact, that is not allowed.
Also API:Main page - MediaWiki
https://www.mediawiki.org/wiki/API:Main_page says that ”*tokens https://www.mediawiki.org/w/api.php?action=help&modules=tokens** is * *Deprecated.* Get tokens for data-modifying actions”.
That statement is in the list of values of the 'action' parameter; so what it's saying is that 'action=tokens' is deprecated. It's *not* saying that 'action=query&meta=tokens' is deprecated; in fact, as explained at https://www.mediawiki.org/w/api.php?action=help&modules=tokens, 'action=tokens' is deprecated *in favor of* 'action=query&meta=tokens'.
I've never used Ansible, but your request seems to be a mixture of what https://en.wikipedia.org/wiki/Help:Creating_a_bot#Logging_in calls "Request 1" and what it calls "Request 2". As explained at that page, you need to make two separate requests: "Request 1" is where you get a login token from 'action=query&meta=tokens', and "Request 2" is where you use that login token, plus the username and password, to actually log in.
-Ran
On Wed, Apr 14, 2021 at 12:04 AM Henrik Rasmussen her@adm.ku.dk wrote:
My current version of mediawiki installation is 1.32.0. I am trying to use Ansible to interface update Mediawiki.
There seems to be some contradictions in the API documentation.
· The Help:Creating a bot - Wikipedia https://en.wikipedia.org/wiki/Help:Creating_a_bot#Logging_in says that lgname, lgpassword and lgtoken should be used in a POST,
· while the MediaWiki API help https://www.mediawiki.org/w/api.php?action=help&modules=login says that user id and password should be a part of the URI: *api.php?action=login&lgname=user&lgpassword=password https://t-dokuwiki.it.ku.dk/dokuwiki/api.php?action=login&lgname=user&lgpassword=password* .
· Also API:Main page - MediaWiki https://www.mediawiki.org/wiki/API:Main_page says that ”*tokens https://www.mediawiki.org/w/api.php?action=help&modules=tokens** is * *Deprecated.* Get tokens for data-modifying actions”.
From the ansible.builtin.uri – Interacts with webservices — Ansible Documentation https://docs.ansible.com/ansible/latest/collections/ansible/builtin/uri_module.html#examples, the way to POST, is to insert
body_format*:* form-urlencoded body*:* name*:* your_username password*:* your_password enter*:* Sign in
which I think must be
name: Logging in to wiki.server uri: url: https://wiki.server/wiki/api.php?action=query&meta=tokens&type=login... method: POST force_basic_auth: yes
body_format*:* form-urlencoded
body*:*
lgname*:* your_username lgpassword*:* your_password lgtoken*:* Sign in
but this gives me
"warnings": {
"main": { "*": "Unrecognized parameters: lgname, lgtoken, lgpassword." }
What is the correct documentation?
Your sincerily
*Henrik Rasmussen*
System administrator
Mediawiki-api mailing list Mediawiki-api@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-api
mediawiki-api@lists.wikimedia.org