API:Client code

From MediaWiki.org
Jump to navigation Jump to search
Other languages:Project:Language policy English  • 日本語 • русский

Overview[edit]

Client libraries contain code that developers can use to help with common and basic tasks, so that they don't have to write the code from scratch when their projects interact with an API. Developers use client libraries that are written in the language they are using for their project.

This page contains a set of lists, by language, of client libraries that can be used with the MediaWiki Action API.

API client libraries[edit]

Awk[edit]

Dates and version numbers were updated on 2018-05-30.

  • MediaWiki Awk API Library. Call the API with Awk! Includes an example program (retrieve backlinks ie. Special:WhatLinksHere). Last activity: December 2016.

C++[edit]

Dates and version numbers were updated on 2017-08-01.

Common Lisp[edit]

Dates and version here were updated 2017-08-01.

  • cl-mediawiki is a Common Lisp wrapper for the mediawiki API. It is available as a direct download, or (more conveniently) via quicklisp. Last activity: 2016-11-10.

Go[edit]

Dates and version numbers were updated on 2018-08-05.

  • go-mediawiki Go wrapper for the MediaWiki API. Last activity: 2017-02-07.
  • go-mwclient another Go wrapper for the MediaWiki API (supports maxlag, query continuations, OAuth). Last release: 1.0.3, 2018-08-03.

Haskell[edit]

Dates and version numbers were updated on 2017-08-01.

Java[edit]

Dates and version numbers were updated on 2018-03-15. Last activity refers to the last commit in the repository, which is useful to know if it is still active (and sometimes there are no "official" releases).

Name Description Last release Release Date Last activity
Bliki Engine Can convert wikicode to HTML, DocBook or PDF. Has a helper library for API calls February 22, 2018
DKPro Collection of Natural Language Processing open-source projects started by the German university of Darmstadt. Authors of dkpro-jwpl (Java Wikipedia Library) and dkpro-jwktl (Java Wiktionary Library). 1.1.0 April 24, 2016 March 3, 2018
JavaWikiBotFramework A library that makes several API functions accessible. (Evaluation) 3.1.0 December 11, 2014 March 6, 2018
jwiki A library which makes it so easy to use the API that even your grandma 👵🏻 could do it. 1.5.0 January 6, 2018 March 14, 2018
Kaspar Framework for editing MediaWiki wikis. 0.2 July 18, 2015 January 14, 2016
Mediawiki-Japi An API for the MediaWiki web API. 0.0.22 January 25, 2018 January 25, 2018
Wiki.java A MediaWiki bot framework. 0.34 January 13, 2018 March 1, 2018
Wikidata Toolkit A library with functions to process data from Wikidata and other Wikibase sites, via XML dumps or the API. For more info, see Wikidata Toolkit. 0.8.0 December 18, 2017 March 13, 2018
WPCleaner WPCleaner is a tool designed to help with various maintenance tasks on wikis run with MediaWiki software. February 21, 2018

JavaScript[edit]

Dates and version numbers were updated on 2017-08-06. Last activity refers to the last commit in the repository, which is useful to know if it is still active (and sometimes there are no "official" releases).

Name Description Last release Release Date Last activity
Wikidata SDK A javascript tool-suite to query Wikidata and simplify its results. 5.1.4 2017-04-01 2017-06-10
mwbot MWBot is a Node.js NPM module for interacting with the MediaWiki API. It uses the Promise pattern and is written using modern ES6. 1.0.10 2017-07-25 2018-03-06
WikiJS WikiJs is a node.js library which serves as an interface to Wikipedia (or any MediaWiki). 3.2.0 2017-08-02 2017-08-02
nodemw MediaWiki API client written in node.js  0.12.0 2016-06-04 2018-02-06
Node.js MediaWiki module A JavaScript framework of standard requests (e.g. log in, log out, read, edit, etc.) as well as a general wrapper method. Includes some helpful stuff like throttling. 2014-07-02
mediawiki.api.js A module that ships with MediaWiki core, abstracts a handful of API calls into simple one liners (uses jQuery.ajax internally). Kept up-to-date by Wikimedia.
mediawiki-js Ultra-light, vanilla JavaScript wrapper of Mediawiki API for use in the browser (npm) 2015-06-17
CeJS A JavaScript framework including MediaWiki functions to build bots, running on node.js or JScript. See Wikipedia bot examples on GitHubGerrit/GitHub. 2.0.0 2015-10-28 2017-08-04

In-wiki JavaScript clients[edit]

Dates and version numbers were updated on 2017-08-06. Last activity refers to the last commit in the repository, which is useful to know if it is still active (and sometimes there are no "official" releases).

Name Description Last release Release Date Last activity
mwapilib2 A layer overtop of the requests. Make JS gadgets easier. 2016-09-25
JsMwApi A convenience wrapper around raw requests, with some helpers for editing and parsing. 2014-06-11

