Downloads REST API

This document describes the API exposed under https://downloads.mariadb.org/rest-api/. The API aims to facilitate the following operations:

  • Get a list of products available for download. (MariaDB Server, different connectors, other miscellaneous files)
  • Get a list of major releases – per product.
  • Get a list of point releases – per major release of a product.
  • Get a list of files available for each point release.
  • Get a list of files available for a specified release.
  • Get a list of files available for a latest release.
  • Download files using a unique id or the file name.
  • Get the checksum of a file using a unique id or the file name.
  • Get the signature of a file using a unique id or the file name.
  • Get a list of available mirrors to download files from.
  • Get a list of available OS to filter files with.
  • Get a list of available architecture to filter files with.

All products

URL Endpoint: https://downloads.mariadb.org/rest-api/products/
Sample URL: https://downloads.mariadb.org/rest-api/products/
HTTP Request Type: GET
URL GET Parameters: N/A
Response type: application/json
Response format:

{
  products_list: [
    {
      "product_id": <str:product-id>
      "name": <str:product-name>
      "description": <str:product-description>
      "license": <str:product-license>
    },
  ...
  ]
}

List of major & minor releases

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/
HTTP Request TypeGET
URL GET Parameters: N/A
Response type: application/json
Response format:

{
  "major_releases": [
    {
      "release_id": <str:release-id>,
      "release_name": <str:release-id>,
      "release_status": <str:release-status>,
      "release_support_type": <str:release-support-type>,
      "release_eol_date": <str:release-eol-date>, # YYYY-MM-DD
    },
    ...
  ]
}

List of point releases and files

By default, without specifying the mirror GET parameter, the file download URL uses the closest mirror to the user.

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:release_id>
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5/
HTTP Request TypeGET
URL GET Parameters: mirror=<str:mirror-id>(optional, choose specific mirror to download from)
Response type: application/json
Response format:

{
  "releases": {
    "<str:point-release-id>": {
        "release_id": "<str:point-release-id>",
        "release_name": "<str:point-release-name>",
        "date_of_release": <str:point-release-date>, // Format: YYYY-MM-DD,
        "release_notes_url": <str:release-notes-url>,
        "change_log": <str:change-log-url,

        "files": [
          {
            "file_id": <str:file-id>,
            "file_name": <str:file-name>,
            "package_type": <str:package-type>,
            "os": <str:os>,
            "cpu": <str:cpu>,    // may be null
            "checksum": {
              "md5sum": <str:md5sum>,        // may be null
              "sha1sum": <str:sha1sum>,      // may be null
              "sha256sum": <str:sha256sum>,  // may be null
              "sha512sum": <str:sha512sum>   // may be null
            },
            "signature": <str:gpg-signature>,
            "checksum_url": <str:checksum_endpoint_url>,
            "signature_url": <str:signature_endpoint_url>,
            "file_download_url": <str:file_download_endpoint_url>,
          },
          ...
        ]
    }
    ...
}

List of files for a release

By default, without specifying the mirror GET parameter, the file download URL uses the closest mirror to the user.

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/
HTTP Request TypeGET
URL GET Parameters:

  • mirror=<str:mirror-id> (optional, choose specific mirror to download from)
  • os=<str:os-id> (optional, filter the files served by OS)
  • mirror=<str:mirror-id> (optional, choose specific mirror to download from)
  • cpu=<str:cpu-id> (optional, filter the files served by Architecture)

Response type: application/json
Response format:

{
  "releases": {
    "<str:point-release-id>": {
        "release_id": "<str:point-release-id>",
        "release_name": "<str:point-release-name>",
        "date_of_release": <str:point-release-date>, // Format: YYYY-MM-DD,
        "release_notes_url": <str:release-notes-url>,
        "change_log": <str:change-log-url,
        "files": [
          {
            "file_id": <str:file-id>,
            "file_name": <str:file-name>,
            "package_type": <str:package-type>,
            "os": <str:os>,
            "cpu": <str:cpu>,    // may be null
            "checksum": {
              "md5sum": <str:md5sum>,        // may be null
              "sha1sum": <str:sha1sum>,      // may be null
              "sha256sum": <str:sha256sum>,  // may be null
              "sha512sum": <str:sha512sum>   // may be null
            },
            "signature": <str:gpg-signature>,
            "checksum_url": <str:checksum_endpoint_url>,
            "signature_url": <str:signature_endpoint_url>,
            "file_download_url": <str:file_download_endpoint_url>,
          },
          ...
        ]
    }
}

List of files for a latest release

By default, without specifying the mirror GET parameter, the file download URL uses the closest mirror to the user.

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:release_id>
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5/latest/
HTTP Request TypeGET
URL GET Parameters: mirror=<str:mirror-id> (optional, choose specific mirror to download from)

Response type: application/json
Response format:

{
  "releases": {
    "<str:point-release-id>": {
        "release_id": "<str:point-release-id>",
        "release_name": "<str:point-release-name>",
        "date_of_release": <str:point-release-date>, // Format: YYYY-MM-DD,
        "release_notes_url": <str:release-notes-url>,
        "change_log": <str:change-log-url,
        "files": [
          {
            "file_id": <str:file-id>,
            "file_name": <str:file-name>,
            "package_type": <str:package-type>,
            "os": <str:os>,
            "cpu": <str:cpu>,    // may be null
            "checksum": {
              "md5sum": <str:md5sum>,        // may be null
              "sha1sum": <str:sha1sum>,      // may be null
              "sha256sum": <str:sha256sum>,  // may be null
              "sha512sum": <str:sha512sum>   // may be null
            },
            "signature": <str:gpg-signature>,
            "checksum_url": <str:checksum-endpoint-url>,
            "signature_url": <str:signature-endpoint-url>,
            "file_download_url": <str:file-download-endpoint-url>,
          },
          ...
        ]
    }
}

Download a file

Downloading by ID

There are two options available to download a specific file by ID, a shorter URL and a longer URL, both with the same outcome. By default, the file download will use a mirror that is closest geographically based on the IP the request comes from. In case there is a broken mirror, one can force a specific mirror based on a mirror-id which can be retrieved via the REST API provided to list all mirrors.

The long URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<int:file-id>
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/10809
HTTP Request TypeGET
URL GET Parameters: mirror=<str:mirror-id> (optional, choose specific mirror to download from)

The short URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<int:file-id>
Sample URL: https://downloads.mariadb.org/rest-api/10809
HTTP Request TypeGET
URL GET Parameters: mirror=<str:mirror-id> (optional, choose specific mirror to download from)

Downloading by file name

Instead of using the file id, one can use the file name. This feature is provided to allow for human readability of HTTP requests. Instead of a number, it is very clear which file is downloaded, just by reading the URL. The optional GET parameter functions the same as for the download by ID case.

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<str:file-name>
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/mariadb-10.5.4-linux-systemd-x86_64.tar.gz
HTTP Request TypeGET
URL GET Parameters: mirror=<str:mirror-id> (optional, choose specific mirror to download from)

List file checksums

By ID

The long URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<int:file-id>/checksum
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/10809/checksum
HTTP Request TypeGET
URL GET Parameters: N/A

The short URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<int:file-id>/checksum
Sample URL: https://downloads.mariadb.org/rest-api/10809/checksum
HTTP Request TypeGET
URL GET Parameters: N/A

By file name

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<str:file-name>/checksum
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/mariadb-10.5.4-linux-systemd-x86_64.tar.gz/checksum
HTTP Request TypeGET
URL GET Parameters: N/A

Response format:

{
  "response": {
    "checksum": {
      "md5sum": <str:md5sum>,        // may be null
      "sha1sum": <str:sha1sum>,      // may be null
      "sha256sum": <str:sha256sum>,  // may be null
      "sha512sum": <str:sha512sum>   // may be null
    }
  }
}

List file signature

By ID

The long URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<int:file-id>/signature
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/10809/signature
HTTP Request TypeGET
URL GET Parameters: N/A

The short URL:

URL Endpoint: https://downloads.mariadb.org/rest-api/<int:file-id>/signature
Sample URL: https://downloads.mariadb.org/rest-api/10809/signature
HTTP Request TypeGET
URL GET Parameters: N/A

By file name

URL Endpoint: https://downloads.mariadb.org/rest-api/<str:product-id>/<str:point-release_id>/<str:file-name>/signature
Sample URL: https://downloads.mariadb.org/rest-api/mariadb/10.5.4/mariadb-10.5.4-linux-systemd-x86_64.tar.gz/signature
HTTP Request TypeGET
URL GET Parameters: N/A

Response format:

-----BEGIN PGP SIGNATURE-----
<str:signature-text>
-----END PGP SIGNATURE-----

List available mirrors

There are download mirrors available all across the globe, for faster and easier downloads. The MariaDB Foundation seeks to maintain the list up-to-date. The list is provided grouped by country.

URL Endpoint: https://downloads.mariadb.org/rest-api/mirrors
Sample URL: https://downloads.mariadb.org/rest-api/mirrors
HTTP Request TypeGET
URL GET Parameters: N/A
Response format:

{
   "mirror_list":{
     <str:country-name>: [
       {
         "mirror_id": <str:mirror-id>,
         "mirror_name": <str:mirror-name>,
       },
       ...
     ],
     <str:country-name>: [
       {
         "mirror_id": <str:mirror-id>,
         "mirror_name": <str:mirror-name>,
       },
     ]
     ...
 }

List available OS

The OS list has been provided to help users filter the file lists with the help of the os_id parameter.

URL Endpoint: https://downloads.mariadb.org/rest-api/os
Sample URL: https://downloads.mariadb.org/rest-api/os
HTTP Request TypeGET
URL GET Parameters: N/A
Response format:

{
  "os_list": [
    {
      "os_id": <str:os-id>,
      "os_name": <str:os-name>
    },
  ]
  ...
}

List available architectures

The architecture list has been provided to help users filter the file lists with the help of the architecture_id parameter.

URL Endpoint: https://downloads.mariadb.org/rest-api/cpu
Sample URL: https://downloads.mariadb.org/rest-api/cpu
HTTP Request TypeGET
URL GET Parameters: N/A
Response format:

{
  "architecture_list": [
    {
      "architecture_id": <str:cpu-id>,
      "architecture_name": <str:cpu-name>
    },
  ]
  ...
}