Merge "API: Add reference to the mailing list in errors and deprecation warnings"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 30 Jan 2017 03:26:00 +0000 (03:26 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 30 Jan 2017 03:26:00 +0000 (03:26 +0000)
1  2 
docs/hooks.txt
includes/api/i18n/en.json
includes/api/i18n/qqq.json

diff --combined docs/hooks.txt
@@@ -365,6 -365,11 +365,11 @@@ $user: Current use
   * 1.27+: IApiMessage, or a key or key+parameters in ApiBase::$messageMap.
   * Earlier: A key or key+parameters in ApiBase::$messageMap.
  
+ 'ApiDeprecationHelp': Add messages to the 'deprecation-help' warning generated
+ from ApiBase::addDeprecation().
+ &$msgs: Message[] Messages to include in the help. Multiple messages will be
+   joined with spaces.
  'APIEditBeforeSave': DEPRECATED! Use EditFilterMergedContent instead.
  Before saving a page with api.php?action=edit, after
  processing request parameters. Return false to let the request fail, returning
@@@ -603,6 -608,12 +608,6 @@@ a chance to hide their (unrelated) log 
    AND in the final query)
  $logTypes: Array of log types being queried
  
 -'ArticleAfterFetchContent': DEPRECATED! Use ArticleAfterFetchContentObject
 -instead.
 -After fetching content of an article from the database.
 -&$article: the article (object) being loaded from the database
 -&$content: the content (string) of the article
 -
  'ArticleAfterFetchContentObject': After fetching content of an article from the
  database.
  &$article: the article (object) being loaded from the database
@@@ -671,6 -682,18 +676,6 @@@ Wiki::articleFromTitle()
  &$article: Article (object) that will be returned
  $context: IContextSource (object)
  
 -'ArticleInsertComplete': DEPRECATED! Use PageContentInsertComplete.
 -After a new article is created.
 -$wikiPage: WikiPage created
 -$user: User creating the article
 -$text: New content
 -$summary: Edit summary/comment
 -$isMinor: Whether or not the edit was marked as minor
 -$isWatch: (No longer used)
 -$section: (No longer used)
 -$flags: Flags passed to WikiPage::doEditContent()
 -$revision: New Revision of the article
 -
  'ArticleMergeComplete': After merging to article using Special:Mergehistory.
  $targetTitle: target title (object)
  $destTitle: destination title (object)
@@@ -722,6 -745,31 +727,6 @@@ $user: the user who did the rollbac
  $revision: the revision the page was reverted back to
  $current: the reverted revision
  
 -'ArticleSave': DEPRECATED! Use PageContentSave instead.
 -Before an article is saved.
 -$wikiPage: the WikiPage (object) being saved
 -$user: the user (object) saving the article
 -$text: the new article text
 -$summary: the article summary (comment)
 -$isminor: minor flag
 -$iswatch: watch flag
 -$section: section #
 -
 -'ArticleSaveComplete': DEPRECATED! Use PageContentSaveComplete instead.
 -After an article has been updated.
 -$wikiPage: WikiPage modified
 -$user: User performing the modification
 -$text: New content
 -$summary: Edit summary/comment
 -$isMinor: Whether or not the edit was marked as minor
 -$isWatch: (No longer used)
 -$section: (No longer used)
 -$flags: Flags passed to WikiPage::doEditContent()
 -$revision: New Revision of the article
 -$status: Status object about to be returned by doEditContent()
 -$baseRevId: the rev ID (or false) this edit was based on
 -$undidRevId: the rev ID (or 0) this edit undid
 -
  'ArticleUndelete': When one or more revisions of an article are restored.
  &$title: Title corresponding to the article restored
  $create: Whether or not the restoration caused the page to be created (i.e. it
@@@ -1291,6 -1339,12 +1296,6 @@@ $section: Section being edite
  &$error: Error message to return
  $summary: Edit summary for page
  
 -'EditFilterMerged': DEPRECATED! Use EditFilterMergedContent instead.
 -Post-section-merge edit filter.
 -$editor: EditPage instance (object)
 -$text: content of the edit box
 -&$error: error message to return
 -$summary: Edit summary for page
  
  'EditFilterMergedContent': Post-section-merge edit filter.
  This may be triggered by the EditPage or any other facility that modifies page
@@@ -1399,6 -1453,13 +1404,6 @@@ types using the ContentHandler facility
  $editPage: EditPage object
  &$content: Content object to be previewed (may be replaced by hook function)
  
 -'EditPageGetPreviewText': DEPRECATED! Use EditPageGetPreviewContent instead.
 -Allow modifying the wikitext that will be previewed. Note that it is preferable
 -to implement previews for different data types using the ContentHandler
 -facility.
 -$editPage: EditPage object
 -&$toparse: wikitext that will be parsed
 -
  'EditPageNoSuchSection': When a section edit request is given for an
  non-existent section
  &$editpage: The current EditPage object
@@@ -2175,7 -2236,6 +2180,7 @@@ $text: new contents of the page
  'MessagesPreLoad': When loading a message from the database.
  $title: title of the message (string)
  &$message: value (string), change it to the message you want to define
 +$code: code (string) denoting the language to try.
  
  'MimeMagicGuessFromContent': Allows MW extensions guess the MIME by content.
  $mimeMagic: Instance of MimeMagic.
@@@ -2822,12 -2882,12 +2827,12 @@@ $terms: Search terms, for highlightin
    function returned false.
  
  'ShowSearchHitTitle': Customise display of search hit title/link.
 -$title: Title to link to
 -&$text: Text to use for the link
 -$result: The search result
 -$terms: The search terms entered
 -$page: The SpecialSearch object
 -&$query: Query string to be appended to the link
 +&$title: Title to link to
 +&$titleSnippet: Label for the link representing the search result. Typically the article title.
 +$result: The SearchResult object
 +$terms: String of the search terms entered
 +$specialSearch: The SpecialSearch object
 +&$query: Array of query string parameters for the link representing the search result.
  
  'SidebarBeforeOutput': Allows to edit sidebar just before it is output by skins.
  Warning: This hook is run on each display. You should consider to use
@@@ -3259,6 -3319,13 +3264,6 @@@ by the isKnown method
  $title: Title object that is being checked
  &$isKnown: Boolean|null; whether MediaWiki currently thinks this page is known
  
 -'TitleIsCssOrJsPage': DEPRECATED! Use ContentHandlerDefaultModelFor instead.
 -Called when determining if a page is a CSS or JS page.
 -$title: Title object that is being checked
 -&$result: Boolean; whether MediaWiki currently thinks this is a CSS/JS page.
 -  Hooks may change this value to override the return value of
 -  Title::isCssOrJsPage().
 -
  'TitleIsMovable': Called when determining if it is possible to move a page. Note
  that this hook is not called for interwiki pages or pages in immovable
  namespaces: for these, isMovable() always returns false.
@@@ -3267,6 -3334,13 +3272,6 @@@ $title: Title object that is being chec
    Hooks may change this value to override the return value of
    Title::isMovable().
  
 -'TitleIsWikitextPage': DEPRECATED! Use ContentHandlerDefaultModelFor instead.
 -Called when determining if a page is a wikitext or should
 -be handled by separate handler (via ArticleViewCustom).
 -$title: Title object that is being checked
 -&$result: Boolean; whether MediaWiki currently thinks this is a wikitext page.
 -  Hooks may change this value to override the return value of
 -  Title::isWikitextPage()
  
  'TitleMove': Before moving an article (title).
  $old: old title
@@@ -3452,12 -3526,10 +3457,12 @@@ temporary passwor
  &$ip: IP of the user who sent the message out
  &$u: the account whose new password will be set
  
 -'UserAddGroup': Called when adding a group; return false to override
 -stock group addition.
 +'UserAddGroup': Called when adding a group or changing a group's expiry; return
 +false to override stock group addition.
  $user: the user object that is to have a group added
 -&$group: the group to add, can be modified
 +&$group: the group to add; can be modified
 +&$expiry: the expiry time in TS_MW format, or null if the group is not to
 +expire; can be modified
  
  'UserArrayFromResult': Called when creating an UserArray object from a database
  result.
@@@ -3700,8 -3772,7 +3705,8 @@@ their data into the cache array so tha
  displayed correctly in Special:ListUsers.
  $dbr: Read-only database handle
  $userIds: Array of user IDs whose groups we should look up
 -&$cache: Array of user ID -> internal user group name (e.g. 'sysop') mappings
 +&$cache: Array of user ID -> (array of internal group name (e.g. 'sysop') ->
 +UserGroupMembership object)
  &$groups: Array of group name -> bool true mappings for members of a given user
  group
  
@@@ -37,7 -37,6 +37,7 @@@
        "apihelp-block-param-allowusertalk": "Allow the user to edit their own talk page (depends on <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "If the user is already blocked, overwrite the existing block.",
        "apihelp-block-param-watchuser": "Watch the user's or IP address's user and talk pages.",
 +      "apihelp-block-param-tags": "Change tags to apply to the entry in the block log.",
        "apihelp-block-example-ip-simple": "Block IP address <kbd>192.0.2.5</kbd> for three days with reason <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Block user <kbd>Vandal</kbd> indefinitely with reason <kbd>Vandalism</kbd>, and prevent new account creation and email sending.",
  
        "apihelp-import-param-templates": "For interwiki imports: import all included templates as well.",
        "apihelp-import-param-namespace": "Import to this namespace. Cannot be used together with <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "Import as subpage of this page. Cannot be used together with <var>$1namespace</var>.",
 +      "apihelp-import-param-tags": "Change tags to apply to the entry in the import log and to the null revision on the imported pages.",
        "apihelp-import-example-import": "Import [[meta:Help:ParserFunctions]] to namespace 100 with full history.",
  
        "apihelp-linkaccount-description": "Link an account from a third-party provider to the current user.",
        "apihelp-managetags-param-tag": "Tag to create, delete, activate or deactivate. For tag creation, the tag must not exist. For tag deletion, the tag must exist. For tag activation, the tag must exist and not be in use by an extension. For tag deactivation, the tag must be currently active and manually defined.",
        "apihelp-managetags-param-reason": "An optional reason for creating, deleting, activating or deactivating the tag.",
        "apihelp-managetags-param-ignorewarnings": "Whether to ignore any warnings that are issued during the operation.",
 +      "apihelp-managetags-param-tags": "Change tags to apply to the entry in the tag management log.",
        "apihelp-managetags-example-create": "Create a tag named <kbd>spam</kbd> with the reason <kbd>For use in edit patrolling</kbd>",
        "apihelp-managetags-example-delete": "Delete the <kbd>vandlaism</kbd> tag with the reason <kbd>Misspelt</kbd>",
        "apihelp-managetags-example-activate": "Activate a tag named <kbd>spam</kbd> with the reason <kbd>For use in edit patrolling</kbd>",
        "apihelp-move-param-unwatch": "Remove the page and the redirect from the current user's watchlist.",
        "apihelp-move-param-watchlist": "Unconditionally add or remove the page from the current user's watchlist, use preferences or do not change watch.",
        "apihelp-move-param-ignorewarnings": "Ignore any warnings.",
 +      "apihelp-move-param-tags": "Change tags to apply to the entry in the move log and to the null revision on the destination page.",
        "apihelp-move-example-move": "Move <kbd>Badtitle</kbd> to <kbd>Goodtitle</kbd> without leaving a redirect.",
  
        "apihelp-opensearch-description": "Search the wiki using the OpenSearch protocol.",
        "apihelp-query+imageinfo-param-extmetadatamultilang": "If translations for extmetadata property are available, fetch all of them.",
        "apihelp-query+imageinfo-param-extmetadatafilter": "If specified and non-empty, only these keys will be returned for $1prop=extmetadata.",
        "apihelp-query+imageinfo-param-urlparam": "A handler specific parameter string. For example, PDFs might use <kbd>page15-100px</kbd>. <var>$1urlwidth</var> must be used and be consistent with <var>$1urlparam</var>.",
 -      "apihelp-query+imageinfo-param-badfilecontexttitle": "If <kbd>$2prop=badfile</kbd> is set, this is the page title used when evaluting the [[MediaWiki:Bad image list]]",
 +      "apihelp-query+imageinfo-param-badfilecontexttitle": "If <kbd>$2prop=badfile</kbd> is set, this is the page title used when evaluating the [[MediaWiki:Bad image list]]",
        "apihelp-query+imageinfo-param-localonly": "Look only for files in the local repository.",
        "apihelp-query+imageinfo-example-simple": "Fetch information about the current version of [[:File:Albert Einstein Head.jpg]].",
        "apihelp-query+imageinfo-example-dated": "Fetch information about versions of [[:File:Test.jpg]] from 2008 and later.",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Tags if the current user is blocked, by whom, and for what reason.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Adds a tag <samp>messages</samp> if the current user has pending messages.",
        "apihelp-query+userinfo-paramvalue-prop-groups": "Lists all the groups the current user belongs to.",
 +      "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "Lists groups that the current user has been explicitly assigned to, including the expiry date of each group membership.",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Lists all the groups the current user is automatically a member of.",
        "apihelp-query+userinfo-paramvalue-prop-rights": "Lists all the rights the current user has.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lists the groups the current user can add to and remove from.",
        "apihelp-query+users-param-prop": "Which pieces of information to include:",
        "apihelp-query+users-paramvalue-prop-blockinfo": "Tags if the user is blocked, by whom, and for what reason.",
        "apihelp-query+users-paramvalue-prop-groups": "Lists all the groups each user belongs to.",
 +      "apihelp-query+users-paramvalue-prop-groupmemberships": "Lists groups that each user has been explicitly assigned to, including the expiry date of each group membership.",
        "apihelp-query+users-paramvalue-prop-implicitgroups": "Lists all the groups a user is automatically a member of.",
        "apihelp-query+users-paramvalue-prop-rights": "Lists all the rights each user has.",
        "apihelp-query+users-paramvalue-prop-editcount": "Adds the user's edit count.",
        "apihelp-tokens-example-emailmove": "Retrieve an email token and a move token.",
  
        "apihelp-unblock-description": "Unblock a user.",
 -      "apihelp-unblock-param-id": "ID of the block to unblock (obtained through <kbd>list=blocks</kbd>). Cannot be used together with <var>$1user</var> or <var>$luserid</var>.",
 -      "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with <var>$1id</var> or <var>$luserid</var>.",
 +      "apihelp-unblock-param-id": "ID of the block to unblock (obtained through <kbd>list=blocks</kbd>). Cannot be used together with <var>$1user</var> or <var>$1userid</var>.",
 +      "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with <var>$1id</var> or <var>$1userid</var>.",
        "apihelp-unblock-param-userid": "User ID to unblock. Cannot be used together with <var>$1id</var> or <var>$1user</var>.",
        "apihelp-unblock-param-reason": "Reason for unblock.",
        "apihelp-unblock-param-tags": "Change tags to apply to the entry in the block log.",
        "apihelp-userrights-description": "Change a user's group membership.",
        "apihelp-userrights-param-user": "User name.",
        "apihelp-userrights-param-userid": "User ID.",
 -      "apihelp-userrights-param-add": "Add the user to these groups.",
 +      "apihelp-userrights-param-add": "Add the user to these groups, or if they are already a member, update the expiry of their membership in that group.",
 +      "apihelp-userrights-param-expiry": "Expiry timestamps. May be relative (e.g. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) or absolute (e.g. <kbd>2014-09-18T12:34:56Z</kbd>). If only one timestamp is set, it will be used for all groups passed to the <var>$1add</var> parameter. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, or <kbd>never</kbd> for a never-expiring user group.",
        "apihelp-userrights-param-remove": "Remove the user from these groups.",
        "apihelp-userrights-param-reason": "Reason for the change.",
        "apihelp-userrights-param-tags": "Change tags to apply to the entry in the user rights log.",
        "apihelp-userrights-example-user": "Add user <kbd>FooBot</kbd> to group <kbd>bot</kbd>, and remove from groups <kbd>sysop</kbd> and <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Add the user with ID <kbd>123</kbd> to group <kbd>bot</kbd>, and remove from groups <kbd>sysop</kbd> and <kbd>bureaucrat</kbd>.",
 +      "apihelp-userrights-example-expiry": "Add user <kbd>SometimeSysop</kbd> to group <kbd>sysop</kbd> for 1 month.",
  
        "apihelp-validatepassword-description": "Validate a password against the wiki's password policies.\n\nValidity is reported as <samp>Good</samp> if the password is acceptable, <samp>Change</samp> if the password may be used for login but must be changed, or <samp>Invalid</samp> if the password is not usable.",
        "apihelp-validatepassword-param-password": "Password to validate.",
        "apierror-blockedfrommail": "You have been blocked from sending email.",
        "apierror-blocked": "You have been blocked from editing.",
        "apierror-botsnotsupported": "This interface is not supported for bots.",
 +      "apierror-cannot-async-upload-file": "The parameters <var>async</var> and <var>file</var> cannot be combined. If you want asynchronous processing of your uploaded file, first upload it to stash (using the <var>stash</var> parameter) and then publish the stashed file asynchronously (using <var>filekey</var> and <var>async</var>).",
        "apierror-cannotreauthenticate": "This action is not available as your identity cannot be verified.",
        "apierror-cannotviewtitle": "You are not allowed to view $1.",
        "apierror-cantblock-email": "You don't have permission to block users from sending email through the wiki.",
  
        "api-feed-error-title": "Error ($1)",
        "api-usage-docref": "See $1 for API usage.",
+       "api-usage-mailinglist-ref": "Subscribe to the mediawiki-api-announce mailing list at &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; for notice of API deprecations and breaking changes.",
        "api-exception-trace": "$1 at $2($3)\n$4",
        "api-credits-header": "Credits",
        "api-credits": "API developers:\n* Yuri Astrakhan (creator, lead developer Sep 2006–Sep 2007)\n* Roan Kattouw (lead developer Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (lead developer 2013–present)\n\nPlease send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org\nor file a bug report at https://phabricator.wikimedia.org/."
@@@ -46,7 -46,6 +46,7 @@@
        "apihelp-block-param-allowusertalk": "{{doc-apihelp-param|block|allowusertalk}}\n* See also {{msg-mw|ipb-disableusertalk}}",
        "apihelp-block-param-reblock": "{{doc-apihelp-param|block|reblock}}",
        "apihelp-block-param-watchuser": "{{doc-apihelp-param|block|watchuser}}",
 +      "apihelp-block-param-tags": "{{doc-apihelp-param|block|tags}}",
        "apihelp-block-example-ip-simple": "{{doc-apihelp-example|block}}",
        "apihelp-block-example-user-complex": "{{doc-apihelp-example|block}}",
        "apihelp-changeauthenticationdata-description": "{{doc-apihelp-description|changeauthenticationdata}}",
        "apihelp-import-param-templates": "{{doc-apihelp-param|import|templates}}",
        "apihelp-import-param-namespace": "{{doc-apihelp-param|import|namespace}}",
        "apihelp-import-param-rootpage": "{{doc-apihelp-param|import|rootpage}}",
 +      "apihelp-import-param-tags": "{{doc-apihelp-param|import|tags}}",
        "apihelp-import-example-import": "{{doc-apihelp-example|import}}",
        "apihelp-linkaccount-description": "{{doc-apihelp-description|linkaccount}}",
        "apihelp-linkaccount-example-link": "{{doc-apihelp-example|linkaccount}}",
        "apihelp-managetags-param-tag": "{{doc-apihelp-param|managetags|tag}}",
        "apihelp-managetags-param-reason": "{{doc-apihelp-param|managetags|reason}}",
        "apihelp-managetags-param-ignorewarnings": "{{doc-apihelp-param|managetags|ignorewarnings}}",
 +      "apihelp-managetags-param-tags": "{{doc-apihelp-param|managetags|tags}}",
        "apihelp-managetags-example-create": "{{doc-apihelp-example|managetags}}",
        "apihelp-managetags-example-delete": "{{doc-apihelp-example|managetags|info={{doc-important|The text \"vandlaism\" in this message is intentionally misspelled; the example being documented by this message is the deletion of a misspelled tag.}}}}",
        "apihelp-managetags-example-activate": "{{doc-apihelp-example|managetags}}",
        "apihelp-move-param-unwatch": "{{doc-apihelp-param|move|unwatch}}",
        "apihelp-move-param-watchlist": "{{doc-apihelp-param|move|watchlist}}",
        "apihelp-move-param-ignorewarnings": "{{doc-apihelp-param|move|ignorewarnings}}",
 +      "apihelp-move-param-tags": "{{doc-apihelp-param|move|tags}}",
        "apihelp-move-example-move": "{{doc-apihelp-example|move}}",
        "apihelp-opensearch-description": "{{doc-apihelp-description|opensearch}}",
        "apihelp-opensearch-param-search": "{{doc-apihelp-param|opensearch|search}}",
        "apihelp-query+deletedrevs-param-excludeuser": "{{doc-apihelp-param|query+deletedrevs|excludeuser}}",
        "apihelp-query+deletedrevs-param-namespace": "{{doc-apihelp-param|query+deletedrevs|namespace}}",
        "apihelp-query+deletedrevs-param-limit": "{{doc-apihelp-param|query+deletedrevs|limit}}",
 -      "apihelp-query+deletedrevs-param-prop": "{{doc-apihelp-param|query+deletedrevs|prop}}",
 +      "apihelp-query+deletedrevs-param-prop": "{{doc-apihelp-param|query+deletedrevs|prop}}\n{{doc-important|You can translate the word \"Deprecated\", but please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
        "apihelp-query+deletedrevs-example-mode1": "{{doc-apihelp-example|query+deletedrevs}}",
        "apihelp-query+deletedrevs-example-mode2": "{{doc-apihelp-example|query+deletedrevs}}",
        "apihelp-query+deletedrevs-example-mode3-main": "{{doc-apihelp-example|query+deletedrevs}}",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "{{doc-apihelp-paramvalue|query+search|prop|sectiontitle}}",
        "apihelp-query+search-paramvalue-prop-categorysnippet": "{{doc-apihelp-paramvalue|query+search|prop|categorysnippet}}",
        "apihelp-query+search-paramvalue-prop-isfilematch": "{{doc-apihelp-paramvalue|query+search|prop|isfilematch}}",
 -      "apihelp-query+search-paramvalue-prop-score": "{{doc-apihelp-paramvalue|query+search|prop|score}}",
 -      "apihelp-query+search-paramvalue-prop-hasrelated": "{{doc-apihelp-paramvalue|query+search|prop|hasrelated}}",
 +      "apihelp-query+search-paramvalue-prop-score": "{{doc-apihelp-paramvalue|query+search|prop|score}}\n{{doc-important|Please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
 +      "apihelp-query+search-paramvalue-prop-hasrelated": "{{doc-apihelp-paramvalue|query+search|prop|hasrelated}}\n{{doc-important|Please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
        "apihelp-query+search-param-limit": "{{doc-apihelp-param|query+search|limit}}",
        "apihelp-query+search-param-interwiki": "{{doc-apihelp-param|query+search|interwiki}}",
        "apihelp-query+search-param-backend": "{{doc-apihelp-param|query+search|backend}}",
        "apihelp-query+userinfo-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+userinfo|prop|blockinfo}}",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "{{doc-apihelp-paramvalue|query+userinfo|prop|hasmsg}}",
        "apihelp-query+userinfo-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+userinfo|prop|groups}}",
 +      "apihelp-query+userinfo-paramvalue-prop-groupmemberships": "{{doc-apihelp-paramvalue|query+userinfo|prop|groupmemberships}}",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "{{doc-apihelp-paramvalue|query+userinfo|prop|implicitgroups}}",
        "apihelp-query+userinfo-paramvalue-prop-rights": "{{doc-apihelp-paramvalue|query+userinfo|prop|rights}}",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "{{doc-apihelp-paramvalue|query+userinfo|prop|changeablegroups}}",
        "apihelp-query+userinfo-paramvalue-prop-options": "{{doc-apihelp-paramvalue|query+userinfo|prop|options}}",
 -      "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "{{doc-apihelp-paramvalue|query+userinfo|prop|preferencestoken}}",
 +      "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "{{doc-apihelp-paramvalue|query+userinfo|prop|preferencestoken}}\n{{doc-important|You can translate the word \"Deprecated\", but please do not alter the <code><nowiki>class=\"apihelp-deprecated\"</nowiki></code> attribute}}",
        "apihelp-query+userinfo-paramvalue-prop-editcount": "{{doc-apihelp-paramvalue|query+userinfo|prop|editcount}}",
        "apihelp-query+userinfo-paramvalue-prop-ratelimits": "{{doc-apihelp-paramvalue|query+userinfo|prop|ratelimits}}",
        "apihelp-query+userinfo-paramvalue-prop-realname": "{{doc-apihelp-paramvalue|query+userinfo|prop|realname}}",
        "apihelp-query+users-param-prop": "{{doc-apihelp-param|query+users|prop|paramvalues=1}}",
        "apihelp-query+users-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+users|prop|blockinfo}}",
        "apihelp-query+users-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+users|prop|groups}}",
 +      "apihelp-query+users-paramvalue-prop-groupmemberships": "{{doc-apihelp-paramvalue|query+users|prop|groupmemberships}}",
        "apihelp-query+users-paramvalue-prop-implicitgroups": "{{doc-apihelp-paramvalue|query+users|prop|implicitgroups}}",
        "apihelp-query+users-paramvalue-prop-rights": "{{doc-apihelp-paramvalue|query+users|prop|rights}}",
        "apihelp-query+users-paramvalue-prop-editcount": "{{doc-apihelp-paramvalue|query+users|prop|editcount}}",
        "apihelp-userrights-param-user": "{{doc-apihelp-param|userrights|user}}\n{{Identical|Username}}",
        "apihelp-userrights-param-userid": "{{doc-apihelp-param|userrights|userid}}\n{{Identical|User ID}}",
        "apihelp-userrights-param-add": "{{doc-apihelp-param|userrights|add}}",
 +      "apihelp-userrights-param-expiry": "{{doc-apihelp-param|userrights|expiry}}",
        "apihelp-userrights-param-remove": "{{doc-apihelp-param|userrights|remove}}",
        "apihelp-userrights-param-reason": "{{doc-apihelp-param|userrights|reason}}",
        "apihelp-userrights-param-tags": "{{doc-apihelp-param|userrights|tags}}",
        "apihelp-userrights-example-user": "{{doc-apihelp-example|userrights}}",
        "apihelp-userrights-example-userid": "{{doc-apihelp-example|userrights}}",
 +      "apihelp-userrights-example-expiry": "{{doc-apihelp-example|userrights}}",
        "apihelp-validatepassword-description": "{{doc-apihelp-description|validatepassword}}",
        "apihelp-validatepassword-param-password": "{{doc-apihelp-param|validatepassword|password}}",
        "apihelp-validatepassword-param-user": "{{doc-apihelp-param|validatepassword|user}}",
        "apierror-blockedfrommail": "{{doc-apierror}}",
        "apierror-blocked": "{{doc-apierror}}",
        "apierror-botsnotsupported": "{{doc-apierror}}",
 +      "apierror-cannot-async-upload-file": "{{doc-apierror}}",
        "apierror-cannotreauthenticate": "{{doc-apierror}}",
        "apierror-cannotviewtitle": "{{doc-apierror}}\n\nParameters:\n* $1 - Title.",
        "apierror-cantblock-email": "{{doc-apierror}}",
        "apiwarn-wgDebugAPI": "{{doc-apierror}}",
        "api-feed-error-title": "Used as a feed item title when an error occurs in <kbd>action=feedwatchlist</kbd>.\n\nParameters:\n* $1 - API error code\n{{Identical|Error}}",
        "api-usage-docref": "\n\nParameters:\n* $1 - URL of the API auto-generated documentation.",
+       "api-usage-mailinglist-ref": "{{doc-apierror}} Also used in the error response.",
        "api-exception-trace": "\n\nParameters:\n* $1 - Exception class.\n* $2 - File from which the exception was thrown.\n* $3 - Line number from which the exception was thrown.\n* $4 - Exception backtrace.",
        "api-credits-header": "Header for the API credits section in the API help output\n{{Identical|Credit}}",
        "api-credits": "API credits text, displayed in the API help output"