@scrims-api/sdk
v0.1.2
Published
Public Scrims API SDK for plugin and utility servers
Downloads
36
Readme
Scrims SDK (JavaScript)
A modular API client for Scrims plugin and extension developers.
Public Auth Mode
The public SDK flow is plugin signature auth.
const ScrimsAPI = require("@scrims-api/sdk");
const scrims = new ScrimsAPI({
pluginId: process.env.SCRIMS_PLUGIN_ID,
privateKeyPem: process.env.SCRIMS_PRIVATE_KEY_PEM
});When pluginId and privateKeyPem are provided, each request is signed and sends:
Authorization: ScrimsExtension <pluginId> <signature>X-Scrims-Timestamp: <unix-seconds>X-Scrims-Nonce: <random-base64url>
The SDK disables automatic retries while plugin auth is active because nonces are single-use.
Key Provisioning
Current flow uses the Scrims plugin registration and approval flow.
- Register your plugin in Scrims.
- Wait for admin approval.
- Generate or rotate your Ed25519 keypair from the Scrims plugin management UI.
- Store the returned private key in
SCRIMS_PRIVATE_KEY_PEM. - Use your plugin
internalIdasSCRIMS_PLUGIN_ID.
Constructor
const scrims = new ScrimsAPI({
pluginId: "my-plugin-id",
privateKeyPem: process.env.SCRIMS_PRIVATE_KEY_PEM
});Constructor options
pluginId?: stringprivateKeyPem?: string
The SDK defaults to the production API origin: https://api.atomcal.com.
An internal baseUrl override still exists for local testing, but production is the default public path.
Available methods may still require granted plugin permissions and install scope on the Scrims side.
API Surface
Calendars (scrims.calendars)
fetch(calendarId)fetchEvents(calendarId)create(data)update(calendarId, data)fetchPublicCalendarsByMemberId(memberId)
Calendar Members (scrims.calendarMembers)
create(calendarMember)fetch(calendarId, memberId)fetchByNameOrEmail(calendarId, usernameOrEmail)fetchAll(calendarId)update(calendarId, memberId, data)remove(calendarId, memberId)fetchPublicCalendarsByMemberId(memberId)
Events (scrims.events)
fetch(eventId)fetchAll(calendarId)create(data, etag)update(eventId, data, etag)createBulk(events)updateBulk(events)
Event create/update responses preserve wrapper fields such as event, events, and saved.
Templates (scrims.templates)
fetchAll(calendarId)fetchCountByCalendar(calendarId)
Guests (scrims.guests)
fetchAll(eventId, statusFilters?)fetch(eventId, guestId)fetchById(guestId)fetchHosts(eventId)create(memberId, eventId, data)update(memberId, eventId, data)
Guest Tickets (scrims.guestTickets)
create(memberId, ticketId, eventId, customFields?)fetch(id)update(guestTicketId, data)countByTicketId(ticketId, eventId)
Members (scrims.members)
fetch(identifier)create(member)
Roles (scrims.roles)
create(role)update(roleId, data)delete(roleId)
Icons (scrims.icons)
fetchAll()
Example
async function createEventForCalendar(scrims, calendarId) {
const payload = {
calendar: calendarId,
title: "Community Scrim",
start_time: "2026-03-10T19:00:00.000Z",
end_time: "2026-03-10T20:00:00.000Z",
start_timezone: "UTC",
end_timezone: "UTC"
};
const result = await scrims.events.create(payload, "optional-etag");
return result.saved;
}Docs
- https://api.atomcal.com/developers/sdk
Example Plugin
- https://github.com/scrims-api/audit-plugin-example
Notes
scrims.services is not part of the public SDK contract and is not exported by the npm package.
