ProtoPedia API Ver 2.0 Client for Javascript
Type-safe, ESM-first client for the ProtoPedia API v2. Built with TypeScript, tested with Vitest, and ready for Node.js 20+.
- Node.js 20+ with native
fetch - Fully typed request/response models
- Pluggable logging with level control
- Abortable requests and configurable timeout
- Minimal, dependency-light
- Node.js >= 20
- ESM environment
ProtoPedia API Ver 2.0 · Apiary https://protopediav2.docs.apiary.io
The JavaScript client library supports ProtoPedia API Ver 2.0 · Apiary
- 作品一覧
GET https://protopedia.net/v2/api/prototype/list
- 作品一覧(TSV)
GET https://protopedia.net/v2/api/prototype/list/tsv
npm install protopedia-api-v2-clientSet your API token:
export PROTOPEDIA_API_V2_TOKEN=your-tokenOr create a .env file (see .env.example):
PROTOPEDIA_API_V2_TOKEN=your-token
PROTOPEDIA_API_LOG_LEVEL=infoimport { createProtoPediaClient } from 'protopedia-api-v2-client';
const client = createProtoPediaClient({
token: 'your-token',
});List prototypes:
import { ProtoPediaApiError } from 'protopedia-api-v2-client';
import type { ListPrototypesParams } from 'protopedia-api-v2-client';
const params: ListPrototypesParams = {
tagNm: 'IoT',
limit: 10,
offset: 0,
};
try {
const res = await client.listPrototypes(params, {
headers: { 'X-Custom': 'value' },
// Per-request log level override:
logLevel: 'info',
});
console.log(res.count, res.results?.[0]);
} catch (err) {
if (err instanceof ProtoPediaApiError) {
console.error(
'API error',
err.status,
err.statusText,
err.req.url,
err.body,
);
} else {
console.error('Unexpected error', err);
}
}Download TSV:
const tsv = await client.downloadPrototypesTsv(
{ limit: 100 },
{ logLevel: 'debug' },
);
console.log(tsv);For a comprehensive implementation example using this client, see:
- F88/promidas: Snapshot-based in-memory store for ProtoPedia prototypes with TTL management
- promidas/lib/fetcher - Full-featured integration example
- Client and factories:
- Errors:
- Requests and responses:
- Package entry points:
Supported levels: silent, error, warn, info, debug.
Configure at client creation time or per request:
const client = createProtoPediaClient({ logLevel: 'warn' });
await client.listPrototypes({}, { logLevel: 'debug' }); // overrideHeaders are sanitized for logging (token-like headers are masked). See headersForLogging.
- Default timeout:
15000 ms - Override with
timeoutMsin client options - Pass an
AbortSignalper request
const controller = new AbortController();
const promise = client.listPrototypes({}, { signal: controller.signal });
controller.abort(new DOMException('User cancel', 'AbortError'));Types are emitted to lib/types. Public type exports are available via the package root. See:
- This client mirrors the current public API behavior and may need updates if the API changes.
- TSV download currently uses
Accept: application/jsoninternally for compatibility.
Distributed under CC0-1.0. See LICENSE.