Fulfillment App Definition

Metadata Definition

Id
required
string <uuid>

The id for this integration

Name
required
string

The name of this integration

required
object

The specification for authorizing with this fulfillment provider

required
Array of objects non-empty unique

A list of branded fulfillment providers associated with this integration

OAuth

Learn More about defining an OAuth AuthProcess here

TypeScript Example

definition/index.tsdefinition/fulfillment-provider.tsforms/registration-form.tsforms/settings-form.ts
Copy
Copied
import {
  AuthenticationType,
  FulfillmentProviderAppMetadata
} from "@shipengine/connect-fulfillment-provider-api";
import { fulfillmentProvider } from "./fulfillment-provider";

export const metadata: FulfillmentProviderAppMetadata = {
    Id: "79f8480f-9cec-4c51-bb3d-4887f37eba94",
    Name: "connect-example",
    AuthProcess: {
        Identifier: {
            AuthenticationType: AuthenticationType.Basic,
            IsSandbox: false
        }
    },
    FulfillmentProviders: [fulfillmentProvider],
};
Copy
Copied
import { join } from 'path';
import { FulfillmentProviderDefinition } from '@shipengine/connect-fulfillment-provider-api';
import { registrationForm, settingsForm } from '../forms';

export const fulfillmentProvider: FulfillmentProviderDefinition = {
    Id: '1b290f53-fd3c-4fcd-a516-e49b74058885',
    Name: 'Connect Example',
    Description: 'This is a description about the fulfillment provider',
    AccountModals: {
        RegistrationFormSchema: registrationForm,
        SettingsFormSchema: settingsForm,
    },
    FulfillmentServices: [
        { 
            Id: 'b9d34927-b306-4f3e-88b6-f879eee52a0f', 
            Name: 'Example Shipping', 
            Abbreviation: 'ExpShipping', 
            Code: 'std' 
        },
    ],
    Images: {
        LogoUrl: join(__dirname, '../../assets/logo.svg'),
        IconUrl: join(__dirname, '../../assets/icon.svg'),
    },
};
Copy
Copied
export const registrationForm = {
    JsonSchema: {
        title: 'Connect Example Connection',
        description: 'Sample Form Description',
        type: 'object',
        properties: {
            username: {
                type: 'string',
                title: 'Username',
            }
        },
        required: ['username']
    },
    UiSchema: {
        username: {
            'ui:help': 'Your username',
        }
    }
};
Copy
Copied
export const settingsForm = {
  JsonSchema: {
      title: 'Connect Example Connection',
      description: 'Sample Form Description',
      type: 'object',
      properties: {

      }
  },
  UiSchema: {

  }
};