Genesis Foods - Importing from a CSV File
Overview
This page outlines the steps necessary to interact with the Genesis Foods API to import a file from CSV format into Genesis Foods. It utilizes Python, a common computer programming language, to interface with the Genesis Foods API, but users don’t need to know the details to work with it.
Follow the instructions below (specifically for macOS or Windows) to demonstrate how to import recipe information from CSV format.
Download the Files
You will need to download three files - the script that runs the import, a CSV template, and a configuration file for the options. These can be downloaded from the Genesis Foods API Example repository (https://github.com/esha/genesis-foods-api-examples ) using the raw download option on the following pages.
| ||
| ||
| On Windows, you may need to force a download as the browser will potentially warn about downloading this file. | |
|
| |
|
|
Take note of what directory you’ve downloaded those files to - that will be important in subsequent steps.
Get Your API Key
Follow the steps listed here to download the API Key for your account. For full reference, check out https://esharesearch.atlassian.net/wiki/spaces/GGA/pages/3293282331/Getting+Started+with+the+Trustwell+Genesis+Foods+GraphQL+API#Obtaining-your-API-Key
Only Administrators with API Access will have the ability to generate an API Key.
Treat your API Key like a password. Keep it secret; keep it safe.
Log into the Genesis Foods application.
In the lower left, click the vertical ellipsis next to your Organization Name / Username.
Select Profile.
Select API Tokens along the top.
Click Create API Token.
Enter a Label.
Click Create Token.
Once created, we recommend using the Copy button to copy the string to the clipboard. We will need to save this API Key in the configuration file in the next step.
Update the Configuration File
The configuration file config.ini contains settings that will be used in the export process. The list of key settings necessary for this script is found below. Use your favorite text editor to open up the file and make changes to the 3 keys below:
Setting | Value |
|---|---|
| For production use cases, use For working against the preview environment, use |
| The API key you obtained from Genesis Foods in the section above. |
| The name of the CSV file you’d like to import from. Defaults to |
CSV Template Columns / Attributes
The default CSV template includes several fields, most of which are optional and can be left blank if not needed.
Column | Notes |
|---|---|
| Required. The desired name of the ingredient. |
| Optional. The name of the supplier of the ingredient. The supplier will be created if it does not already exist in Genesis Foods. |
| Optional. One or more comma-separated aliases for population are included in the Alias section of Genesis Foods. |
| Optional. Defaults to
Approved ingredients can only be archived and cannot be deleted! For testing purposes, it is strongly recommended to import ingredients as |
| Optional. The weight and units. Defaults to 100 grams. |
| Optional. The name of the regulatory authority to use for assigning allergens. Only used for allergens. Valid values are |
| Optional. A comma-separated list of allergens that belong in the Contains statement. Example: |
| Optional. A comma-separated list of allergens that belong in the May Contain statement. Example: |
Nutritional fields ( | Optional. Each nutritional field can optionally be set to set the value (in standard units) for the nutrient. |
What if I am exporting a CSV file from some other system? Do I need to update my column headers in that file?
There are multiple paths available. Let’s say, for example, the exported CSV has sugars_added as a column header.
Using the exported file as your import file, update the exported CSV column headers so that the header directly aligns with the names listed in the
ingredient_import.csvtemplate.Example: You would update the
sugars_addedcolumn header in the exported file toAdded Sugar, which is the default nutrient name in Genesis Foods.
Using the exported file as your import file, update the data mapping in
constants.pyto align with your exported CSV file’s headers. This will tell the script to use a different header for the lookup.Example: Within the
constants.pyfile, find the row forAdded Sugarand change the key toadded_sugarsOld:
"Added Sugar": "84a8709a-0094-0000-ebf9-90cea7d9d44f",New:
"sugars_added": "84a8709a-0094-0000-ebf9-90cea7d9d44f",
Copy the values from your exported file into the import template in the appropriate column (you will then use the import template as your import file).
MacOS Instructions
One-Time System Setup
Python is already installed by default on MacOS, so we just need to install a few plugins to help the script work.
You only need to do this once, regardless of how often you plan to use the export process.
| 1 | Open the Terminal application. You can do this from your dock or through Spotlight search by clicking on command+spacebar. |
|
| 2 | Let’s next check the command to launch Python, as it may vary depending on your OS version. Issue the commands
to see which Python executable we have installed. In the example on the right, our Python executable is |
|
| 3 | Similarly, we’ll need to check the path for
to see which |
|
| 4 | Now we need to download a plugin - issue the command
|
|
We’re now ready to run the export script!
Proceed carefully! This import job will create records in your Genesis Foods database each time it is executed. Subsequent runs of the same records will create duplicate ingredients (not update existing).
Consider the following recommendations:
Test will a small amount of data (i.e. 5 rows) to ensure results are as expected.
Test using a Status of Draft to allow for manual deletion of the records after import.
Running the Import Script
| 1 | Change to the directory you downloaded the file. For macOS, this will most likely be the Downloads directory.
|
|
| 2 | Run the command |
|
If you receive an error that looks like ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2r 26 Feb 2019' then you will need to issue two additional commands to continue the setup process (just once)
pip uninstall urllib3
pip install 'urllib3<2.0'
Once this is complete, the script should be able to run to completion.
You will see the script run, and the CSV file will be exported based on the configuration option you set in the output_csv variable.
Microsoft Windows Instructions
One-Time System Setup
For Windows, we’ll need to first install Python.
| 1 | Go to the Microsoft Store and search for Python. There may be multiple versions of Python available; you can select the latest one. | A Microsoft Store search for Python | Click “Get” to download to your system. |
| 2 | Next, let’s open up the | The Windows PowerShell application | An open PowerShell Application |
| 3 | Now we need to download a plugin - issue the command
To download the plugin we need to run the script. | ||
We’re now ready to run the import script!
Proceed carefully! This import job will create records in your Genesis Foods database each time it is executed. Subsequent runs of the same records will create duplicate ingredients (not update existing).
Consider the following recommendations:
Test will a small amount of data (i.e. 5 rows) to ensure results are as expected.
Test using a Status of Draft to allow for manual deletion of the records after import.
Running the Import Script
| 1 | Change to the directory you downloaded the
|
|
| 2 | Run the command |
You will see the script run, and the CSV file will be imported to Genesis Foods as separate ingredients.
Clicking links may navigate you away from the Trustwell site.