saleor-app-sdk-REDIS_APL/docs/api-handlers.md
Lukasz Ostrowski 0352356fd3
Add Handler factories (#61)
* Add createManifestHandler

* Add register handler factory

* Add docs to handlers factory

* Improve tsup configuration (select entry points)

* Reexport symbols from index

* Improve tests
2022-09-21 11:25:01 +02:00

2.1 KiB

Api Handlers

Saleor Apps are meant to work in serverless environment, where Cloud Functions are the foundations of server-side code.

Currently, Saleor heavily relies on Next.js, but in the future, other platforms will be supported.

Required handlers

Saleor requires 2 endpoints to be available for a standalone app:

  • Manifest endpoint - Returns JSON object with app properties, like its name or permissions. Read more
  • Register endpoint - During the installation process, Saleor sends POST request with auth token to this endpoint. Read more

Api handlers built-in SDK

To hide Saleor internal logic, app-sdk provides handlers factories. They should work with minimal configuration, leaving App creators space for domain logic.

Manifest handler factory

Example usage of manifest handler in Next.js

// pages/api/manifest.ts

import { createManifestHandler } from "@app-sdk/handlers/next";

export default createManifestHandler({
  manifestFactory(context) {
    return {
      name: "My Saleor App",
      tokenTargetUrl: `${context.appBaseUrl}/api/register`,
      appUrl: context.appBaseUrl,
      permissions: [],
      id: "my-saleor-app",
      version: "1",
    };
  },
});

Options provided to handler factory

type CreateManifestHandlerOptions = {
  manifestFactory(context: { appBaseUrl: string }): AppManifest;
};

See source for more details. See manifest too.

App register handler factory

Example usage of app register handler in Next.js

// pages/api/register.ts

import { createAppRegisterHandler } from "@app-sdk/handlers/next";
import { VercelAPL } from "./vercel-apl";

export default createAppRegisterHandler({
  apl: new VercelAPL(),
});

Options provided to handler factory

export type CreateAppRegisterHandlerOptions = {
  apl: APL;
};

See APL for details what is Auth Persistence Layer in Saleor apps