| This page is part of theMediaWiki Action API documentation. |
| MediaWiki Action API |
|---|
| Basics |
| Authentication |
| Accounts and Users |
| Page Operations |
|
| Search |
| Developer Utilities |
| Tutorials |
| v · d · e |
| MediaWiki version: | ≥ 1.12 |
POST request to block or unblock a user.
| The following documentation is the output ofSpecial: |
Block a user.
ID of the block to modify (obtained throughlist=blocks). Cannot be used together withuser,reblock, ornewblock.
User to block. Cannot be used together withid.
Specifyuser=#ID instead.
Expiry time. May be relative (e.g.5 months or2 weeks) or absolute (e.g.2014-09-18T12:34:56Z). If set toinfinite,indefinite, ornever, the block will never expire.
Reason for block.
Block anonymous users only (i.e. disable anonymous edits for this IP address, including temporary account edits).
Prevent account creation.
Automatically block the last used IP address, and any subsequent IP addresses they try to login from.
Prevent user from sending email through the wiki. (Requires theblockemail right).
Hide the username from the block log. (Requires thehideuser right).
Allow the user to edit their own talk page (depends on$wgBlockAllowsUTEdit).
If the user is already blocked by a single block, overwrite the existing block. If the user is blocked more than once, this will fail—use theid parameter instead to specify which block to overwrite. Cannot be used together withid ornewblock.
Add another block even if the user is already blocked. Cannot be used together withid orreblock.
Watch the user's or IP address's user and talk pages.
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
Change tags to apply to the entry in the block log.
Block user from specific pages or namespaces rather than the entire site.
List of titles to block the user from editing. Only applies whenpartial is set to true.
List of namespace IDs to block the user from editing. Only applies whenpartial is set to true.
List of actions to block the user from performing. Only applies whenpartial is set to true.
A "csrf" token retrieved fromaction=query&meta=tokens
Making any POST request is a multi-step process:
{"block":{"user":"Example","userID":2,"expiry":"2015-02-25T07:27:50Z","id":"8","reason":"Time out","nocreate":"","noemail":""}}
#!/usr/bin/python3""" block_user.py MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license"""importrequestsS=requests.Session()URL="https://test.wikipedia.org/w/api.php"# Step 1: GET request to fetch login tokenPARAMS_0={"action":"query","meta":"tokens","type":"login","format":"json"}R=S.get(url=URL,params=PARAMS_0)DATA=R.json()LOGIN_TOKEN=DATA['query']['tokens']['logintoken']# Step 2: POST request to log in. Use of main account for login is not# supported. Obtain credentials via Special:BotPasswords# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordPARAMS_1={"action":"login","lgname":"your_bot_username","lgpassword":"your_bot_password","lgtoken":LOGIN_TOKEN,"format":"json"}R=S.post(URL,data=PARAMS_1)# Step 3: GET request to fetch CSRF tokenPARAMS_2={"action":"query","meta":"tokens","format":"json"}R=S.get(url=URL,params=PARAMS_2)DATA=R.json()CSRF_TOKEN=DATA['query']['tokens']['csrftoken']# Step 4: POST request to block userPARAMS_3={"action":"block","user":"Example","expiry":"2015-02-25T07:27:50Z","reason":"Time out","token":CSRF_TOKEN,"format":"json"}R=S.post(URL,data=PARAMS_3)DATA=R.json()print(DATA)
<?php/* block_user.php MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license*/$endPoint="http://dev.wiki.local.wmftest.net:8080/w/api.php";$login_Token=getLoginToken();// Step 1loginRequest($login_Token);// Step 2$csrf_Token=getCSRFToken();// Step 3block($csrf_Token);// Step 4// Step 1: GET request to fetch login tokenfunctiongetLoginToken(){global$endPoint;$params1=["action"=>"query","meta"=>"tokens","type"=>"login","format"=>"json"];$url=$endPoint."?".http_build_query($params1);$ch=curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);$result=json_decode($output,true);return$result["query"]["tokens"]["logintoken"];}// Step 2: POST request to log in. Use of main account for login is not// supported. Obtain credentials via Special:BotPasswords// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordfunctionloginRequest($logintoken){global$endPoint;$params2=["action"=>"login","lgname"=>"bot_user_name","lgpassword"=>"bot_password","lgtoken"=>$logintoken,"format"=>"json"];$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$endPoint);curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params2));curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);}// Step 3: GET request to fetch CSRF tokenfunctiongetCSRFToken(){global$endPoint;$params3=["action"=>"query","meta"=>"tokens","format"=>"json"];$url=$endPoint."?".http_build_query($params3);$ch=curl_init($url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);$result=json_decode($output,true);return$result["query"]["tokens"]["csrftoken"];}// Step 4: POST request to block userfunctionblock($csrftoken){global$endPoint;$params4=["action"=>"block","user"=>"ABCD","expiry"=>"2020-02-25T07:27:50Z","reason"=>"API Test","token"=>$csrftoken,"format"=>"json"];$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$endPoint);curl_setopt($ch,CURLOPT_POST,true);curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params4));curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);curl_setopt($ch,CURLOPT_COOKIEJAR,"cookie.txt");curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");$output=curl_exec($ch);curl_close($ch);echo($output);}
/* block_user.js MediaWiki API Demos Demo of `Block` module: sending POST request to block user MIT license*/varrequest=require('request').defaults({jar:true}),url="http://dev.wiki.local.wmftest.net:8080/w/api.php";// Step 1: GET request to fetch login tokenfunctiongetLoginToken(){varparams_0={action:"query",meta:"tokens",type:"login",format:"json"};request.get({url:url,qs:params_0},function(error,res,body){if(error){return;}vardata=JSON.parse(body);loginRequest(data.query.tokens.logintoken);});}// Step 2: POST request to log in.// Use of main account for login is not// supported. Obtain credentials via Special:BotPasswords// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpasswordfunctionloginRequest(login_token){varparams_1={action:"login",lgname:"bot_username",lgpassword:"bot_password",lgtoken:login_token,format:"json"};request.post({url:url,form:params_1},function(error,res,body){if(error){return;}getCsrfToken();});}// Step 3: GET request to fetch CSRF tokenfunctiongetCsrfToken(){varparams_2={action:"query",meta:"tokens",format:"json"};request.get({url:url,qs:params_2},function(error,res,body){if(error){return;}vardata=JSON.parse(body);block(data.query.tokens.csrftoken);});}// Step 4: POST request to block userfunctionblock(csrf_token){varparams_3={action:"block",user:"ABCDEF",expiry:"2020-02-25T07:27:50Z",reason:"API Test",token:csrf_token,format:"json"};request.post({url:url,form:params_3},function(error,res,body){if(error){return;}console.log(body);});}// Start From Step 1getLoginToken();
/*block_user.jsMediaWiki API DemosDemo of `Block` module: sending POST request to block userMIT License*/varparams={action:'block',user:'ABCD',expiry:'2020-02-25T07:27:50Z',reason:'API Test',format:'json'},api=newmw.Api();api.postWithToken('csrf',params).done(function(data){console.log(data);});
| The following documentation is the output ofSpecial: |
Unblock a user.
ID of the block to unblock (obtained throughlist=blocks). Cannot be used together withuser.
User to unblock. Cannot be used together withid.
Specifyuser=#ID instead.
Reason for unblock.
Change tags to apply to the entry in the block log.
Watch the user's or IP address's user and talk pages.
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
A "csrf" token retrieved fromaction=query&meta=tokens
{"unblock":{"id":16,"user":"Example","userid":2,"reason":"Sorry Example","watchuser":false}}
| Code (Blocking) | Info |
|---|---|
| alreadyblocked | The user you tried to block was already blocked |
| cantblock | You don't have permission to block users. |
| cantblock-email | You don't have permission to block users from sending email through the wiki. |
| canthide | You don't have permission to hide usernames from the block log. This feature has to be enabled explicitly in LocalSettings.php. |
| invalidexpiry | Invalid expiry time |
| invalidip | Invalid IP address specified |
| invalidrange | Invalid IP range |
| notoken | Thetoken parameter must be set. |
| nouser | Theuser parameter must be set. |
| pastexpiry | Expiry time "$1" is in the past. |
| permissiondenied | You don't have permission to block users. On most wikis, blocking users is restricted to sysops, but other wikis may have stricter rules. |
| rangedisabled | Blocking IP ranges has been disabled |
| Code (Unblocking) | Info |
|---|---|
| notarget | Either the ID or the user parameter must be set |
| notoken | Thetoken parameter must be set. |
| idanduser | The ID and user parameters can't be used together |
| blockedasrange | IP address "address" was blocked as part of range "range". You can't unblock the IP individually, but you can unblock the range as a whole. |
| cantunblock | The block you specified was not found. It may have been unblocked already |
| permissiondenied | You don't have permission to unblock users. On most wikis, unblocking users is restricted to sysops, but other wikis may have different rules. |
tagsgettokengettokenwatchuserallowusertalk,reblock