Skip to content

Shape-and-Shift/shopware-node-sdk

Repository files navigation

Shopware Node SDK is a simple SDK implementation of Shopware 6 APIs. It helps to access the API in an object-oriented way.

If you're familiar with Shopware 6 DAL syntax and how to retrieve it you might see this example is predictable and straightforward

carbon (1)

Installation:

npm install @shapeandshift/shopware-node-sdk --save

Import:

import { Application } from "@shapeandshift/shopware-node-sdk";

const options = {
  shopUrl: `YOUR_SHOP_URL`, // https://shop-url.dev
};

Application.init(options); // Init application

Initial options

name Type Default Description
shopUrl String (required) Your shop url
apiPath String /api Shop API path
autoCallRefresh Boolean true Automatic call refresh token and retry the current request

Authentication

Supported 3 grant types:

import {
  PasswordGrant,
  ClientCredentialsGrant,
  RefreshTokenGrant,
  GRANT_SCOPE,
} from "@shapeandshift/shopware-node-sdk";

// Scope parameter is optional, Default: GRANT_SCOPE.WRITE ('write')
const grantType = new PasswordGrant(username, password, [
  GRANT_SCOPE.WRITE,
  GRANT_SCOPE.USER_VERIFIED,
]); // Using username & password

const grantType = new ClientCredentialsGrant(
  clientId,
  clientSecret,
  GRANT_SCOPE.WRITE
); // Using client_id & client_secret

const grantType = new RefreshTokenGrant(refreshToken); // Using refresh_token

Now, you're able to authenticate the application

import { Application } from "@shapeandshift/shopware-node-sdk";

const authToken = await Application.authenticate(grantType);

Or you can do this way to only fetch AuthToken object

import { AdminAuth } from "@shapeandshift/shopware-node-sdk";

const adminClient = new AdminAuth(grantType);
const authToken = await adminClient.fetchAccessToken();

await Application.setAuthToken(authToken); // you have to set `AuthToken` object to `Application`

Store the authentication token object into the database then you can set it to the Context through the Application

await Application.setAuthToken(authToken);

Notice:

Application.authenticate(grantType) automatically call Application.setAuthToken so you don't need to call it again.

Working with Criteria and Repositories

import { RepositoryFactory, Criteria } from "@shapeandshift/shopware-node-sdk";

const repository = RepositoryFactory.create("product");

const criteria = new Criteria();
criteria.addAssociation("options.group");

const products = await repository.search(criteria, Context);

Using multiple Application instances

We added support for multiple connections. To instantiate a connection to certain shop, you can simply do this:

import { ApplicationInstance } from '@shapeandshift/shopware-node-sdk';

const shopwareApplication1 = new ApplicationInstance({ shopUrl: 'http://merchant1.test' });
const shopwareApplication2 = new ApplicationInstance({ shopUrl: 'http://merchant2.test' });

Working with Admin API Apis

Check examples/sync-api.js or examples/user-api.js for some references.

Examples:

Follow those steps to run the example:

  1. Run npm install @shapeandshift/shopware-node-sdk --save
  2. Update file /examples/auth-config.json match with your environment
  3. Run examples node ./examples/authenticate.js...

You can also check out the examples without any installation on /examples