Spendint API - POST /sn_spend_intg/spendint/price
Summarize
Summary of Spendint API - POST /snspendintg/spendint/price
The Spendint API allows you to update pricing for supplier product records in ServiceNow's Procurement Service Management. By leveraging the product SKU, the API identifies existing supplier products and updates their contract prices accordingly. If the product cannot be found, an error message is returned.
Show less
Key Features
- Price Update: Supports updating contract prices based on SKU.
- Asynchronous and Synchronous Modes: Choose between async or sync modes for integration.
- Comprehensive Error Reporting: Access detailed error messages through the Price Error table for failed requests.
Key Outcomes
Customers can expect to efficiently manage supplier pricing updates, enhance procurement operations, and retrieve status updates on price import requests. Proper integration allows for smooth operations with third-party applications, ensuring that pricing data is accurate and up-to-date.
Updates any pricing for supplier product records.
When pricing is available for supplier product records, the API uses the product SKU to find an existing supplier product. If a matching supplier product exists, the corresponding contract price is updated. If no matching supplier product is found, an error message is generated, stating that the product for which you are trying to update pricing for does not exist.
Status tables
To know the status of the price import request, make a REST call into the ServiceNow database using the Table REST API. The response from the API lists the records where the price import request failed. For a price import response, query the Price Error table with the following parameter:
sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20
You can find the details on the customer ID, supplier ID, error type, unique import set ID, and state can in the Outbound Status table, which is the parent error table.
URL format
/api/sn_spend_intg/spendint/price
Supported request parameters
| Name | Description |
|---|---|
| None |
| Name | Description |
|---|---|
| mode | Support
for asynchronous and synchronous modes for third-party
integration. Data type: String Valid
values:
Default: async |
| Name | Description |
|---|---|
| catalog_id | Required. Identifier for the catalog content that can be purchased by a
customer. Data type: String Maximum length: 100 |
| customer_id | Required.
Identifier for the
customer. Data type: String Maximum length: 100 |
| products | List of objects that define products to create or update. Each transaction has
a limit of 1000 products. Data type: Array |
| products.contract_agreement | Details of the contract for a product. Data type: Object |
| products.contract_agreement.contract_end_date | Date on which the contract term ends. Data type: String Maximum length: 40 Format: YYYY-MM-DD |
| products.contract_agreement.contract_number | Required. Number of the active contract that is associated with the
product. Data type: String Maximum length: 100 |
| products.contract_agreement.contract_start_date | Date on which the contract term starts. Data type: String Maximum length: 40 Format: YYYY-MM-DD |
| products.contract_agreement.negotiated_currency | Required. Currency of the negotiated price. Data type: String Maximum length: 40 |
| products.contract_agreement.negotiated_price | Required. Unit price of a product as negotiated through a contract with the
supplier or reseller. Data type: String Maximum length: 40 |
| products.sku | Required. Number that is generated by a supplier that uniquely identifies a
product that is sold by that supplier. Data type: String Maximum length: 100 |
| supplier_id | Required. Identifier for the reseller or supplier that the customer can place
orders with. Data type: String Maximum length: 100 |
| third_party_import_id | Identifier that enables a third party to pass a string value to uniquely
identify a set of imported data. Data type: String Maximum length: 100 |
Headers
The following request and response headers apply to this HTTP action only or apply to this action in a distinct way.
| Header | Description |
|---|---|
| Accept | Data format of the response
body. Supported types: application/json or
application/xml.
Default: application/json |
| Header | Description |
|---|---|
| None |
Status codes
The following status codes apply to this HTTP action.
| Status code | Description |
|---|---|
| success | Successful. The request was successfully processed. |
| failure | Unsuccessful. The request was processed with errors. |
Response body parameters (JSON)
These response body parameters are received when queried in synchronous mode.| Name | Description |
|---|---|
| error_response_body | Description of the errors, listed by sku and the error message. Data type: Array |
| error_response_body.error_message | Detailed error message. Data type: String |
| status_code | Response status such as "success" or "failure." Data type: String |
cURL request
curl "https://instance.service-now.com/api/sn_spend_intg/spendint/price" \
--request POST \
--header "Accept:application/json" \
--user 'username':'password'
{"root": [{
"customer_id": "ACME CORP",
"catalog_id": "AB-1234323",
"supplier_id": "SUP-123456",
“third_party_import_id”: “DEL789876",
"products": [
{
"sku": "5578874",
"contract_agreement": {
"contract_number": "34567892",
"contract_start_date": "YYYY-MM-DD",
"contract_end_date": "YYYY-MM-DD",
"negotiated_price": "456",
"negotiated_currency ": "USD"
}
}
]
}
]}
Possible responses:
// Success response:
{
“result”: {
“response”: “success”
}
}
// Error response:
{
“result”: {
“response”: [
{
“customer_id”: “ACME CORP”,
“supplier_id”: “SUP-123456”,
“third_party_import_id”: “DEL789876",
“status_code”: “failure”,
“error_response_body”: [
{
“sku”: “5578874”,
“error_message”: “The product for which you are trying to update pricing does not exist\nField Value empty/Formatting issue Negotiated currency\nField Value empty/Formatting issue Contract start date\nField Value empty/Formatting issue Contract end date\n”
}
]
}
]
}
}