mirror of
https://github.com/minetest/contentdb.git
synced 2024-11-11 01:53:47 +01:00
6.6 KiB
6.6 KiB
title: API
Authentication
Not all endpoints require authentication. Authentication is done using Bearer tokens:
curl -H "Authorization: Bearer YOURTOKEN" https://content.minetest.net/api/whoami/
Tokens can be attained by visiting Settings > API Tokens.
Endpoints
Misc
- GET
/api/whoami/
- JSON dictionary with the following keys:is_authenticated
- True on successful API authenticationusername
- Username of the user authenticated as, null otherwise.- 4xx status codes will be thrown on unsupported authentication type, invalid access token, or other errors.
Packages
- GET
/api/packages/
- See Package Queries - GET
/api/scores/
- See Package Queries - GET
/api/packages/<username>/<name>/
- GET
/api/packages/<username>/<name>/dependencies/
- If query argument
only_hard
is present, only hard deps will be returned.
- If query argument
- GET
/api/tags/
- List of:name
- technical nametitle
- human-readable titledescription
- tag description or null
- GET
/api/homepage/
count
- number of packagesdownloads
- get number of downloadsnew
- new packagesupdated
- recently updated packagespop_mod
- popular modspop_txp
- popular texturespop_game
- popular gameshigh_reviewed
- highest reviewedtags
Releases
- GET
/api/packages/<username>/<name>/releases/
(List)- Returns array of release dictionaries with keys:
id
: release IDtitle
: human-readable titlerelease_date
: Date releasedurl
: download URLcommit
: commit hash or nulldownloads
: number of downloadsmin_minetest_version
: dict or null, minimum supported minetest version (inclusive).max_minetest_version
: dict or null, minimum supported minetest version (inclusive).
- Returns array of release dictionaries with keys:
- GET
/api/packages/<username>/<name>/releases/<id>/
(Read) - POST
/api/packages/<username>/<name>/releases/new/
(Create)- Requires authentication.
- Body can be JSON or multipart form data. Zip uploads must be multipart form data.
title
: human-readable name of the release.- For Git release creation:
method
: must begit
.ref
: (Optional) git reference, eg:master
.
- For zip upload release creation:
file
: multipart file to upload, like<input type=file>
.
- You can set min and max Minetest Versions using the content's .conf file.
- DELETE
/api/packages/<username>/<name>/releases/<id>/
(Delete)- Requires authentication.
- Deletes release.
Examples:
# Create release from Git
curl -X POST https://content.minetest.net/api/packages/username/name/releases/new/ \
-H "Authorization: Bearer YOURTOKEN" -H "Content-Type: application/json" \
-d "{\"method\": \"git\", \"title\": \"My Release\", \"ref\": \"master\" }"
# Create release from zip upload
curl -X POST https://content.minetest.net/api/packages/username/name/releases/new/ \
-H "Authorization: Bearer YOURTOKEN" \
-F title="My Release" -F file=@path/to/file.zip
# Delete release
curl -X DELETE https://content.minetest.net/api/packages/username/name/releases/3/ \
-H "Authorization: Bearer YOURTOKEN"
Screenshots
- GET
/api/packages/<username>/<name>/screenshots/
(List)- Returns array of screenshot dictionaries with keys:
id
: screenshot IDapproved
: true if approved and visible.title
: human-readable name for the screenshot, shown as a caption and alt text.url
: absolute URL to screenshot.created_at
: ISO time.order
: Number used in ordering.
- Returns array of screenshot dictionaries with keys:
- GET
/api/packages/<username>/<name>/screenshots/<id>/
(Read)- Returns screenshot dictionary like above.
- POST
/api/packages/<username>/<name>/screenshots/new/
(Create)- Requires authentication.
- Body is multipart form data.
title
: human-readable name for the screenshot, shown as a caption and alt text.file
: multipart file to upload, like<input type=file>
.
- DELETE
/api/packages/<username>/<name>/screenshots/<id>/
(Delete)- Requires authentication.
- Deletes screenshot.
- POST
/api/packages/<username>/<name>/screenshots/order/
- Requires authentication.
- Body is a JSON array containing the screenshot IDs in their order.
Examples:
# Create screenshots
curl -X POST https://content.minetest.net/api/packages/username/name/screenshots/new/ \
-H "Authorization: Bearer YOURTOKEN" \
-F title="My Release" -F file=@path/to/screnshot.png
# Delete screenshot
curl -X DELETE https://content.minetest.net/api/packages/username/name/screenshots/3/ \
-H "Authorization: Bearer YOURTOKEN"
# Reorder screenshots
curl -X POST https://content.minetest.net/api/packages/username/name/screenshots/order/ \
-H "Authorization: Bearer YOURTOKEN" -H "Content-Type: application/json" \
-d "[13, 2, 5, 7]"
Topics
- GET
/api/topics/
- Supports Package Queries, and the following two options:show_added
- Show topics which exist as packages, default true.show_discarded
- Show topics which have been marked as outdated, default false.
Minetest
- GET
/api/minetest_versions/
Package Queries
Example:
/api/packages/?type=mod&type=game&q=mobs+fun&hide=nonfree&hide=gore
Supported query parameters:
type
- Package types (mod
,game
,txp
).q
- Query string.author
- Filter by author.tag
- Filter by tags.random
- When present, enable random ordering and ignoresort
.limit
- Return at mostlimit
packages.hide
- Hide content based on Content Flags.sort
- Sort by (name
,title
,score
,reviews
,downloads
,created_at
,approved_at
,last_release
).order
- Sort ascending (asc
) or descending (desc
).protocol_version
- Only show packages supported by this Minetest protocol version.engine_version
- Only show packages supported by this Minetest engine version, eg:5.3.0
.fmt
- How the response is formated.keys
- author/name only.short
- stuff needed for the Minetest client.
Topic Queries
Example:
/api/topics/?q=mobs
Supported query parameters:
q
- Query string.sort
- Sort by (name
,views
,date
).order
- Sort ascending (asc
) or descending (desc
).show_added
- Show topics that have an existing package.show_discarded
- Show topics marked as discarded.limit
- Return at mostlimit
topics.