Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The endpoint URL page is used to define the HTTP method and URL to be used, and any required URL parameters:
To add an endpoint URL, you must select the appropriate HTTP method:
...and then add the required URL:
You can define two types of parameter:
Required parameters are added as key pairs and are always applied for the endpoint, whenever it is used. Use the top panel to add required parameters.
Optional parameters are displayed as connection shape filters, so users can apply with their own values when using this endpoint as a data source in process flows. Use the lower panel to add optional parameters.
Any parameters that you add (to either panel) here are automatically appended to the existing endpoint URL as a query parameter when this endpoint is used in process flows.
If you have parameters that must always be passed in the endpoint request URL, add them to the top panel. Default parameters are added as key pairs, and are passed straight into requests - users are never asked to provide values for these in process flows.
In the example below, our endpoint URL is set to GET all products, but we are adding a default URL parameter to add a query which will only retrieve products with a product_type
of snowboard
:
By adding this as a default URL parameter for the endpoint, this query will be applied whenever this endpoint is added to process flows (via a connection shape). The actual endpoint used will be:
You can define static values for a default URL parameter, or use a variable. For an example of where variables might be useful here, see What if I want to force users to enter their required value for a URL parameter?
Optional parameters are available for your users to update with their own required values, in process flows.
If we consider the example above - we are always restricting our 'GET all products' endpoint to return only products with a product_type
of snowboard
. But suppose we wanted to allow users to choose a product_type
at the point they are running a process flow?
When a process flow includes a connection shape which is configured to use this endpoint, users can see/update filter fields for any optional URL parameters that have been defined for the endpoint. For example, let's add an optional parameter for product_type
:
Now if we configure a process flow connection shape with this endpoint, a product_type filter option is available, so the person running this flow can choose to use it if they wish:
When a process flow runs for this connector, associated API requests are injected with the user-provided URL parameter value wherever a {{product_type}}
parameter is found.
These are optional parameters - users are not required to provide a value for the associated connection shape in process flows.
Optional URL parameters are just that - process flow users can choose to add a parameter value if they wish. If a user doesn't choose to update an optional URL parameter field, then no query is applied.
However, there may be scenarios where you need to ensure that a URL parameter is always provided by users running a process flow. For this, a slightly different approach is needed - in this case, you would:
Step 1 Add a 'required' endpoint variable for the field that you want to force users to update in process flows.
Step 2 Update the endpoint URL to include a query for this variable.
Step 3 Add a default URL parameter, specifying your endpoint variable (added in step 1) as the parameter value.
Step 4 Now when a user adds this endpoint to a connection shape in a process flow, they must update this variable field before proceeding.
Techniques for adding URL parameters are same as all other types of parameters that you may encounter in the connector builder. For information about these options please see the Working with parameters page.
The authentication tab for an endpoint is where you decide which of your defined authentication methods for this connector, can be used for this endpoint:
When an authentication method is activated for an endpoint, it means that that the endpoint will be available in process flows when:
AND
AND
That instance was originally configured using this authentication method
When you add an instance for a connector, you must provide a set of credentials for authentication. Any authentication methods that you have configured for the connector will be available to choose from.
So, if you have configured two authentication methods and added an instance for each - and you want your endpoint to be available whichever instance a user chooses to use in a process flow - you need to activate both of these for your endpoint.
For example, let's say that:
You've configured basic auth and OAuth 2 authentication methods for your connector, and have added instance 1 with basic auth credentials and instance 2 using OAuth credentials.
You add an 'orders' endpoint but you ONLY activate the basic auth authentication method.
The effect will be:
If you add a connection shape to a process flow and associate it with instance 1 (i.e. using basic auth), the 'orders' endpoint will be available for selection - this is because we've activated basic auth for the endpoint.
If you add a connection shape to a process flow and associate it with instance 2 (i.e. using OAuth 2), the 'orders' endpoint will NOT be available for selection - this is because we didn't activate OAuth 2 for the endpoint, but the instance is authenticated using OAuth 2 credentials.
It's not mandatory to activate all of your configured authentication methods for an endpoint. For example, you might have some endpoints that are fine to use basic auth, but others which need the extra security provided by OAuth 2.
To activate an authentication method for an endpoint, simply set the appropriate toggle option to 'on' - for example:
Some APIs include pagination functionality so that large HTTP responses can be served as multiple pages, which are more manageable. Different APIs use different methods to approach this.
Paginating requests for resources that might be large is recommended - otherwise the API may truncate the result or timeout whilst attempting to gather the data. Limiting requests to a smaller number of objects at a time typically results in a faster, more reliable outcome.
When paginated data is pulled, a payload is generated for each page.
To set a pagination method for an endpoint, click in the pagination method field to activate a dropdown list of supported methods:
Having selected a method, click save. Any required options for the selected method are displayed.
The following pagination methods are supported:
We've already seen how variables are defined at and levels - the final level that variables can be defined at is on endpoints. Any variables added here are only applicable to the associated endpoint:
When the process flow runs (i.e. when API requests are performed) the information provided by your user is injected into any corresponding {{variable}}
tokens found in the endpoint requests.
For example, you might define an endpoint to retrieve a single customer record, and require your user to specify the required ID at runtime:
If two variables with the same key are defined in two different places, we also prioritise them in connector
-> connector instance
-> endpoint
order.
To add a variable for an endpoint, follow the steps below.
Step 1 Click the add new variable button:
Step 3 Click the save button.
In the Patchworks connector builder, variables must be defined in double curly brackets.
You can remove an endpoint variable by clicking the associated trash icon on the auth variables tab - for example:
The body tab is primarily used for creating or updating resources (i.e. for POST, PUT, PATCH and DELETE requests).
Any parameters added here are passed in the endpoint request body. You can define default body parameters, and optional body parameters:
The body tab is split into upper and lower panels:
If you have parameters that must always be passed in the endpoint request body, add them to the required body parameters panel. Default parameters are passed straight into requests - users are never asked to provide values for these.
Use this option to pass static content or an incoming payload into the request body. Select the raw
option and choose the required data type:
...then (if required) use the editor provided to add the required data:
If no static content is added, any incoming payload is passed into the request body.
Select the form
option to add data as key pairs:
Select the text
option and add the required text content to the body content field:
Set this option to none
if no body content is expected.
It's important to note that this option is ignored if data is found in the body. This handles scenarios where body content isn't typically expected so body format
is set to none
, but later (for example) a custom script is introduced which adds a payload to the body.
This method is similar to the approach. However, instead of appending a page number to the request URL, an offset parameter is used to indicate how many results have been returned so far (i.e. the start point for required data).
This method is rather like a database search: give me 5 records starting from the 15th record.
Suppose we set the following options:
...and we send a request to get the first page of data:
The response will include the first page of data (sometimes with metadata regarding pagination). For example:
Requests for subsequent pages would increment the offset
value by the limit
value - for example:
...and then:
...and so on until 50 items (i.e. the total parameter path value
) are returned.
Pagination continues until the last page, when there is no more data to return.
The limit offset pagination method is implemented using a Patchworks pagination variable which contains the next page offset:
This note is for reference only - there should never be a need to access/change this variable.
Typically, these are variables that you want your users to update when they configure a with an instance of your connector, using this endpoint.
For example, if you define a {{store_name}}
variable in an for a connector and then another {{store_name}}
variable on an endpoint, the endpoint value would take precedence.
Step 2 Complete details and set options on the :
The add variables page is the same for all types of variables that you may encounter in the connector builder (for information about these options please see the page). However, it's worth noting the effect of setting required and configurable by user options in the context of endpoint variables:
When you and choose to make it required, you are effectively saying: 'When a user adds a connection shape to a process flow and selects an instance of this connector together with this endpoint, do not allow them to proceed without providing a value for this variable'.
When you and choose to make it configurable by users, you are effectively saying: 'When a user adds a connection shape to a process flow and selects an instance of this connector together with this endpoint, allow them to provide a value for this variable if they have one but if they don't, let them proceed'.
Step 4 Having added a variable, make sure that you go on to define how any values captured for it should be passed in API requests. Typically, any variable that you define here would then be added to the , or the , or the for the endpoint.
If you add endpoint variables but don't go on to add them to the endpoint, or the , or the , the result will be that users are prompted to provide these details but no action will be taken with that information.
It's important to note that when a runs and reaches a destination connection (i.e. a associated with a POST, PUT, PATCH and DELETE endpoint), the payload generated from previous steps is automatically added to the body of that request. You do not need to add anything to the endpoint body tab for this to happen - it's automatic.
When an is applied for an endpoint, any header and body parameters specified for the authentication method are also sent in the endpoint requests - you don't need to add them twice.
Required body content can be , or added as , , or data:
In order to send an empty body, no Content-Type
header should be set. If a Content-Type
header IS set (within options), then 'none' will still fall back to sending the default payload (the output of the previous shape).
If you have parameters that you want to expose to users when they configure a to use this endpoint in and then pass provided values into the endpoint request body, add them to the lower panel:
Body filters are available for your users to update with their own required values, in process flows. These work in exactly the same way , except any values provided by users (via the in ) are passed into the request body, rather than being added as URL queries.
Techniques for adding header parameters are the same as all other types of parameters that you may encounter in the connector builder. For information about these options please see the page.
If this option is OFF, users won't see it unless they select the add new filter button and add it manually - for example:
The API documentation for the underlying third-party application should provide guidance about what variables can be passed in requests. The example below is from :
The API documentation for the underlying third-party application should provide guidance about what and how variables can be passed in requests. The example below is from :
Link header name
Enter a name for the header that will contain link information. A commonly used name is: Link
.
Limit parameter path
Enter the dot notation path for the data element in your response which contains the maximum number of items that the API should return in a single page of a paginated response. Commonly (though not necessarily), this would be a path to a limit
field.
Offset parameter path
Enter the dot notation path for the data element in your response which contains the required offset - i.e. how many items should be skipped before the next page starts. Commonly (though not necessarily), this would be a path to a page
field.
Limit
Enter the number of items to be returned per page. For example: 10
.
Count parameter path
If required, enter the dot notation path for the data element in your response which contains the current count of records that have come back from the system. Commonly (though not necessarily), this would be a path to a count
field. This value is not required for some APIs, therefore it's an optional field.
Total parameter path
Enter the dot notation path for the data element in your response which contains the total number of records that will be returned in this response, so we know when to stop paginating. Commonly (though not necessarily), this would be a path to a total
field. This value is not required for some APIs, therefore it's an optional field.
Limit parameter path
limit
Offset parameter path
offset
Limit
5
Count parameter path
meta.count
Total parameter path
meta.total
This method is similar to the link header approach, except that the URL for the next page is included in the response body, rather than the header.
Next page field
Enter the location of the next page URL within the payload.
Suppose we set the following options:
Next page field
links.next
...and we send a request to get the first page of data:
The response will include the first page of data, together with a URL that should be used to get the next page of results. For example:
Notice the links.next
section at the end of this response, which includes our next page URL. So, our request for the next page of results would be:
Pagination continues until the next page URL is no longer included in the payload.
This pagination method has been developed specifically for PeopleVox. It should not be used with other systems.
Limit
Enter the number of items to be returned per page. For example: 50
.
Total count tag field
The name of the PeopleVox response field which contains the total number of records available. For PeopleVox this is TotalCount
.
PeopleVox GET endpoints include body content which handles specific requirements for PeopleVox data. This includes a Patchworks pagination variable, which is used to calculate page numbers:
This note is for reference only - there should never be a need to change this content.
Each page is denoted by the ID of the last object it holds, rather than its page. For example, if a 'page' returns 10 customers, then the ID of the last customer will be passed in the URL to get the next page.
Link parameter path
Enter the dot notation path for the data element in your response which contains the maximum number of items that the API should return in a single page of a paginated response. Commonly (though not necessarily), this would be a path to a limit
field.
Last ID parameter name
Enter the name of the query parameter to be passed into the URL to tell the receiving system the last record we received (so the receiving system knows where to start for the next page of data to return). A commonly used name is: last_id
.
Limit
Enter the number of items to be returned per page. For example: 10
.
ID key
Enter the unique identifier key for each item in your data. For example, if the endpoint is pulling a list of users, this might be: user_id
.
Suppose we set the following options:
Link parameter path
limit
Last ID parameter name
starting_after
Limit
10
ID key
id
The following URL will be generated to get the first page:
Notice our link parameter path (limit
) and the actual limit value (10
) at the end of the request. Our first page would look something like the example below:
When pagination runs, it will look for the last id
key in the payload, and use that as the starting point for the next request. So the request for page 2 will be:
Notice our link parameter path (limit
) and the actual limit value (10
) at the end of the request, followed by our Last ID parameter name (starting_after
) set to the last id
in the response.
A sample response for this request is below:
Pagination continues until the the number of items in the payload is less than the limit, or the page returns an error code.
This pagination method has been developed specifically for the NetSuite SOAP connector. It should not be used with other systems.
Limit
Enter the number of items to be returned per page. For example: 50
.
XPATH to the search ID field in the response
Enter the XPath to the ID field in your request responses.
XPATH to the total pages field in the response
Enter the XPath to the total pages field in your request responses.
To find the required xPaths, tools such as xPath finder can be useful. Paste in a sample NetSuite SOAP response (first page) to obtain the required paths to fields.
Any parameters added to the header tab are passed in the endpoint request headers. You can define default header parameters and optional header parameters:
Notice that the header tab is split into upper and lower panels:
When an authentication method is applied for an endpoint, any header and body parameters specified for the authentication method are also sent in the endpoint requests - you don't need to add them twice.
Please refer to your API documentation for specific guidance about what values need to be passed in authentication headers.
If you have parameters that must always be passed in the endpoint request header, add them to the required parameters panel. Default options are added as key pairs, and are passed straight into request headers - users are never asked to provide values for these.
If you have parameters that you want to expose to users in process flows and then pass provided values into the endpoint request header, add them to the lower panel.
Optional parameters are available for your users to update with their own required values, in process flows. These work in exactly the same way as noted for optional URL parameters, except any values provided by users (via the connection shape in process flows) are passed into the request headers, rather than being added as URL queries.
If you are building a connector for a webhook, you must include a content-type
header.
Techniques for adding header parameters are the same as all other types of parameters that you may encounter in the connector builder. For information about these options please see the Working with parameters page.
Schemas aren't mandatory but they make things much simpler when building process flows. If your flow includes endpoints associated with schemas, any field selector options in process flow shapes are populated with the schema structure - all you need to do is choose the required field.
For example, the below is picking up the schema associated with the Shopify endpoint, configured in the preceding connector shape:
If a process flow uses an endpoint without a schema, any field paths defined in shapes must be defined manually.
The required schema for your third-party application should be available in the associated API documentation.
To apply a schema for an endpoint, follow the steps below:
Step 1 Click the edit schema button:
Step 2 Paste in the required schema and save changes:
If you can't find a schema in your API documentation, you can run the API request in Postman, and then copy/paste the response as the schema.
This is particularly important for JSON payloads, where the data structure is nested. Let's take an example below:
Here, all of our data is nested within one, top-level customers array object. If you scan down this example, you'll notice that there are two customer objects, each starting with an id for a customer record:
Now let's look at the data path field at the bottom of this page:
If we leave this set to empty, any subsequent field tags, mappings and filters will work on the basis that the top-level array object is our target. What we'd be saying in this scenario is 'don't treat the nested objects as separate records'.
So, for example, if we went on to apply a filter to match on first_name
contains
bob
, we'd find a match in the second customer object but ALL objects would be returned because we're targeting the top-level array object. This isn't what we want - we need to treat each of the lower-level customer objects as separate records. To do this, we navigate the data path and select the parent object - in this case, its customers:
To access field tags, edit an endpoint for your connector and select the schema/taxonomy tab - for example:
Follow the steps below to add a new field tag for your schema:
Step 1 Click the add new tag button:
...the edit field tags modal is displayed:
All data fields found in the schema associated with this endpoint are available for selection.
Step 3 Move down to the select tags field and find a tag to apply from the Patchworks field tag taxonomy- for example:
Tags are organised by entity - customer tags, location tags, shipping address tags, orders tags, etc.
Step 4 Click anywhere outside of the list of fields to confirm your selection.
Step 5 If you want to track this field, click the tracked checkbox to enable this option:
Step 6 Save the tag - for example:
...the new tag is added to your list:
Tracked fields are displayed with a tick in the tracked column.
Follow the steps below to update an existing field tag for your schema:
Step 1 Click on an existing tag that you want to change - for example:
...the edit field tags modal is displayed and any existing tags are shown - for example:
Step 2 To remove an existing tag to replace it with another, click the associated 'cross' icon - for example:
You can associate multiple tags with any given field, so you don't have to remove an existing tag unless you need to.
...then use the select tags field to find a replacement tag from the Patchworks field tag taxonomy- for example:
All data fields found in the schema associated with this endpoint are available for selection.
Step Save the tag.
Follow the steps below to remove an existing tag for your schema:
Step 1 Click on an existing tag that you want to remove - for example:
...the edit field tags modal is displayed and any existing tags are shown - for example:
Step 2 Remove all existing tags using the associated 'cross' icon - for example:
Step 3 Once all tags are removed, save the tag - for example:
Don't worry! The point of field tagging is that we tag the most common fields that Patchworks has identified. If your data schema includes fields where none of our tags apply, there's no need to tag it.
The Patchworks field tag taxonomy covers a range of entities across orders, products, fulfilments, and inventory. You'll see this if/when you come to . The current taxonomy is detailed in the following sections:
We are adding to the field tag taxonomy all the time, so you can expect the current list of tags to grow.
The essence of is to pull defined data from one Patchworks (i.e. a third-party system) and push it into at least one other connector (i.e. another third-party system). It’s unlikely that two third-party systems will have the same data structures, therefore we use the to define where a data field from one connector should be placed in another.
When you build a connector using the , available field mappings are determined by the specified for the endpoint. Field names used in data schemas can appear to be quite random and complex - this is fine if you know the schema and you're the only company ever likely to install the associated connector, but if you think that you might want to share your connector with other Patchworks customers in future, then field tagging is really important.
A field tag is a standard Patchworks tag that can be applied for a data field in the associated with a connector endpoint.
The covers a wide range of entities across orders, products, fulfilments, and inventory. You'll see this if/when you come to .
We are adding to the all the time, so you can expect the current list of tags to grow.
By standardising how fields are identified across all connectors, we can automate mappings between them.
So, if you add two to a - each with endpoints that have been fully tagged - you'll find that mappings are automatically created when you add a between them. Without field tagging, you need to apply mappings manually.
Field tagging isn't mandatory if you're building a connector that will only ever be used within your own company.
However, if there's a chance that you'd like to share your connector in the Patchworks marketplace for other organisations to install, then you must apply standard Patchworks field tags - this will be a condition of verification.
In the near future, you will be able to submit any connectors that you build for verification. Verified connectors will be available in the Patchworks Marketplace, for other Patchworks customers to install.
Yes - if a data field in your schema needs to be associated with more than one tag, you can apply as many as you need.
When you choose to add a field tag, you'll see a tracked option. Typically, this should be set for fields that you might need to track if/how records have been processed.
For example, if you're configuring an endpoint to receive 'order' data, there will usually be some sort of order id
field that uniquely identifies each order; if you're configuring an endpoint to receive 'customer' data, there will usually be some sort of customer id
field that uniquely identifies each customer.
By marking these fields as 'tracked', they become for viewing/filtering/selecting wherever tracked data is shown in Patchworks.
GraphQL cursor pagination is a method for paginating GraphQL APIs.
Here, we send a GraphQL query requesting a list of items. This query includes parameters such as the number of items to fetch and any filtering or sorting criteria required. In response, requested items are received, together with cursor information (each item in the response is associated with a cursor, which is typically a unique identifier for that item).
The GraphQL cursor pagination method was developed for the however, the same principles apply for other GraphQL systems.
The GraphQL cursor pagination method works in conjunction with a query on the endpoint body, which determines required settings. For example:
If you need to change the existing query for an endpoint, you should and access for the required endpoint.
Pagination continues until hasNextPage
is returned as false
.
This method is a slight variation on the approach. Instead of receiving a full URL in the response, it contains a 'token' (usually a random string/hash). The receiving system uses this token to keep track of the position of the last record in the current page of data.
Suppose we set the following options:
...and we send a request to get the first page of data:
The response will include the first page of data, together with a next page token that should be used to get the next page of results. For example:
Notice the links.next
section at the end of this response, which includes our next page URL. So, our request for the next page of results would be:
Pagination continues until the token is no longer included in the payload.
The next page token pagination method is implemented using a Patchworks pagination variable which contains a token for the next page:
This note is for reference only - there should never be a need to access/change this variable.
When you add a schema, you can also choose to .
Use the data path field to define the hierarchical level to be used for and :
When you save your new data path, you won't see any changes to the schema - but the change will be applied in the tab. Here, the schema preview shows the structure that applies as per your selected data path in the schema tab.
When you come to use instances of this connector in process flows and apply a , you'll see confirmation of the selected data path in filter settings - for example:
Field tags are now deprecated. If you want to tag fields for tracking purposes, please see our shape.
Currently, the includes Patchworks prebuilt connectors that can be viewed/installed by all Patchworks customers. Additionally, you'll see any connectors that you've built with the - right now, only users within your company will see these.
Tracked fields are now deprecated. Fields can now be tracked via the shape.
Tracked data can be viewed/searched from the , so you can check when records associated with this field have been processed.
When building process flows you can define fields to track 'on the fly', using the .
Accepts_Marketing
DEFAULT_ADDRESS_COUNTRY
Created_DateTime
ID
Currency
Updated_DateTime
DEFAULT_ADDRESS_CITY
Created_DateTime
Order_ID
ID
Order_Number
Location_ID
Updated_DateTime
Order_Created_DateTime
Fulfillable_Quantity
Order_Number
Fulfillment_Created_DateTime
Price
Fulfillment_ID
Product_Exists
Fulfillment_Status
Product_ID
Gift_Card
SKU
ID
Taxable
Order_Created_DateTime
Variant_ID
Order_ID
Cost
Origin_Province_Code
Created_DateTime
SKU
ID
Updated_DateTime
Origin_Country_Code
Amount_Available
Location_ID
Inventory_Item_ID
Updated_DateTime
Active
Created_DateTime
Address1
ID
Address2
Legacy
City
Name
Country
Province
Country_Code
Updated_DateTime
Country_Name
Zip
Token parameter name
Enter the name of the URL parameter which holds the token for requesting the next page.
Limit parameter path
Enter the dot notation path for the data element in your response which contains the maximum number of items that the API should return in a single page of a paginated response. Commonly (though not necessarily), this would be a path to a limit
field.
Limit
Enter the number of items to be returned per page. For example: 10
.
Path to token in payload
Enter the dot notation path of the next page token within the payload.
Token parameter name
page_token
Limit parameter path
limit
Limit
10
Path to token in payload
links.next
EndCursor path
Always defined in the following form:
data.
{type}
.pageInfo.endCursor
Here, the {type}
element should be replaced with the type that's defined by the schema - for example:
data.products.pageInfo.endCursor
HasNextPage path
Always defined in the following form:
data.
{type}
.pageInfo.hasNextPage
Here, the {type}
element should be replaced with the type that's defined by the schema - for example:
data.products.pageInfo.hasNextPage
In this method, the required page number is included as a parameter in the API request, and is incremented in each request to get the next page.
Limit parameter name
Enter the name of the query parameter to be passed into the URL to tell the receiving system the maximum number of items that the API should return in a single page of a paginated response. A commonly used name is: limit
but total
or count
are also popular.
Limit parameter path
Enter the dot notation path to the limit parameter name.
Page parameter name
Enter the name of the query parameter to be passed into the URL to tell the receiving system the required page number. A commonly used name is: page
.
Limit
Enter the number of items to be returned per page. For example: 10
.
Path to the data in the response
If required, you can add a dot notation path to an element in the payload that you would expect to contain data if the data pull has not completed. For example, if you are pulling orders, you might expect to see data in an orders
element of the response.
This is a 'belts and braces' option to handle edge cases where a system continues to send data of some type, even when there is no more required data to be pulled - so pagination would never stop. If you don't want to use this option, click the allow empty button.
Suppose we set the following options:
Limit parameter name
limit
Page parameter name
page
Limit
10
Path to the data in the response
data
...and we send a request to get the first page of data:
The response will include the first page of data (sometimes with metadata regarding pagination). For example:
Our request for the next page of results would be:
Pagination continues until the last page, when there is no more data to return.
The page number parameter pagination method is implemented using a Patchworks pagination variable which contains the next page number:
This note is for reference only - there should never be a need to access/change this variable.
Created_DateTime
Tags
Product_ID
Title
Product_Type
Updated_DateTime
Published_DateTime
Vendor
Status
Created_DateTime
Price
ID
Product_ID
Image_ID
SKU
Inventory_Item_ID
Taxable
Inventory_Quantity
TITLE
Original_Price
Updated_DateTime
Created_DateTime
SRC
ID
Updated_DateTime
Position
Variant_ID
Product_ID
Refund_ID
Order_ID
Created_DateTime
Order_Number
Order_Created_DateTime
Processed_DateTime
Currency_Code
Refund_Created_DateTime
Customer_Currency_Code
Refund_ID
Customer_Payment_Amount
Refund_Quantity
Gift_Card
Restock_Type
ID
Shop_Amount
Line_Item_ID
Shop_Currency_Code
Order_Created_DateTime
SKU
Order_ID
Status
Order_Number
Subtotal
Order_Quantity
Subtotal_Shop_Amount
Price
Total_Tax
Refund_As
Adjustment_Reason
Order_Number
Amount
Refund_Created_DateTime
Customer_Currency_Code
Refund_ID
Customer_Payment_Amount
Shop_Amount
Customer_Tax_Amount
Shop_Currency_Code
Customer_Tax_Currency_Code
Shop_Tax_Amount
ID
Shop_Tax_Currency_Code
Order_Created_DateTime
Tax_Amount
Order_ID
Amount
Refund_Line_Item_ID
Customer_Currency_Code
Shop_Amount
Customer_Payment_Amount
Shop_Currency_Code
Customer_Currency_Code
Shop_Amount
Customer_Payment_Amount
Shop_Currency_Code
Rate
Type
Refund_Line_Item_ID
Value
Amount
Processed_DateTime
Created_DateTime
Refund_Created_DateTime
Currency
Refund_ID
ID
Status
Order_Created_DateTime
Test
Order_ID
Type
Order_Number
Alternative_ID
Payment_Gateway
Cancel_Reason
Payment_Status
Canceled_DateTime
Referring_Site
Closed_DateTime
Shop_Currency
Confirmed
Source
Created_DateTime
Total_Discounts
Customer_Currency
Test_Line
Customer_ID
Total_Line_Items_Price
Fulfillment_Status
Total_Outstanding
ID
Total_Price
Location_ID
Total_Tax
Note
Updated_DateTime
Order_Number
Created_DateTime
Order_Number
Customer_Currency_Code
Quantity
Customer_Payment_Amount
Shop_Amount
Fulfillment_Status
Shop_Currency_Code
Gift_Card
SKU
ID
Taxable
Item_ID
Total_Discount
Item_Name
Total_Tax
Item_Price
Variant_ID
Order_ID
Vendor
Created_DateTime
Tax_Locale
Currency
Tax_Rate
Order_ID
Total
Customer_Discount_Amount
Shop_Discount_Amount
Customer_Discount_Currency_Code
Shop_Discount_Currency_Code
Order_Line_Item_ID
Customer_Tax_Amount
Shop_Tax_Amount
Customer_Tax_Currency_Code
Shop_Tax_Currency_Code
Order_Line_Items_ID
Title
Rate
Amount
Discount_Value
Code
Discount_Value_Type
Created_DateTime
Entitlement_Type
Discount_Applied_To
Order_ID
Discount_Type
Order_Number
Address1
Order_ID
Address2
Order_Number
City
Province_Code
Company
Province
Country
ZIP
Country_Code
Amount
Shipping_Lines_ID
Customer_Currency_Code
Shop_Amount
Customer_Payment_Amount
Shop_Currency_Code
Order_ID
Customer_Disc_Currency_Code
Order_Number
Price
ID
Shop_Amount
Discounted_Price
Shop_Currency_Code
Shop_Disc_Amount
Customer_Payment_Amount
Shop_Disc_Currency_Code
Customer_Currency_Code
Customer_Disc_Payment_Amount
Customer_Currency_Code
Shipping_Lines_ID
Customer_Payment_Amount
Shop_Amount
Price
Shop_Currency_Code
Rate
Title