Custom Objects Importer

This package helps with importing commercetools custom objects in JSON format to the commercetools platform. The package is built to be used in conjunction with sphere-node-cli

Configuration

The constructor accepts five arguments:

  • A required object containing the following values:
    • apiConfig (Object): AuthMiddleware options for authentication on the commercetools platform. (Required. See here)
    • accessToken (String): Access token to be used to authenticate requests to API. Requires scope of [view_products, view_orders, view_customers, manage_products, manage_orders, manage_customers].
    • batchSize (Number): Amount of custom objects to process concurrently (Optional. Default: 50)
    • continueOnProblems (Boolean): Flag whether to continue processing if an error occurs (Optional. Default: false)
    • An optional logger object having four functions (info, warn, error and debug)

Usage with sphere-node-cli

You can use this package from the sphere-node-cli. In order for the cli to import custom objects, the file to import from must be a valid JSON and follow the following structure:

[{
        "container": "Ludus",
        "key": "copperKey",
        "value": {
            "paymentMethod": "Cash",
            "paymentID": "1",
            "whateverElse": {
                "number": 1000
            }
        }
    },
    {
        "container": "Frobozz",
        "key": "jadeKey",
        "value": {
            "paymentMethod": "cc",
            "paymentID": "2",
            "whateverElse": {
                "digits": [1, 2, 3]
            }
        }
    },
    {
        "container": "Syrinx",
        "key": "crystalKey",
        "value": {
            "paymentMethod": "new",
            "paymentID": "3",
            "whateverElse": {
                "true": true
            }
        }
    }
  ...
]

Then you can import this file using the cli:

sphere import -t customObject -p my-project-key --host 'https://api.europe-west1.gcp.commercetools.com' --authHost 'https://auth.europe-west1.gcp.commercetools.com' -f /path/to/file.json -c
'{"continueOnProblems": true}'

Direct Usage

You can also use this module directly in your Javascript project. To do this, you need to install it:

npm install @commercetools/custom-objects-importer

Then you can use it to import custom objects:

import CustomObjectsImport from '@commercetools/custom-objects-importer'

const customObjectsToImport = [
  {
    container: 'Ludus',
    key: 'copperKey',
    value: {
      paymentMethod: 'Cash',
      paymentID: '1',
      whateverElse: {
        number: 1000
      }
    },
  },
  {
    container: 'Frobozz',
    key: 'jadeKey',
    value: {
      paymentMethod: 'cc',
      paymentID: '2',
      whateverElse: {
        digits: [1,2,3]
      }
    },
  },
  {
    container: 'Syrinx',
    key: 'crystalKey',
    value: {
      paymentMethod: 'new',
      paymentID: '3',
      whateverElse: {
        true: false
      }
    },
  },
  ...
]

const options = {
    apiConfig: {
      host: 'https://auth.commercetools.com'
      projectKey: <PROJECT_KEY>,
      credentials: {
        clientId: '*********',
        clientSecret: '*********'
      }
    },
    accessToken: '123456yuhgfdwegh675412wefb3rgb',
    continueOnProblems: false
  }
}

const logger = {
  error: console.error,
  warn: console.warn,
  info: console.log,
  debug: console.debug,
}

const customObjectsImport = new CustomObjectsImport(options, logger)

customObjectsImport.run(customObjectsToImport)
  .then(() => {
    customObjectsImport.summaryReport()
    // handle successful import
  })
  .catch((error) => {
    // handle error
  })

On successful completion, a call to the .summaryReport() method returns a report in the following format:

{
  reportMessage: 'Summary: there were 4 successfully imported custom objects. 2 were newly created, 2 were updated and 0 were unchanged.)',
  detailedSummary: {
    createErrorCount: 0,
    created: 2,
    errors: [],
    unchanged: 0,
    updateErrorCount: 0,
    updated: 2
  }
}

Note: By default, if a custom object exists, the module tries to build an update action for it, and if no update action can be built, the custom object will be ignored

results matching ""

    No results matching ""