191
packages/sdk/README.md
Normal file
191
packages/sdk/README.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# Payload SDK
|
||||
|
||||
Package to allow querying Payload REST API in a fully type safe way. Has support for all necessary operations, including auth, type safe `select`, `populate`, `joins` properties and simplified file uploading. Its interface is _very_ similar to the Local API.
|
||||
|
||||
```ts
|
||||
import { PayloadSDK } from '@payloadcms/sdk'
|
||||
import type { Config } from './payload-types'
|
||||
|
||||
// Pass your config from generated types as generic
|
||||
const sdk = new PayloadSDK<Config>({
|
||||
baseURL: 'https://example.com/api',
|
||||
})
|
||||
|
||||
// Find operation
|
||||
const posts = await sdk.find({
|
||||
collection: 'posts',
|
||||
draft: true,
|
||||
limit: 10,
|
||||
locale: 'en',
|
||||
page: 1,
|
||||
where: { _status: { equals: 'published' } },
|
||||
})
|
||||
|
||||
// Find by ID operation
|
||||
const posts = await sdk.findByID({
|
||||
id,
|
||||
collection: 'posts',
|
||||
draft: true,
|
||||
locale: 'en',
|
||||
})
|
||||
|
||||
// Auth login operation
|
||||
const result = await sdk.login({
|
||||
collection: 'users',
|
||||
data: {
|
||||
email: 'dev@payloadcms.com',
|
||||
password: '12345',
|
||||
},
|
||||
})
|
||||
|
||||
// Create operation
|
||||
const result = await sdk.create({
|
||||
collection: 'posts',
|
||||
data: { text: 'text' },
|
||||
})
|
||||
|
||||
// Create operation with a file
|
||||
// `file` can be either a Blob | File object or a string URL
|
||||
const result = await sdk.create({ collection: 'media', file, data: {} })
|
||||
|
||||
// Count operation
|
||||
const result = await sdk.count({ collection: 'posts', where: { id: { equals: post.id } } })
|
||||
|
||||
// Update (by ID) operation
|
||||
const result = await sdk.update({
|
||||
collection: 'posts',
|
||||
id: post.id,
|
||||
data: {
|
||||
text: 'updated-text',
|
||||
},
|
||||
})
|
||||
|
||||
// Update (bulk) operation
|
||||
const result = await sdk.update({
|
||||
collection: 'posts',
|
||||
where: {
|
||||
id: {
|
||||
equals: post.id,
|
||||
},
|
||||
},
|
||||
data: { text: 'updated-text-bulk' },
|
||||
})
|
||||
|
||||
// Delete (by ID) operation
|
||||
const result = await sdk.delete({ id: post.id, collection: 'posts' })
|
||||
|
||||
// Delete (bulk) operation
|
||||
const result = await sdk.delete({ where: { id: { equals: post.id } }, collection: 'posts' })
|
||||
|
||||
// Find Global operation
|
||||
const result = await sdk.findGlobal({ slug: 'global' })
|
||||
|
||||
// Update Global operation
|
||||
const result = await sdk.updateGlobal({ slug: 'global', data: { text: 'some-updated-global' } })
|
||||
|
||||
// Auth Login operation
|
||||
const result = await sdk.login({
|
||||
collection: 'users',
|
||||
data: { email: 'dev@payloadcms.com', password: '123456' },
|
||||
})
|
||||
|
||||
// Auth Me operation
|
||||
const result = await sdk.me(
|
||||
{ collection: 'users' },
|
||||
{
|
||||
headers: {
|
||||
Authorization: `JWT ${user.token}`,
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
// Auth Refresh Token operation
|
||||
const result = await sdk.refreshToken(
|
||||
{ collection: 'users' },
|
||||
{ headers: { Authorization: `JWT ${user.token}` } },
|
||||
)
|
||||
|
||||
// Auth Forgot Password operation
|
||||
const result = await sdk.forgotPassword({
|
||||
collection: 'users',
|
||||
data: { email: user.email },
|
||||
})
|
||||
|
||||
// Auth Reset Password operation
|
||||
const result = await sdk.resetPassword({
|
||||
collection: 'users',
|
||||
data: { password: '1234567', token: resetPasswordToken },
|
||||
})
|
||||
|
||||
// Find Versions operation
|
||||
const result = await sdk.findVersions({
|
||||
collection: 'posts',
|
||||
where: { parent: { equals: post.id } },
|
||||
})
|
||||
|
||||
// Find Version by ID operation
|
||||
const result = await sdk.findVersionByID({ collection: 'posts', id: version.id })
|
||||
|
||||
// Restore Version operation
|
||||
const result = await sdk.restoreVersion({
|
||||
collection: 'posts',
|
||||
id,
|
||||
})
|
||||
|
||||
// Find Global Versions operation
|
||||
const result = await sdk.findGlobalVersions({
|
||||
slug: 'global',
|
||||
})
|
||||
|
||||
// Find Global Version by ID operation
|
||||
const result = await sdk.findGlobalVersionByID({ id: version.id, slug: 'global' })
|
||||
|
||||
// Restore Global Version operation
|
||||
const result = await sdk.restoreGlobalVersion({
|
||||
slug: 'global',
|
||||
id,
|
||||
})
|
||||
```
|
||||
|
||||
Every operation has optional 3rd parameter which is used to add additional data to the RequestInit object (like headers):
|
||||
|
||||
```ts
|
||||
await sdk.me(
|
||||
{
|
||||
collection: 'users',
|
||||
},
|
||||
{
|
||||
// RequestInit object
|
||||
headers: {
|
||||
Authorization: `JWT ${token}`,
|
||||
},
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
To query custom endpoints, you can use the `request` method, which is used internally for all other methods:
|
||||
|
||||
```ts
|
||||
await sdk.request({
|
||||
method: 'POST',
|
||||
path: '/send-data',
|
||||
json: {
|
||||
id: 1,
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
Custom `fetch` implementation and `baseInit` for shared `RequestInit` properties:
|
||||
|
||||
```ts
|
||||
const sdk = new PayloadSDK<Config>({
|
||||
baseInit: { credentials: 'include' },
|
||||
baseURL: 'https://example.com/api',
|
||||
fetch: async (url, init) => {
|
||||
console.log('before req')
|
||||
const response = await fetch(url, init)
|
||||
console.log('after req')
|
||||
return response
|
||||
},
|
||||
})
|
||||
```
|
||||
Reference in New Issue
Block a user