@getverdict/n8n-nodes-shopify-partner-relationship-events-trigger
Version:
n8n trigger node that polls Shopify Partner RelationshipEvents via GraphQL
37 lines (36 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ShopifyPartnerApi = void 0;
class ShopifyPartnerApi {
constructor() {
this.name = 'shopifyPartnerApi';
this.displayName = 'Shopify Partner API';
this.documentationUrl = 'https://shopify.dev/docs/api/partner';
this.properties = [
{ displayName: 'Access Token', name: 'accessToken', type: 'string', typeOptions: { password: true }, default: '', required: true, description: 'Partner API access token (Bearer token)' },
{ displayName: 'Organization ID', name: 'organizationId', type: 'string', default: '', required: true, description: 'Partner organization ID. Accepts numeric (e.g. 123456) or full GID (e.g. gid://partners/Organization/123456).' },
{ displayName: 'API Version', name: 'apiVersion', type: 'string', default: '2025-07', description: 'Partner API version, e.g. 2025-07' },
{ displayName: 'Use JSON Suffix (.json)', name: 'useJsonSuffix', type: 'boolean', default: true, description: 'If your endpoint requires /graphql.json (Admin-style). Turn off to use /graphql' },
];
this.authenticate = {
type: 'generic',
properties: {
headers: {
'X-Shopify-Access-Token': '={{$credentials.accessToken}}',
'Content-Type': 'application/json',
Accept: 'application/json',
},
},
};
this.test = {
request: {
url: "={{`https://partners.shopify.com/${($credentials.organizationId && ($credentials.organizationId.match(/^gid:\\/\\/partners\\/Organization\\//) ? $credentials.organizationId.split('/').pop() : $credentials.organizationId))}/api/${$credentials.apiVersion || '2025-07'}/graphql${$credentials.useJsonSuffix === false ? '' : '.json'}`}}",
method: 'POST',
body: { query: '{ publicApiVersions { handle } }' },
json: true,
},
};
}
}
exports.ShopifyPartnerApi = ShopifyPartnerApi;
exports.default = ShopifyPartnerApi;