Wikibase
MediaWiki Wikibase extension
|
Enable the REST API:
These tests can be run via npm run api-testing
. They require the targeted wiki to act as both client and repo, so that Items can have sitelinks to pages on the same wiki.
REST API specification is provided using OpenAPI specification in specs
directory. The latest version is published on doc.wikimedia.org.
Specification can "built" (i.e. compiled to a single JSON OpenAPI specs file) and validated using provided npm scripts.
To modify API specs, install npm dependencies first, e.g. using the following command:
API specs can be validated using npm test
script, e.g. by running:
API specs can be bundled into a single file using npm build:spec
script, e.g. by running:
Autodocs can be generated from the API specification using npm build:docs
script, e.g. by running:
The autodocs and/or bundled specification OpenAPI files are generated to the ../../docs/rest-api/
directory.
This REST API follows the Hexagonal Architecture and takes inspiration from an article about Netflix's use of the hexagonal architecture. This decision is documented in ADR 0001.
docs/
../../docs/rest-api/
: the built OpenAPI specification and swagger documentationspecs/
: source of the OpenAPI specificationsrc/
DataAccess/
: implementations of services that bind to persistent storageDomain/
: domain models and servicesPresentation/
: presenter and converter classes to manipulate the output as part of the transport layerRouteHandlers/
create and pass request DTO into use cases and return HTTP responsesUseCases/
: one directory per use casetests/
mocha/
: tests using the mocha frameworkapi-testing/
: end-to-end tests using MediaWiki's api-testing libraryopenapi-validation/
: tests against the OpenAPI specphpunit/
: integration and unit tests using the phpunit framework