API:Setnotificationtimestamp
MediaWiki Action API |
---|
Basics |
Authentication |
Accounts and Users |
Page Operations |
|
Search |
Developer Utilities |
Tutorials |
v · d · e |
POST request to update the notification timestamp for watched pages.
API documentation
[edit ]action=setnotificationtimestamp
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Update the notification timestamp for watched pages.
This affects the highlighting of changed pages in the watchlist and history, and the sending of email when the "Email me when a page or a file on my watchlist is changed" preference is enabled.
- entirewatchlist
Work on all watched pages.
- Type: boolean (details)
- timestamp
Timestamp to which to set the notification timestamp.
- Type: timestamp (allowed formats)
- torevid
Revision to set the notification timestamp to (one page only).
- Type: integer
- newerthanrevid
Revision to set the notification timestamp newer than (one page only).
- Type: integer
- continue
When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.
- titles
A list of titles to work on.
- Separate values with | or alternative.
- Maximum number of values is 50 (500 for clients that are allowed higher limits).
- pageids
A list of page IDs to work on.
- Type: list of integers
- Separate values with | or alternative.
- Maximum number of values is 50 (500 for clients that are allowed higher limits).
- revids
A list of revision IDs to work on. Note that almost all query modules will convert revision IDs to the corresponding page ID and work on the latest revision instead. Only prop=revisions uses exact revisions for its response.
- Type: list of integers
- Separate values with | or alternative.
- Maximum number of values is 50 (500 for clients that are allowed higher limits).
- generator
Get the list of pages to work on by executing the specified query module.
Note: Generator parameter names must be prefixed with a "g", see examples.
- allcategories
- Enumerate all categories.
- alldeletedrevisions
- List all deleted revisions by a user or in a namespace.
- allfileusages
- List all file usages, including non-existing.
- allimages
- Enumerate all images sequentially.
- alllinks
- Enumerate all links that point to a given namespace.
- allpages
- Enumerate all pages sequentially in a given namespace.
- allredirects
- List all redirects to a namespace.
- allrevisions
- List all revisions.
- alltransclusions
- List all transclusions (pages embedded using {{x}}), including non-existing.
- backlinks
- Find all pages that link to the given page.
- categories
- List all categories the pages belong to.
- categorymembers
- List all pages in a given category.
- deletedrevisions
- Get deleted revision information.
- duplicatefiles
- List all files that are duplicates of the given files based on hash values.
- embeddedin
- Find all pages that embed (transclude) the given title.
- exturlusage
- Enumerate pages that contain a given URL.
- fileusage
- Find all pages that use the given files.
- images
- Returns all files contained on the given pages.
- imageusage
- Find all pages that use the given image title.
- iwbacklinks
- Find all pages that link to the given interwiki link.
- langbacklinks
- Find all pages that link to the given language link.
- links
- Returns all links from the given pages.
- linkshere
- Find all pages that link to the given pages.
- messagecollection
- Query MessageCollection about translations.
- mostviewed
- Lists the most viewed pages (based on last day's pageview count).
- pageswithprop
- List all pages using a given page property.
- prefixsearch
- Perform a prefix search for page titles.
- protectedtitles
- List all titles protected from creation.
- querypage
- Get a list provided by a QueryPage-based special page.
- random
- Get a set of random pages.
- recentchanges
- Enumerate recent changes.
- redirects
- Returns all redirects to the given pages.
- revisions
- Get revision information.
- search
- Perform a full text search.
- templates
- Returns all pages transcluded on the given pages.
- transcludedin
- Find all pages that transclude the given pages.
- watchlist
- Get recent changes to pages in the current user's watchlist.
- watchlistraw
- Get all pages on the current user's watchlist.
- wblistentityusage
- Returns all pages that use the given entity IDs.
- readinglistentries
- Internal. List the pages of a certain list.
- One of the following values: allcategories, alldeletedrevisions, allfileusages, allimages, alllinks, allpages, allredirects, allrevisions, alltransclusions, backlinks, categories, categorymembers, deletedrevisions, duplicatefiles, embeddedin, exturlusage, fileusage, images, imageusage, iwbacklinks, langbacklinks, links, linkshere, messagecollection, mostviewed, pageswithprop, prefixsearch, protectedtitles, querypage, random, recentchanges, redirects, revisions, search, templates, transcludedin, watchlist, watchlistraw, wblistentityusage, readinglistentries
- redirects
Automatically resolve redirects in titles, pageids, and revids, and in pages returned by generator.
- Type: boolean (details)
- converttitles
Convert titles to other variants if necessary. Only works if the wiki's content language supports variant conversion. Languages that support variant conversion include ban, crh, en, gan, iu, ku, mni, sh, shi, sr, tg, tly, uz, wuu, zgh and zh.
- Type: boolean (details)
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Reset the notification status for the entire watchlist.
- api.php?action=setnotificationtimestamp&entirewatchlist=&token=123ABC [open in sandbox]
- Reset the notification status for MediaWiki.
- api.php?action=setnotificationtimestamp&titles=MediaWiki&token=123ABC [open in sandbox]
- Set the notification timestamp for MediaWiki so all edits since 1 January 2012 are unviewed.
- api.php?action=setnotificationtimestamp&titles=MediaWiki×tamp=2012年01月01日T00:00:00Z&token=123ABC [open in sandbox]
- Reset the notification status for pages in the User namespace.
- api.php?action=setnotificationtimestamp&generator=allpages&gapnamespace=2&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 an edit/CSRF token as shown here API:Tokens .
- Send a POST request, with the CSRF token, to reset the notification status for an entire watchlist.
The sample codes below cover these steps.
POST request
[edit ]Response
[edit ]{ "batchcomplete":"", "setnotificationtimestamp":{ "notificationtimestamp":"" } }
Sample code
[edit ]Python
[edit ]#!/usr/bin/python3 """ set_notification_timestamp.py MediaWiki API Demos Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist. MIT license """ import requests S = requests.Session() URL = "https://test.wikipedia.org/w/api.php" # Step 1: Retrieve a login token PARAMS_1 = { "action": "query", "meta": "tokens", "type": "login", "format": "json" } R = S.get(url=URL, params=PARAMS_1) DATA = R.json() LOGIN_TOKEN = DATA['query']['tokens']['logintoken'] # Step 2: Send a POST request to log in. For this login # method, obtain credentials by first visiting # https://www.test.wikipedia.org/wiki/Manual:Bot_passwords # See https://www.mediawiki.org/wiki/API:Login for more # information on log in methods. PARAMS_2 = { "action": "login", "lgname": "user_name", "lgpassword": "password", "format": "json", "lgtoken": LOGIN_TOKEN } R = S.post(URL, data=PARAMS_2) DATA = R.json() # Step 3: While logged in, retrieve a CSRF token PARAMS_3 = { "action": "query", "meta": "tokens", "format": "json" } R = S.get(url=URL, params=PARAMS_3) DATA = R.json() CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"] # Step 4: Send a POST request to reset the notification status for the entire watchlist. PARAMS_4 = { "action":"setnotificationtimestamp", "entirewatchlist":"", "format":"json", "token" : CSRF_TOKEN } R = S.post(URL, data=PARAMS_4) DATA = R.text print(DATA)
PHP
[edit ]<?php /* set_notification_timestamp.php MediaWiki API Demos Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist. MIT license */ $endPoint = "https://test.wikipedia.org/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $csrf_Token = getCSRFToken(); // Step 3 setNotificationTimestamp( $csrf_Token ); // Step 4 // Step 1: GET request to fetch login token function getLoginToken() { 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 & lgpassword function loginRequest( $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 token function getCSRFToken() { 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: Send a POST request to reset the notification status for the entire watchlist. function setNotificationTimestamp( $csrftoken ) { global $endPoint; $params4 = [ "action" => "setnotificationtimestamp", "entirewatchlist" => "", "format" => "json", "token" => $csrftoken ]; $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" ); $response = curl_exec($ch); curl_close($ch); echo ($response); }
JavaScript
[edit ]/* set_notification_timestamp.js MediaWiki API Demos Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist. MIT license */ varrequest=require("request").defaults({jar:true}), url="https://test.wikipedia.org/w/api.php"; // Step 1: GET Request to fetch login token functiongetLoginToken(){ 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 & lgpassword functionloginRequest(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 token functiongetCsrfToken(){ 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); setNotificationTimestamp(data.query.tokens.csrftoken); }); } // Step 4: Send a POST request to reset the notification status for the entire watchlist. functionsetNotificationTimestamp(csrf_token){ varparams_3={ action:"setnotificationtimestamp", entirewatchlist:"", format:"json", token:csrf_token }; request.post({url:url,form:params_3},function(error,res,body){ if(error){ return; } console.log(body); }); } // Start From Step 1 getLoginToken();
MediaWiki JS
[edit ]/* set_notification_timestamp.js MediaWiki API Demos Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist. MIT license */ varparams={ action:'setnotificationtimestamp', entirewatchlist:'', format:'json' }, api=newmw.Api(); api.postWithToken('csrf',params).done(function(data){ console.log(data); });
Parameter history
[edit ]- v1.20: Introduced
pageids
Additional notes
[edit ]- Each user and watched page is associated with a single notification timestamp.
- For the purposes of the watchlist, any revisions of that page with a timestamp earlier than the notification timestamp are considered seen.
- Revisions which are later or equal to the timestamp are considered unseen. Thus, posting to
setnotificationtimestamp
withtorevid=123
(or, equivalently, with thetimestamp
parameter set to the timestamp of revision 123) will mark revisions earlier than 123 as seen, but will not mark revision 123 itself as seen. Usingnewerthanrevid=123
will mark 123 and all earlier revisions as seen.