Files
rudder-js-sdk/skills/rudder-web-sdk/reference/resources.md
T

1.4 KiB

Resources

Source: src/domains/ResourcesDomain.ts. Row operations on a resource as the signed-in player through /sdk/v1/resources/{slug}. client.resources(slug) returns a ResourceHandle; it performs no request by itself.

const items = client.resources('items');
items.list(): Promise<ListResourceRowsResponse>              // GET    /{slug}      → { items?: ResourceRow[], total?: number }
items.get(id): Promise<ResourceRow>                          // GET    /{slug}/{id}
items.create({ id?, data? }): Promise<ResourceRow>           // POST   /{slug}
items.update(id, { data?, version? }): Promise<ResourceRow>  // PATCH  /{slug}/{id}
items.delete(id): Promise<void>                              // DELETE /{slug}/{id}

ResourceRow is { id, playerId, data, version, rank, createdAt, updatedAt } (all optional in the generated type). Pass version on update for optimistic concurrency.

const row = await client.resources('items').create({ data: { name: 'Sword' } });
await client.resources('items').update(row.id!, { data: { name: 'Axe' }, version: row.version });

What a player may read or write is decided by the resource's access rules on the server; a denied operation rejects with RudderHttpError code forbidden. Deleting a row that other rows still reference rejects with status 409 and code row_referenced. Resources are not observable domains: call list() again when you need fresh rows.