User:Areefat/Sandbox/API:Options
| MediaWiki Action API |
|---|
| Basics |
| Authentication |
| Accounts and Users |
| Page Operations |
|
| Search |
| Developer Utilities |
| Tutorials |
| v · d · e |
POST Request to change preferences of the current user.
API documentation
[edit ]action=options
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Change preferences of the current user.
Only options which are registered in core or in one of installed extensions, or options with keys prefixed with userjs- (intended to be used by user scripts), can be set.
- reset
Resets preferences to the site defaults.
- Type: boolean (details)
- resetkinds
List of types of options to reset when the reset option is set.
- Values (separate with | or alternative): all, local-exception, registered, registered-checkmatrix, registered-multiselect, special, unused, userjs
- Default: all
- change
List of changes, formatted name=value (e.g. skin=vector). If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value. If any value passed contains the pipe character (|), use the alternative multiple-value separator for correct operation.
- Separate values with | or alternative.
- Maximum number of values is 50 (500 for clients that are allowed higher limits).
- optionname
The name of the option that should be set to the value given by optionvalue.
- optionvalue
The value for the option specified by optionname. When optionname is set but optionvalue is omitted, the option will be reset to its default value.
- global
What to do if the option was set globally using the GlobalPreferences extension.
- ignore: Do nothing. The option remains with its previous value.
- override: Add a local override.
- update: Update the option globally.
- create: Set the option globally, overriding any local value.
- One of the following values: create, ignore, override, update
- Default: ignore
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Reset all preferences.
- api.php?action=options&reset=&token=123ABC [open in sandbox]
- Change skin and hideminor preferences.
- api.php?action=options&change=skin=vector|hideminor=1&token=123ABC [open in sandbox]
- Reset all preferences, then set skin and nickname.
- api.php?action=options&reset=&change=skin=monobook&optionname=nickname&optionvalue=[[User:Beau|Beau]]%20([[User_talk:Beau|talk]])&token=123ABC [open in sandbox]
Example
[edit ]Making any POST request is a multi-step process:
- Log in, via one of the methods described on API:Login .
- GET a Manual:Edit token.
- Send a POST request, with the CSRF token, to take action on a page.
The sample code below covers the final step in detail.
POST Request
[edit ]Note: In this example, all parameters are passed in a GET request for the sake of simplicity. However, action=options requires POST requests; GET requests will cause an error.
| Result |
|---|
<?xml version="1.0" encoding="utf-8"?> <apioptions="success"/> |
Response
[edit ]{ "options":"success" }
Sample code
[edit ]change_user_options.py
#!/usr/bin/python3 """ change_user_options.py MediaWiki Action API Code Samples Demo of `Options` module: POST request to change three options for current user MIT license """ importrequests S = requests.Session() URL = "https://test.wikipedia.org/w/api.php" # Step 1: GET Request to fetch login token PARAMS_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 & lgpassword PARAMS_1 = { "action": "login", "lgname": "bot_user_name", "lgpassword": "bot_password", "lgtoken": LOGIN_TOKEN, "format": "json" } R = S.post(URL, data=PARAMS_1) # Step 3: GET request to fetch CSRF token PARAMS_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 change user options # You can check out the large list of options you can change # at https://www.mediawiki.org/wiki/API:Options PARAMS_3 = { "action": "options", "format": "json", "token": CSRF_TOKEN, "change": "language=en|skin=vector", "optionname": "nickname", "optionvalue": "custom-signa|ture" } R = S.post(URL, data=PARAMS_3) DATA = R.json() print(DATA)
Available Options
[edit ]/w/api.php?action=query&format=json&meta=userinfo&uiprop=options for a Wikipedia (MW 1.24) account. Most of the options listed here are defined by various MediaWiki extensions, like Echo, VisualEditor, WikiLove, Gadgets or EducationProgram, among others.ccmeonemails: 0cols: 80date: "mdy"diffonly: 0disablemail: 0editfont: "default"editondblclick: 0editsectiononrightclick: 0enotifminoredits: 0enotifrevealaddr: 0enotifusertalkpages: 1enotifwatchlistpages: 0extendwatchlist: "1"fancysig: "1"forceeditsummary: "1"gender: "male"hideminor: 0hidepatrolled: 0imagesize: 2math: 0minordefault: 0newpageshidepatrolled: 0nickname: user signaturenorollbackdiff: 0numberheadings: 0previewonfirst: 0previewontop: 1rcdays: "14"rclimit: "100"rows: 25showhiddencats: falseshownumberswatching: 1showtoolbar: 1skin: "vector"stubthreshold: 0thumbsize: "3"underline: 2uselivepreview: 0usenewrc: 0watchcreations: 1watchdefault: "1"watchdeletion: 0watchlistdays: "2"watchlisthideanons: 0watchlisthidebots: 0watchlisthideliu: 0watchlisthideminor: 0watchlisthideown: 0watchlisthidepatrolled: 0watchmoves: "1"wllimit: "300"useeditwarning: 1prefershttps: 1flaggedrevssimpleui: 1flaggedrevsstable: 0flaggedrevseditdiffs: trueflaggedrevsviewdiffs: falseusebetatoolbar: 1usebetatoolbar-cgd: 1multimediaviewer-enable: truevisualeditor-enable: 0visualeditor-betatempdisable: 0visualeditor-enable-experimental: 0visualeditor-enable-language: 0visualeditor-hidebetawelcome: 0wikilove-enabled: 1mathJax: falseecho-subscriptions-web-page-review: trueecho-subscriptions-email-page-review: falseep_showtoplink: falseep_bulkdelorgs: falseep_bulkdelcourses: trueep_showdyk: trueecho-subscriptions-web-education-program: trueecho-subscriptions-email-education-program: falseecho-notify-show-link: trueecho-show-alert: trueecho-email-frequency: 0echo-email-format: "html"echo-subscriptions-email-system: trueecho-subscriptions-web-system: trueecho-subscriptions-email-user-rights: trueecho-subscriptions-web-user-rights: trueecho-subscriptions-email-other: falseecho-subscriptions-web-other: trueecho-subscriptions-email-edit-user-talk: 1echo-subscriptions-web-edit-user-talk: trueecho-subscriptions-email-reverted: falseecho-subscriptions-web-reverted: trueecho-subscriptions-email-article-linked: falseecho-subscriptions-web-article-linked: falseecho-subscriptions-email-mention: falseecho-subscriptions-web-mention: trueecho-subscriptions-web-edit-thank: trueecho-subscriptions-email-edit-thank: falseecho-subscriptions-web-flow-discussion: trueecho-subscriptions-email-flow-discussion: falsegettingstarted-task-toolbar-show-intro: trueuls-preferences: ""language: "en"variant-gan: "gan"variant-iu: "iu"variant-kk: "kk"variant-ku: "ku"variant-shi: "shi"variant-sr: "sr"variant-tg: "tg"variant-uz: "uz"variant-zh: "zh"searchNs0: truesearchNs1: falsesearchNs2: "1"searchNs3: falsesearchNs4: "1"searchNs5: falsesearchNs6: "1"searchNs7: falsesearchNs8: "1"searchNs9: falsesearchNs10: "1"searchNs11: falsesearchNs12: "1"searchNs13: falsesearchNs14: "1"searchNs15: falsesearchNs100: falsesearchNs101: falsesearchNs108: falsesearchNs109: falsesearchNs118: falsesearchNs119: falsesearchNs446: falsesearchNs447: falsesearchNs710: falsesearchNs711: falsesearchNs828: falsesearchNs829: falsegadget-teahouse: ""gadget-ReferenceTooltips: 1gadget-DRN-wizard: 1gadget-charinsert: 1gadget-refToolbar: 1gadget-mySandbox: 1betafeatures-vector-compact-personal-bar: "0"cirrussearch-default: "0"pagetriage-lastuse: timestamppopups: "0"timecorrection: "ZoneInfo|60|Europe/London"uls-compact-links: "0"usecodeeditor: "1"userjs-arbitraryKeyName: arbitrary valuewatchlisttoken: token
Possible errors
[edit ]In addition to the usual stuff :
| Code | Info |
|---|---|
| notloggedin | Anonymous users cannot change preferences |
| nochanges | No changes were requested |
Parameter history
[edit ]- 1.21: Introduced
resetkinds
Additional notes
[edit ]- This API is primarily intended for changing options which are registered by MediaWiki core or extensions and available on Special:Preferences.
- You can also use the API to set arbitrary user options that can be used by user scripts or external editors. These options must begin with the prefix
userjs-. - There are currently no limit on the number of user options you can set at once. You can store data within a user option by encoding it as a
JSONstring. - Providing only names of options without equal sign results in resetting them (e.g.
hideminor|skin). In the case of an arbitraryuserjs-key/value pair, the resetting results in its deletion. - The
changeparameter cannot be used to set a value which contains a pipe character|, as it is used by the API to separate options. If you need to set such a value (e.g., a user signature) use anoptionname&optionvaluepair. - The following limits apply to all user options:
- The byte length of the key must be <= 255.
- The byte length of the value must be <= 65535.
- The key must consist only of ASCII letters, numbers, hyphens and underscores (a-z, A-Z, 0-9, _, -).
See also
[edit ]- API:Userinfo for reading existing options.