Linux Mint Enhancement Marketplace — browse, install, and share themes, icons, cursors, wallpapers, applets, extensions, fonts, and more.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("mint-hub/list-enhancements");One install, one key - the same client calls every API on the marketplace.
Filter by category ID
Sort order
Full-text search query
Page number
Items per page (max 100)
List enhancements with filtering and pagination
Upload a new enhancement
Get enhancement details by slug
Update an enhancement
Delete an enhancement and its files
Get download URL for an enhancement package
/**
* MintHub - generated by OmniStream from Mint Hub's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/mint-hub";
export class MintHubError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `MintHub error ${status}`);
this.name = "MintHubError";
this.status = status;
this.code = code;
}
}
export interface MintHubOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class MintHub {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: MintHubOptions = {}) {
if (!token) throw new Error("MintHub: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new MintHubError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** List enhancements with filtering and pagination */
listEnhancements(params: { "category"?: string; "sort"?: string; "q"?: string; "page"?: string; "per_page"?: string }): Promise<any> {
return this._request("GET", "/enhancements", { params });
}
/** Upload a new enhancement */
uploadEnhancement(body: unknown): Promise<any> {
return this._request("POST", "/enhancements", { body });
}
/** Get enhancement details by slug */
getEnhancement(params: { "slug": string }): Promise<any> {
return this._request("GET", "/enhancements/{slug}", { params });
}
/** Update an enhancement */
updateEnhancement(body: unknown, params: { "slug": string }): Promise<any> {
return this._request("PUT", "/enhancements/{slug}", { body, params });
}
/** Delete an enhancement and its files */
deleteEnhancement(params: { "slug": string }): Promise<any> {
return this._request("DELETE", "/enhancements/{slug}", { params });
}
/** Get download URL for an enhancement package */
downloadEnhancement(params: { "slug": string }): Promise<any> {
return this._request("GET", "/enhancements/{slug}/download", { params });
}
/** Get enhancement thumbnail image */
getThumbnail(params: { "slug": string }): Promise<any> {
return this._request("GET", "/enhancements/{slug}/thumbnail", { params });
}
/** Get enhancement screenshot image */
getScreenshot(params: { "slug": string; "idx": string }): Promise<any> {
return this._request("GET", "/enhancements/{slug}/screenshots/{idx}", { params });
}
/** List reviews for an enhancement */
listReviews(params: { "slug": string }): Promise<any> {
return this._request("GET", "/enhancements/{slug}/reviews", { params });
}
/** Submit a review for an enhancement */
submitReview(body: unknown, params: { "slug": string }): Promise<any> {
return this._request("POST", "/enhancements/{slug}/reviews", { body, params });
}
/** List all enhancement categories with counts */
listCategories(): Promise<any> {
return this._request("GET", "/categories", {});
}
/** Get featured enhancements */
getFeatured(): Promise<any> {
return this._request("GET", "/featured", {});
}
/** Get top 30 trending enhancements by score */
getTrending(): Promise<any> {
return this._request("GET", "/trending", {});
}
/** Get 30 most recently created enhancements */
getNew(): Promise<any> {
return this._request("GET", "/new", {});
}
/** Full-text search for enhancements */
searchEnhancements(params: { "q": string; "category"?: string; "limit"?: string }): Promise<any> {
return this._request("GET", "/search", { params });
}
/** Get marketplace statistics */
getStats(): Promise<any> {
return this._request("GET", "/stats", {});
}
/** List all collections */
listCollections(): Promise<any> {
return this._request("GET", "/collections", {});
}
/** Get a collection with its enhancements */
getCollection(params: { "id": string }): Promise<any> {
return this._request("GET", "/collections/{id}", { params });
}
/** Get enhancements uploaded by the current user */
myUploads(): Promise<any> {
return this._request("GET", "/my/uploads", {});
}
/** Get the current user's download history */
myDownloads(): Promise<any> {
return this._request("GET", "/my/downloads", {});
}
}
export default MintHub;
No reviews yet. Be the first to rate this API.
No. Mint Hub is included with your Omni key, so a single OmniStream key is enough to start calling it. There is no separate signup with the provider and no second key to manage.
Linux Mint Enhancement Marketplace — browse, install, and share themes, icons, cursors, wallpapers, applets, extensions, fonts, and more. It exposes 20 endpoints over GET, POST, PUT, DELETE, including GET /enhancements, POST /enhancements, GET /enhancements/{slug}.
Install the OmniStream SDK for your language and call Mint Hub through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Mint Hub itself.
Get enhancement thumbnail image
Get enhancement screenshot image
List reviews for an enhancement
Submit a review for an enhancement
List all enhancement categories with counts
Get featured enhancements
Get top 30 trending enhancements by score
Get 30 most recently created enhancements
Full-text search for enhancements
Get marketplace statistics
List all collections
Get a collection with its enhancements
Get enhancements uploaded by the current user
Get the current user's download history