API:Revisiondelete

From mediawiki.org
This page is a translated version of the page API:Revisiondelete and the translation is 100% complete.

Solicitud POST para eliminar y recuperar revisiones.

Versión de MediaWiki:
1.23

API Documentación


action=revisiondelete

(main | revisiondelete)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Delete and undelete revisions.

Specific parameters:
Other general parameters are available.
type

Type of revision deletion being performed.

This parameter is required.
One of the following values: archive, filearchive, logging, oldimage, revision
target

Page title for the revision deletion, if required for the type.

ids

Identifiers for the revisions to be deleted.

This parameter is required.
Separate values with | or alternative.
Maximum number of values is 50 (500 for clients that are allowed higher limits).
hide

What to hide for each revision.

Values (separate with | or alternative): comment, content, user
show

What to unhide for each revision.

Values (separate with | or alternative): comment, content, user
suppress

Whether to suppress data from administrators as well as others.

One of the following values: no, nochange, yes
Default: nochange
reason

Reason for the deletion or undeletion.

tags

Tags to apply to the entry in the deletion log.

Values (separate with | or alternative): convenient-discussions, possible vandalism, repeating characters
token

A "csrf" token retrieved from action=query&meta=tokens

This parameter is required.

Ejemplo

Hacer cualquier petición de CORREO es un proceso de múltiples-pasos:

  1. Inicia sesión, a través de uno de los métodos descritos en API:Login .
  2. GET un edit/CSRF token como muestra aquí API:Tokens
  3. Envía una solicitud POST, con el token CSRF, para eliminar y recuperar revisiones.

El código de muestra, abajo, cubre estos pasos.

Solicitud POST

Ocultar toda la información sobre una determinada revisión ID. (El objetivo, Página de Muestra, es innecesario en este caso.)


Respuesta

{
  "revisiondelete": {
    "status": "Success",
    "target": "Sample Page",
    "items": [
      {
        "status": "Success",
        "id": 71,
        "timestamp": "2016-12-17T03:16:23Z",
        "userhidden": "",
        "commenthidden": "",
        "texthidden": "",
        "userid": 4,
        "user": "Test User",
        "comment": "This should get revdel'd"
      }
    ]
  }

Código de muestra

Python

#!/usr/bin/python3

"""
    revision_delete.py

    MediaWiki API Demos
    Demo of `Revisiondelete` module: Hide all information about a certain revision ID.

    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 hide all information about a certain revision ID.
PARAMS_4 = {
    "action":"revisiondelete",
    "type":"revision",
    "ids":"71",
    "format":"json",
    "hide":"content|comment|user",
    "reason":"Because",
    "token" : CSRF_TOKEN
    }

R = S.post(URL, data=PARAMS_4)
DATA = R.text

print(DATA)

PHP

<?php

/*
    revision_delete.php

    MediaWiki API Demos
    Demo of `Revisiondelete` module: Hide all information about a certain revision ID.

    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
mergehistory( $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: 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.
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 hide all information about a certain revision ID.
function mergeHistory( $csrftoken ) {
	global $endPoint;
	
	$params4 = [
		"action" => "revisiondelete",
		"type" => "revision",
		"ids" => "71",
		"format" => "json",
		"hide" => "content|comment|user",
		"reason" => "Because",
		"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

/*
    revision_delete.js

    MediaWiki API Demos
    Demo of `Revisiondelete` module: Hide all information about a certain revision ID.

    MIT license
*/
var request = require("request").defaults({jar: true}),
url = "https://test.wikipedia.org/w/api.php";

// Step 1: GET Request to fetch login token
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };
    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        loginRequest(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.
function loginRequest(login_token) {
    var params_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
function getCsrfToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        format: "json"
    };
    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        mergeHistory(data.query.tokens.csrftoken);
    });
}

// Step 4: Send a POST request to hide all information about a certain revision ID.
function mergeHistory(csrf_token) {
    var params_3 = {
        action:"revisiondelete",
        type:"revision",
        ids:"71",
        format:"json",
        hide:"content|comment|user",
        reason:"Because",
        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

/*
	revision_delete.js

    MediaWiki API Demos
    Demo of `Revisiondelete` module: Hide all information about a certain revision ID.

    MIT license
*/

var params = {
    action: 'revisiondelete',
    type: 'revision',
    ids: '71',
    format: 'json',
    hide: 'content|comment|user',
    reason: 'Because',
},
api = new mw.Api();

api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );

Errores posibles

Código Info
badtoken La ficha CSRF no es válida.
permissiondenied You don't have permission to delete revisions
paramempty El parámetro ids no puede estar vacío.
revdel-mutuallyexclusive No se puede usar el mismo campo en hide y show.
revdel-paramneeded Se requiere al menos un valor para hide y/o show.
revdel-needtarget A target title is required for this RevDel type.

Historial de parámetros

  • v1.29: Introducido tags

Véase también