.NET[edit]

  • AutoWikiBrowser's WikiFunctions library has classes for editing and getting lists of pages via the API. See ApiEdit
  • DotNetWikiBot Framework - written in C#, based on Microsoft® .NET Framework 3.5 (Tutorial)
  • MorebitsDotNet contains C# code for uploading files through the API.
  • LinqToWiki, strongly typed library for accessing most of MediaWiki API, with support for autocompletion
  • WikiClientLibrary - A .NET Standard & asynchronous MediaWiki API client library for wiki sites. The library also supports Flow/Wikibase/Wikia-specific API. Last update: July 2018.

OCaml[edit]

Perl[edit]

PHP[edit]

There are many PHP frameworks for the api, see here for a full list and comparison of frameworks.

  • Apibot - a modular, somewhat ambitious bot with overlayed UNIX-like framework
  • addwiki, actively maintained as of July 2017, comprised of several libraries:
  • wikidrain - A wrapper for the WikiMedia API centralized around easily and simply querying Wikipedia articles. (Still actively being developed as of April 2014)
  • MediaWiki_Api - A simple PHP curl based API wrapper with basic functionality. Almost completely undocumented.
  • Wikimate - Gets and edits MediaWiki pages, actively maintained as of October 2016.

Sometimes people try to use this kind of libraries to access a MediaWiki installation on the same server. This is often unnecessary because MediaWiki itself is written in PHP, especially when the only purpose of the script is interacting with MediaWiki. By require'ing WebStart.php (MW_INSTALL_PATH may need to be set beforehand, see Manual:$IP), a script gets access to MediaWiki components and consequently it can call the API internally or use other MediaWiki classes and functions directly, which greatly reduces server load.

Python[edit]

  • Pywikibot - A collection of python scripts and a powerful library for bot writing. Actively maintained since 2003. (Git repository) (IRC) (Evaluation)
  • mwclient - A Python library that makes most of the API functions accessible. Last release: v0.9.0, June 2018. (PyPI) (Evaluation)
  • ceterach - Python3 library, fully PEP8 compliant. Last updated in March 2018.
  • wptools - Wikipedia tools (for Humans). Read-only API. Actively maintained (2018). (Docs)
  • wiki-scripts - Framework for writing bots, maintenance scripts or performing data analysis. Actively maintained (2018). (Docs)
  • Wikipedia-API - Easy to use Python 3 library. Very small, read-only API. Last updated in April 2018. (PyPI)(Docs)
  • Pattern (GitHub) - web mining module, has classes for handling MediaWiki API requests, handles continuations. Last updated in August 2017.

Simple wrappers (no-abstraction interfaces to the MediaWiki API, basic session handling):

No updates after 2016:

  • analytics-zero-sms - Last updated in October 2015.
  • wiki-api - access to Wikipedia.org's search results and article content. Last updated in July 2015. (PyPI) (Evaluation)
  • mwstreaming Last updated in April 2015.
  • Wikipedia -  A Python library that makes it easy to access and parse data from Wikipedia. Last updated in November 2016. (PyPI)
  • wikitools - Provides several layers of abstraction around the API. Doesn't support Python 3. Last updated in August 2016.

See also:

R[edit]

Ruby[edit]

  • mediawiki/ruby/api (GitHub mirror), Mediawiki Ruby API (Gerrit master repo) - Ruby API client library in active development by Wikimedia Foundation Release Engineering as of January 2015
  • MediaWiki::Gateway - Ruby framework for the API. Maintained (as of January 2015) but not actively developed; patches are welcome. Tested up to MediaWiki 1.23, compatible with Wikimedia wikis. Currently incompatible with new continue system. (Evaluation)
  • wikipedia-client - Ruby framework using the API.
  • Sunflower - Provides Ruby access to MediaWiki API; can be used as a base for more sophisticated bots or as standalone by beginners
  • MediaWiki::Butt - Stable but powerful Ruby framework for the API in active development. (Evaluation)
  • MediaWiktory (low-level) and Infoboxer (high-level, semantic) clients to MediaWiki, with idiomatic API, support for custom Wiki modules, in active development.

Rust[edit]

  • mediawiki-rs - Wrapper for the MediaWiki API. Last updated December 2017.
  • WP:RS - An extremely low-level wrapper to the MediaWiki API. Last updated June 2017.
  • Wikibase RS - Rust library to talk to the Wikibase API and serialize data into Rust data structures.

Scala[edit]

Making API calls[edit]

Reduce bandwidth usage[edit]

  • Use GZip compression when making API calls (Accept-Encoding: gzip).
  • Ask for multiple items in one request, to minimize the number of API calls.
    • Use titles=PageA|PageB|PageC and get all the needed lists and properties at the same time.

Set a User-Agent header[edit]

It is best practice, but not required to set a descriptive User Agent header. To do so, use (User-Agent: User name/email/framework/...)

Include your username and wiki or email address.

Data formats[edit]

All new API users should use JSON. XML and PHP are currently supported but discouraged.

Comparing clients[edit]

API:Client code/Gold standard describes best practices for action API client libraries.


See also[edit]