Pricefx REST API Reference
- Upsert an Object
The Pricefx Backend API
Request
Creates a JST job (the LOADDATA_FILE type) for inserting multiple records to the Master Data table from a CSV file.
You can get the status of the job by calling the admin.fetchjst/{jstId} endpoint. The jstId can be found in the response of the /loaddata.file/{TypeCode}/async endpoint.
Allows parallel loaddata calls. You can also view the job in Administration > Logs > Jobs & Tasks.
The /loaddata operation is a very efficient and quick way to insert bulk data to the Master Data table. The main advantage is its greater speed when loading thousands of records (compared to e.g. /integrate).
If used in a Groovy logic, it is recommended to use the api.addOrUpdate() method instead of this loaddata endpoint within the boundCall().
For more details see the Avoid api.boundCall article.
Please note If no
joinFieldsare provided in the request, then this operation will insert entire records. It means that in this case (withoutjoinFields) with /loaddata.file it is not possible to update just some fields (for this use the /integrate endpoint instead). The source data must always contain the entire row’s content.
Enter the type code of the entity you want to insert a data to. See the list of Type Codes in the Pricefx Knowledge Base article.
Provide a file in the CSV format. The file must also contain the name column with the name(s) of the table (PX, CX, SX) you are inserting the records to.
- Mock serverhttps://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/loaddata.file/{TypeCode}/async
- URL:https://companynode.pricefx.com/pricefx/companypartition/loaddata.file/{TypeCode}/async
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
-u <username>:<password> \
'https://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/loaddata.file/PX/async?name=string' \
-H 'Content-Type: multipart/form-data' \
-F fileName=string \
-F joinFields=string{ "response": { "node": "node", "data": [ … ], "status": 0 } }
Request
Upserts an object (the object type must be specified by Type Code in the path).
To add a new object that does not exist, specify the sku parameter in the request.
To update an existing object, specify the sku or typedId parameter of the existing object. The /integrate method performs a partial update – it does not delete field values that have not been specified in the update request.
Please note This method is intended to be used with one or two objects and it allows you to update particular fields. The request will overwrite the existing data of the record being updated, regardless of other changes. To insert more objects in bulk, please use the
/loaddata/{TypeCode}endpoint.
This operation is particularly useful if the caller does not (and should not) know about typed IDs and other internal data fields, i.e. typically in an integration scenario.
The only mandatory pre-requisite for this operation is that the object's defined business key fields (vary per object type) are present in every request. No typed ID or version fields are required. This also means that no version checking is performed, thus the request will overwrite existing data of that record, regardless of other changes.
Information You can upsert multiple records using one request. To do so, add multiple
dataobjects into your JSON. See the example below.
[
{
"data": {
"sku": "111111",
"typedId": "2147501227.P",
"label": "The New Label",
"unitOfMeasure": "EA",
"currency": "USD",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
},
{
"data": {
"sku": "222222",
"label": "The New Label 2",
"unitOfMeasure": "EA",
"currency": "EUR",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
}
]Enter the Type code of the entity you want to insert a data to. See the list of Type codes in the Pricefx Knowledge Base article.
The /integrate/P endpoint (Upsert a Product) is used in our example.
Information: Field names (columns) sent in your request might be different from our sample request schema. Custom fields (
attribute1..attribute30) can be retrieved using the/fetch/<entity>AM(AttributeMeta) endpoint, for example, use/fetch/RBTAMto retrieve Rebate Type attribute fields.
Specify field names and values you want to insert or update.
- Mock serverhttps://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/integrate/{TypeCode}
- URL:https://companynode.pricefx.com/pricefx/companypartition/integrate/{TypeCode}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
-u <username>:<password> \
https://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/integrate/P \
-H 'Content-Type: application/json' \
-d '{
"data": {
"sku": "111111",
"typedId": "2147501227.P",
"label": "The New Label",
"unitOfMeasure": "EA",
"currency": "USD",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
}'- listProductsResponseExample_resultFields
- listProductsResponseExample_valueFields
- listProductsResponseExample
{ "response": { "node": "node", "startRow": 0, "data": [ … ], "endRow": 8, "totalRows": 8, "status": 0 } }
Request
Upserts an object (the object type must be specified by Type Code in the path) and returns record details of the previous version. It allows you to check changes in the record.
To add a new object that does not exist, specify the sku parameter in the request.
To update an existing object, specify the sku or typedId parameter of the existing object. The /integrate method performs a partial update – it does not delete values from fields that have not been specified in the update request.
Please note: This method is intended to be used with one or two objects and it allows you to update particular fields. The request will overwrite the existing data of the record being updated, regardless of other changes. To insert more objects in bulk please use the
/loaddata/{TypeCode}endpoint.
This operation is particularly useful if the caller does not (and should not) know about typed IDs and other internal data fields, i.e. typically in an integration scenario.
The only mandatory pre-requisite for this operation is that the object's defined business key fields (vary per object type) are present in every request. No typed ID or version fields are required. This also means that no version checking is performed, thus the request will overwrite existing data of that record, regardless of other changes.
Information: You can upsert multiple records using one request. To do so, add multiple
dataobjects into your JSON. See the example below.
[
{
"data": {
"sku": "111111",
"typedId": "2147501227.P",
"label": "The New Label",
"unitOfMeasure": "EA",
"currency": "USD",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
},
{
"data": {
"sku": "222222",
"label": "The New Label 2",
"unitOfMeasure": "EA",
"currency": "EUR",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
}
]Specify the type code for the entity you want to work with. See the list of Type Codes in the Pricefx Knowledge Base article.'
The /integrate/P/returnolddata endpoint (upserts a product) is used in our example.
Please note: Field names (columns) sent in your request might be different from our sample request schema. Custom fields (attribute1..attribute30) can be retrieved using the /fetch/PAM endpoint.
Specify field names and values you want to insert or update.
- Mock serverhttps://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/integrate/{TypeCode}/returnolddata
- URL:https://companynode.pricefx.com/pricefx/companypartition/integrate/{TypeCode}/returnolddata
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
-u <username>:<password> \
https://api.pricefx.com/_mock/openapi/reference/pricefx-server_openapi/integrate/P/returnolddata \
-H 'Content-Type: application/json' \
-d '{
"data": {
"sku": "111111",
"typedId": "2147501227.P",
"label": "The New Label",
"unitOfMeasure": "EA",
"currency": "USD",
"formulaName": "priceLogic2",
"attribute1": "1",
"attribute2": "2",
"userGroupEdit": "Administrators",
"userGroupViewDetails": "PricingManagers"
}
}'{ "response": { "node": "<node>", "oldData": { … }, "csrfToken": "<token>", "data": [ … ], "status": 0 } }
See the Key-Value Database Storage Knowledge Base article for more details.
Here you can find all fields of the corresponding entity (represented by the type code).
Use the /metadata.describe endpoint to find out the correct data type of the field that is used in your partition.
Comments