@moonbase.sh/api
v1.0.9
Published
Package to let you integrate backends with Moonbase.sh as payment and delivery provider
Readme
@moonbase.sh/api
Server-side Moonbase SDK for managing products, orders, subscriptions, licenses, trials, vouchers, customers, and activation requests.
This is a wrapper around our core API, with official documentation here: https://moonbase.sh/docs/api/
Install
pnpm add @moonbase.sh/apiCreate a client
import { MoonbaseClient } from '@moonbase.sh/api'
const client = new MoonbaseClient({
endpoint: process.env.MOONBASE_ENDPOINT!,
apiKey: process.env.MOONBASE_API_KEY!,
})endpointis your Moonbase account URL (for examplehttps://demo.moonbase.sh).apiKeyis a secret and should only be used from your backend.
Common usage
Query products with pagination
const firstPage = await client.products.query({
activeOnly: true,
pageSize: 20,
})
console.log(firstPage.items)
if (firstPage.hasMore) {
const secondPage = await firstPage.getNext()
console.log(secondPage.items)
}Prepare an order for checkout
const order = await client.orders.prepare(
{
currency: 'EUR',
items: [
{
type: 'Product',
productId: 'moon-terminal',
quantity: 1,
},
],
},
'https://your-app.example/checkout-complete',
)
console.log(order.id, order.status)Manage licenses
const page = await client.licenses.query({ pageSize: 10 })
const provisioned = await client.licenses.provision({
customer: {
name: 'Jane Doe',
email: '[email protected]',
},
requests: [
{
productId: 'moon-terminal',
quantity: 1,
},
],
})
await client.licenses.revoke(provisioned[0].id)Available endpoint groups
client.activationRequests, client.customers, client.licenses, client.orders, client.products, client.subscriptions, client.trials, client.vouchers.
Error handling
Most non-2xx responses are thrown as typed errors:
MoonbaseErrorNotAuthenticatedErrorNotAuthorizedErrorNotFoundErrorConflictError
import { MoonbaseError, NotFoundError } from '@moonbase.sh/api'
try {
await client.products.get('unknown-product')
}
catch (error) {
if (error instanceof NotFoundError) {
// handle missing entity
}
else if (error instanceof MoonbaseError) {
// generic Moonbase API failure
}
else {
throw error
}
}