For more information on how to use these APIs, including how to create an API key required for authentication, see Alma REST APIs.
Bring your own key. This API needs your own Ex Libris APIs key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
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("exlibrisgroup/get/almaws/v1/task-lists/printouts");One install, one key - the same client calls every API on the marketplace.
Printout Name. Optional.
Printout status. Optional. Valid values are: Printed, Pending, Canceled.
Printout Printer
A list of Printout IDs (for example: 123,456,778) from 1 to the limit of 100 Optional. Use of this option overrides all of the filtering parameters
Limits the number of results. Optional. Valid values are 0-100. Default value: 10.
Offset of the results returned. Optional. Default value: 0, which means that the first results will be returned.
Retrieve Printouts
Act on Printouts
Retrieve a Printout
Printout Service
Get Requested Resources
/**
* ExLibrisAPIs - generated by OmniStream from Ex Libris APIs's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/exlibrisgroup";
export class ExLibrisAPIsError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `ExLibrisAPIs error ${status}`);
this.name = "ExLibrisAPIsError";
this.status = status;
this.code = code;
}
}
export interface ExLibrisAPIsOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class ExLibrisAPIs {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: ExLibrisAPIsOptions = {}) {
if (!token) throw new Error("ExLibrisAPIs: 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 ExLibrisAPIsError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Retrieve Printouts */
getAlmawsV1TaskListsPrintouts(params: { "letter"?: string; "status"?: string; "printer_id"?: string; "printout_id"?: string; "limit"?: number; "offset"?: number }): Promise<any> {
return this._request("GET", "/almaws/v1/task-lists/printouts", { params });
}
/** Act on Printouts */
postAlmawsV1TaskListsPrintouts(params: { "op": string; "letter"?: string; "status"?: string; "printer_id"?: string; "printout_id"?: string }): Promise<any> {
return this._request("POST", "/almaws/v1/task-lists/printouts", { params });
}
/** Retrieve a Printout */
getAlmawsV1TaskListsPrintoutsPrintoutId(params: { "printout_id": string }): Promise<any> {
return this._request("GET", "/almaws/v1/task-lists/printouts/{printout_id}", { params });
}
/** Printout Service */
postAlmawsV1TaskListsPrintoutsPrintoutId(params: { "printout_id": string; "op": string }): Promise<any> {
return this._request("POST", "/almaws/v1/task-lists/printouts/{printout_id}", { params });
}
/** Get Requested Resources */
getAlmawsV1TaskListsRequestedResources(params: { "library": string; "circ_desk": string; "location"?: string; "order_by"?: string; "direction"?: string; "pickup_inst"?: string; "reported"?: string; "printed"?: string; "limit"?: number; "offset"?: number }): Promise<any> {
return this._request("GET", "/almaws/v1/task-lists/requested-resources", { params });
}
/** Act on Requested Resources */
postAlmawsV1TaskListsRequestedResources(params: { "library"?: string; "circ_desk"?: string; "op"?: string; "location"?: string; "pickup_inst"?: string; "reported"?: string; "printed"?: string }): Promise<any> {
return this._request("POST", "/almaws/v1/task-lists/requested-resources", { params });
}
/** Get Lending Requests */
getAlmawsV1TaskListsRsLendingRequests(params: { "library"?: string; "status"?: string; "printed"?: string; "reported"?: string; "partner"?: string; "requested_format"?: string; "supplied_format"?: string }): Promise<any> {
return this._request("GET", "/almaws/v1/task-lists/rs/lending-requests", { params });
}
/** Act on Lending Requests */
postAlmawsV1TaskListsRsLendingRequests(params: { "library"?: string; "op"?: string; "status"?: string; "printed"?: string; "reported"?: string; "partner"?: string; "requested_format"?: string; "supplied_format"?: string }): Promise<any> {
return this._request("POST", "/almaws/v1/task-lists/rs/lending-requests", { params });
}
/** GET Task-lists Test API */
getAlmawsV1TaskListsTest(): Promise<any> {
return this._request("GET", "/almaws/v1/task-lists/test", {});
}
/** POST Task-lists Test API */
postAlmawsV1TaskListsTest(): Promise<any> {
return this._request("POST", "/almaws/v1/task-lists/test", { });
}
}
export default ExLibrisAPIs;
No reviews yet. Be the first to rate this API.
Yes. Ex Libris APIs uses apiKey authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
For more information on how to use these APIs, including how to create an API key required for authentication, see Alma REST APIs. It exposes 10 endpoints over GET, POST, including GET /almaws/v1/task-lists/printouts, POST /almaws/v1/task-lists/printouts, GET /almaws/v1/task-lists/printouts/{printout_id}.
Install the OmniStream SDK for your language and call Ex Libris APIs 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 Ex Libris APIs itself, and Ex Libris APIs's own rate limits still apply to your provider key.
DEV Community: Access Forem and DEV Community articles, users, comments, and other resources via a simple REST API.
Act on Requested Resources
Get Lending Requests
Act on Lending Requests
GET Task-lists Test API
POST Task-lists Test API