@goparrot/franchise-mcp-server
Version:
MCP Server for Franchise API
160 lines (159 loc) • 4.71 kB
JavaScript
import { dashboardBaseUrl, makeRequest } from '../../common/index.js';
/**
* Method information for dashboard store endpoints
*/
export const StoreMethods = {
list: {
description: 'Fetch all stores associated with a given merchant identifier—whether a franchisee ID, merchant ID, or membership ID—and optionally restrict the results to a specified list of store IDs',
method: 'get',
path: '/api/v2/store-v2/api/v2/merchants/{merchantId}/stores',
pathParams: [
{
name: 'merchantId',
type: 'string',
description: 'Merchant ID',
required: true,
},
],
queryParams: [
{
name: 'storeIds',
type: 'string',
description: 'Optional comma-separated list of store IDs',
required: false,
},
],
requestType: 'ListStoresRequest',
isMultipart: false,
originalName: 'list',
isWrite: false,
permissions: ['store:api:read'],
},
create: {
description: 'Create a new store for merchant',
method: 'post',
path: '/api/v2/store-v2/api/v2/merchants/{merchantId}/stores',
pathParams: [
{
name: 'merchantId',
type: 'string',
description: 'Merchant ID',
},
],
queryParams: [],
requestType: 'CreateStoreRequest',
isMultipart: false,
originalName: 'create',
isWrite: true,
permissions: ['store:api:create'],
},
update: {
description: 'Update store by ID',
method: 'put',
path: '/api/v2/store-v2/api/v2/merchants/{merchantId}/stores/{storeId}',
pathParams: [
{
name: 'merchantId',
type: 'string',
description: 'Merchant ID',
},
{
name: 'storeId',
type: 'string',
description: 'Store ID',
},
],
queryParams: [],
requestType: 'UpdateStoreRequest',
isMultipart: false,
originalName: 'update',
isWrite: true,
permissions: ['store:api:update'],
},
patch: {
description: 'Partially update store by ID',
method: 'patch',
path: '/api/v2/store-v2/api/v2/merchants/{merchantId}/stores/{storeId}',
pathParams: [
{
name: 'merchantId',
type: 'string',
description: 'Merchant ID',
},
{
name: 'storeId',
type: 'string',
description: 'Store ID',
},
],
queryParams: [],
requestType: 'PatchStoreRequest',
isMultipart: false,
originalName: 'patch',
isWrite: true,
permissions: ['store:api:update'],
},
delete: {
description: 'Delete store by ID',
method: 'delete',
path: '/api/v2/store-v2/api/v2/merchants/{merchantId}/stores/{storeId}',
pathParams: [
{
name: 'merchantId',
type: 'string',
description: 'Merchant ID',
},
{
name: 'storeId',
type: 'string',
description: 'Store ID',
},
],
queryParams: [],
requestType: 'DeleteStoreRequest',
isMultipart: false,
originalName: 'delete',
isWrite: true,
permissions: ['store:api:delete'],
},
};
/**
* Handlers for dashboard store endpoints
*/
export const StoreHandlers = {
list: async (accessToken, args) => {
return makeRequest(StoreMethods.list, {
baseUrl: dashboardBaseUrl,
accessToken,
args,
});
},
create: async (accessToken, args) => {
return makeRequest(StoreMethods.create, {
baseUrl: dashboardBaseUrl,
accessToken,
args,
});
},
update: async (accessToken, args) => {
return makeRequest(StoreMethods.update, {
baseUrl: dashboardBaseUrl,
accessToken,
args,
});
},
patch: async (accessToken, args) => {
return makeRequest(StoreMethods.patch, {
baseUrl: dashboardBaseUrl,
accessToken,
args,
});
},
delete: async (accessToken, args) => {
return makeRequest(StoreMethods.delete, {
baseUrl: dashboardBaseUrl,
accessToken,
args,
});
},
};