Skip to content
query-store-linksPublic

About

Query Store Links API — Rust rewrite

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

qsl_rs

Rust rewrite of query-store-links — a REST API that resolves Microsoft Store product info and direct package download links.

Built with storelib_rs.

API

POST /api/links/resolve-all

Request body (JSON, all fields optional except ProductInput):

{
  "ProductInput": "9NBLGGH4NNS1",
  "Locale": "en-US",
  "Market": "US",
  "IdentifierType": "ProductId"
}
Field Default Description
ProductInput — Product ID, package family name, Xbox title ID, etc. IDs starting with xp are resolved via the winget package manifest endpoint instead of Display Catalog.
Locale en-US BCP-47 locale for product info
Market US Two-letter market code
IdentifierType ProductId ProductId · PackageFamilyName · ContentId · XboxTitleId · LegacyWindowsPhoneProductId · LegacyWindowsStoreProductId · LegacyXboxProductId

Response:

{
  "ProductId": "9NBLGGH4NNS1",
  "AppInfo": {
    "Name": "App name",
    "Publisher": "Publisher name",
    "Description": "...",
    "CategoryId": "...",
    "ProductId": "9NBLGGH4NNS1"
  },
  "AppxPackages": [
    {
      "FileName": "Package.msixbundle",
      "FileLink": "https://tlu.dl.delivery.mp.microsoft.com/...",
      "FileSize": "123.4 MB"
    }
  ],
  "NonAppxPackages": null,
  "Errors": null
}

AppxPackages is populated for standard Store products; NonAppxPackages for xp-prefixed winget IDs. On failure, Errors contains a list of error messages and the response is still HTTP 200.


Deployment

Docker (recommended)

Pull and run the pre-built image:

docker run -d \
  -p 5236:5236 \
  -e ALLOWED_ORIGINS="https://*.yourdomain.com" \
  --restart unless-stopped \
  ghcr.io/query-store-links/qsl_rs:latest

Docker Compose

git clone https://github.com/query-store-links/qsl_rs.git
cd qsl_rs
docker compose up -d

Edit docker-compose.yml to change the port or ALLOWED_ORIGINS before starting.

Build from source

Requirements: Rust 1.75+, OpenSSL dev headers.

git clone https://github.com/query-store-links/qsl_rs.git
cd qsl_rs
cargo build --release
./target/release/qsl_rs --host 0.0.0.0 --port 5236

Configuration

All options can be set via CLI flags or environment variables:

Flag Env Default Description
-H, --host HOST 0.0.0.0 Bind address
-p, --port PORT 5236 Bind port
--allowed-origins ALLOWED_ORIGINS https://*.krnl64.win Comma-separated list of allowed CORS origins. Supports *.example.com wildcard subdomains.
--dev DEV off Allow loopback origins (localhost, 127.0.0.1) — useful for local frontend development
--log-level LOG_LEVEL info error · warn · info · debug · trace
# Example: custom origins and dev mode
./qsl_rs --port 3000 --allowed-origins "https://app.example.com,https://*.example.com" --dev

License

GPL-3.0-only

About

Query Store Links API — Rust rewrite

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages